summaryrefslogtreecommitdiffstats
path: root/dev/MinGfx/docs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dev/MinGfx/docs/html/aabb_8h.html117
-rw-r--r--dev/MinGfx/docs/html/aabb_8h_source.html185
-rw-r--r--dev/MinGfx/docs/html/annotated.html119
-rw-r--r--dev/MinGfx/docs/html/api.html168
-rw-r--r--dev/MinGfx/docs/html/api_8md.html87
-rw-r--r--dev/MinGfx/docs/html/bc_s.pngbin0 -> 633 bytes
-rw-r--r--dev/MinGfx/docs/html/bdwn.pngbin0 -> 139 bytes
-rw-r--r--dev/MinGfx/docs/html/bvh_8h.html111
-rw-r--r--dev/MinGfx/docs/html/bvh_8h_source.html177
-rw-r--r--dev/MinGfx/docs/html/classes.html132
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b-members.html109
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html509
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_b_v_h-members.html99
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html232
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_color-members.html109
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_color.html529
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_craft_cam-members.html110
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_craft_cam.html541
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader-members.html105
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader.html465
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties-members.html99
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties.html214
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties-members.html100
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties.html232
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_gfx_math-members.html107
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html591
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_graphics_app-members.html137
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_graphics_app.html1837
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_matrix4-members.html127
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html1240
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_mesh-members.html127
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_mesh.html1131
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_platform-members.html99
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_platform.html289
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_point2-members.html113
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_point2.html650
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_point3-members.html117
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_point3.html795
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_quaternion-members.html119
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_quaternion.html818
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes-members.html111
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes.html844
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_ray-members.html110
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_ray.html689
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_shader_program-members.html127
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html1202
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_text_shader-members.html102
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_text_shader.html377
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format-members.html99
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format.html213
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_texture2_d-members.html110
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_texture2_d.html540
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_uni_cam-members.html107
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html482
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_vector2-members.html120
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_vector2.html841
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_vector3-members.html124
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_vector3.html1018
-rw-r--r--dev/MinGfx/docs/html/closed.pngbin0 -> 125 bytes
-rw-r--r--dev/MinGfx/docs/html/color_8h.html119
-rw-r--r--dev/MinGfx/docs/html/color_8h_source.html177
-rw-r--r--dev/MinGfx/docs/html/craft__cam_8h.html112
-rw-r--r--dev/MinGfx/docs/html/craft__cam_8h_source.html211
-rw-r--r--dev/MinGfx/docs/html/customdoxygen.css524
-rw-r--r--dev/MinGfx/docs/html/default__shader_8h.html122
-rw-r--r--dev/MinGfx/docs/html/default__shader_8h_source.html240
-rw-r--r--dev/MinGfx/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html146
-rw-r--r--dev/MinGfx/docs/html/dir_e68e8157741866f444e17edd764ebbae.html91
-rw-r--r--dev/MinGfx/docs/html/doc.pngbin0 -> 688 bytes
-rw-r--r--dev/MinGfx/docs/html/doxygen.css1793
-rw-r--r--dev/MinGfx/docs/html/doxygen.svg26
-rw-r--r--dev/MinGfx/docs/html/dynsections.js128
-rw-r--r--dev/MinGfx/docs/html/files.html118
-rw-r--r--dev/MinGfx/docs/html/folderclosed.pngbin0 -> 517 bytes
-rw-r--r--dev/MinGfx/docs/html/folderopen.pngbin0 -> 525 bytes
-rw-r--r--dev/MinGfx/docs/html/functions.html129
-rw-r--r--dev/MinGfx/docs/html/functions_b.html99
-rw-r--r--dev/MinGfx/docs/html/functions_c.html132
-rw-r--r--dev/MinGfx/docs/html/functions_d.html163
-rw-r--r--dev/MinGfx/docs/html/functions_e.html94
-rw-r--r--dev/MinGfx/docs/html/functions_enum.html94
-rw-r--r--dev/MinGfx/docs/html/functions_f.html126
-rw-r--r--dev/MinGfx/docs/html/functions_func.html117
-rw-r--r--dev/MinGfx/docs/html/functions_func_b.html99
-rw-r--r--dev/MinGfx/docs/html/functions_func_c.html129
-rw-r--r--dev/MinGfx/docs/html/functions_func_d.html157
-rw-r--r--dev/MinGfx/docs/html/functions_func_e.html91
-rw-r--r--dev/MinGfx/docs/html/functions_func_f.html123
-rw-r--r--dev/MinGfx/docs/html/functions_func_g.html90
-rw-r--r--dev/MinGfx/docs/html/functions_func_h.html90
-rw-r--r--dev/MinGfx/docs/html/functions_func_i.html152
-rw-r--r--dev/MinGfx/docs/html/functions_func_l.html123
-rw-r--r--dev/MinGfx/docs/html/functions_func_m.html105
-rw-r--r--dev/MinGfx/docs/html/functions_func_n.html107
-rw-r--r--dev/MinGfx/docs/html/functions_func_o.html208
-rw-r--r--dev/MinGfx/docs/html/functions_func_p.html102
-rw-r--r--dev/MinGfx/docs/html/functions_func_q.html93
-rw-r--r--dev/MinGfx/docs/html/functions_func_r.html129
-rw-r--r--dev/MinGfx/docs/html/functions_func_s.html179
-rw-r--r--dev/MinGfx/docs/html/functions_func_t.html126
-rw-r--r--dev/MinGfx/docs/html/functions_func_u.html127
-rw-r--r--dev/MinGfx/docs/html/functions_func_v.html109
-rw-r--r--dev/MinGfx/docs/html/functions_func_w.html109
-rw-r--r--dev/MinGfx/docs/html/functions_func_x.html94
-rw-r--r--dev/MinGfx/docs/html/functions_func_y.html94
-rw-r--r--dev/MinGfx/docs/html/functions_func_z.html98
-rw-r--r--dev/MinGfx/docs/html/functions_func_~.html144
-rw-r--r--dev/MinGfx/docs/html/functions_g.html90
-rw-r--r--dev/MinGfx/docs/html/functions_h.html106
-rw-r--r--dev/MinGfx/docs/html/functions_i.html158
-rw-r--r--dev/MinGfx/docs/html/functions_l.html126
-rw-r--r--dev/MinGfx/docs/html/functions_m.html108
-rw-r--r--dev/MinGfx/docs/html/functions_n.html113
-rw-r--r--dev/MinGfx/docs/html/functions_o.html211
-rw-r--r--dev/MinGfx/docs/html/functions_p.html108
-rw-r--r--dev/MinGfx/docs/html/functions_q.html93
-rw-r--r--dev/MinGfx/docs/html/functions_r.html129
-rw-r--r--dev/MinGfx/docs/html/functions_rela.html88
-rw-r--r--dev/MinGfx/docs/html/functions_s.html194
-rw-r--r--dev/MinGfx/docs/html/functions_t.html129
-rw-r--r--dev/MinGfx/docs/html/functions_u.html127
-rw-r--r--dev/MinGfx/docs/html/functions_v.html115
-rw-r--r--dev/MinGfx/docs/html/functions_vars.html248
-rw-r--r--dev/MinGfx/docs/html/functions_w.html114
-rw-r--r--dev/MinGfx/docs/html/functions_x.html96
-rw-r--r--dev/MinGfx/docs/html/functions_y.html96
-rw-r--r--dev/MinGfx/docs/html/functions_z.html98
-rw-r--r--dev/MinGfx/docs/html/functions_~.html144
-rw-r--r--dev/MinGfx/docs/html/gfxmath_8h.html113
-rw-r--r--dev/MinGfx/docs/html/gfxmath_8h_source.html172
-rw-r--r--dev/MinGfx/docs/html/globals.html140
-rw-r--r--dev/MinGfx/docs/html/globals_defs.html107
-rw-r--r--dev/MinGfx/docs/html/globals_eval.html94
-rw-r--r--dev/MinGfx/docs/html/globals_func.html97
-rw-r--r--dev/MinGfx/docs/html/globals_type.html97
-rw-r--r--dev/MinGfx/docs/html/graphics__app_8h.html113
-rw-r--r--dev/MinGfx/docs/html/graphics__app_8h_source.html358
-rw-r--r--dev/MinGfx/docs/html/index.html120
-rw-r--r--dev/MinGfx/docs/html/installation.html206
-rw-r--r--dev/MinGfx/docs/html/installation_8md.html87
-rw-r--r--dev/MinGfx/docs/html/jquery.js35
-rw-r--r--dev/MinGfx/docs/html/mainpage_8md.html87
-rw-r--r--dev/MinGfx/docs/html/matrix4_8h.html139
-rw-r--r--dev/MinGfx/docs/html/matrix4_8h_source.html286
-rw-r--r--dev/MinGfx/docs/html/menu.js51
-rw-r--r--dev/MinGfx/docs/html/menudata.js110
-rw-r--r--dev/MinGfx/docs/html/mesh_8h.html116
-rw-r--r--dev/MinGfx/docs/html/mesh_8h_source.html293
-rw-r--r--dev/MinGfx/docs/html/mingfx_8h.html120
-rw-r--r--dev/MinGfx/docs/html/mingfx_8h_source.html159
-rw-r--r--dev/MinGfx/docs/html/mingfx__config_8h.html172
-rw-r--r--dev/MinGfx/docs/html/mingfx__config_8h_source.html116
-rw-r--r--dev/MinGfx/docs/html/namespacemembers.html105
-rw-r--r--dev/MinGfx/docs/html/namespacemembers_func.html105
-rw-r--r--dev/MinGfx/docs/html/namespacemingfx.html1710
-rw-r--r--dev/MinGfx/docs/html/nav_f.pngbin0 -> 130 bytes
-rw-r--r--dev/MinGfx/docs/html/nav_g.pngbin0 -> 95 bytes
-rw-r--r--dev/MinGfx/docs/html/nav_h.pngbin0 -> 87 bytes
-rw-r--r--dev/MinGfx/docs/html/open.pngbin0 -> 115 bytes
-rw-r--r--dev/MinGfx/docs/html/opengl__headers_8h.html94
-rw-r--r--dev/MinGfx/docs/html/opengl__headers_8h_source.html139
-rw-r--r--dev/MinGfx/docs/html/pages.html93
-rw-r--r--dev/MinGfx/docs/html/platform_8h.html111
-rw-r--r--dev/MinGfx/docs/html/platform_8h_source.html161
-rw-r--r--dev/MinGfx/docs/html/point2_8h.html144
-rw-r--r--dev/MinGfx/docs/html/point2_8h_source.html191
-rw-r--r--dev/MinGfx/docs/html/point3_8h.html145
-rw-r--r--dev/MinGfx/docs/html/point3_8h_source.html211
-rw-r--r--dev/MinGfx/docs/html/quaternion_8h.html133
-rw-r--r--dev/MinGfx/docs/html/quaternion_8h_source.html222
-rw-r--r--dev/MinGfx/docs/html/quick__shapes_8h.html118
-rw-r--r--dev/MinGfx/docs/html/quick__shapes_8h_source.html283
-rw-r--r--dev/MinGfx/docs/html/ray_8h.html122
-rw-r--r--dev/MinGfx/docs/html/ray_8h_source.html202
-rw-r--r--dev/MinGfx/docs/html/search/all_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_0.js20
-rw-r--r--dev/MinGfx/docs/html/search/all_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_1.js8
-rw-r--r--dev/MinGfx/docs/html/search/all_10.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_10.js53
-rw-r--r--dev/MinGfx/docs/html/search/all_11.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_11.js18
-rw-r--r--dev/MinGfx/docs/html/search/all_12.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_12.js16
-rw-r--r--dev/MinGfx/docs/html/search/all_13.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_13.js16
-rw-r--r--dev/MinGfx/docs/html/search/all_14.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_14.js10
-rw-r--r--dev/MinGfx/docs/html/search/all_15.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_15.js4
-rw-r--r--dev/MinGfx/docs/html/search/all_16.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_16.js4
-rw-r--r--dev/MinGfx/docs/html/search/all_17.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_17.js5
-rw-r--r--dev/MinGfx/docs/html/search/all_18.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_18.js22
-rw-r--r--dev/MinGfx/docs/html/search/all_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_2.js21
-rw-r--r--dev/MinGfx/docs/html/search/all_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_3.js28
-rw-r--r--dev/MinGfx/docs/html/search/all_4.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_4.js5
-rw-r--r--dev/MinGfx/docs/html/search/all_5.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_5.js16
-rw-r--r--dev/MinGfx/docs/html/search/all_6.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_6.js7
-rw-r--r--dev/MinGfx/docs/html/search/all_7.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_7.js12
-rw-r--r--dev/MinGfx/docs/html/search/all_8.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_8.js28
-rw-r--r--dev/MinGfx/docs/html/search/all_9.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_9.js16
-rw-r--r--dev/MinGfx/docs/html/search/all_a.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_a.js22
-rw-r--r--dev/MinGfx/docs/html/search/all_b.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_b.js11
-rw-r--r--dev/MinGfx/docs/html/search/all_c.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_c.js40
-rw-r--r--dev/MinGfx/docs/html/search/all_d.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_d.js14
-rw-r--r--dev/MinGfx/docs/html/search/all_e.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_e.js7
-rw-r--r--dev/MinGfx/docs/html/search/all_f.html37
-rw-r--r--dev/MinGfx/docs/html/search/all_f.js18
-rw-r--r--dev/MinGfx/docs/html/search/classes_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_0.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_1.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_2.js5
-rw-r--r--dev/MinGfx/docs/html/search/classes_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_3.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_4.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_4.js5
-rw-r--r--dev/MinGfx/docs/html/search/classes_5.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_5.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_6.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_6.js6
-rw-r--r--dev/MinGfx/docs/html/search/classes_7.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_7.js6
-rw-r--r--dev/MinGfx/docs/html/search/classes_8.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_8.js5
-rw-r--r--dev/MinGfx/docs/html/search/classes_9.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_9.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_a.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_a.js7
-rw-r--r--dev/MinGfx/docs/html/search/classes_b.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_b.js6
-rw-r--r--dev/MinGfx/docs/html/search/classes_c.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_c.js4
-rw-r--r--dev/MinGfx/docs/html/search/classes_d.html37
-rw-r--r--dev/MinGfx/docs/html/search/classes_d.js5
-rw-r--r--dev/MinGfx/docs/html/search/close.svg31
-rw-r--r--dev/MinGfx/docs/html/search/defines_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/defines_0.js8
-rw-r--r--dev/MinGfx/docs/html/search/defines_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/defines_1.js5
-rw-r--r--dev/MinGfx/docs/html/search/enums_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/enums_0.js4
-rw-r--r--dev/MinGfx/docs/html/search/enums_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/enums_1.js4
-rw-r--r--dev/MinGfx/docs/html/search/enums_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/enums_2.js4
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_0.js6
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_1.js6
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_2.js6
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/enumvalues_3.js7
-rw-r--r--dev/MinGfx/docs/html/search/files_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_0.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_1.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_2.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_3.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_4.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_4.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_5.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_5.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_6.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_6.js8
-rw-r--r--dev/MinGfx/docs/html/search/files_7.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_7.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_8.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_8.js6
-rw-r--r--dev/MinGfx/docs/html/search/files_9.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_9.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_a.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_a.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_b.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_b.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_c.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_c.js5
-rw-r--r--dev/MinGfx/docs/html/search/files_d.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_d.js4
-rw-r--r--dev/MinGfx/docs/html/search/files_e.html37
-rw-r--r--dev/MinGfx/docs/html/search/files_e.js5
-rw-r--r--dev/MinGfx/docs/html/search/functions_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_0.js13
-rw-r--r--dev/MinGfx/docs/html/search/functions_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_1.js7
-rw-r--r--dev/MinGfx/docs/html/search/functions_10.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_10.js37
-rw-r--r--dev/MinGfx/docs/html/search/functions_11.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_11.js15
-rw-r--r--dev/MinGfx/docs/html/search/functions_12.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_12.js15
-rw-r--r--dev/MinGfx/docs/html/search/functions_13.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_13.js8
-rw-r--r--dev/MinGfx/docs/html/search/functions_14.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_14.js9
-rw-r--r--dev/MinGfx/docs/html/search/functions_15.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_15.js4
-rw-r--r--dev/MinGfx/docs/html/search/functions_16.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_16.js4
-rw-r--r--dev/MinGfx/docs/html/search/functions_17.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_17.js5
-rw-r--r--dev/MinGfx/docs/html/search/functions_18.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_18.js22
-rw-r--r--dev/MinGfx/docs/html/search/functions_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_2.js17
-rw-r--r--dev/MinGfx/docs/html/search/functions_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_3.js25
-rw-r--r--dev/MinGfx/docs/html/search/functions_4.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_4.js4
-rw-r--r--dev/MinGfx/docs/html/search/functions_5.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_5.js15
-rw-r--r--dev/MinGfx/docs/html/search/functions_6.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_6.js4
-rw-r--r--dev/MinGfx/docs/html/search/functions_7.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_7.js4
-rw-r--r--dev/MinGfx/docs/html/search/functions_8.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_8.js24
-rw-r--r--dev/MinGfx/docs/html/search/functions_9.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_9.js12
-rw-r--r--dev/MinGfx/docs/html/search/functions_a.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_a.js9
-rw-r--r--dev/MinGfx/docs/html/search/functions_b.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_b.js9
-rw-r--r--dev/MinGfx/docs/html/search/functions_c.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_c.js39
-rw-r--r--dev/MinGfx/docs/html/search/functions_d.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_d.js8
-rw-r--r--dev/MinGfx/docs/html/search/functions_e.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_e.js5
-rw-r--r--dev/MinGfx/docs/html/search/functions_f.html37
-rw-r--r--dev/MinGfx/docs/html/search/functions_f.js17
-rw-r--r--dev/MinGfx/docs/html/search/mag_sel.svg74
-rw-r--r--dev/MinGfx/docs/html/search/namespaces_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/namespaces_0.js4
-rw-r--r--dev/MinGfx/docs/html/search/nomatches.html13
-rw-r--r--dev/MinGfx/docs/html/search/pages_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/pages_0.js4
-rw-r--r--dev/MinGfx/docs/html/search/pages_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/pages_1.js4
-rw-r--r--dev/MinGfx/docs/html/search/pages_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/pages_2.js4
-rw-r--r--dev/MinGfx/docs/html/search/related_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/related_0.js4
-rw-r--r--dev/MinGfx/docs/html/search/search.css257
-rw-r--r--dev/MinGfx/docs/html/search/search.js816
-rw-r--r--dev/MinGfx/docs/html/search/search_l.pngbin0 -> 567 bytes
-rw-r--r--dev/MinGfx/docs/html/search/search_m.pngbin0 -> 158 bytes
-rw-r--r--dev/MinGfx/docs/html/search/search_r.pngbin0 -> 553 bytes
-rw-r--r--dev/MinGfx/docs/html/search/searchdata.js48
-rw-r--r--dev/MinGfx/docs/html/search/typedefs_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/typedefs_0.js7
-rw-r--r--dev/MinGfx/docs/html/search/variables_0.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_0.js7
-rw-r--r--dev/MinGfx/docs/html/search/variables_1.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_1.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_2.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_2.js5
-rw-r--r--dev/MinGfx/docs/html/search/variables_3.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_3.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_4.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_4.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_5.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_5.js8
-rw-r--r--dev/MinGfx/docs/html/search/variables_6.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_6.js5
-rw-r--r--dev/MinGfx/docs/html/search/variables_7.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_7.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_8.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_8.js5
-rw-r--r--dev/MinGfx/docs/html/search/variables_9.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_9.js5
-rw-r--r--dev/MinGfx/docs/html/search/variables_a.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_a.js8
-rw-r--r--dev/MinGfx/docs/html/search/variables_b.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_b.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_c.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_c.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_d.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_d.js6
-rw-r--r--dev/MinGfx/docs/html/search/variables_e.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_e.js4
-rw-r--r--dev/MinGfx/docs/html/search/variables_f.html37
-rw-r--r--dev/MinGfx/docs/html/search/variables_f.js4
-rw-r--r--dev/MinGfx/docs/html/shader__program_8h.html119
-rw-r--r--dev/MinGfx/docs/html/shader__program_8h_source.html274
-rw-r--r--dev/MinGfx/docs/html/splitbar.pngbin0 -> 283 bytes
-rw-r--r--dev/MinGfx/docs/html/stb__rect__pack_8h.html403
-rw-r--r--dev/MinGfx/docs/html/stb__rect__pack_8h_source.html742
-rw-r--r--dev/MinGfx/docs/html/structstbrp__context-members.html99
-rw-r--r--dev/MinGfx/docs/html/structstbrp__context.html265
-rw-r--r--dev/MinGfx/docs/html/structstbrp__node-members.html93
-rw-r--r--dev/MinGfx/docs/html/structstbrp__node.html157
-rw-r--r--dev/MinGfx/docs/html/structstbrp__rect-members.html96
-rw-r--r--dev/MinGfx/docs/html/structstbrp__rect.html211
-rw-r--r--dev/MinGfx/docs/html/sync_off.pngbin0 -> 814 bytes
-rw-r--r--dev/MinGfx/docs/html/sync_on.pngbin0 -> 810 bytes
-rw-r--r--dev/MinGfx/docs/html/tab_a.pngbin0 -> 124 bytes
-rw-r--r--dev/MinGfx/docs/html/tab_b.pngbin0 -> 142 bytes
-rw-r--r--dev/MinGfx/docs/html/tab_h.pngbin0 -> 147 bytes
-rw-r--r--dev/MinGfx/docs/html/tab_s.pngbin0 -> 161 bytes
-rw-r--r--dev/MinGfx/docs/html/tabs.css1
-rw-r--r--dev/MinGfx/docs/html/text__shader_8h.html117
-rw-r--r--dev/MinGfx/docs/html/text__shader_8h_source.html229
-rw-r--r--dev/MinGfx/docs/html/texture2d_8h.html112
-rw-r--r--dev/MinGfx/docs/html/texture2d_8h_source.html195
-rw-r--r--dev/MinGfx/docs/html/unicam_8h.html114
-rw-r--r--dev/MinGfx/docs/html/unicam_8h_source.html234
-rw-r--r--dev/MinGfx/docs/html/vector2_8h.html149
-rw-r--r--dev/MinGfx/docs/html/vector2_8h_source.html261
-rw-r--r--dev/MinGfx/docs/html/vector3_8h.html149
-rw-r--r--dev/MinGfx/docs/html/vector3_8h_source.html275
-rw-r--r--dev/MinGfx/docs/index.html2
432 files changed, 48727 insertions, 0 deletions
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/aabb.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">aabb.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+</div>
+<p><a href="aabb_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D axis-aligned bounding box defined by two corners (min and max). <a href="classmingfx_1_1_a_a_b_b.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a3c3b45ed6edf3fe76f98a7fd165dca03"><td class="memItemLeft" align="right" valign="top">AABB&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx::operator+</a> (const AABB &amp;A, const AABB &amp;B)</td></tr>
+<tr class="separator:a3c3b45ed6edf3fe76f98a7fd165dca03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/aabb.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">aabb.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="aabb_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> David Schroeder, 2010-ish, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SRC_AABB_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define SRC_AABB_H_</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="namespacemingfx.html"> 21</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// forward declaration</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_mesh.html">Mesh</a>;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html"> 31</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb"> 34</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">AABB</a>();</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1"> 37</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;a);</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf"> 40</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;c);</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8"> 44</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;extents);</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1"> 48</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;center, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;extents);</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09"> 51</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9"> 54</a></span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9">AABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tri_id);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5"> 56</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">~AABB</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec"> 59</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">Dimensions</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9"> 63</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">Volume</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6"> 66</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">min</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4"> 69</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">max</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b"> 74</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">set_user_data</a>(<span class="keywordtype">int</span> data);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843"> 79</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">user_data</a>();</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> min_, max_;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> user_data_;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231"> 87</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> <a class="code" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;A, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;B);</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;};</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// Returns an AABB that contains both A and B completely (kind of like a union)</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03"> 91</a></span>&#160;<a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;A, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;B);</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></div><div class="ttdoc">A 3D axis-aligned bounding box defined by two corners (min and max).</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00031">aabb.h:31</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a0f3e7d3b4012e25018ad4c51edafd4f8"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Vector3 &amp;extents)</div><div class="ttdoc">Box centered at the origin with width, height, and depth specified by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a1ea0cf1c4051185b3f4296d20dd330c9"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">mingfx::AABB::Volume</a></div><div class="ttdeci">float Volume() const</div><div class="ttdoc">Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a2bf325127a89d7dbd5bb082ae69fb5e9"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Mesh &amp;mesh, unsigned int tri_id)</div><div class="ttdoc">Box that contains just triangle number &quot;tri_id&quot; from the specified mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a35def5a4ee2ecd287f5c71436b2c5843"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">mingfx::AABB::user_data</a></div><div class="ttdeci">int user_data()</div><div class="ttdoc">You can set this to whatever you want in order to use it as a handle into your own program....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a3b46cdd39ffed26b7982d641b53158e6"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">mingfx::AABB::min</a></div><div class="ttdeci">Point3 min() const</div><div class="ttdoc">Returns the coordinates for the minimum corner of the box.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a3bf7d5ffa3ccccf7111e98d88a3ffeec"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">mingfx::AABB::Dimensions</a></div><div class="ttdeci">Vector3 Dimensions() const</div><div class="ttdoc">Returns the dimensions of the box in x, y, and z as a 3D vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a5bf74f4e7f64adae9ea66f213a4012d1"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Point3 &amp;a)</div><div class="ttdoc">Box that contains a single point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a60e301aa632dd49eccdc27bab7c6d231"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">mingfx::AABB::operator+</a></div><div class="ttdeci">friend AABB operator+(const AABB &amp;A, const AABB &amp;B)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a7c47fca94d56a2845ca7729d580ee7d1"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Point3 &amp;center, const Vector3 &amp;extents)</div><div class="ttdoc">Box centered at the center with width, height, and depth specified by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_a95e244e6e0774c815de6b9434218ee09"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Mesh &amp;mesh)</div><div class="ttdoc">Box that contains a whole mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_aaa44f815006b66f67da76fd89c02a0cf"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB(const Point3 &amp;a, const Point3 &amp;b, const Point3 &amp;c)</div><div class="ttdoc">Box that contains a triangle defined by 3 points.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_abac247fedc82467c6b058ed4fe77d2a4"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">mingfx::AABB::max</a></div><div class="ttdeci">Point3 max() const</div><div class="ttdoc">Returns the coordinates for the maximum corner of the box.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_ade89d21e799a97e7d82be5d593ee2e4b"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">mingfx::AABB::set_user_data</a></div><div class="ttdeci">void set_user_data(int data)</div><div class="ttdoc">You can set this to whatever you want in order to use it as a handle into your own program....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_aeb63c176a2f2408e803d9a2f6848eee5"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">mingfx::AABB::~AABB</a></div><div class="ttdeci">virtual ~AABB()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html_af7acb376dbda50fa1d8c30d1b5eb85fb"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">mingfx::AABB::AABB</a></div><div class="ttdeci">AABB()</div><div class="ttdoc">Creates an empty box.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a3c3b45ed6edf3fe76f98a7fd165dca03"><div class="ttname"><a href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx::operator+</a></div><div class="ttdeci">AABB operator+(const AABB &amp;A, const AABB &amp;B)</div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Class List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemingfx.html" target="_self">mingfx</a></td><td class="desc">Namespace for the MinGfx Toolkit </td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_a_a_b_b.html" target="_self">AABB</a></td><td class="desc">A 3D axis-aligned bounding box defined by two corners (min and max) </td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_b_v_h.html" target="_self">BVH</a></td><td class="desc">A Bounding Volume Hierarchy (<a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a>) 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 </td></tr>
+<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_color.html" target="_self">Color</a></td><td class="desc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL </td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_craft_cam.html" target="_self">CraftCam</a></td><td class="desc">This implements a user interface for controlling the camera with the mouse </td></tr>
+<tr id="row_0_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_4_" class="arrow" onclick="toggleFolder('0_4_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_default_shader.html" target="_self">DefaultShader</a></td><td class="desc">A simple GLSL shader for textured per-fragment Phong shading with multiple light sources </td></tr>
+<tr id="row_0_4_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html" target="_self">LightProperties</a></td><td class="desc">Small data structure to hold per-light properties </td></tr>
+<tr id="row_0_4_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html" target="_self">MaterialProperties</a></td><td class="desc">Small data structure to hold properties of the material to be lit </td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_gfx_math.html" target="_self">GfxMath</a></td><td class="desc">This class holds a variety of static math functions that are useful to have defined with creating graphics programs </td></tr>
+<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_graphics_app.html" target="_self">GraphicsApp</a></td><td class="desc">This is the main application base class for the MinGfx Toolkit </td></tr>
+<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_matrix4.html" target="_self">Matrix4</a></td><td class="desc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL </td></tr>
+<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_mesh.html" target="_self">Mesh</a></td><td class="desc">A triangle mesh data structure that can be rendered with a <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> like <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a> </td></tr>
+<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_platform.html" target="_self">Platform</a></td><td class="desc">Provides access to the underlying file system and other platform-specific routines </td></tr>
+<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_point2.html" target="_self">Point2</a></td><td class="desc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input </td></tr>
+<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_point3.html" target="_self">Point3</a></td><td class="desc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations </td></tr>
+<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_quaternion.html" target="_self">Quaternion</a></td><td class="desc">A quaternion to represent rotations in 3D space </td></tr>
+<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_quick_shapes.html" target="_self">QuickShapes</a></td><td class="desc">This class provides a quick way to draw shapes for use in debugging or simple scenes </td></tr>
+<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_ray.html" target="_self">Ray</a></td><td class="desc">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector) </td></tr>
+<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_shader_program.html" target="_self">ShaderProgram</a></td><td class="desc">A wrapper around GLSL shader programs </td></tr>
+<tr id="row_0_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_16_" class="arrow" onclick="toggleFolder('0_16_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_text_shader.html" target="_self">TextShader</a></td><td class="desc"></td></tr>
+<tr id="row_0_16_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html" target="_self">TextFormat</a></td><td class="desc"></td></tr>
+<tr id="row_0_17_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_texture2_d.html" target="_self">Texture2D</a></td><td class="desc">A wrapper around a 2D texture that supports loading images from files or setting texture color data directly </td></tr>
+<tr id="row_0_18_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_uni_cam.html" target="_self">UniCam</a></td><td class="desc">This implements a user interface for controlling the camera with the mouse </td></tr>
+<tr id="row_0_19_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_vector2.html" target="_self">Vector2</a></td><td class="desc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors </td></tr>
+<tr id="row_0_20_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmingfx_1_1_vector3.html" target="_self">Vector3</a></td><td class="desc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations </td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstbrp__context.html" target="_self">stbrp_context</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstbrp__node.html" target="_self">stbrp_node</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstbrp__rect.html" target="_self">stbrp_rect</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: API - MinGfx Programming Reference Organized by Topic</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="PageDoc"><div class="header">
+ <div class="headertitle">
+<div class="title">API - MinGfx Programming Reference Organized by Topic </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a class="anchor" id="md_doc_api"></a></p>
+<h1><a class="anchor" id="autotoc_md0"></a>
+API by Topic</h1>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Application Class </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">3D Models </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Color and Textures </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_color.html">Color</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Graphics Math </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_ray.html">Ray</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_gfx_math.html">GfxMath</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Shader Programs </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">- <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">DefaultShader::LightProperties</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">- <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">User Interface </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_craft_cam.html">CraftCam</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_uni_cam.html">UniCam</a> </td></tr>
+</table>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">File I/O and System Routines </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="classmingfx_1_1_platform.html">Platform</a> </td></tr>
+</table>
+<h1><a class="anchor" id="autotoc_md1"></a>
+Coding Style</h1>
+<p>The library follows the <a href="https://google.github.io/styleguide/cppguide.html">Google C++ Style Guide</a>, 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:</p><ul>
+<li>C++ source filenames are all lowercase with underscores, and a .cc extension is used instead of .cpp.</li>
+<li>Variable names are all lowercase with underscores.</li>
+<li>Class member variables are named the same as regular variables but with a trailing _, as in my_member_var_.</li>
+<li>Functions start with capital letters unless they are small getter or setter methods.</li>
+<li>There are many other rules, a solid discussion of pros/cons, and an automated style checker <a href="https://google.github.io/styleguide/cppguide.html">here</a>. </li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: doc/api.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">doc/api.md File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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
--- /dev/null
+++ b/dev/MinGfx/docs/html/bc_s.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/bdwn.png b/dev/MinGfx/docs/html/bdwn.png
new file mode 100644
index 0000000..f057806
--- /dev/null
+++ b/dev/MinGfx/docs/html/bdwn.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/bvh.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">bvh.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="aabb_8h_source.html">aabb.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+</div>
+<p><a href="bvh_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Bounding Volume Hierarchy (<a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a>) 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. <a href="classmingfx_1_1_b_v_h.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/bvh.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">bvh.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="bvh_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> David Schroeder, 2010-ish, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SRC_BVH_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define SRC_BVH_H_</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="aabb_8h.html">aabb.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// forward declarations</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">class </span>Mesh;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>Ray;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_b_v_h.html">BVH</a> {</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75"> 43</a></span>&#160; <a class="code" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">BVH</a>();</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269"> 45</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">~BVH</a>();</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71"> 57</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">CreateFromMesh</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh);</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942"> 63</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">CreateFromListOfBoxes</a>(<span class="keyword">const</span> std::vector&lt;AABB&gt; &amp;boxes);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56"> 73</a></span>&#160; std::vector&lt;int&gt; <a class="code" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">IntersectAndReturnUserData</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_ray.html">Ray</a> &amp;r) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// Simple internal data structure for storing each node of the BVH tree.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">class </span>Node {</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; Node() : child1(NULL), child2(NULL) {}</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// Links to children</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; Node *child1;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; Node *child2;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Contains all geometry below this node.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> box;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; };</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// for now, the copy constructor is private so no copies are allowed.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// eventually, this would be good to implement and then it can be made public.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">BVH</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">BVH</a> &amp;other);</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> BuildHierarchyRecursive(Node *node, std::vector&lt;AABB&gt; boxes);</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">void</span> IntersectRecursive(<span class="keyword">const</span> Ray &amp;r, Node *node, std::vector&lt;int&gt; *data_list) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> FreeNodeRecursive(Node* node);</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; Node* root_;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aaabb_8h_html"><div class="ttname"><a href="aabb_8h.html">aabb.h</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></div><div class="ttdoc">A 3D axis-aligned bounding box defined by two corners (min and max).</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00031">aabb.h:31</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></div><div class="ttdoc">A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...</div><div class="ttdef"><b>Definition:</b> <a href="bvh_8h_source.html#l00040">bvh.h:40</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html_a8ed3e91ecd2a0585a0dbac605d6f2c71"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">mingfx::BVH::CreateFromMesh</a></div><div class="ttdeci">void CreateFromMesh(const Mesh &amp;mesh)</div><div class="ttdoc">Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html_a964420ca931fa93c420f0820e1b95942"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">mingfx::BVH::CreateFromListOfBoxes</a></div><div class="ttdeci">void CreateFromListOfBoxes(const std::vector&lt; AABB &gt; &amp;boxes)</div><div class="ttdoc">Creates a BVH where each leaf node contains one of the boxes passed in to the function.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html_af812656193d247be31dd038a8e2fff75"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">mingfx::BVH::BVH</a></div><div class="ttdeci">BVH()</div><div class="ttdoc">Initializes the class with an empty hierarchy.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html_af81906830adcf4648cc8cf4e214b4269"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">mingfx::BVH::~BVH</a></div><div class="ttdeci">virtual ~BVH()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html_afad54f50a29e8b3aace6cdec5c792c56"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">mingfx::BVH::IntersectAndReturnUserData</a></div><div class="ttdeci">std::vector&lt; int &gt; IntersectAndReturnUserData(const Ray &amp;r) const</div><div class="ttdoc">Traverse the BVH to find leaf nodes whose AABBs are intersected by the ray.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html"><div class="ttname"><a href="classmingfx_1_1_ray.html">mingfx::Ray</a></div><div class="ttdoc">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...</div><div class="ttdef"><b>Definition:</b> <a href="ray_8h_source.html#l00054">ray.h:54</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Class Index</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_A">A</a></dt>
+<dd><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_B">B</a></dt>
+<dd><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_C">C</a></dt>
+<dd><a class="el" href="classmingfx_1_1_color.html">Color</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_craft_cam.html">CraftCam</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_D">D</a></dt>
+<dd><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_G">G</a></dt>
+<dd><a class="el" href="classmingfx_1_1_gfx_math.html">GfxMath</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_L">L</a></dt>
+<dd><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">DefaultShader::LightProperties</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_M">M</a></dt>
+<dd><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_P">P</a></dt>
+<dd><a class="el" href="classmingfx_1_1_platform.html">Platform</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_point2.html">Point2</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_point3.html">Point3</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_Q">Q</a></dt>
+<dd><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_R">R</a></dt>
+<dd><a class="el" href="classmingfx_1_1_ray.html">Ray</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_S">S</a></dt>
+<dd><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="structstbrp__context.html">stbrp_context</a></dd><dd><a class="el" href="structstbrp__node.html">stbrp_node</a></dd><dd><a class="el" href="structstbrp__rect.html">stbrp_rect</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_T">T</a></dt>
+<dd><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextShader::TextFormat</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_U">U</a></dt>
+<dd><a class="el" href="classmingfx_1_1_uni_cam.html">UniCam</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_V">V</a></dt>
+<dd><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd><dd><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> (<a class="el" href="namespacemingfx.html">mingfx</a>)</dd></dl>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::AABB Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">AABB</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1">AABB</a>(const Point3 &amp;a)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf">AABB</a>(const Point3 &amp;a, const Point3 &amp;b, const Point3 &amp;c)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8">AABB</a>(const Vector3 &amp;extents)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1">AABB</a>(const Point3 &amp;center, const Vector3 &amp;extents)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09">AABB</a>(const Mesh &amp;mesh)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9">AABB</a>(const Mesh &amp;mesh, unsigned int tri_id)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">Dimensions</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">max</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">min</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">operator+</a>(const AABB &amp;A, const AABB &amp;B)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">set_user_data</a>(int data)</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">user_data</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">Volume</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">~AABB</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::AABB Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="classmingfx_1_1_a_a_b_b-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::AABB Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 3D axis-aligned bounding box defined by two corners (min and max). </p>
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="aabb_8h_source.html#l00031">31</a> of file <a class="el" href="aabb_8h_source.html">aabb.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="aabb_8h_source.html">aabb.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af7acb376dbda50fa1d8c30d1b5eb85fb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">AABB</a> ()</td></tr>
+<tr class="memdesc:af7acb376dbda50fa1d8c30d1b5eb85fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty box. <a href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">More...</a><br /></td></tr>
+<tr class="separator:af7acb376dbda50fa1d8c30d1b5eb85fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5bf74f4e7f64adae9ea66f213a4012d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1">AABB</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;a)</td></tr>
+<tr class="memdesc:a5bf74f4e7f64adae9ea66f213a4012d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box that contains a single point. <a href="classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1">More...</a><br /></td></tr>
+<tr class="separator:a5bf74f4e7f64adae9ea66f213a4012d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa44f815006b66f67da76fd89c02a0cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf">AABB</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;a, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;c)</td></tr>
+<tr class="memdesc:aaa44f815006b66f67da76fd89c02a0cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box that contains a triangle defined by 3 points. <a href="classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf">More...</a><br /></td></tr>
+<tr class="separator:aaa44f815006b66f67da76fd89c02a0cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f3e7d3b4012e25018ad4c51edafd4f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8">AABB</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;extents)</td></tr>
+<tr class="memdesc:a0f3e7d3b4012e25018ad4c51edafd4f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box centered at the origin with width, height, and depth specified by the vector. <a href="classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8">More...</a><br /></td></tr>
+<tr class="separator:a0f3e7d3b4012e25018ad4c51edafd4f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c47fca94d56a2845ca7729d580ee7d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1">AABB</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;center, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;extents)</td></tr>
+<tr class="memdesc:a7c47fca94d56a2845ca7729d580ee7d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box centered at the center with width, height, and depth specified by the vector. <a href="classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1">More...</a><br /></td></tr>
+<tr class="separator:a7c47fca94d56a2845ca7729d580ee7d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95e244e6e0774c815de6b9434218ee09"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09">AABB</a> (const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh)</td></tr>
+<tr class="memdesc:a95e244e6e0774c815de6b9434218ee09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box that contains a whole mesh. <a href="classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09">More...</a><br /></td></tr>
+<tr class="separator:a95e244e6e0774c815de6b9434218ee09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2bf325127a89d7dbd5bb082ae69fb5e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9">AABB</a> (const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh, unsigned int tri_id)</td></tr>
+<tr class="memdesc:a2bf325127a89d7dbd5bb082ae69fb5e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Box that contains just triangle number "tri_id" from the specified mesh. <a href="classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9">More...</a><br /></td></tr>
+<tr class="separator:a2bf325127a89d7dbd5bb082ae69fb5e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb63c176a2f2408e803d9a2f6848eee5"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">~AABB</a> ()</td></tr>
+<tr class="separator:aeb63c176a2f2408e803d9a2f6848eee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bf7d5ffa3ccccf7111e98d88a3ffeec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">Dimensions</a> () const</td></tr>
+<tr class="memdesc:a3bf7d5ffa3ccccf7111e98d88a3ffeec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the dimensions of the box in x, y, and z as a 3D vector. <a href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">More...</a><br /></td></tr>
+<tr class="separator:a3bf7d5ffa3ccccf7111e98d88a3ffeec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ea0cf1c4051185b3f4296d20dd330c9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">Volume</a> () const</td></tr>
+<tr class="memdesc:a1ea0cf1c4051185b3f4296d20dd330c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point. <a href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">More...</a><br /></td></tr>
+<tr class="separator:a1ea0cf1c4051185b3f4296d20dd330c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b46cdd39ffed26b7982d641b53158e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">min</a> () const</td></tr>
+<tr class="memdesc:a3b46cdd39ffed26b7982d641b53158e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the coordinates for the minimum corner of the box. <a href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">More...</a><br /></td></tr>
+<tr class="separator:a3b46cdd39ffed26b7982d641b53158e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abac247fedc82467c6b058ed4fe77d2a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">max</a> () const</td></tr>
+<tr class="memdesc:abac247fedc82467c6b058ed4fe77d2a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the coordinates for the maximum corner of the box. <a href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">More...</a><br /></td></tr>
+<tr class="separator:abac247fedc82467c6b058ed4fe77d2a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade89d21e799a97e7d82be5d593ee2e4b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">set_user_data</a> (int data)</td></tr>
+<tr class="memdesc:ade89d21e799a97e7d82be5d593ee2e4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> with the id of some object in your application. <a href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">More...</a><br /></td></tr>
+<tr class="separator:ade89d21e799a97e7d82be5d593ee2e4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35def5a4ee2ecd287f5c71436b2c5843"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">user_data</a> ()</td></tr>
+<tr class="memdesc:a35def5a4ee2ecd287f5c71436b2c5843"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> with the id of some object in your application. <a href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">More...</a><br /></td></tr>
+<tr class="separator:a35def5a4ee2ecd287f5c71436b2c5843"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a60e301aa632dd49eccdc27bab7c6d231"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">operator+</a> (const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;A, const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;B)</td></tr>
+<tr class="separator:a60e301aa632dd49eccdc27bab7c6d231"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="af7acb376dbda50fa1d8c30d1b5eb85fb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af7acb376dbda50fa1d8c30d1b5eb85fb">&#9670;&nbsp;</a></span>AABB() <span class="overload">[1/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates an empty box. </p>
+
+</div>
+</div>
+<a id="a5bf74f4e7f64adae9ea66f213a4012d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5bf74f4e7f64adae9ea66f213a4012d1">&#9670;&nbsp;</a></span>AABB() <span class="overload">[2/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box that contains a single point. </p>
+
+</div>
+</div>
+<a id="aaa44f815006b66f67da76fd89c02a0cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa44f815006b66f67da76fd89c02a0cf">&#9670;&nbsp;</a></span>AABB() <span class="overload">[3/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box that contains a triangle defined by 3 points. </p>
+
+</div>
+</div>
+<a id="a0f3e7d3b4012e25018ad4c51edafd4f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f3e7d3b4012e25018ad4c51edafd4f8">&#9670;&nbsp;</a></span>AABB() <span class="overload">[4/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>extents</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box centered at the origin with width, height, and depth specified by the vector. </p>
+
+</div>
+</div>
+<a id="a7c47fca94d56a2845ca7729d580ee7d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7c47fca94d56a2845ca7729d580ee7d1">&#9670;&nbsp;</a></span>AABB() <span class="overload">[5/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>center</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>extents</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box centered at the center with width, height, and depth specified by the vector. </p>
+
+</div>
+</div>
+<a id="a95e244e6e0774c815de6b9434218ee09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95e244e6e0774c815de6b9434218ee09">&#9670;&nbsp;</a></span>AABB() <span class="overload">[6/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;&#160;</td>
+ <td class="paramname"><em>mesh</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box that contains a whole mesh. </p>
+
+</div>
+</div>
+<a id="a2bf325127a89d7dbd5bb082ae69fb5e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2bf325127a89d7dbd5bb082ae69fb5e9">&#9670;&nbsp;</a></span>AABB() <span class="overload">[7/7]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::AABB::AABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>tri_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Box that contains just triangle number "tri_id" from the specified mesh. </p>
+
+</div>
+</div>
+<a id="aeb63c176a2f2408e803d9a2f6848eee5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb63c176a2f2408e803d9a2f6848eee5">&#9670;&nbsp;</a></span>~AABB()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::AABB::~AABB </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a3bf7d5ffa3ccccf7111e98d88a3ffeec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3bf7d5ffa3ccccf7111e98d88a3ffeec">&#9670;&nbsp;</a></span>Dimensions()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::AABB::Dimensions </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the dimensions of the box in x, y, and z as a 3D vector. </p>
+
+</div>
+</div>
+<a id="abac247fedc82467c6b058ed4fe77d2a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abac247fedc82467c6b058ed4fe77d2a4">&#9670;&nbsp;</a></span>max()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::AABB::max </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the coordinates for the maximum corner of the box. </p>
+
+</div>
+</div>
+<a id="a3b46cdd39ffed26b7982d641b53158e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b46cdd39ffed26b7982d641b53158e6">&#9670;&nbsp;</a></span>min()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::AABB::min </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the coordinates for the minimum corner of the box. </p>
+
+</div>
+</div>
+<a id="ade89d21e799a97e7d82be5d593ee2e4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ade89d21e799a97e7d82be5d593ee2e4b">&#9670;&nbsp;</a></span>set_user_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::AABB::set_user_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> with the id of some object in your application. </p>
+
+</div>
+</div>
+<a id="a35def5a4ee2ecd287f5c71436b2c5843"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a35def5a4ee2ecd287f5c71436b2c5843">&#9670;&nbsp;</a></span>user_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::AABB::user_data </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> with the id of some object in your application. </p>
+
+</div>
+</div>
+<a id="a1ea0cf1c4051185b3f4296d20dd330c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1ea0cf1c4051185b3f4296d20dd330c9">&#9670;&nbsp;</a></span>Volume()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::AABB::Volume </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="a60e301aa632dd49eccdc27bab7c6d231"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60e301aa632dd49eccdc27bab7c6d231">&#9670;&nbsp;</a></span>operator+</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;&#160;</td>
+ <td class="paramname"><em>A</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;&#160;</td>
+ <td class="paramname"><em>B</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="aabb_8h_source.html">aabb.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::BVH Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">BVH</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">CreateFromListOfBoxes</a>(const std::vector&lt; AABB &gt; &amp;boxes)</td><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">CreateFromMesh</a>(const Mesh &amp;mesh)</td><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">IntersectAndReturnUserData</a>(const Ray &amp;r) const</td><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">~BVH</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::BVH Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_b_v_h-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::BVH Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A Bounding Volume Hierarchy (<a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a>) 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. </p>
+<p>Each node of the tree is represented as an <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> (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 <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> is created for a mesh, each leaf node can contain a <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> that contains just a single triangle. Or, when a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> 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 <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a>'s set_user_data() and user_data() methods to store a handle for whetever you want to store inside the nodes. </p>
+
+<p class="definition">Definition at line <a class="el" href="bvh_8h_source.html#l00040">40</a> of file <a class="el" href="bvh_8h_source.html">bvh.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="bvh_8h_source.html">bvh.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af812656193d247be31dd038a8e2fff75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">BVH</a> ()</td></tr>
+<tr class="memdesc:af812656193d247be31dd038a8e2fff75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the class with an empty hierarchy. <a href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">More...</a><br /></td></tr>
+<tr class="separator:af812656193d247be31dd038a8e2fff75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af81906830adcf4648cc8cf4e214b4269"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">~BVH</a> ()</td></tr>
+<tr class="separator:af81906830adcf4648cc8cf4e214b4269"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ed3e91ecd2a0585a0dbac605d6f2c71"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">CreateFromMesh</a> (const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh)</td></tr>
+<tr class="memdesc:a8ed3e91ecd2a0585a0dbac605d6f2c71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh. <a href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">More...</a><br /></td></tr>
+<tr class="separator:a8ed3e91ecd2a0585a0dbac605d6f2c71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a964420ca931fa93c420f0820e1b95942"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">CreateFromListOfBoxes</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &gt; &amp;boxes)</td></tr>
+<tr class="memdesc:a964420ca931fa93c420f0820e1b95942"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> where each leaf node contains one of the boxes passed in to the function. <a href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">More...</a><br /></td></tr>
+<tr class="separator:a964420ca931fa93c420f0820e1b95942"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afad54f50a29e8b3aace6cdec5c792c56"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">IntersectAndReturnUserData</a> (const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;r) const</td></tr>
+<tr class="memdesc:afad54f50a29e8b3aace6cdec5c792c56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Traverse the <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> to find leaf nodes whose AABBs are intersected by the ray. <a href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">More...</a><br /></td></tr>
+<tr class="separator:afad54f50a29e8b3aace6cdec5c792c56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="af812656193d247be31dd038a8e2fff75"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af812656193d247be31dd038a8e2fff75">&#9670;&nbsp;</a></span>BVH()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::BVH::BVH </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Initializes the class with an empty hierarchy. </p>
+
+</div>
+</div>
+<a id="af81906830adcf4648cc8cf4e214b4269"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af81906830adcf4648cc8cf4e214b4269">&#9670;&nbsp;</a></span>~BVH()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::BVH::~BVH </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a964420ca931fa93c420f0820e1b95942"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a964420ca931fa93c420f0820e1b95942">&#9670;&nbsp;</a></span>CreateFromListOfBoxes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::BVH::CreateFromListOfBoxes </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>boxes</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> where each leaf node contains one of the boxes passed in to the function. </p>
+
+</div>
+</div>
+<a id="a8ed3e91ecd2a0585a0dbac605d6f2c71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ed3e91ecd2a0585a0dbac605d6f2c71">&#9670;&nbsp;</a></span>CreateFromMesh()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::BVH::CreateFromMesh </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;&#160;</td>
+ <td class="paramname"><em>mesh</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh. </p>
+<p>For leaf nodes, the triangle index can be retrieved with: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> tri_id = leafnode-&gt;box.user_data();</div>
+</div><!-- fragment --><p> 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 <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc" title="Checks to see if the ray intersects a triangle mesh.">Ray::FastIntersectMesh()</a>. </p>
+
+</div>
+</div>
+<a id="afad54f50a29e8b3aace6cdec5c792c56"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afad54f50a29e8b3aace6cdec5c792c56">&#9670;&nbsp;</a></span>IntersectAndReturnUserData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;int&gt; mingfx::BVH::IntersectAndReturnUserData </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>r</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Traverse the <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> to find leaf nodes whose AABBs are intersected by the ray. </p>
+<p>These are candidates to test more thoroughly using whatever ray-object intersection test is appropriate for the objects stored inside the <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a>. This routine returns the user_data for each <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> leaf node. In the case of a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> created using CreateFromMesh, this means it stores the indices to the mesh triangles that should be tested for ray-triangle intersection. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="bvh_8h_source.html">bvh.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_color.html">Color</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Color Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3">Color</a>(float red, float green, float blue, float alpha=1.0)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e">Color</a>(float *p)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9">Color</a>(const std::vector&lt; float &gt; &amp;vals)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a">Color</a>(const Color &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">Lerp</a>(const Color &amp;b, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363">Lerp</a>(const Color &amp;a, const Color &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">operator!=</a>(const Color &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">operator=</a>(const Color &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">operator==</a>(const Color &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">ToVector</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">~Color</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Color Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_color.html">Color</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_color-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Color Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL. </p>
+<p>Example usage: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> black(0, 0, 0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> white(1, 1, 1);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> gray(0.5, 0.5, 0.5);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> tranparent_red(1.0, 0.0, 0.0, 0.5);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> orange(1.0, 0.65, 0.0);</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">float</span> red_component_of_orange = orange[0];</div>
+<div class="line"><span class="keywordtype">float</span> green_component_of_orange = orange[1];</div>
+<div class="line"><span class="keywordtype">float</span> blue_component_of_orange = orange[2];</div>
+<div class="line"><span class="keywordtype">float</span> alpha_component_of_orange = orange[3];</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// Use value_ptr() to send the array of floats directly to OpenGL commands</span></div>
+<div class="line">glColor4fv(orange.value_ptr());</div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ab4d264b5a1189b73443948c01eab088d"><div class="ttname"><a href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">mingfx::Color::Color</a></div><div class="ttdeci">Color()</div><div class="ttdoc">Defaults to black.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="color_8h_source.html#l00041">41</a> of file <a class="el" href="color_8h_source.html">color.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="color_8h_source.html">color.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab4d264b5a1189b73443948c01eab088d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a> ()</td></tr>
+<tr class="memdesc:ab4d264b5a1189b73443948c01eab088d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defaults to black. <a href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">More...</a><br /></td></tr>
+<tr class="separator:ab4d264b5a1189b73443948c01eab088d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a81b442b8afcd157c260487081f25dcc3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3">Color</a> (float red, float green, float blue, float alpha=1.0)</td></tr>
+<tr class="memdesc:a81b442b8afcd157c260487081f25dcc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a color. Alpha defaults to 1.0 (completely opaque) <a href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3">More...</a><br /></td></tr>
+<tr class="separator:a81b442b8afcd157c260487081f25dcc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4d6c067128e779add5390d83ea3410e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e">Color</a> (float *p)</td></tr>
+<tr class="memdesc:ab4d6c067128e779add5390d83ea3410e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given a pointer to float array. <a href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e">More...</a><br /></td></tr>
+<tr class="separator:ab4d6c067128e779add5390d83ea3410e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e0ca85141895a108c852f59f7ca00b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9">Color</a> (const std::vector&lt; float &gt; &amp;vals)</td></tr>
+<tr class="memdesc:a7e0ca85141895a108c852f59f7ca00b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given a 3 or 4-element vector of floats. <a href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9">More...</a><br /></td></tr>
+<tr class="separator:a7e0ca85141895a108c852f59f7ca00b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:accb83cd759b7290ce2817724d57e246a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a">Color</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;p)</td></tr>
+<tr class="memdesc:accb83cd759b7290ce2817724d57e246a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <a href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a">More...</a><br /></td></tr>
+<tr class="separator:accb83cd759b7290ce2817724d57e246a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1a90432dd7fd7b2adf41d747be85378"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">~Color</a> ()</td></tr>
+<tr class="memdesc:ab1a90432dd7fd7b2adf41d747be85378"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmingfx_1_1_color.html" title="Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...">Color</a> destructor. <a href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">More...</a><br /></td></tr>
+<tr class="separator:ab1a90432dd7fd7b2adf41d747be85378"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5411077527ff2a12d18ce1ae52688cf0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">operator==</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;p) const</td></tr>
+<tr class="memdesc:a5411077527ff2a12d18ce1ae52688cf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for equality. <a href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">More...</a><br /></td></tr>
+<tr class="separator:a5411077527ff2a12d18ce1ae52688cf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acf92f9f413cf11639b73dc0d7d431244"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">operator!=</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;p) const</td></tr>
+<tr class="memdesc:acf92f9f413cf11639b73dc0d7d431244"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for inequality. <a href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">More...</a><br /></td></tr>
+<tr class="separator:acf92f9f413cf11639b73dc0d7d431244"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae51a066a9bb018e4f050d9b8cc7f330e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">operator=</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;p)</td></tr>
+<tr class="memdesc:ae51a066a9bb018e4f050d9b8cc7f330e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <a href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">More...</a><br /></td></tr>
+<tr class="separator:ae51a066a9bb018e4f050d9b8cc7f330e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa879c4f6e90c419a2c121e323ce31500"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:aa879c4f6e90c419a2c121e323ce31500"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses the ith component of the color, stored in RGBA order. <a href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">More...</a><br /></td></tr>
+<tr class="separator:aa879c4f6e90c419a2c121e323ce31500"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a474ed028db8b31e359d8bfec50147bcc"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:a474ed028db8b31e359d8bfec50147bcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accesses the ith coordinate of the color, stored in RGBA order. <a href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc">More...</a><br /></td></tr>
+<tr class="separator:a474ed028db8b31e359d8bfec50147bcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3a93033db8e00aff817a125eb5b54a0"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">value_ptr</a> () const</td></tr>
+<tr class="memdesc:aa3a93033db8e00aff817a125eb5b54a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array. <a href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">More...</a><br /></td></tr>
+<tr class="separator:aa3a93033db8e00aff817a125eb5b54a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7371e464c4af7ac93d9edd4c0772c2b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">ToVector</a> () const</td></tr>
+<tr class="separator:ae7371e464c4af7ac93d9edd4c0772c2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdec9bbfdd82ed75afc45b103c8bbcf4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">Lerp</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;b, float alpha) const</td></tr>
+<tr class="memdesc:abdec9bbfdd82ed75afc45b103c8bbcf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">More...</a><br /></td></tr>
+<tr class="separator:abdec9bbfdd82ed75afc45b103c8bbcf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a883787431fef36c06c724c3b9ed25363"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363">Lerp</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;a, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:a883787431fef36c06c724c3b9ed25363"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363">More...</a><br /></td></tr>
+<tr class="separator:a883787431fef36c06c724c3b9ed25363"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ab4d264b5a1189b73443948c01eab088d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab4d264b5a1189b73443948c01eab088d">&#9670;&nbsp;</a></span>Color() <span class="overload">[1/5]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Color::Color </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Defaults to black. </p>
+
+</div>
+</div>
+<a id="a81b442b8afcd157c260487081f25dcc3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81b442b8afcd157c260487081f25dcc3">&#9670;&nbsp;</a></span>Color() <span class="overload">[2/5]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Color::Color </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>red</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>green</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>blue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em> = <code>1.0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a color. Alpha defaults to 1.0 (completely opaque) </p>
+
+</div>
+</div>
+<a id="ab4d6c067128e779add5390d83ea3410e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab4d6c067128e779add5390d83ea3410e">&#9670;&nbsp;</a></span>Color() <span class="overload">[3/5]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Color::Color </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given a pointer to float array. </p>
+
+</div>
+</div>
+<a id="a7e0ca85141895a108c852f59f7ca00b9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e0ca85141895a108c852f59f7ca00b9">&#9670;&nbsp;</a></span>Color() <span class="overload">[4/5]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Color::Color </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>vals</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given a 3 or 4-element vector of floats. </p>
+
+</div>
+</div>
+<a id="accb83cd759b7290ce2817724d57e246a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#accb83cd759b7290ce2817724d57e246a">&#9670;&nbsp;</a></span>Color() <span class="overload">[5/5]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Color::Color </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor. </p>
+
+</div>
+</div>
+<a id="ab1a90432dd7fd7b2adf41d747be85378"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1a90432dd7fd7b2adf41d747be85378">&#9670;&nbsp;</a></span>~Color()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Color::~Color </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p><a class="el" href="classmingfx_1_1_color.html" title="Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...">Color</a> destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a883787431fef36c06c724c3b9ed25363"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a883787431fef36c06c724c3b9ed25363">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::Color::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="abdec9bbfdd82ed75afc45b103c8bbcf4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abdec9bbfdd82ed75afc45b103c8bbcf4">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::Color::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="acf92f9f413cf11639b73dc0d7d431244"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf92f9f413cf11639b73dc0d7d431244">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Color::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for inequality. </p>
+
+</div>
+</div>
+<a id="ae51a066a9bb018e4f050d9b8cc7f330e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae51a066a9bb018e4f050d9b8cc7f330e">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a>&amp; mingfx::Color::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Assignment operator. </p>
+
+</div>
+</div>
+<a id="a5411077527ff2a12d18ce1ae52688cf0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5411077527ff2a12d18ce1ae52688cf0">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Color::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for equality. </p>
+
+</div>
+</div>
+<a id="a474ed028db8b31e359d8bfec50147bcc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a474ed028db8b31e359d8bfec50147bcc">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Color::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Accesses the ith coordinate of the color, stored in RGBA order. </p>
+
+</div>
+</div>
+<a id="aa879c4f6e90c419a2c121e323ce31500"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa879c4f6e90c419a2c121e323ce31500">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Color::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Accesses the ith component of the color, stored in RGBA order. </p>
+
+</div>
+</div>
+<a id="ae7371e464c4af7ac93d9edd4c0772c2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7371e464c4af7ac93d9edd4c0772c2b">&#9670;&nbsp;</a></span>ToVector()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;float&gt; mingfx::Color::ToVector </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aa3a93033db8e00aff817a125eb5b54a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa3a93033db8e00aff817a125eb5b54a0">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Color::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="color_8h_source.html">color.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_craft_cam.html">CraftCam</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::CraftCam Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">CraftCam</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f">CraftCam</a>(const Matrix4 &amp;initial_view_matrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">eye</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">look</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">look_scale</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">OnMouseMove</a>(const Vector2 &amp;normalized_mouse_delta)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">rotation_scale</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">set_look_scale</a>(float s)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">set_rotation_scale</a>(float s)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">set_translation_scale</a>(float s)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">set_view_matrix</a>(Matrix4 view_matrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">translation_scale</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">UpdateHeight</a>(float new_y_value)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">UpdateSimulation</a>(double dt, GLFWwindow *window_ptr)</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">~CraftCam</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::CraftCam Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_craft_cam.html">CraftCam</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_craft_cam-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::CraftCam Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This implements a user interface for controlling the camera with the mouse. </p>
+<p>This interface is appropriate for "first person" camera control, as in games like Minecraft.</p>
+<p>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.</p>
+<p>Example usage: </p><div class="fragment"><div class="line"><span class="comment">// Create a global or member variable in your MyGraphicsApp class:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">CraftCam</a> cam_;</div>
+<div class="line"> </div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// If you want to always rotate the view with the mouse, use this:</span></div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnMouseMove(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"> Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> cam_.OnMouseMove(delta_ndc);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// Alternatively, if you want to only rotate the view when the mouse button is</span></div>
+<div class="line"><span class="comment">// held down, use this instead. Call cam_.OnMouseMove() in either one function</span></div>
+<div class="line"><span class="comment">// or the other, but not both!</span></div>
+<div class="line"><span class="comment">// void MyGraphicsApp::OnLeftMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta) {</span></div>
+<div class="line"><span class="comment">// Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);</span></div>
+<div class="line"><span class="comment">// cam_.OnMouseMove(delta_ndc);</span></div>
+<div class="line"><span class="comment">// }</span></div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// This tells the camera to simulate walking based on the keyboard keys currently</span></div>
+<div class="line"><span class="comment">// pressed. You need to pass a pointer to the underlying GLFW window created by</span></div>
+<div class="line"><span class="comment">// GraphicsApp.</span></div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::UpdateSimulation(<span class="keywordtype">double</span> dt) {</div>
+<div class="line"> cam_.UpdateSimulation(dt, window());</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::InitOpenGL() {</div>
+<div class="line"> cam_.set_view_matrix(Matrix4::lookAt(Point3(0,2,2), Point3(0,2,0), Vector3(0,1,0)););</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::DrawOpenGL() {</div>
+<div class="line"> <span class="comment">// draw your scene using the view matrix from the camera</span></div>
+<div class="line"> Matrix4 proj_matrix = Matrix4::perspective(60, aspect_ratio(), 1, 200);</div>
+<div class="line"> Matrix4 <a class="code" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a> = cam_.view_matrix();</div>
+<div class="line"> Matrix4 model_matrix = Matrix4::RotateY(to_radians(45.0));</div>
+<div class="line"> quick_shapes.DrawCube(model_matrix, view_matirx, proj_matrix, Color(1,1,1));</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_acccdadc08d8d8a0b7b9426f18209ff36"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">mingfx::CraftCam::view_matrix</a></div><div class="ttdeci">Matrix4 view_matrix()</div><div class="ttdoc">Access the camera view matrix created by the CraftCam interactions via this method and use it to draw...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_ae0b0e8d75ffc69c6373a13f1f9c2f171"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">mingfx::CraftCam::CraftCam</a></div><div class="ttdeci">CraftCam()</div><div class="ttdoc">Creates a CraftCam object with an initial view matrix = identity.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="craft__cam_8h_source.html#l00079">79</a> of file <a class="el" href="craft__cam_8h_source.html">craft_cam.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="craft__cam_8h_source.html">craft_cam.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ae0b0e8d75ffc69c6373a13f1f9c2f171"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">CraftCam</a> ()</td></tr>
+<tr class="memdesc:ae0b0e8d75ffc69c6373a13f1f9c2f171"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> object with an initial view matrix = identity. <a href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">More...</a><br /></td></tr>
+<tr class="separator:ae0b0e8d75ffc69c6373a13f1f9c2f171"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9e1864b5859c22d27ba809b1ba7a51f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f">CraftCam</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;initial_view_matrix)</td></tr>
+<tr class="memdesc:ab9e1864b5859c22d27ba809b1ba7a51f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> object with the supplied initial view matrix. <a href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f">More...</a><br /></td></tr>
+<tr class="separator:ab9e1864b5859c22d27ba809b1ba7a51f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85ef9bebdd1595be1288bc104245f4ff"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">~CraftCam</a> ()</td></tr>
+<tr class="separator:a85ef9bebdd1595be1288bc104245f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b7808e489933b117583cf709fa46bc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">UpdateSimulation</a> (double dt, GLFWwindow *window_ptr)</td></tr>
+<tr class="memdesc:a2b7808e489933b117583cf709fa46bc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this from your app's <a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7" title="Call this from your app&#39;s UpdateSimulation() method. This tells the camera to simulate walking based ...">UpdateSimulation()</a> 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>. Example: <a href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">More...</a><br /></td></tr>
+<tr class="separator:a2b7808e489933b117583cf709fa46bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8366e9d8e9bb3b048d1dd14af2f76311"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">OnMouseMove</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;normalized_mouse_delta)</td></tr>
+<tr class="memdesc:a8366e9d8e9bb3b048d1dd14af2f76311"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this from your app's <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311" title="Call this from your app&#39;s OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...">OnMouseMove()</a> or On*MouseDrag() method. Use <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311" title="Call this from your app&#39;s OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...">OnMouseMove()</a> 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: <a href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">More...</a><br /></td></tr>
+<tr class="separator:a8366e9d8e9bb3b048d1dd14af2f76311"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acccdadc08d8d8a0b7b9426f18209ff36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a> ()</td></tr>
+<tr class="memdesc:acccdadc08d8d8a0b7b9426f18209ff36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the camera view matrix created by the <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> interactions via this method and use it to draw the geometry in your scence. For example, within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, you might have: <a href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">More...</a><br /></td></tr>
+<tr class="separator:acccdadc08d8d8a0b7b9426f18209ff36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82a8e20596247e2986e5929c1ef7f150"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">eye</a> ()</td></tr>
+<tr class="memdesc:a82a8e20596247e2986e5929c1ef7f150"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. <a href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">More...</a><br /></td></tr>
+<tr class="separator:a82a8e20596247e2986e5929c1ef7f150"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c7546bccfbf986eb9cd0a2784f74859"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">look</a> ()</td></tr>
+<tr class="memdesc:a2c7546bccfbf986eb9cd0a2784f74859"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. <a href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">More...</a><br /></td></tr>
+<tr class="separator:a2c7546bccfbf986eb9cd0a2784f74859"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3d9c7ea9307dbbadaa4b6e2f9933a7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">UpdateHeight</a> (float new_y_value)</td></tr>
+<tr class="memdesc:ae3d9c7ea9307dbbadaa4b6e2f9933a7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix, then use <a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8" title="This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...">set_view_matrix()</a>, but if you just want to update the height, e.g., while walking around a bumpy terrain, then use this. <a href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">More...</a><br /></td></tr>
+<tr class="separator:ae3d9c7ea9307dbbadaa4b6e2f9933a7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a79a194be8675a0a968f14fe3dcd79da8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">set_view_matrix</a> (<a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="el" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a>)</td></tr>
+<tr class="memdesc:a79a194be8675a0a968f14fe3dcd79da8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. <a href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">More...</a><br /></td></tr>
+<tr class="separator:a79a194be8675a0a968f14fe3dcd79da8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93567af7acbae2939d57cfd8a72bcef2"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">translation_scale</a> ()</td></tr>
+<tr class="memdesc:a93567af7acbae2939d57cfd8a72bcef2"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">More...</a><br /></td></tr>
+<tr class="separator:a93567af7acbae2939d57cfd8a72bcef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a151fde09d08001ee2a615f25ec1acea7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">set_translation_scale</a> (float s)</td></tr>
+<tr class="memdesc:a151fde09d08001ee2a615f25ec1acea7"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">More...</a><br /></td></tr>
+<tr class="separator:a151fde09d08001ee2a615f25ec1acea7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9fe22cc3b933b12674a5b8f1b5c834ac"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">rotation_scale</a> ()</td></tr>
+<tr class="memdesc:a9fe22cc3b933b12674a5b8f1b5c834ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">More...</a><br /></td></tr>
+<tr class="separator:a9fe22cc3b933b12674a5b8f1b5c834ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a352f5a42f6e88d2e599bd5acb42e5831"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">set_rotation_scale</a> (float s)</td></tr>
+<tr class="memdesc:a352f5a42f6e88d2e599bd5acb42e5831"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">More...</a><br /></td></tr>
+<tr class="separator:a352f5a42f6e88d2e599bd5acb42e5831"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96ba4a36029ca8234576cbf2791c5ccb"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">look_scale</a> ()</td></tr>
+<tr class="memdesc:a96ba4a36029ca8234576cbf2791c5ccb"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">More...</a><br /></td></tr>
+<tr class="separator:a96ba4a36029ca8234576cbf2791c5ccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15092ae5de6920546e3ce79aeb196f44"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">set_look_scale</a> (float s)</td></tr>
+<tr class="memdesc:a15092ae5de6920546e3ce79aeb196f44"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">More...</a><br /></td></tr>
+<tr class="separator:a15092ae5de6920546e3ce79aeb196f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ae0b0e8d75ffc69c6373a13f1f9c2f171"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae0b0e8d75ffc69c6373a13f1f9c2f171">&#9670;&nbsp;</a></span>CraftCam() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::CraftCam::CraftCam </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> object with an initial view matrix = identity. </p>
+
+</div>
+</div>
+<a id="ab9e1864b5859c22d27ba809b1ba7a51f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab9e1864b5859c22d27ba809b1ba7a51f">&#9670;&nbsp;</a></span>CraftCam() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::CraftCam::CraftCam </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>initial_view_matrix</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> object with the supplied initial view matrix. </p>
+
+</div>
+</div>
+<a id="a85ef9bebdd1595be1288bc104245f4ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85ef9bebdd1595be1288bc104245f4ff">&#9670;&nbsp;</a></span>~CraftCam()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::CraftCam::~CraftCam </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a82a8e20596247e2986e5929c1ef7f150"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a82a8e20596247e2986e5929c1ef7f150">&#9670;&nbsp;</a></span>eye()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::CraftCam::eye </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. </p>
+
+</div>
+</div>
+<a id="a2c7546bccfbf986eb9cd0a2784f74859"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c7546bccfbf986eb9cd0a2784f74859">&#9670;&nbsp;</a></span>look()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::CraftCam::look </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. </p>
+
+</div>
+</div>
+<a id="a96ba4a36029ca8234576cbf2791c5ccb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96ba4a36029ca8234576cbf2791c5ccb">&#9670;&nbsp;</a></span>look_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::CraftCam::look_scale </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a8366e9d8e9bb3b048d1dd14af2f76311"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8366e9d8e9bb3b048d1dd14af2f76311">&#9670;&nbsp;</a></span>OnMouseMove()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::OnMouseMove </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalized_mouse_delta</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this from your app's <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311" title="Call this from your app&#39;s OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...">OnMouseMove()</a> or On*MouseDrag() method. Use <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311" title="Call this from your app&#39;s OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...">OnMouseMove()</a> 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: </p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnMouseMove(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"> Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> cam_.OnMouseMove(delta_ndc);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p> Alternatively, if you want to only rotate the view when the mouse button is held down, use On*MouseDrag() instead: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnLeftMouseDrag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"> Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> cam_.OnMouseMove(delta_ndc);</div>
+<div class="line">}</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9fe22cc3b933b12674a5b8f1b5c834ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9fe22cc3b933b12674a5b8f1b5c834ac">&#9670;&nbsp;</a></span>rotation_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::CraftCam::rotation_scale </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a15092ae5de6920546e3ce79aeb196f44"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15092ae5de6920546e3ce79aeb196f44">&#9670;&nbsp;</a></span>set_look_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::set_look_scale </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>s</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a352f5a42f6e88d2e599bd5acb42e5831"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a352f5a42f6e88d2e599bd5acb42e5831">&#9670;&nbsp;</a></span>set_rotation_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::set_rotation_scale </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>s</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a151fde09d08001ee2a615f25ec1acea7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a151fde09d08001ee2a615f25ec1acea7">&#9670;&nbsp;</a></span>set_translation_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::set_translation_scale </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>s</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a79a194be8675a0a968f14fe3dcd79da8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a79a194be8675a0a968f14fe3dcd79da8">&#9670;&nbsp;</a></span>set_view_matrix()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::set_view_matrix </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td>
+ <td class="paramname"><em>view_matrix</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. </p>
+
+</div>
+</div>
+<a id="a93567af7acbae2939d57cfd8a72bcef2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93567af7acbae2939d57cfd8a72bcef2">&#9670;&nbsp;</a></span>translation_scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::CraftCam::translation_scale </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="ae3d9c7ea9307dbbadaa4b6e2f9933a7b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">&#9670;&nbsp;</a></span>UpdateHeight()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::UpdateHeight </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>new_y_value</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix, then use <a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8" title="This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...">set_view_matrix()</a>, but if you just want to update the height, e.g., while walking around a bumpy terrain, then use this. </p>
+
+</div>
+</div>
+<a id="a2b7808e489933b117583cf709fa46bc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b7808e489933b117583cf709fa46bc7">&#9670;&nbsp;</a></span>UpdateSimulation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::CraftCam::UpdateSimulation </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">GLFWwindow *&#160;</td>
+ <td class="paramname"><em>window_ptr</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this from your app's <a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7" title="Call this from your app&#39;s UpdateSimulation() method. This tells the camera to simulate walking based ...">UpdateSimulation()</a> 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>. Example: </p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> MyGraphicsApp::UpdateSimulation(<span class="keywordtype">double</span> dt) {</div>
+<div class="line"> cam_.UpdateSimulation(dt, window());</div>
+<div class="line">}</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acccdadc08d8d8a0b7b9426f18209ff36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acccdadc08d8d8a0b7b9426f18209ff36">&#9670;&nbsp;</a></span>view_matrix()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::CraftCam::view_matrix </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Access the camera view matrix created by the <a class="el" href="classmingfx_1_1_craft_cam.html" title="This implements a user interface for controlling the camera with the mouse.">CraftCam</a> interactions via this method and use it to draw the geometry in your scence. For example, within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, you might have: </p>
+<div class="fragment"><div class="line">Matrix4 P = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(30, aspect_ratio(), 1, 20);</div>
+<div class="line">Matrix4 V = cam.view_matrix();</div>
+<div class="line">Matrix4 M = Matrix4::RotateY(<a class="code" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">GfxMath::ToRadians</a>(45.0));</div>
+<div class="line">quick_shapes.DrawCube(M, V, P, Color(1,1,1));</div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a1336de2695bc3bb750b23fb0ea211637"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath::ToRadians</a></div><div class="ttdeci">static float ToRadians(float degrees)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="craft__cam_8h_source.html">craft_cam.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">AddLight</a>(LightProperties light)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">DefaultShader</a>(bool add_default_light=true)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">Draw</a>(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, Mesh *mesh, const MaterialProperties &amp;material)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">Init</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>(int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">num_lights</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">SetLight</a>(int i, LightProperties light)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">StopProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">UseProgram</a>(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, const MaterialProperties &amp;material)</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">~DefaultShader</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::DefaultShader Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="classmingfx_1_1_default_shader-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A simple GLSL shader for textured per-fragment Phong shading with multiple light sources. </p>
+<p>This can be used to draw 3D models stored in a <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">mingfx::Mesh</a> 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 <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a> or <a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0" title="Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the D...">UseProgram()</a> functions.</p>
+<p>An example of using <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a> to render a mesh: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">DefaultShader</a> phong_shader;</div>
+<div class="line">Mesh teapot;</div>
+<div class="line">DefaultShader::MaterialProperties teapot_material;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">Init</a>() {</div>
+<div class="line"> <span class="comment">// initialize the shader</span></div>
+<div class="line"> DefaultShader::LightProperties red_light;</div>
+<div class="line"> red_light.position = Point3(-10, 5, 5);</div>
+<div class="line"> red_light.diffuseIntensity = Color(1,0,0);</div>
+<div class="line"> phong_shader.AddLight(red_light);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// initialize the mesh</span></div>
+<div class="line"> teapot.LoadFromOBJ(<a class="code" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">Platform::FindMinGfxDataFile</a>(<span class="stringliteral">&quot;teapot.obj&quot;</span>));</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> DrawUsingOpenGL() {</div>
+<div class="line"> Matrix4 M;</div>
+<div class="line"> Matrix4 V = <a class="code" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">Matrix4::LookAt</a>(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));</div>
+<div class="line"> Matrix4 P = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(60.0, aspect_ratio(), 0.1, 10.0);</div>
+<div class="line"> phong_shader.Draw(M, V, P, teapot, teapot_material);</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a5cb9f0a1709452268858ec338448a4c3"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">mingfx::DefaultShader::Init</a></div><div class="ttdeci">void Init()</div><div class="ttdoc">This loads vertex and fragment shaders from files, compiles them, and links them. So,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_ac030575fd76a6076262bdd09bbb93428"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">mingfx::DefaultShader::DefaultShader</a></div><div class="ttdeci">DefaultShader(bool add_default_light=true)</div><div class="ttdoc">The constructor defaults to adding a single white light to the scene at (10,10,10)....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4543695a6dfc996d0312b70c2eaa00de"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4::LookAt</a></div><div class="ttdeci">static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)</div><div class="ttdoc">Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a2c36ca57a246efa218a49a942c8c4a3b"><div class="ttname"><a href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">mingfx::Platform::FindMinGfxDataFile</a></div><div class="ttdeci">static std::string FindMinGfxDataFile(const std::string &amp;basename)</div><div class="ttdoc">Searches for a data file that ships with MinGfx.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00062">62</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="default__shader_8h_source.html">default_shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Small data structure to hold per-light properties. <a href="classmingfx_1_1_default_shader_1_1_light_properties.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Small data structure to hold properties of the material to be lit. <a href="classmingfx_1_1_default_shader_1_1_material_properties.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac030575fd76a6076262bdd09bbb93428"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">DefaultShader</a> (bool add_default_light=true)</td></tr>
+<tr class="memdesc:ac030575fd76a6076262bdd09bbb93428"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>. <a href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">More...</a><br /></td></tr>
+<tr class="separator:ac030575fd76a6076262bdd09bbb93428"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0fe7d605d039ecdbf17837bc5bbe0aba"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">~DefaultShader</a> ()</td></tr>
+<tr class="separator:a0fe7d605d039ecdbf17837bc5bbe0aba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af54a8e489d9fb34cfceb1c07562c6e2c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">AddLight</a> (<a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> <a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>)</td></tr>
+<tr class="memdesc:af54a8e489d9fb34cfceb1c07562c6e2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added. <a href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">More...</a><br /></td></tr>
+<tr class="separator:af54a8e489d9fb34cfceb1c07562c6e2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a41e74fb8af72a6b22c72b0916726b6d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">SetLight</a> (int i, <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> <a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>)</td></tr>
+<tr class="memdesc:a41e74fb8af72a6b22c72b0916726b6d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the properties for a light that was already added. <a href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">More...</a><br /></td></tr>
+<tr class="separator:a41e74fb8af72a6b22c72b0916726b6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5cb9f0a1709452268858ec338448a4c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">Init</a> ()</td></tr>
+<tr class="memdesc:a5cb9f0a1709452268858ec338448a4c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>. If you call <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a> before calling <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>, then <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a> will be called as the first step within <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a>. So, if you do not mind a slowdown on the very first frame of your program, it is fine to skip calling <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>. <a href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">More...</a><br /></td></tr>
+<tr class="separator:a5cb9f0a1709452268858ec338448a4c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a652b3d00bb6ae2a806b1ca3e3d42242b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">Draw</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection, <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> *mesh, const <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;material)</td></tr>
+<tr class="memdesc:a652b3d00bb6ae2a806b1ca3e3d42242b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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-&gt;<a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a>. After drawing, it disables the shader. <a href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">More...</a><br /></td></tr>
+<tr class="separator:a652b3d00bb6ae2a806b1ca3e3d42242b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a053599d8c7acd9920461aab8ce945ab0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">UseProgram</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection, const <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;material)</td></tr>
+<tr class="memdesc:a053599d8c7acd9920461aab8ce945ab0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Only needed if you do not want to draw a <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">Mesh</a>. This does all of the same setup for drawing that the <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a> function does and then it returns so that you may draw your own geometry however you want. After doing your draw must call <a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67" title="Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your ge...">StopProgram()</a> to turn off the shader. <a href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">More...</a><br /></td></tr>
+<tr class="separator:a053599d8c7acd9920461aab8ce945ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c188bc0fc5f7fc7405f04b036bd4d67"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">StopProgram</a> ()</td></tr>
+<tr class="memdesc:a2c188bc0fc5f7fc7405f04b036bd4d67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Only needed if you do not want to draw a <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">Mesh</a>. Call this after <a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0" title="Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the D...">UseProgram()</a> and after drawing your geometry to turn off the shader. <a href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">More...</a><br /></td></tr>
+<tr class="separator:a2c188bc0fc5f7fc7405f04b036bd4d67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5b779672a983df8aa67c9cbe026e0c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">num_lights</a> ()</td></tr>
+<tr class="separator:ac5b779672a983df8aa67c9cbe026e0c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2ed33efad35aefbb400be45250cd316"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a> (int i)</td></tr>
+<tr class="separator:aa2ed33efad35aefbb400be45250cd316"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a21c1fd93273eaf643e7ac9b05ba0fb24"><td class="memItemLeft" align="right" valign="top">static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a> = 10</td></tr>
+<tr class="memdesc:a21c1fd93273eaf643e7ac9b05ba0fb24"><td class="mdescLeft">&#160;</td><td class="mdescRight">If changed, this needs to also be changed in the glsl shader code. <a href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">More...</a><br /></td></tr>
+<tr class="separator:a21c1fd93273eaf643e7ac9b05ba0fb24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ac030575fd76a6076262bdd09bbb93428"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac030575fd76a6076262bdd09bbb93428">&#9670;&nbsp;</a></span>DefaultShader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::DefaultShader::DefaultShader </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>add_default_light</em> = <code>true</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>. </p>
+
+</div>
+</div>
+<a id="a0fe7d605d039ecdbf17837bc5bbe0aba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0fe7d605d039ecdbf17837bc5bbe0aba">&#9670;&nbsp;</a></span>~DefaultShader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::DefaultShader::~DefaultShader </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af54a8e489d9fb34cfceb1c07562c6e2c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af54a8e489d9fb34cfceb1c07562c6e2c">&#9670;&nbsp;</a></span>AddLight()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::AddLight </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a>&#160;</td>
+ <td class="paramname"><em>light</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added. </p>
+
+</div>
+</div>
+<a id="a652b3d00bb6ae2a806b1ca3e3d42242b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a652b3d00bb6ae2a806b1ca3e3d42242b">&#9670;&nbsp;</a></span>Draw()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::Draw </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>model</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>view</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projection</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> *&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;&#160;</td>
+ <td class="paramname"><em>material</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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-&gt;<a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a>. After drawing, it disables the shader. </p>
+
+</div>
+</div>
+<a id="a5cb9f0a1709452268858ec338448a4c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5cb9f0a1709452268858ec338448a4c3">&#9670;&nbsp;</a></span>Init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::Init </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>. If you call <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a> before calling <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>, then <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a> will be called as the first step within <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a>. So, if you do not mind a slowdown on the very first frame of your program, it is fine to skip calling <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3" title="This loads vertex and fragment shaders from files, compiles them, and links them. So,...">Init()</a>. </p>
+
+</div>
+</div>
+<a id="aa2ed33efad35aefbb400be45250cd316"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa2ed33efad35aefbb400be45250cd316">&#9670;&nbsp;</a></span>light()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> mingfx::DefaultShader::light </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac5b779672a983df8aa67c9cbe026e0c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac5b779672a983df8aa67c9cbe026e0c2">&#9670;&nbsp;</a></span>num_lights()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::DefaultShader::num_lights </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a41e74fb8af72a6b22c72b0916726b6d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41e74fb8af72a6b22c72b0916726b6d6">&#9670;&nbsp;</a></span>SetLight()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::SetLight </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a>&#160;</td>
+ <td class="paramname"><em>light</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Changes the properties for a light that was already added. </p>
+
+</div>
+</div>
+<a id="a2c188bc0fc5f7fc7405f04b036bd4d67"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c188bc0fc5f7fc7405f04b036bd4d67">&#9670;&nbsp;</a></span>StopProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::StopProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Only needed if you do not want to draw a <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">Mesh</a>. Call this after <a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0" title="Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the D...">UseProgram()</a> and after drawing your geometry to turn off the shader. </p>
+
+</div>
+</div>
+<a id="a053599d8c7acd9920461aab8ce945ab0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a053599d8c7acd9920461aab8ce945ab0">&#9670;&nbsp;</a></span>UseProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::DefaultShader::UseProgram </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>model</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>view</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projection</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;&#160;</td>
+ <td class="paramname"><em>material</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Only needed if you do not want to draw a <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">Mesh</a>. This does all of the same setup for drawing that the <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b" title="This starts the shader and sets its uniform variables based upon the current set of lights,...">Draw()</a> function does and then it returns so that you may draw your own geometry however you want. After doing your draw must call <a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67" title="Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your ge...">StopProgram()</a> to turn off the shader. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a21c1fd93273eaf643e7ac9b05ba0fb24"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a21c1fd93273eaf643e7ac9b05ba0fb24">&#9670;&nbsp;</a></span>MAX_LIGHTS</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const unsigned int mingfx::DefaultShader::MAX_LIGHTS = 10</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If changed, this needs to also be changed in the glsl shader code. </p>
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00066">66</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="default__shader_8h_source.html">default_shader.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader::LightProperties Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">ambient_intensity</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">diffuse_intensity</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">LightProperties</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">position</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">specular_intensity</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::DefaultShader::LightProperties Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="classmingfx_1_1_default_shader_1_1_light_properties-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader::LightProperties Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Small data structure to hold per-light properties. </p>
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00088">88</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="default__shader_8h_source.html">default_shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a582ceee332260b06cbf2ec607257aba3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">LightProperties</a> ()</td></tr>
+<tr class="separator:a582ceee332260b06cbf2ec607257aba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a160b58a0e70294008b9dac8eb6291d3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">position</a></td></tr>
+<tr class="separator:a160b58a0e70294008b9dac8eb6291d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a226c173b193459af291687dd45280fbb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">ambient_intensity</a></td></tr>
+<tr class="separator:a226c173b193459af291687dd45280fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9a010057c15e3db5661b07a03d5176d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">diffuse_intensity</a></td></tr>
+<tr class="separator:a9a010057c15e3db5661b07a03d5176d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abef7666629dbb9da661b163e0584c9a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">specular_intensity</a></td></tr>
+<tr class="separator:abef7666629dbb9da661b163e0584c9a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a582ceee332260b06cbf2ec607257aba3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a582ceee332260b06cbf2ec607257aba3">&#9670;&nbsp;</a></span>LightProperties()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::DefaultShader::LightProperties::LightProperties </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00096">96</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a226c173b193459af291687dd45280fbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a226c173b193459af291687dd45280fbb">&#9670;&nbsp;</a></span>ambient_intensity</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::LightProperties::ambient_intensity</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00091">91</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="a9a010057c15e3db5661b07a03d5176d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a010057c15e3db5661b07a03d5176d7">&#9670;&nbsp;</a></span>diffuse_intensity</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::LightProperties::diffuse_intensity</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00092">92</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="a160b58a0e70294008b9dac8eb6291d3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a160b58a0e70294008b9dac8eb6291d3e">&#9670;&nbsp;</a></span>position</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::DefaultShader::LightProperties::position</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00090">90</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="abef7666629dbb9da661b163e0584c9a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abef7666629dbb9da661b163e0584c9a4">&#9670;&nbsp;</a></span>specular_intensity</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::LightProperties::specular_intensity</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00093">93</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="default__shader_8h_source.html">default_shader.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader::MaterialProperties Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">ambient_reflectance</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">diffuse_reflectance</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">MaterialProperties</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">shinniness</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">specular_reflectance</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">surface_texture</a></td><td class="entry"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::DefaultShader::MaterialProperties Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="classmingfx_1_1_default_shader_1_1_material_properties-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::DefaultShader::MaterialProperties Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Small data structure to hold properties of the material to be lit. </p>
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00070">70</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="default__shader_8h_source.html">default_shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aa24361a9c6eb0a87355d0ad00e47dd96"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">MaterialProperties</a> ()</td></tr>
+<tr class="separator:aa24361a9c6eb0a87355d0ad00e47dd96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:ad4db9a1b0636db84f57f022c51ce7657"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">ambient_reflectance</a></td></tr>
+<tr class="separator:ad4db9a1b0636db84f57f022c51ce7657"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7b75f95a45d7a1030c297192b14014f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">diffuse_reflectance</a></td></tr>
+<tr class="separator:aa7b75f95a45d7a1030c297192b14014f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acfd78796e08f527a24cce3c1e206148c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">specular_reflectance</a></td></tr>
+<tr class="separator:acfd78796e08f527a24cce3c1e206148c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad77e4c78a2bf60776c673b91bc4c8a13"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">shinniness</a></td></tr>
+<tr class="separator:ad77e4c78a2bf60776c673b91bc4c8a13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae26eed46a279c73e947880858763514e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">surface_texture</a></td></tr>
+<tr class="separator:ae26eed46a279c73e947880858763514e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="aa24361a9c6eb0a87355d0ad00e47dd96"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa24361a9c6eb0a87355d0ad00e47dd96">&#9670;&nbsp;</a></span>MaterialProperties()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::DefaultShader::MaterialProperties::MaterialProperties </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00080">80</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="ad4db9a1b0636db84f57f022c51ce7657"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4db9a1b0636db84f57f022c51ce7657">&#9670;&nbsp;</a></span>ambient_reflectance</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::MaterialProperties::ambient_reflectance</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00072">72</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="aa7b75f95a45d7a1030c297192b14014f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7b75f95a45d7a1030c297192b14014f">&#9670;&nbsp;</a></span>diffuse_reflectance</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::MaterialProperties::diffuse_reflectance</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00073">73</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="ad77e4c78a2bf60776c673b91bc4c8a13"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad77e4c78a2bf60776c673b91bc4c8a13">&#9670;&nbsp;</a></span>shinniness</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::DefaultShader::MaterialProperties::shinniness</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00075">75</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="acfd78796e08f527a24cce3c1e206148c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acfd78796e08f527a24cce3c1e206148c">&#9670;&nbsp;</a></span>specular_reflectance</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::DefaultShader::MaterialProperties::specular_reflectance</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00074">74</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="ae26eed46a279c73e947880858763514e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae26eed46a279c73e947880858763514e">&#9670;&nbsp;</a></span>surface_texture</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> mingfx::DefaultShader::MaterialProperties::surface_texture</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="default__shader_8h_source.html#l00076">76</a> of file <a class="el" href="default__shader_8h_source.html">default_shader.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="default__shader_8h_source.html">default_shader.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_gfx_math.html">GfxMath</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::GfxMath Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">Clamp</a>(float x, float a, float b)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">HALF_PI</a></td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">iLerp</a>(int a, int b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">Lerp</a>(float a, float b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">PI</a></td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">ScreenToDepthPlane</a>(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt, float planeDepth)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">ScreenToNearPlane</a>(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">ScreenToWorld</a>(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt, float normalizedZ)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">ToDegrees</a>(float radians)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8">ToDegrees</a>(Vector3 radians)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">ToRadians</a>(float degrees)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190">ToRadians</a>(Vector3 degrees)</td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">TWO_PI</a></td><td class="entry"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::GfxMath Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_gfx_math.html">GfxMath</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="classmingfx_1_1_gfx_math-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::GfxMath Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This class holds a variety of static math functions that are useful to have defined with creating graphics programs. </p>
+
+<p class="definition">Definition at line <a class="el" href="gfxmath_8h_source.html#l00028">28</a> of file <a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:af227209ec043b375497556ee2dcdf850"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">Clamp</a> (float x, float a, float b)</td></tr>
+<tr class="memdesc:af227209ec043b375497556ee2dcdf850"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a if x is less than a and b if x is greater than b. <a href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">More...</a><br /></td></tr>
+<tr class="separator:af227209ec043b375497556ee2dcdf850"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1336de2695bc3bb750b23fb0ea211637"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">ToRadians</a> (float degrees)</td></tr>
+<tr class="separator:a1336de2695bc3bb750b23fb0ea211637"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39a2b5973249fb3aefc210b18b0fdff3"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">ToDegrees</a> (float radians)</td></tr>
+<tr class="separator:a39a2b5973249fb3aefc210b18b0fdff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38927f1f8ea4625d909e64efa93c5190"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190">ToRadians</a> (<a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> degrees)</td></tr>
+<tr class="separator:a38927f1f8ea4625d909e64efa93c5190"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5411a7d8bfc8e47d596362a328dbde8"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8">ToDegrees</a> (<a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> radians)</td></tr>
+<tr class="separator:aa5411a7d8bfc8e47d596362a328dbde8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace452fb6b86eb638897b474e9dd51647"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">Lerp</a> (float a, float b, float alpha)</td></tr>
+<tr class="separator:ace452fb6b86eb638897b474e9dd51647"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af255bde64498e9b55be466abeea97f4d"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">iLerp</a> (int a, int b, float alpha)</td></tr>
+<tr class="separator:af255bde64498e9b55be466abeea97f4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2086a2f885f887fb53da8a5adb5860f0"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">ScreenToNearPlane</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt)</td></tr>
+<tr class="memdesc:a2086a2f885f887fb53da8a5adb5860f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a> 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can do this with: <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a> normPos = graphicsApp-&gt;pixels_to_normalized_coordinates(mousePos);. <a href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">More...</a><br /></td></tr>
+<tr class="separator:a2086a2f885f887fb53da8a5adb5860f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa6af7c0de01fdad46d48d43efb6aa67"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">ScreenToDepthPlane</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt, float planeDepth)</td></tr>
+<tr class="memdesc:aaa6af7c0de01fdad46d48d43efb6aa67"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">More...</a><br /></td></tr>
+<tr class="separator:aaa6af7c0de01fdad46d48d43efb6aa67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a24048d7b688ae46317c3e8de8a701273"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">ScreenToWorld</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt, float normalizedZ)</td></tr>
+<tr class="memdesc:a24048d7b688ae46317c3e8de8a701273"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can use the mouse pos in pixels to get the required arguments like this: <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a> normPos = graphicsApp-&gt;pixels_to_normalized_coordinates(mousePos); float normZ = graphicsApp-&gt;z_value_at_pixel(mousePos);. <a href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">More...</a><br /></td></tr>
+<tr class="separator:a24048d7b688ae46317c3e8de8a701273"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:aaa14e60a5f7c158db443f8b6d87958b4"><td class="memItemLeft" align="right" valign="top">static const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">PI</a></td></tr>
+<tr class="separator:aaa14e60a5f7c158db443f8b6d87958b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e5c7562116babf11c61f4c7f20f8b69"><td class="memItemLeft" align="right" valign="top">static const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">TWO_PI</a></td></tr>
+<tr class="separator:a0e5c7562116babf11c61f4c7f20f8b69"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5ba8ba54257d86dcf95bd2bbeb534c0"><td class="memItemLeft" align="right" valign="top">static const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">HALF_PI</a></td></tr>
+<tr class="separator:ab5ba8ba54257d86dcf95bd2bbeb534c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af227209ec043b375497556ee2dcdf850"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af227209ec043b375497556ee2dcdf850">&#9670;&nbsp;</a></span>Clamp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::GfxMath::Clamp </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a if x is less than a and b if x is greater than b. </p>
+
+</div>
+</div>
+<a id="af255bde64498e9b55be466abeea97f4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af255bde64498e9b55be466abeea97f4d">&#9670;&nbsp;</a></span>iLerp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static int mingfx::GfxMath::iLerp </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ace452fb6b86eb638897b474e9dd51647"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ace452fb6b86eb638897b474e9dd51647">&#9670;&nbsp;</a></span>Lerp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::GfxMath::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aaa6af7c0de01fdad46d48d43efb6aa67"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa6af7c0de01fdad46d48d43efb6aa67">&#9670;&nbsp;</a></span>ScreenToDepthPlane()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::GfxMath::ScreenToDepthPlane </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedScreenPt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>planeDepth</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a2086a2f885f887fb53da8a5adb5860f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2086a2f885f887fb53da8a5adb5860f0">&#9670;&nbsp;</a></span>ScreenToNearPlane()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::GfxMath::ScreenToNearPlane </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedScreenPt</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a> 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can do this with: <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a> normPos = graphicsApp-&gt;pixels_to_normalized_coordinates(mousePos);. </p>
+
+</div>
+</div>
+<a id="a24048d7b688ae46317c3e8de8a701273"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a24048d7b688ae46317c3e8de8a701273">&#9670;&nbsp;</a></span>ScreenToWorld()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::GfxMath::ScreenToWorld </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedScreenPt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>normalizedZ</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can use the mouse pos in pixels to get the required arguments like this: <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a> normPos = graphicsApp-&gt;pixels_to_normalized_coordinates(mousePos); float normZ = graphicsApp-&gt;z_value_at_pixel(mousePos);. </p>
+
+</div>
+</div>
+<a id="a39a2b5973249fb3aefc210b18b0fdff3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39a2b5973249fb3aefc210b18b0fdff3">&#9670;&nbsp;</a></span>ToDegrees() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::GfxMath::ToDegrees </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radians</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aa5411a7d8bfc8e47d596362a328dbde8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5411a7d8bfc8e47d596362a328dbde8">&#9670;&nbsp;</a></span>ToDegrees() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::GfxMath::ToDegrees </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>radians</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1336de2695bc3bb750b23fb0ea211637"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1336de2695bc3bb750b23fb0ea211637">&#9670;&nbsp;</a></span>ToRadians() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::GfxMath::ToRadians </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>degrees</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a38927f1f8ea4625d909e64efa93c5190"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38927f1f8ea4625d909e64efa93c5190">&#9670;&nbsp;</a></span>ToRadians() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::GfxMath::ToRadians </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>degrees</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="ab5ba8ba54257d86dcf95bd2bbeb534c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab5ba8ba54257d86dcf95bd2bbeb534c0">&#9670;&nbsp;</a></span>HALF_PI</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float mingfx::GfxMath::HALF_PI</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="gfxmath_8h_source.html#l00074">74</a> of file <a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>.</p>
+
+</div>
+</div>
+<a id="aaa14e60a5f7c158db443f8b6d87958b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa14e60a5f7c158db443f8b6d87958b4">&#9670;&nbsp;</a></span>PI</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float mingfx::GfxMath::PI</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="gfxmath_8h_source.html#l00072">72</a> of file <a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>.</p>
+
+</div>
+</div>
+<a id="a0e5c7562116babf11c61f4c7f20f8b69"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e5c7562116babf11c61f4c7f20f8b69">&#9670;&nbsp;</a></span>TWO_PI</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float mingfx::GfxMath::TWO_PI</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="gfxmath_8h_source.html#l00073">73</a> of file <a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="gfxmath_8h_source.html">gfxmath.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::GraphicsApp Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a>(NVGcontext *ctx)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">framebuffer_height</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">framebuffer_width</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a>(int width, int height, const std::string &amp;caption)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">InitGraphicsContext</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">IsKeyDown</a>(int key)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">IsLeftMouseDown</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">IsMiddleMouseDown</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">IsRightMouseDown</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">NormalizedDeviceCoordsToPixels</a>(const Point2 &amp;pointInNDC)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">NormalizedDeviceCoordsToPixels</a>(const Vector2 &amp;pointInNDC)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(const char *c, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(const char *c, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(const char *c, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(const Point2 &amp;pos, const Vector2 &amp;delta)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(const Point2 &amp;pos, const Vector2 &amp;delta)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(const Point2 &amp;pos, const Vector2 &amp;delta)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(const Point2 &amp;pos, const Vector2 &amp;delta)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(const Point2 &amp;pos)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(int key, int scancode, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(int key, int scancode, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(int key, int scancode, int modifiers)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">OnWindowResize</a>(int new_width, int new_height)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">PixelsToNormalizedDeviceCoords</a>(const Point2 &amp;pointInPixels)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">PixelsToNormalizedDeviceCoords</a>(const Vector2 &amp;vectorInPixels)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">ReadZValueAtPixel</a>(const Point2 &amp;pointInPixels, unsigned int whichBuffer=GL_BACK)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">ResizeWindow</a>(int new_width, int new_height)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">Run</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a>(double dt)</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">window_height</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">window_width</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">~GraphicsApp</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::GraphicsApp Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_graphics_app-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::GraphicsApp Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This is the main application base class for the MinGfx Toolkit. </p>
+<p><br />
+</p>
+<p><em>Create a Subclass:</em></p>
+<p>To create your own graphics application, you should create a subclass of <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a> and then override some key functions:</p>
+<ol type="1">
+<li>User Input: To get input from the keyboard and mouse, override <a class="el" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f" title="If the mouse has moved in the past frame and no mouse buttons are currently pressed,...">OnMouseMove()</a> and/or the other On...() functions.</li>
+<li>Drawing Graphics: To draw graphics override one or more of the Draw*() functions.<ul>
+<li><a class="el" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0" title="Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...">DrawUsingNanoVG()</a> is the right place to make 2D drawing calls using the nanovg library.</li>
+<li><a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">DrawUsingOpenGL()</a> is the right place to make 2D or 3D drawing calls using OpenGL. This includes drawing using the <a class="el" href="classmingfx_1_1_mesh.html" title="A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.">Mesh</a>, <a class="el" href="classmingfx_1_1_quick_shapes.html" title="This class provides a quick way to draw shapes for use in debugging or simple scenes.">QuickShapes</a>, <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a>, <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a>, and all other MinGfx classes since these are all based on OpenGL.</li>
+<li><a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a" title="Called at the beginning of the Run() method.">InitNanoGUI()</a> is the right place to create nanogui windows to add a 2D user interface to your app.</li>
+<li><a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3" title="Override this to initialize the OpenGL context with textures, vertex buffers, etc.">InitOpenGL()</a> is the right place to load textures, meshes, shaders, and other graphics objects that can only be created after the OpenGL context exists.</li>
+</ul>
+</li>
+<li>Physics, Animation, AI, etc.: Override the <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa" title="Called once per frame.">UpdateSimulation()</a> function to do other non-graphics calculations required by your program. This is called automatically once per frame.</li>
+</ol>
+<p>Keep in mind that internally the app uses a rendering loop that looks something like this: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>(); <span class="comment">// your hook for initializing NanoGUI widgets</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>(); <span class="comment">// your hook for initializing OpenGL graphics</span></div>
+<div class="line"><span class="keywordflow">while</span> (!program_ready_to_close) {</div>
+<div class="line"> <span class="comment">// user input</span></div>
+<div class="line"> internal_get_input_events_from_operating_system();</div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(); <span class="comment">// your hook for processing input</span></div>
+<div class="line"> On*(); <span class="comment">// all other event callbacks -- your hook for processing input</span></div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// phyics, etc.</span></div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a>(); <span class="comment">// your hook for physics, animation, AI, etc.</span></div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// draw graphics</span></div>
+<div class="line"> internal_render_gui_elements_using_nanogui();</div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a>(); <span class="comment">// your hook for drawing 2D vector graphics</span></div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>(); <span class="comment">// your hook for 2D/3D rendering with OpenGL</span></div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a23a780feda9b52eea7319a53b204ce8f"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp::OnMouseMove</a></div><div class="ttdeci">virtual void OnMouseMove(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse has moved in the past frame and no mouse buttons are currently pressed,...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00165">graphics_app.h:165</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5a858fd10651f7617491f37b49dbf8ca"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp::DrawUsingOpenGL</a></div><div class="ttdeci">virtual void DrawUsingOpenGL()</div><div class="ttdoc">Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00317">graphics_app.h:317</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a688f12675da58210e8ec2ffcda4923d0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp::DrawUsingNanoVG</a></div><div class="ttdeci">virtual void DrawUsingNanoVG(NVGcontext *ctx)</div><div class="ttdoc">Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00311">graphics_app.h:311</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a96196b37f8b488b64072ec74b5d2b0b3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp::InitOpenGL</a></div><div class="ttdeci">virtual void InitOpenGL()</div><div class="ttdoc">Override this to initialize the OpenGL context with textures, vertex buffers, etc.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00297">graphics_app.h:297</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a9e2b4cd7eeabe1ace9d5e9220349fbaa"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp::UpdateSimulation</a></div><div class="ttdeci">virtual void UpdateSimulation(double dt)</div><div class="ttdoc">Called once per frame.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00306">graphics_app.h:306</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adfe77d841f43961b299ea6159477968a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp::InitNanoGUI</a></div><div class="ttdeci">virtual void InitNanoGUI()</div><div class="ttdoc">Called at the beginning of the Run() method.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00284">graphics_app.h:284</a></div></div>
+</div><!-- fragment --><p><em>A Complete Example with GUI Widgets</em></p>
+<p>If you wish to add some buttons, sliders, etc. in your application, you can do this inside <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a> by accessing the NanoGUI library. You will need to pass NanoGUI a nanogui::screen object, which you can get from the <a class="el" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16" title="Access to the underlying NanoGUI Screen object.">screen()</a> function. NanoGui setup should be done in the constructor, like this: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="mingfx_8h.html">mingfx.h</a>&gt;</span></div>
+<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacemingfx.html">mingfx</a>;</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">class </span>MyApp : <span class="keyword">public</span> GraphcisApp {</div>
+<div class="line"><span class="keyword">public</span>:</div>
+<div class="line"> MyApp() : <a class="code" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a>(1024,768, <span class="stringliteral">&quot;My Amazing App&quot;</span>) {</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <span class="keyword">virtual</span> ~MyApp() {}</div>
+<div class="line"> </div>
+<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>() {</div>
+<div class="line"> <span class="comment">// Setup the GUI window</span></div>
+<div class="line"> nanogui::Window *<a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a> = <span class="keyword">new</span> nanogui::Window(<a class="code" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>(), <span class="stringliteral">&quot;My GUI Panel&quot;</span>);</div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>-&gt;setPosition(Eigen::Vector2i(10, 10));</div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>-&gt;setSize(Eigen::Vector2i(400,200));</div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>-&gt;setLayout(<span class="keyword">new</span> nanogui::GroupLayout());</div>
+<div class="line"> </div>
+<div class="line"> nanogui::Button pause_btn = <span class="keyword">new</span> nanogui::Button(<a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>, <span class="stringliteral">&quot;Pause&quot;</span>);</div>
+<div class="line"> pause_btn-&gt;setCallback(std::bind(&amp;MyApp::OnPauseBtnPressed, <span class="keyword">this</span>));</div>
+<div class="line"> pause_btn-&gt;setTooltip(<span class="stringliteral">&quot;Toggle playback.&quot;</span>);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>()-&gt;performLayout();</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>() {</div>
+<div class="line"> glClearColor(0.0, 0.0, 0.0, 1);</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// this callback is for the nanogui pause_btn defined above</span></div>
+<div class="line"> <span class="keywordtype">void</span> OnPauseBtnPressed() {</div>
+<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Pause pressed.&quot;</span> &lt;&lt; std::endl; </div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// this callback is built into the base GraphicsApp class</span></div>
+<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Mouse moved to &quot;</span> &lt;&lt; pos &lt;&lt; std::endl;</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>() {</div>
+<div class="line"> Matrix4 model = <a class="code" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Matrix4::Translation</a>(Vector3(-1,0,0)) * <a class="code" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">Matrix4::Scale</a>(Vector3(0.5, 0.5, 0.5));</div>
+<div class="line"> Matrix4 view = <a class="code" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">Matrix4::LookAt</a>(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));</div>
+<div class="line"> Matrix4 proj = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(60.0, <a class="code" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a>(), 0.1, 10.0);</div>
+<div class="line"> quick_shapes_.DrawCube(model, view, proj, Color(1,1,1));</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">private</span>:</div>
+<div class="line"> QuickShapes quick_shapes_;</div>
+<div class="line">};</div>
+<div class="line"> </div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span> *argv[]) {</div>
+<div class="line"> MyApp app;</div>
+<div class="line"> app.Run();</div>
+<div class="line"> <span class="keywordflow">return</span> 0;</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abd0ee14f7e12146000cdb3532d54ba94"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp::window</a></div><div class="ttdeci">virtual GLFWwindow * window()</div><div class="ttdoc">Access to the underlying GLFWwindow object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abf0b48c7d8e5325ab038fddbe1c38b5b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp::GraphicsApp</a></div><div class="ttdeci">GraphicsApp(int width, int height, const std::string &amp;caption)</div><div class="ttdoc">Constructs a new app but does not yet run it.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac682691ee96ea32037abafd74d144a23"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp::aspect_ratio</a></div><div class="ttdeci">virtual float aspect_ratio()</div><div class="ttdoc">Returns width/height for the current shape of the window.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adc68196c3f03bd0608c41f6e4d7dad16"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp::screen</a></div><div class="ttdeci">virtual nanogui::Screen * screen()</div><div class="ttdoc">Access to the underlying NanoGUI Screen object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0232a58d20b1da5374cf8c72fb113a4e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">mingfx::Matrix4::Scale</a></div><div class="ttdeci">static Matrix4 Scale(const Vector3 &amp;v)</div><div class="ttdoc">Returns the scale matrix described by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4543695a6dfc996d0312b70c2eaa00de"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4::LookAt</a></div><div class="ttdeci">static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)</div><div class="ttdoc">Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae82bab81df82dc03f5eb11e74ba1dd84"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4::Translation</a></div><div class="ttdeci">static Matrix4 Translation(const Vector3 &amp;v)</div><div class="ttdoc">Returns the translation matrix described by the vector.</div></div>
+<div class="ttc" id="amingfx_8h_html"><div class="ttname"><a href="mingfx_8h.html">mingfx.h</a></div><div class="ttdoc">Includes the entire MinGfx library and calls using namespace mingfx.</div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00135">135</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:abf0b48c7d8e5325ab038fddbe1c38b5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a> (int width, int height, const std::string &amp;caption)</td></tr>
+<tr class="memdesc:abf0b48c7d8e5325ab038fddbe1c38b5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new app but does not yet run it. <a href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">More...</a><br /></td></tr>
+<tr class="separator:abf0b48c7d8e5325ab038fddbe1c38b5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab7925c6b844e6bef428feacf4aa9afb"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">~GraphicsApp</a> ()</td></tr>
+<tr class="memdesc:aab7925c6b844e6bef428feacf4aa9afb"><td class="mdescLeft">&#160;</td><td class="mdescRight">The destructor will shutdown the graphics system and window. <a href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">More...</a><br /></td></tr>
+<tr class="separator:aab7925c6b844e6bef428feacf4aa9afb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23a780feda9b52eea7319a53b204ce8f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta)</td></tr>
+<tr class="memdesc:a23a780feda9b52eea7319a53b204ce8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">More...</a><br /></td></tr>
+<tr class="separator:a23a780feda9b52eea7319a53b204ce8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae12d9b192a2167a71e0c103405addb17"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:ae12d9b192a2167a71e0c103405addb17"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was pressed down since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">More...</a><br /></td></tr>
+<tr class="separator:ae12d9b192a2167a71e0c103405addb17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56d350a8b030998709a51630753d509b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta)</td></tr>
+<tr class="memdesc:a56d350a8b030998709a51630753d509b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">More...</a><br /></td></tr>
+<tr class="separator:a56d350a8b030998709a51630753d509b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a536dbadf0b8a11ef59d7e855ca43f613"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:a536dbadf0b8a11ef59d7e855ca43f613"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was released since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">More...</a><br /></td></tr>
+<tr class="separator:a536dbadf0b8a11ef59d7e855ca43f613"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a588315d5c45490b440a764af2bc5bd48"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:a588315d5c45490b440a764af2bc5bd48"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was pressed down since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">More...</a><br /></td></tr>
+<tr class="separator:a588315d5c45490b440a764af2bc5bd48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac7628fece754c0ac4875791e19712dc6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta)</td></tr>
+<tr class="memdesc:ac7628fece754c0ac4875791e19712dc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">More...</a><br /></td></tr>
+<tr class="separator:ac7628fece754c0ac4875791e19712dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a378b8a102775eeb01a6da9dd68482d08"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:a378b8a102775eeb01a6da9dd68482d08"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was released since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">More...</a><br /></td></tr>
+<tr class="separator:a378b8a102775eeb01a6da9dd68482d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a903f94b82cc10f32039ff3f2ba368a9c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:a903f94b82cc10f32039ff3f2ba368a9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was pressed down since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">More...</a><br /></td></tr>
+<tr class="separator:a903f94b82cc10f32039ff3f2ba368a9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00ad5039af2f428a08fe45751a9731c7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta)</td></tr>
+<tr class="memdesc:a00ad5039af2f428a08fe45751a9731c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">More...</a><br /></td></tr>
+<tr class="separator:a00ad5039af2f428a08fe45751a9731c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7c33791c44afc87ce789874f3002ca3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos)</td></tr>
+<tr class="memdesc:ad7c33791c44afc87ce789874f3002ca3"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the mouse button was released since the last frame, then this function will be called to notify you. <a href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">More...</a><br /></td></tr>
+<tr class="separator:ad7c33791c44afc87ce789874f3002ca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a002560456139e537877d079978db4b01"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a> (const char *c, int modifiers)</td></tr>
+<tr class="memdesc:a002560456139e537877d079978db4b01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a keyboard down event into the actual character typed. <a href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">More...</a><br /></td></tr>
+<tr class="separator:a002560456139e537877d079978db4b01"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d5831953b37fae615fbd1bf527214b0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a> (const char *c, int modifiers)</td></tr>
+<tr class="memdesc:a1d5831953b37fae615fbd1bf527214b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a keyboard repeat event into the actual character typed. <a href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">More...</a><br /></td></tr>
+<tr class="separator:a1d5831953b37fae615fbd1bf527214b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8376ef8eb0840b229a2301f995db3f6c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a> (const char *c, int modifiers)</td></tr>
+<tr class="memdesc:a8376ef8eb0840b229a2301f995db3f6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a keyboard up event into the actual character typed. <a href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">More...</a><br /></td></tr>
+<tr class="separator:a8376ef8eb0840b229a2301f995db3f6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abcf1935e92550bcda311cac62f312952"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a> (int key, int scancode, int modifiers)</td></tr>
+<tr class="memdesc:abcf1935e92550bcda311cac62f312952"><td class="mdescLeft">&#160;</td><td class="mdescRight">The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. <a href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">More...</a><br /></td></tr>
+<tr class="separator:abcf1935e92550bcda311cac62f312952"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8362762489e287edfa59617a6602db22"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a> (int key, int scancode, int modifiers)</td></tr>
+<tr class="memdesc:a8362762489e287edfa59617a6602db22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. <a href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">More...</a><br /></td></tr>
+<tr class="separator:a8362762489e287edfa59617a6602db22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0deb6da45fc0d3980e44556a861c7a14"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a> (int key, int scancode, int modifiers)</td></tr>
+<tr class="memdesc:a0deb6da45fc0d3980e44556a861c7a14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. <a href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">More...</a><br /></td></tr>
+<tr class="separator:a0deb6da45fc0d3980e44556a861c7a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adafdc4631db256fefce3c4ffdfd5086a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">OnWindowResize</a> (int new_width, int new_height)</td></tr>
+<tr class="memdesc:adafdc4631db256fefce3c4ffdfd5086a"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5" title="Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.">ResizeWindow()</a>. <a href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">More...</a><br /></td></tr>
+<tr class="separator:adafdc4631db256fefce3c4ffdfd5086a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ee9ae3d14e76c949979a8008687d6c9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">Run</a> ()</td></tr>
+<tr class="memdesc:a5ee9ae3d14e76c949979a8008687d6c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">After creating a new <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, call this to start the app's mainloop. <a href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">More...</a><br /></td></tr>
+<tr class="separator:a5ee9ae3d14e76c949979a8008687d6c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adfe77d841f43961b299ea6159477968a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a> ()</td></tr>
+<tr class="memdesc:adfe77d841f43961b299ea6159477968a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called at the beginning of the <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9" title="After creating a new GraphicsApp, call this to start the app&#39;s mainloop.">Run()</a> method. <a href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">More...</a><br /></td></tr>
+<tr class="separator:adfe77d841f43961b299ea6159477968a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96196b37f8b488b64072ec74b5d2b0b3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a> ()</td></tr>
+<tr class="memdesc:a96196b37f8b488b64072ec74b5d2b0b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override this to initialize the OpenGL context with textures, vertex buffers, etc. <a href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">More...</a><br /></td></tr>
+<tr class="separator:a96196b37f8b488b64072ec74b5d2b0b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9e2b4cd7eeabe1ace9d5e9220349fbaa"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a> (double dt)</td></tr>
+<tr class="memdesc:a9e2b4cd7eeabe1ace9d5e9220349fbaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called once per frame. <a href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">More...</a><br /></td></tr>
+<tr class="separator:a9e2b4cd7eeabe1ace9d5e9220349fbaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a688f12675da58210e8ec2ffcda4923d0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a> (NVGcontext *ctx)</td></tr>
+<tr class="memdesc:a688f12675da58210e8ec2ffcda4923d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override this to draw graphics using the nanovg vector graphics library, which provides an easy way to draw 2D shapes to the screen. <a href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">More...</a><br /></td></tr>
+<tr class="separator:a688f12675da58210e8ec2ffcda4923d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a858fd10651f7617491f37b49dbf8ca"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a> ()</td></tr>
+<tr class="memdesc:a5a858fd10651f7617491f37b49dbf8ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override this to draw graphics using raw OpenGL 2D or 3D graphics calls. <a href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">More...</a><br /></td></tr>
+<tr class="separator:a5a858fd10651f7617491f37b49dbf8ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60688614e5dfeaabf57f8825cdaa08ac"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">IsKeyDown</a> (int key)</td></tr>
+<tr class="memdesc:a60688614e5dfeaabf57f8825cdaa08ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the specified is is currently held down. Uses the GLFW key codes found here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. <a href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">More...</a><br /></td></tr>
+<tr class="separator:a60688614e5dfeaabf57f8825cdaa08ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b78d79192180a6ef5271d2a2b2d1cc7"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">IsLeftMouseDown</a> ()</td></tr>
+<tr class="memdesc:a5b78d79192180a6ef5271d2a2b2d1cc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the left mouse button is currently held down. <a href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">More...</a><br /></td></tr>
+<tr class="separator:a5b78d79192180a6ef5271d2a2b2d1cc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a941f7598400073bfa93aa194a3773434"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">IsMiddleMouseDown</a> ()</td></tr>
+<tr class="memdesc:a941f7598400073bfa93aa194a3773434"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the middle mouse button is currently held down. <a href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">More...</a><br /></td></tr>
+<tr class="separator:a941f7598400073bfa93aa194a3773434"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4aa30e3d33731178a9162454a81be08d"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">IsRightMouseDown</a> ()</td></tr>
+<tr class="memdesc:a4aa30e3d33731178a9162454a81be08d"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the right mouse button is currently held down. <a href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">More...</a><br /></td></tr>
+<tr class="separator:a4aa30e3d33731178a9162454a81be08d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c682fa2dd0bce855e1e32ffeac532b0"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">window_width</a> ()</td></tr>
+<tr class="memdesc:a1c682fa2dd0bce855e1e32ffeac532b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current width of the client area of the window in pixels. <a href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">More...</a><br /></td></tr>
+<tr class="separator:a1c682fa2dd0bce855e1e32ffeac532b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7a641f7ccf174cd0a059347b623e016"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">window_height</a> ()</td></tr>
+<tr class="memdesc:ad7a641f7ccf174cd0a059347b623e016"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current height of the client area of the window in pixels. <a href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">More...</a><br /></td></tr>
+<tr class="separator:ad7a641f7ccf174cd0a059347b623e016"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad596e69d030e7689ad91eaaec6975696"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">framebuffer_width</a> ()</td></tr>
+<tr class="memdesc:ad596e69d030e7689ad91eaaec6975696"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current width of the framebuffer in pixels. <a href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">More...</a><br /></td></tr>
+<tr class="separator:ad596e69d030e7689ad91eaaec6975696"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af58153eb104f53216a3e67de2a472f32"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">framebuffer_height</a> ()</td></tr>
+<tr class="memdesc:af58153eb104f53216a3e67de2a472f32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current height of the framebuffer in pixels. <a href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">More...</a><br /></td></tr>
+<tr class="separator:af58153eb104f53216a3e67de2a472f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac682691ee96ea32037abafd74d144a23"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a> ()</td></tr>
+<tr class="memdesc:ac682691ee96ea32037abafd74d144a23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns width/height for the current shape of the window. <a href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">More...</a><br /></td></tr>
+<tr class="separator:ac682691ee96ea32037abafd74d144a23"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a94b19404e61411ef64c0ddde8ad6c07a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">PixelsToNormalizedDeviceCoords</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels)</td></tr>
+<tr class="memdesc:a94b19404e61411ef64c0ddde8ad6c07a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>-1, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)). <a href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">More...</a><br /></td></tr>
+<tr class="separator:a94b19404e61411ef64c0ddde8ad6c07a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6141ec6adc29572ee99ca26cf90e6248"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">NormalizedDeviceCoordsToPixels</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInNDC)</td></tr>
+<tr class="memdesc:a6141ec6adc29572ee99ca26cf90e6248"><td class="mdescLeft">&#160;</td><td class="mdescRight">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)) <a href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">More...</a><br /></td></tr>
+<tr class="separator:a6141ec6adc29572ee99ca26cf90e6248"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e8ac965474de9046448b8811bf25dd1"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">PixelsToNormalizedDeviceCoords</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;vectorInPixels)</td></tr>
+<tr class="memdesc:a4e8ac965474de9046448b8811bf25dd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">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)). <a href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">More...</a><br /></td></tr>
+<tr class="separator:a4e8ac965474de9046448b8811bf25dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a45596da36aa3905e7c752826a7fd9f93"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">NormalizedDeviceCoordsToPixels</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;pointInNDC)</td></tr>
+<tr class="memdesc:a45596da36aa3905e7c752826a7fd9f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">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)) <a href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">More...</a><br /></td></tr>
+<tr class="separator:a45596da36aa3905e7c752826a7fd9f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a471951dbf45ffa88027cb92707443646"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">ReadZValueAtPixel</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels, unsigned int whichBuffer=GL_BACK)</td></tr>
+<tr class="memdesc:a471951dbf45ffa88027cb92707443646"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far plane. <a href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">More...</a><br /></td></tr>
+<tr class="separator:a471951dbf45ffa88027cb92707443646"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc68196c3f03bd0608c41f6e4d7dad16"><td class="memItemLeft" align="right" valign="top">virtual nanogui::Screen *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a> ()</td></tr>
+<tr class="memdesc:adc68196c3f03bd0608c41f6e4d7dad16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the underlying NanoGUI Screen object. <a href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">More...</a><br /></td></tr>
+<tr class="separator:adc68196c3f03bd0608c41f6e4d7dad16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd0ee14f7e12146000cdb3532d54ba94"><td class="memItemLeft" align="right" valign="top">virtual GLFWwindow *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a> ()</td></tr>
+<tr class="memdesc:abd0ee14f7e12146000cdb3532d54ba94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the underlying GLFWwindow object. <a href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">More...</a><br /></td></tr>
+<tr class="separator:abd0ee14f7e12146000cdb3532d54ba94"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0db71b2465e12a8aef4eefbe8b9fcee5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">ResizeWindow</a> (int new_width, int new_height)</td></tr>
+<tr class="memdesc:a0db71b2465e12a8aef4eefbe8b9fcee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cause the graphics windows to resize programmatically rather than by dragging on the corner manually. <a href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">More...</a><br /></td></tr>
+<tr class="separator:a0db71b2465e12a8aef4eefbe8b9fcee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04beb462aa04371dc86d807838f999e1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">InitGraphicsContext</a> ()</td></tr>
+<tr class="memdesc:a04beb462aa04371dc86d807838f999e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">More...</a><br /></td></tr>
+<tr class="separator:a04beb462aa04371dc86d807838f999e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="abf0b48c7d8e5325ab038fddbe1c38b5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf0b48c7d8e5325ab038fddbe1c38b5b">&#9670;&nbsp;</a></span>GraphicsApp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::GraphicsApp::GraphicsApp </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>caption</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a new app but does not yet run it. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">width</td><td>The width of the client area of the window in pixels. </td></tr>
+ <tr><td class="paramname">height</td><td>The height of the client area of the window in pixels. </td></tr>
+ <tr><td class="paramname">caption</td><td>The caption for the window's title bar. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="aab7925c6b844e6bef428feacf4aa9afb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aab7925c6b844e6bef428feacf4aa9afb">&#9670;&nbsp;</a></span>~GraphicsApp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::GraphicsApp::~GraphicsApp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The destructor will shutdown the graphics system and window. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ac682691ee96ea32037abafd74d144a23"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac682691ee96ea32037abafd74d144a23">&#9670;&nbsp;</a></span>aspect_ratio()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual float mingfx::GraphicsApp::aspect_ratio </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns width/height for the current shape of the window. </p>
+
+</div>
+</div>
+<a id="a688f12675da58210e8ec2ffcda4923d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a688f12675da58210e8ec2ffcda4923d0">&#9670;&nbsp;</a></span>DrawUsingNanoVG()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::DrawUsingNanoVG </td>
+ <td>(</td>
+ <td class="paramtype">NVGcontext *&#160;</td>
+ <td class="paramname"><em>ctx</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Override this to draw graphics using the nanovg vector graphics library, which provides an easy way to draw 2D shapes to the screen. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00311">311</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a5a858fd10651f7617491f37b49dbf8ca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a858fd10651f7617491f37b49dbf8ca">&#9670;&nbsp;</a></span>DrawUsingOpenGL()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::DrawUsingOpenGL </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Override this to draw graphics using raw OpenGL 2D or 3D graphics calls. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00317">317</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="af58153eb104f53216a3e67de2a472f32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af58153eb104f53216a3e67de2a472f32">&#9670;&nbsp;</a></span>framebuffer_height()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int mingfx::GraphicsApp::framebuffer_height </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the current height of the framebuffer in pixels. </p>
+<p>Note that on some displays (e.g., Mac Retina) the framebuffer is larger than the window. </p>
+
+</div>
+</div>
+<a id="ad596e69d030e7689ad91eaaec6975696"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad596e69d030e7689ad91eaaec6975696">&#9670;&nbsp;</a></span>framebuffer_width()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int mingfx::GraphicsApp::framebuffer_width </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the current width of the framebuffer in pixels. </p>
+<p>Note that on some displays (e.g., Mac Retina) the framebuffer is larger than the window. </p>
+
+</div>
+</div>
+<a id="a04beb462aa04371dc86d807838f999e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a04beb462aa04371dc86d807838f999e1">&#9670;&nbsp;</a></span>InitGraphicsContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::InitGraphicsContext </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<p>It is called automatically by the <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9" title="After creating a new GraphicsApp, call this to start the app&#39;s mainloop.">Run()</a> method before calling the <a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a" title="Called at the beginning of the Run() method.">InitNanoGUI()</a> and <a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3" title="Override this to initialize the OpenGL context with textures, vertex buffers, etc.">InitOpenGL()</a> methods. So, users should place all of their graphics initialization code inside one of those two methods. </p>
+
+</div>
+</div>
+<a id="adfe77d841f43961b299ea6159477968a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adfe77d841f43961b299ea6159477968a">&#9670;&nbsp;</a></span>InitNanoGUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::InitNanoGUI </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Called at the beginning of the <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9" title="After creating a new GraphicsApp, call this to start the app&#39;s mainloop.">Run()</a> method. </p>
+<p>Override this to initialize any NanoGUI graphics related properties including 2D windows, buttons, sliders, etc...</p>
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00284">284</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a96196b37f8b488b64072ec74b5d2b0b3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96196b37f8b488b64072ec74b5d2b0b3">&#9670;&nbsp;</a></span>InitOpenGL()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::InitOpenGL </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Override this to initialize the OpenGL context with textures, vertex buffers, etc. </p>
+<p>that you will use later inside <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">DrawUsingOpenGL()</a>. This <a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3" title="Override this to initialize the OpenGL context with textures, vertex buffers, etc.">InitOpenGL()</a> function is called once on program startup just after the OpenGL drawing context is created.</p>
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00297">297</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a60688614e5dfeaabf57f8825cdaa08ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60688614e5dfeaabf57f8825cdaa08ac">&#9670;&nbsp;</a></span>IsKeyDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool mingfx::GraphicsApp::IsKeyDown </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if the specified is is currently held down. Uses the GLFW key codes found here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. </p>
+
+</div>
+</div>
+<a id="a5b78d79192180a6ef5271d2a2b2d1cc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b78d79192180a6ef5271d2a2b2d1cc7">&#9670;&nbsp;</a></span>IsLeftMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool mingfx::GraphicsApp::IsLeftMouseDown </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if the left mouse button is currently held down. </p>
+
+</div>
+</div>
+<a id="a941f7598400073bfa93aa194a3773434"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a941f7598400073bfa93aa194a3773434">&#9670;&nbsp;</a></span>IsMiddleMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool mingfx::GraphicsApp::IsMiddleMouseDown </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if the middle mouse button is currently held down. </p>
+
+</div>
+</div>
+<a id="a4aa30e3d33731178a9162454a81be08d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4aa30e3d33731178a9162454a81be08d">&#9670;&nbsp;</a></span>IsRightMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool mingfx::GraphicsApp::IsRightMouseDown </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if the right mouse button is currently held down. </p>
+
+</div>
+</div>
+<a id="a6141ec6adc29572ee99ca26cf90e6248"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6141ec6adc29572ee99ca26cf90e6248">&#9670;&nbsp;</a></span>NormalizedDeviceCoordsToPixels() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pointInNDC</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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)) </p>
+
+</div>
+</div>
+<a id="a45596da36aa3905e7c752826a7fd9f93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45596da36aa3905e7c752826a7fd9f93">&#9670;&nbsp;</a></span>NormalizedDeviceCoordsToPixels() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pointInNDC</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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)) </p>
+
+</div>
+</div>
+<a id="a002560456139e537877d079978db4b01"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a002560456139e537877d079978db4b01">&#9670;&nbsp;</a></span>OnKeyDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnKeyDown </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Transforms a keyboard down event into the actual character typed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">c</td><td>The character for the key that was pressed. </td></tr>
+ <tr><td class="paramname">modifiers</td><td>If any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: <a href="http://www.glfw.org/docs/latest/group__mods.html">http://www.glfw.org/docs/latest/group__mods.html</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00225">225</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a1d5831953b37fae615fbd1bf527214b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1d5831953b37fae615fbd1bf527214b0">&#9670;&nbsp;</a></span>OnKeyRepeat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnKeyRepeat </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Transforms a keyboard repeat event into the actual character typed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">c</td><td>The character for the key that was pressed. </td></tr>
+ <tr><td class="paramname">modifiers</td><td>If any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: <a href="http://www.glfw.org/docs/latest/group__mods.html">http://www.glfw.org/docs/latest/group__mods.html</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00233">233</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a8376ef8eb0840b229a2301f995db3f6c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8376ef8eb0840b229a2301f995db3f6c">&#9670;&nbsp;</a></span>OnKeyUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnKeyUp </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Transforms a keyboard up event into the actual character typed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">c</td><td>The character for the key that was pressed. </td></tr>
+ <tr><td class="paramname">modifiers</td><td>If any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: <a href="http://www.glfw.org/docs/latest/group__mods.html">http://www.glfw.org/docs/latest/group__mods.html</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00241">241</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="ae12d9b192a2167a71e0c103405addb17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae12d9b192a2167a71e0c103405addb17">&#9670;&nbsp;</a></span>OnLeftMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnLeftMouseDown </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was pressed down since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00174">174</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a56d350a8b030998709a51630753d509b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56d350a8b030998709a51630753d509b">&#9670;&nbsp;</a></span>OnLeftMouseDrag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnLeftMouseDrag </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>delta</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner.</td></tr>
+ <tr><td class="paramname">delta</td><td>This is the change in the position of the mouse in pixels since the last frame. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00187">187</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a536dbadf0b8a11ef59d7e855ca43f613"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a536dbadf0b8a11ef59d7e855ca43f613">&#9670;&nbsp;</a></span>OnLeftMouseUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnLeftMouseUp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was released since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>-1, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>-1) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00196">196</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a588315d5c45490b440a764af2bc5bd48"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a588315d5c45490b440a764af2bc5bd48">&#9670;&nbsp;</a></span>OnMiddleMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnMiddleMouseDown </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was pressed down since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00200">200</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="ac7628fece754c0ac4875791e19712dc6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7628fece754c0ac4875791e19712dc6">&#9670;&nbsp;</a></span>OnMiddleMouseDrag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnMiddleMouseDrag </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>delta</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner.</td></tr>
+ <tr><td class="paramname">delta</td><td>This is the change in the position of the mouse in pixels since the last frame. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00203">203</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a378b8a102775eeb01a6da9dd68482d08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a378b8a102775eeb01a6da9dd68482d08">&#9670;&nbsp;</a></span>OnMiddleMouseUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnMiddleMouseUp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was released since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>-1, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>-1) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00206">206</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a23a780feda9b52eea7319a53b204ce8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a23a780feda9b52eea7319a53b204ce8f">&#9670;&nbsp;</a></span>OnMouseMove()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnMouseMove </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>delta</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner.</td></tr>
+ <tr><td class="paramname">delta</td><td>This is the change in the position of the mouse in pixels since the last frame. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00165">165</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a903f94b82cc10f32039ff3f2ba368a9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a903f94b82cc10f32039ff3f2ba368a9c">&#9670;&nbsp;</a></span>OnRightMouseDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnRightMouseDown </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was pressed down since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00210">210</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a00ad5039af2f428a08fe45751a9731c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00ad5039af2f428a08fe45751a9731c7">&#9670;&nbsp;</a></span>OnRightMouseDrag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnRightMouseDrag </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>delta</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>) is the bottom right corner.</td></tr>
+ <tr><td class="paramname">delta</td><td>This is the change in the position of the mouse in pixels since the last frame. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00213">213</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="ad7c33791c44afc87ce789874f3002ca3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7c33791c44afc87ce789874f3002ca3">&#9670;&nbsp;</a></span>OnRightMouseUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnRightMouseUp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>If the mouse button was released since the last frame, then this function will be called to notify you. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pos</td><td>This is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>-1, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>-1) is the bottom right corner. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00216">216</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="abcf1935e92550bcda311cac62f312952"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abcf1935e92550bcda311cac62f312952">&#9670;&nbsp;</a></span>OnSpecialKeyDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnSpecialKeyDown </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>scancode</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00247">247</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a8362762489e287edfa59617a6602db22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8362762489e287edfa59617a6602db22">&#9670;&nbsp;</a></span>OnSpecialKeyRepeat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnSpecialKeyRepeat </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>scancode</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00251">251</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a0deb6da45fc0d3980e44556a861c7a14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0deb6da45fc0d3980e44556a861c7a14">&#9670;&nbsp;</a></span>OnSpecialKeyUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnSpecialKeyUp </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>scancode</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>modifiers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The values for key, scancode, and modifiers are documented here: <a href="http://www.glfw.org/docs/latest/group__keys.html">http://www.glfw.org/docs/latest/group__keys.html</a>. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00255">255</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="adafdc4631db256fefce3c4ffdfd5086a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adafdc4631db256fefce3c4ffdfd5086a">&#9670;&nbsp;</a></span>OnWindowResize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::OnWindowResize </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>new_width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>new_height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5" title="Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.">ResizeWindow()</a>. </p>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00261">261</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="a94b19404e61411ef64c0ddde8ad6c07a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a94b19404e61411ef64c0ddde8ad6c07a">&#9670;&nbsp;</a></span>PixelsToNormalizedDeviceCoords() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pointInPixels</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (<a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0" title="Returns the current width of the client area of the window in pixels.">window_width()</a>-1, <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016" title="Returns the current height of the client area of the window in pixels.">window_height()</a>-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)). </p>
+
+</div>
+</div>
+<a id="a4e8ac965474de9046448b8811bf25dd1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e8ac965474de9046448b8811bf25dd1">&#9670;&nbsp;</a></span>PixelsToNormalizedDeviceCoords() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>vectorInPixels</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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)). </p>
+
+</div>
+</div>
+<a id="a471951dbf45ffa88027cb92707443646"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a471951dbf45ffa88027cb92707443646">&#9670;&nbsp;</a></span>ReadZValueAtPixel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual float mingfx::GraphicsApp::ReadZValueAtPixel </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>pointInPixels</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>whichBuffer</em> = <code>GL_BACK</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far plane. </p>
+
+</div>
+</div>
+<a id="a0db71b2465e12a8aef4eefbe8b9fcee5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0db71b2465e12a8aef4eefbe8b9fcee5">&#9670;&nbsp;</a></span>ResizeWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::ResizeWindow </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>new_width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>new_height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Cause the graphics windows to resize programmatically rather than by dragging on the corner manually. </p>
+
+</div>
+</div>
+<a id="a5ee9ae3d14e76c949979a8008687d6c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5ee9ae3d14e76c949979a8008687d6c9">&#9670;&nbsp;</a></span>Run()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::Run </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>After creating a new <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, call this to start the app's mainloop. </p>
+<p>Each time through the mainloop the app will: 1. respond any user input events by calling the On*() callback methods, 2. call <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa" title="Called once per frame.">UpdateSimulation()</a>, and 3. call the two Draw*() methods. Note that <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9" title="After creating a new GraphicsApp, call this to start the app&#39;s mainloop.">Run()</a> does not return until the user closes the app and the program is ready to shutdown. </p>
+
+</div>
+</div>
+<a id="adc68196c3f03bd0608c41f6e4d7dad16"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc68196c3f03bd0608c41f6e4d7dad16">&#9670;&nbsp;</a></span>screen()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual nanogui::Screen* mingfx::GraphicsApp::screen </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Access to the underlying NanoGUI Screen object. </p>
+
+</div>
+</div>
+<a id="a9e2b4cd7eeabe1ace9d5e9220349fbaa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9e2b4cd7eeabe1ace9d5e9220349fbaa">&#9670;&nbsp;</a></span>UpdateSimulation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void mingfx::GraphicsApp::UpdateSimulation </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Called once per frame. </p>
+<p>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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">dt</td><td>is the elapsed time since the last call. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p class="definition">Definition at line <a class="el" href="graphics__app_8h_source.html#l00306">306</a> of file <a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>.</p>
+
+</div>
+</div>
+<a id="abd0ee14f7e12146000cdb3532d54ba94"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abd0ee14f7e12146000cdb3532d54ba94">&#9670;&nbsp;</a></span>window()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual GLFWwindow* mingfx::GraphicsApp::window </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Access to the underlying GLFWwindow object. </p>
+
+</div>
+</div>
+<a id="ad7a641f7ccf174cd0a059347b623e016"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7a641f7ccf174cd0a059347b623e016">&#9670;&nbsp;</a></span>window_height()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int mingfx::GraphicsApp::window_height </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the current height of the client area of the window in pixels. </p>
+
+</div>
+</div>
+<a id="a1c682fa2dd0bce855e1e32ffeac532b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1c682fa2dd0bce855e1e32ffeac532b0">&#9670;&nbsp;</a></span>window_width()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int mingfx::GraphicsApp::window_width </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the current width of the client area of the window in pixels. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="graphics__app_8h_source.html">graphics_app.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Matrix4 Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">Align</a>(const Point3 &amp;a_p, const Vector3 &amp;a_v1, const Vector3 &amp;a_v2, const Point3 &amp;b_p, const Vector3 &amp;b_v1, const Vector3 &amp;b_v2)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">Cofactor</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">ColumnToPoint3</a>(int c) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">ColumnToVector3</a>(int c) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">Determinant</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">FromRowMajorElements</a>(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)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">Frustum</a>(float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">Inverse</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">LookAt</a>(Point3 eye, Point3 target, Vector3 up)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d">Matrix4</a>(const float *a)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138">Matrix4</a>(const std::vector&lt; float &gt; &amp;a)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87">Matrix4</a>(const Matrix4 &amp;m2)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">operator!=</a>(const Matrix4 &amp;m2) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">operator()</a>(const int row, const int col) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096">operator()</a>(const int row, const int col)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">operator=</a>(const Matrix4 &amp;m2)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">operator==</a>(const Matrix4 &amp;m2) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">Orthonormal</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Perspective</a>(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">Rotation</a>(const Point3 &amp;p, const Vector3 &amp;v, const float a)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">RotationX</a>(const float radians)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">RotationY</a>(const float radians)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">RotationZ</a>(const float radians)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">Scale</a>(const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">SubDeterminant</a>(int exclude_row, int exclude_col) const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">ToVector</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Translation</a>(const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">Transpose</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">~Matrix4</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Matrix4 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_matrix4-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Matrix4 Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL. </p>
+<p>Examples: </p><div class="fragment"><div class="line"><span class="comment">// constructing various matrices:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> T = <a class="code" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Matrix4::Translation</a>(Vector3(1,0,0));</div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> S = <a class="code" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">Matrix4::Scale</a>(Vector3(2,2,2));</div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> R = Matrix4::RotateX(GfxMath::toRadians(45.0));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// compose matrices together by multiplication</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> M = T * R * S;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> Minv = M.Inverse();</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// transforming points, vectors, etc.</span></div>
+<div class="line">Point3 p1(1,1,1);</div>
+<div class="line">Point3 p2 = M * p1;</div>
+<div class="line"> </div>
+<div class="line">Vector3 v1(1,1,1);</div>
+<div class="line">Vector3 v2 = M * v1;</div>
+<div class="line"> </div>
+<div class="line">Ray r1(p1, v1);</div>
+<div class="line">Ray r2 = M * r1;</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0232a58d20b1da5374cf8c72fb113a4e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">mingfx::Matrix4::Scale</a></div><div class="ttdeci">static Matrix4 Scale(const Vector3 &amp;v)</div><div class="ttdoc">Returns the scale matrix described by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a50990f00b756d640670a0b02129afd22"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">mingfx::Matrix4::Matrix4</a></div><div class="ttdeci">Matrix4()</div><div class="ttdoc">The default constructor creates an identity matrix:</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae82bab81df82dc03f5eb11e74ba1dd84"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4::Translation</a></div><div class="ttdeci">static Matrix4 Translation(const Vector3 &amp;v)</div><div class="ttdoc">Returns the translation matrix described by the vector.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="matrix4_8h_source.html#l00050">50</a> of file <a class="el" href="matrix4_8h_source.html">matrix4.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a50990f00b756d640670a0b02129afd22"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> ()</td></tr>
+<tr class="memdesc:a50990f00b756d640670a0b02129afd22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default constructor creates an identity matrix: <a href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">More...</a><br /></td></tr>
+<tr class="separator:a50990f00b756d640670a0b02129afd22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a09a366a3ef940ff355f8d5c521baa57d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d">Matrix4</a> (const float *a)</td></tr>
+<tr class="memdesc:a09a366a3ef940ff355f8d5c521baa57d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e., column major). <a href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d">More...</a><br /></td></tr>
+<tr class="separator:a09a366a3ef940ff355f8d5c521baa57d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0abaeb690794c4a55e74c9b5fd82d138"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138">Matrix4</a> (const std::vector&lt; float &gt; &amp;a)</td></tr>
+<tr class="memdesc:a0abaeb690794c4a55e74c9b5fd82d138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e., column major). <a href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138">More...</a><br /></td></tr>
+<tr class="separator:a0abaeb690794c4a55e74c9b5fd82d138"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bcf311614006c551f57d2b0dcd32d87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87">Matrix4</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m2)</td></tr>
+<tr class="memdesc:a4bcf311614006c551f57d2b0dcd32d87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <a href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87">More...</a><br /></td></tr>
+<tr class="separator:a4bcf311614006c551f57d2b0dcd32d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8853a6b3fd0d08f1def5c9921bd47933"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">~Matrix4</a> ()</td></tr>
+<tr class="memdesc:a8853a6b3fd0d08f1def5c9921bd47933"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">More...</a><br /></td></tr>
+<tr class="separator:a8853a6b3fd0d08f1def5c9921bd47933"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ec2ee167a450cd7b992384e4cc5bb73"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">operator==</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m2) const</td></tr>
+<tr class="memdesc:a9ec2ee167a450cd7b992384e4cc5bb73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">More...</a><br /></td></tr>
+<tr class="separator:a9ec2ee167a450cd7b992384e4cc5bb73"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab186b0ae1ae669346c0718c2489cd71b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">operator!=</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m2) const</td></tr>
+<tr class="memdesc:ab186b0ae1ae669346c0718c2489cd71b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">More...</a><br /></td></tr>
+<tr class="separator:ab186b0ae1ae669346c0718c2489cd71b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ad8a8bc180ce213956d6d7d3fa19770"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">operator=</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m2)</td></tr>
+<tr class="memdesc:a9ad8a8bc180ce213956d6d7d3fa19770"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix assignment operator. <a href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">More...</a><br /></td></tr>
+<tr class="separator:a9ad8a8bc180ce213956d6d7d3fa19770"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b7b30f23f08d70e83c7b7e01945dd3c"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">value_ptr</a> () const</td></tr>
+<tr class="memdesc:a2b7b30f23f08d70e83c7b7e01945dd3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">More...</a><br /></td></tr>
+<tr class="separator:a2b7b30f23f08d70e83c7b7e01945dd3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd64f0db45e255d61dde4f6fa10a4127"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:acd64f0db45e255d61dde4f6fa10a4127"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">More...</a><br /></td></tr>
+<tr class="separator:acd64f0db45e255d61dde4f6fa10a4127"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9b02807d81eac55d66238f246c53656"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:af9b02807d81eac55d66238f246c53656"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656">More...</a><br /></td></tr>
+<tr class="separator:af9b02807d81eac55d66238f246c53656"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa324d0cec02c452fb938af28725d5df9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">operator()</a> (const int row, const int col) const</td></tr>
+<tr class="memdesc:aa324d0cec02c452fb938af28725d5df9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access an individual element of the array using the syntax: <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> mat; float row1col2 = mat(1,2);. <a href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">More...</a><br /></td></tr>
+<tr class="separator:aa324d0cec02c452fb938af28725d5df9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a470bba77b8e3c47de7adaa18046e6096"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096">operator()</a> (const int row, const int col)</td></tr>
+<tr class="memdesc:a470bba77b8e3c47de7adaa18046e6096"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access an individual element of the array using the syntax: <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> mat; mat(1,2) = 1.0;. <a href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096">More...</a><br /></td></tr>
+<tr class="separator:a470bba77b8e3c47de7adaa18046e6096"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7396dbff36cb732e1bd878020f52bbc3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">ColumnToVector3</a> (int c) const</td></tr>
+<tr class="memdesc:a7396dbff36cb732e1bd878020f52bbc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the c-th column of the matrix as a Vector type, e.g.,: <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> xAxis = mat.getColumnAsVector3(0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> yAxis = mat.getColumnAsVector3(1); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> zAxis = mat.getColumnAsVector3(2);. <a href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">More...</a><br /></td></tr>
+<tr class="separator:a7396dbff36cb732e1bd878020f52bbc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae991be2b3bca290b44e676a9f8dc13bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">ColumnToPoint3</a> (int c) const</td></tr>
+<tr class="memdesc:ae991be2b3bca290b44e676a9f8dc13bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the c-th column of the matrix as a Vector type, e.g.,: <a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a> pos = mat.getColumnAsPoint3(3);. <a href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">More...</a><br /></td></tr>
+<tr class="separator:ae991be2b3bca290b44e676a9f8dc13bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e9433f0482b5e9688c12398900608db"><td class="memItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">ToVector</a> () const</td></tr>
+<tr class="separator:a4e9433f0482b5e9688c12398900608db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3f360906e15730eee621826b5f0bbc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">Inverse</a> () const</td></tr>
+<tr class="memdesc:ab3f360906e15730eee621826b5f0bbc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the identity matrix. <a href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">More...</a><br /></td></tr>
+<tr class="separator:ab3f360906e15730eee621826b5f0bbc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ad5c85784e84fa0a941361eaaae0250"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">Orthonormal</a> () const</td></tr>
+<tr class="memdesc:a9ad5c85784e84fa0a941361eaaae0250"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">More...</a><br /></td></tr>
+<tr class="separator:a9ad5c85784e84fa0a941361eaaae0250"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd1030205567d23d4a2d1240d8214850"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">Transpose</a> () const</td></tr>
+<tr class="memdesc:afd1030205567d23d4a2d1240d8214850"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the transpose of the matrix. <a href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">More...</a><br /></td></tr>
+<tr class="separator:afd1030205567d23d4a2d1240d8214850"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d9898bfac2510a695df6b033054e481"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">SubDeterminant</a> (int exclude_row, int exclude_col) const</td></tr>
+<tr class="memdesc:a3d9898bfac2510a695df6b033054e481"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4x4 matrix. <a href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">More...</a><br /></td></tr>
+<tr class="separator:a3d9898bfac2510a695df6b033054e481"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d88ba8e15325d135157d115f2412e91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">Cofactor</a> () const</td></tr>
+<tr class="memdesc:a0d88ba8e15325d135157d115f2412e91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the cofactor matrix. <a href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">More...</a><br /></td></tr>
+<tr class="separator:a0d88ba8e15325d135157d115f2412e91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0127ebae92b50e4f10ebee8565b0248c"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">Determinant</a> () const</td></tr>
+<tr class="memdesc:a0127ebae92b50e4f10ebee8565b0248c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the determinant of the 4x4 matrix. <a href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">More...</a><br /></td></tr>
+<tr class="separator:a0127ebae92b50e4f10ebee8565b0248c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:add98bfa1cf6a10dbae0e8ae8defe728b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">FromRowMajorElements</a> (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)</td></tr>
+<tr class="memdesc:add98bfa1cf6a10dbae0e8ae8defe728b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">More...</a><br /></td></tr>
+<tr class="separator:add98bfa1cf6a10dbae0e8ae8defe728b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0232a58d20b1da5374cf8c72fb113a4e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">Scale</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:a0232a58d20b1da5374cf8c72fb113a4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the scale matrix described by the vector. <a href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">More...</a><br /></td></tr>
+<tr class="separator:a0232a58d20b1da5374cf8c72fb113a4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae82bab81df82dc03f5eb11e74ba1dd84"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Translation</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:ae82bab81df82dc03f5eb11e74ba1dd84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the translation matrix described by the vector. <a href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">More...</a><br /></td></tr>
+<tr class="separator:ae82bab81df82dc03f5eb11e74ba1dd84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a48615deb30590055c0aa9f207eee7f08"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">RotationX</a> (const float radians)</td></tr>
+<tr class="memdesc:a48615deb30590055c0aa9f207eee7f08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the rotation matrix about the x axis by the specified angle. <a href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">More...</a><br /></td></tr>
+<tr class="separator:a48615deb30590055c0aa9f207eee7f08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef94f0e9d298a7ba57e0119ef09b71b6"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">RotationY</a> (const float radians)</td></tr>
+<tr class="memdesc:aef94f0e9d298a7ba57e0119ef09b71b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the rotation matrix about the y axis by the specified angle. <a href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">More...</a><br /></td></tr>
+<tr class="separator:aef94f0e9d298a7ba57e0119ef09b71b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bf1dced8875fdc5827b5b8869e9de93"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">RotationZ</a> (const float radians)</td></tr>
+<tr class="memdesc:a4bf1dced8875fdc5827b5b8869e9de93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the rotation matrix about the z axis by the specified angle. <a href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">More...</a><br /></td></tr>
+<tr class="separator:a4bf1dced8875fdc5827b5b8869e9de93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acf4abaf4a45826f14b435edf80a8d0e0"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">Rotation</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v, const float a)</td></tr>
+<tr class="memdesc:acf4abaf4a45826f14b435edf80a8d0e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the rotation matrix around the vector v placed at point p, rotate by angle a. <a href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">More...</a><br /></td></tr>
+<tr class="separator:acf4abaf4a45826f14b435edf80a8d0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae61cdabb318a03cd4dae8a1c8ecafa4d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">Align</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;a_p, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a_v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a_v2, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;b_p, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b_v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b_v2)</td></tr>
+<tr class="memdesc:ae61cdabb318a03cd4dae8a1c8ecafa4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a transformation matrix that maps a coordinate space, <em>a</em>, defined one point, <em>a_p</em>, and two vectors, <em>a_v1</em> and <em>a_v2</em>, to a new coordinate space, <em>b</em>, also defined by one point, <em>b_p</em>, and two vectors, <em>b_v1</em> and <em>b_v2</em>. 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: <a href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">More...</a><br /></td></tr>
+<tr class="separator:ae61cdabb318a03cd4dae8a1c8ecafa4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4543695a6dfc996d0312b70c2eaa00de"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">LookAt</a> (<a class="el" href="classmingfx_1_1_point3.html">Point3</a> eye, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> target, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> up)</td></tr>
+<tr class="memdesc:a4543695a6dfc996d0312b70c2eaa00de"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">More...</a><br /></td></tr>
+<tr class="separator:a4543695a6dfc996d0312b70c2eaa00de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e34aee86758a0397074590b87712c5e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Perspective</a> (float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</td></tr>
+<tr class="memdesc:a0e34aee86758a0397074590b87712c5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a perspective projection matrix equivalent to the one gluPerspective creates. <a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">More...</a><br /></td></tr>
+<tr class="separator:a0e34aee86758a0397074590b87712c5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8e2f7b50cd2c8853e007829df9863722"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">Frustum</a> (float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)</td></tr>
+<tr class="memdesc:a8e2f7b50cd2c8853e007829df9863722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a projection matrix equivalent the one glFrustum creates. <a href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">More...</a><br /></td></tr>
+<tr class="separator:a8e2f7b50cd2c8853e007829df9863722"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a50990f00b756d640670a0b02129afd22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a50990f00b756d640670a0b02129afd22">&#9670;&nbsp;</a></span>Matrix4() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Matrix4::Matrix4 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The default constructor creates an identity matrix: </p>
+
+</div>
+</div>
+<a id="a09a366a3ef940ff355f8d5c521baa57d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09a366a3ef940ff355f8d5c521baa57d">&#9670;&nbsp;</a></span>Matrix4() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Matrix4::Matrix4 </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e., column major). </p>
+
+</div>
+</div>
+<a id="a0abaeb690794c4a55e74c9b5fd82d138"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0abaeb690794c4a55e74c9b5fd82d138">&#9670;&nbsp;</a></span>Matrix4() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Matrix4::Matrix4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e., column major). </p>
+
+</div>
+</div>
+<a id="a4bcf311614006c551f57d2b0dcd32d87"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4bcf311614006c551f57d2b0dcd32d87">&#9670;&nbsp;</a></span>Matrix4() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Matrix4::Matrix4 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m2</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor. </p>
+
+</div>
+</div>
+<a id="a8853a6b3fd0d08f1def5c9921bd47933"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8853a6b3fd0d08f1def5c9921bd47933">&#9670;&nbsp;</a></span>~Matrix4()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Matrix4::~Matrix4 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ae61cdabb318a03cd4dae8a1c8ecafa4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae61cdabb318a03cd4dae8a1c8ecafa4d">&#9670;&nbsp;</a></span>Align()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Align </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a_p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a_v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a_v2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b_p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b_v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b_v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates a transformation matrix that maps a coordinate space, <em>a</em>, defined one point, <em>a_p</em>, and two vectors, <em>a_v1</em> and <em>a_v2</em>, to a new coordinate space, <em>b</em>, also defined by one point, <em>b_p</em>, and two vectors, <em>b_v1</em> and <em>b_v2</em>. 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: </p>
+<div class="fragment"><div class="line"><span class="comment">// define a coordiante space for a canonical billboard geometry defined</span></div>
+<div class="line"><span class="comment">// right at the origin.</span></div>
+<div class="line">Point3 a_p = Point3(0,0,0); <span class="comment">// billboard&#39;s initial base position</span></div>
+<div class="line">Vector3 a_v1 = Vector3(0,1,0); <span class="comment">// billboard&#39;s initial up direction</span></div>
+<div class="line">Vector3 a_v2 = Vector3(0,0,1); <span class="comment">// billboard&#39;s initial normal direction</span></div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// define a coordinate space for where we want this billboard to go and</span></div>
+<div class="line"><span class="comment">// the direction it should be facing</span></div>
+<div class="line">Point3 b_p = desired_base_pos; <span class="comment">// new position for the billboard</span></div>
+<div class="line">Vector3 b_v1 = Vector3(0,1,0); <span class="comment">// +Y is still up, doesn&#39;t change</span></div>
+<div class="line">Vector3 b_v2 = (camera.eye() - desired_base_pos); <span class="comment">// the normal should point toward the camera</span></div>
+<div class="line">b_v2[1] = 0.0; <span class="comment">// with 0 change in Y so the billboard does not tilt</span></div>
+<div class="line">b_v2.Normalize(); <span class="comment">// convert to a unit vector</span></div>
+<div class="line"> </div>
+<div class="line"><a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a> billboard_model_matrix = <a class="code" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">Matrix4::Align</a>(a_p, a_v1, a_v2, b_p, b_v1, b_v2);</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae61cdabb318a03cd4dae8a1c8ecafa4d"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">mingfx::Matrix4::Align</a></div><div class="ttdeci">static Matrix4 Align(const Point3 &amp;a_p, const Vector3 &amp;a_v1, const Vector3 &amp;a_v2, const Point3 &amp;b_p, const Vector3 &amp;b_v1, const Vector3 &amp;b_v2)</div><div class="ttdoc">Creates a transformation matrix that maps a coordinate space, a, defined one point,...</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0d88ba8e15325d135157d115f2412e91"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d88ba8e15325d135157d115f2412e91">&#9670;&nbsp;</a></span>Cofactor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Cofactor </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the cofactor matrix. </p>
+
+</div>
+</div>
+<a id="ae991be2b3bca290b44e676a9f8dc13bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae991be2b3bca290b44e676a9f8dc13bd">&#9670;&nbsp;</a></span>ColumnToPoint3()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Matrix4::ColumnToPoint3 </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>c</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the c-th column of the matrix as a Vector type, e.g.,: <a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a> pos = mat.getColumnAsPoint3(3);. </p>
+
+</div>
+</div>
+<a id="a7396dbff36cb732e1bd878020f52bbc3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7396dbff36cb732e1bd878020f52bbc3">&#9670;&nbsp;</a></span>ColumnToVector3()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Matrix4::ColumnToVector3 </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>c</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the c-th column of the matrix as a Vector type, e.g.,: <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> xAxis = mat.getColumnAsVector3(0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> yAxis = mat.getColumnAsVector3(1); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> zAxis = mat.getColumnAsVector3(2);. </p>
+
+</div>
+</div>
+<a id="a0127ebae92b50e4f10ebee8565b0248c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0127ebae92b50e4f10ebee8565b0248c">&#9670;&nbsp;</a></span>Determinant()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Matrix4::Determinant </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the determinant of the 4x4 matrix. </p>
+
+</div>
+</div>
+<a id="add98bfa1cf6a10dbae0e8ae8defe728b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#add98bfa1cf6a10dbae0e8ae8defe728b">&#9670;&nbsp;</a></span>FromRowMajorElements()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::FromRowMajorElements </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r1c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r1c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r1c3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r1c4</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r2c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r2c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r2c3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r2c4</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r3c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r3c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r3c3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r3c4</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r4c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r4c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r4c3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>r4c4</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+<p>Note the that internally the matrix constructed will be stored in a 16 element column major array to be consistent with OpenGL. </p>
+
+</div>
+</div>
+<a id="a8e2f7b50cd2c8853e007829df9863722"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8e2f7b50cd2c8853e007829df9863722">&#9670;&nbsp;</a></span>Frustum()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Frustum </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>left</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>right</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>bottom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>near_plane_dist</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>far_plane_dist</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a projection matrix equivalent the one glFrustum creates. </p>
+
+</div>
+</div>
+<a id="ab3f360906e15730eee621826b5f0bbc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3f360906e15730eee621826b5f0bbc5">&#9670;&nbsp;</a></span>Inverse()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Inverse </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the identity matrix. </p>
+
+</div>
+</div>
+<a id="a4543695a6dfc996d0312b70c2eaa00de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4543695a6dfc996d0312b70c2eaa00de">&#9670;&nbsp;</a></span>LookAt()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::LookAt </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>eye</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>target</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>up</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="ab186b0ae1ae669346c0718c2489cd71b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab186b0ae1ae669346c0718c2489cd71b">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Matrix4::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m2</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a470bba77b8e3c47de7adaa18046e6096"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a470bba77b8e3c47de7adaa18046e6096">&#9670;&nbsp;</a></span>operator()() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Matrix4::operator() </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>col</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Access an individual element of the array using the syntax: <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> mat; mat(1,2) = 1.0;. </p>
+
+</div>
+</div>
+<a id="aa324d0cec02c452fb938af28725d5df9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa324d0cec02c452fb938af28725d5df9">&#9670;&nbsp;</a></span>operator()() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Matrix4::operator() </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>row</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>col</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Access an individual element of the array using the syntax: <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> mat; float row1col2 = mat(1,2);. </p>
+
+</div>
+</div>
+<a id="a9ad8a8bc180ce213956d6d7d3fa19770"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ad8a8bc180ce213956d6d7d3fa19770">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; mingfx::Matrix4::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m2</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Matrix assignment operator. </p>
+
+</div>
+</div>
+<a id="a9ec2ee167a450cd7b992384e4cc5bb73"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ec2ee167a450cd7b992384e4cc5bb73">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Matrix4::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m2</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="af9b02807d81eac55d66238f246c53656"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af9b02807d81eac55d66238f246c53656">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Matrix4::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="acd64f0db45e255d61dde4f6fa10a4127"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd64f0db45e255d61dde4f6fa10a4127">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Matrix4::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a9ad5c85784e84fa0a941361eaaae0250"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ad5c85784e84fa0a941361eaaae0250">&#9670;&nbsp;</a></span>Orthonormal()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Orthonormal </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a0e34aee86758a0397074590b87712c5e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e34aee86758a0397074590b87712c5e">&#9670;&nbsp;</a></span>Perspective()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Perspective </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>fov_y_in_degrees</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>aspect_ratio</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>near_plane_dist</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>far_plane_dist</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a perspective projection matrix equivalent to the one gluPerspective creates. </p>
+
+</div>
+</div>
+<a id="acf4abaf4a45826f14b435edf80a8d0e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf4abaf4a45826f14b435edf80a8d0e0">&#9670;&nbsp;</a></span>Rotation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Rotation </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>a</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the rotation matrix around the vector v placed at point p, rotate by angle a. </p>
+
+</div>
+</div>
+<a id="a48615deb30590055c0aa9f207eee7f08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a48615deb30590055c0aa9f207eee7f08">&#9670;&nbsp;</a></span>RotationX()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::RotationX </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>radians</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the rotation matrix about the x axis by the specified angle. </p>
+
+</div>
+</div>
+<a id="aef94f0e9d298a7ba57e0119ef09b71b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef94f0e9d298a7ba57e0119ef09b71b6">&#9670;&nbsp;</a></span>RotationY()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::RotationY </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>radians</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the rotation matrix about the y axis by the specified angle. </p>
+
+</div>
+</div>
+<a id="a4bf1dced8875fdc5827b5b8869e9de93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4bf1dced8875fdc5827b5b8869e9de93">&#9670;&nbsp;</a></span>RotationZ()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::RotationZ </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>radians</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the rotation matrix about the z axis by the specified angle. </p>
+
+</div>
+</div>
+<a id="a0232a58d20b1da5374cf8c72fb113a4e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0232a58d20b1da5374cf8c72fb113a4e">&#9670;&nbsp;</a></span>Scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Scale </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the scale matrix described by the vector. </p>
+
+</div>
+</div>
+<a id="a3d9898bfac2510a695df6b033054e481"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3d9898bfac2510a695df6b033054e481">&#9670;&nbsp;</a></span>SubDeterminant()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Matrix4::SubDeterminant </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>exclude_row</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>exclude_col</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4x4 matrix. </p>
+
+</div>
+</div>
+<a id="a4e9433f0482b5e9688c12398900608db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e9433f0482b5e9688c12398900608db">&#9670;&nbsp;</a></span>ToVector()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;float&gt; mingfx::Matrix4::ToVector </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae82bab81df82dc03f5eb11e74ba1dd84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae82bab81df82dc03f5eb11e74ba1dd84">&#9670;&nbsp;</a></span>Translation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Translation </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the translation matrix described by the vector. </p>
+
+</div>
+</div>
+<a id="afd1030205567d23d4a2d1240d8214850"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afd1030205567d23d4a2d1240d8214850">&#9670;&nbsp;</a></span>Transpose()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::Matrix4::Transpose </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the transpose of the matrix. </p>
+
+</div>
+</div>
+<a id="a2b7b30f23f08d70e83c7b7e01945dd3c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b7b30f23f08d70e83c7b7e01945dd3c">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Matrix4::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="matrix4_8h_source.html">matrix4.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Mesh Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">AddTriangle</a>(Point3 v1, Point3 v2, Point3 v3)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">BuildBVH</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">bvh_ptr</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">CalcPerFaceNormals</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">CalcPerVertexNormals</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">Draw</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">LoadFromOBJ</a>(const std::string &amp;filename)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1">Mesh</a>(const Mesh &amp;other)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">num_triangles</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">num_vertices</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">read_color_data</a>(int vertex_id) const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">read_normal_data</a>(int vertex_id) const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">read_tex_coords_data</a>(int texture_unit, int vertex_id) const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">read_triangle_indices_data</a>(int triangle_id) const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">read_vertex_data</a>(int vertex_id) const</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">SetColors</a>(int triangle_id, Color c1, Color c2, Color c3)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae">SetColors</a>(const std::vector&lt; Color &gt; &amp;colors)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae">SetColors</a>(float *colors_array, int num_colors)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">SetIndices</a>(const std::vector&lt; unsigned int &gt; index_array)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c">SetIndices</a>(unsigned int *index_array, int num_indices)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">SetInstanceTransforms</a>(const std::vector&lt; Matrix4 &gt; &amp;xforms)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">SetNormals</a>(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d">SetNormals</a>(const std::vector&lt; Vector3 &gt; &amp;norms)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6">SetNormals</a>(float *norms_array, int num_norms)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">SetTexCoords</a>(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1">SetTexCoords</a>(int texture_unit, const std::vector&lt; Point2 &gt; &amp;tex_coords)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9">SetTexCoords</a>(int texture_unit, float *tex_coords_array, int num_tex_coords)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">SetVertices</a>(const std::vector&lt; Point3 &gt; &amp;verts)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49">SetVertices</a>(float *verts_array, int num_verts)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">UpdateGPUMemory</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">UpdateTriangle</a>(int triangle_id, Point3 v1, Point3 v2, Point3 v3)</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">~Mesh</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Mesh Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_mesh-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Mesh Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A triangle mesh data structure that can be rendered with a <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> like <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a>. </p>
+<p>The mesh can be created algorithmically by adding triangles one at a time or it can be loaded from an .obj file.</p>
+<p>Vertices are required &ndash; you cannot have a mesh without vertices, but other attributes (normals, colors, texture coordinates) are optional. When <a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c" title="This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-i...">Draw()</a> is called the mesh will automatically set these other attributes if available.</p>
+<p>Example of loading from a file: </p><div class="fragment"><div class="line"><span class="comment">// during initialization</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a> m;</div>
+<div class="line">m.LoadFromOBJ(<a class="code" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">Platform::FindMinGfxDataFile</a>(<span class="stringliteral">&quot;teapot.obj&quot;</span>));</div>
+<div class="line"><span class="comment">// also create a shader to draw it.</span></div>
+<div class="line">DefaultShader s;</div>
+<div class="line"> </div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// later to draw</span></div>
+<div class="line">Matrix4 M;</div>
+<div class="line">Matrix4 V = <a class="code" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">Matrix4::LookAt</a>(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));</div>
+<div class="line">Matrix4 P = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(60.0, aspect_ratio(), 0.1, 10.0);</div>
+<div class="line">s.Draw(M, V, P, m, DefaultShader::MaterialProperties());</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4543695a6dfc996d0312b70c2eaa00de"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4::LookAt</a></div><div class="ttdeci">static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)</div><div class="ttdoc">Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a69613870d54989f4226e50caf4ca9fb9"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">mingfx::Mesh::Mesh</a></div><div class="ttdeci">Mesh()</div><div class="ttdoc">Creates an empty mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a2c36ca57a246efa218a49a942c8c4a3b"><div class="ttname"><a href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">mingfx::Platform::FindMinGfxDataFile</a></div><div class="ttdeci">static std::string FindMinGfxDataFile(const std::string &amp;basename)</div><div class="ttdoc">Searches for a data file that ships with MinGfx.</div></div>
+</div><!-- fragment --><p>Example of creating a mesh algorithmically: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a> mesh1;</div>
+<div class="line"><span class="keywordtype">int</span> tri_id;</div>
+<div class="line"><span class="comment">// add a first triangle</span></div>
+<div class="line">tri_id = mesh1.AddTriangle(Point3(0,0,0), Point3(1,0,0), Point3(1,1,0));</div>
+<div class="line"><span class="comment">// set attributes for the vertices</span></div>
+<div class="line">mesh1.SetNormals(tri_id, Vector3(0,0,1), Vector3(0,0,1), Vector3(0,0,1));</div>
+<div class="line">mesh1.SetTexCoords(tri_id, 0, Point2(0,1), Point2(1,1), Point2(1,0));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// add a second triangle and attributes</span></div>
+<div class="line">tri_id = mesh1.AddTriangle(Point3(0,0,0), Point3(1,1,0), Point3(0,1,0));</div>
+<div class="line">mesh1.SetNormals(tri_id, Vector3(0,0,1), Vector3(0,0,1), Vector3(0,0,1));</div>
+<div class="line">mesh1.SetTexCoords(tri_id, 0, Point2(0,1), Point2(1,0), Point2(0,0));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// call this when done to save to the GPU</span></div>
+<div class="line">mesh1.UpdateGPUMemory();</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// then you can draw the same way as in the previous example.</span></div>
+</div><!-- fragment --><p> 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.</p>
+<p>Example of creating a mesh that renders in an indexed faces mode: </p><div class="fragment"><div class="line">std::vector&lt;unsigned int&gt; indices;</div>
+<div class="line">std::vector&lt;Point3&gt; vertices;</div>
+<div class="line">std::vector&lt;Vector3&gt; normals;</div>
+<div class="line">std::vector&lt;Point2&gt; texcoords;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// four vertices, each requires 3 floats: (x,y,z)</span></div>
+<div class="line">vertices.push_back(Point3(0,0,0));</div>
+<div class="line">vertices.push_back(Point3(1,0,0));</div>
+<div class="line">vertices.push_back(Point3(1,1,0));</div>
+<div class="line">vertices.push_back(Point3(0,1,0));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// four normals, each requires 3 floats: (x,y,z)</span></div>
+<div class="line">normals.push_back(Vector3(0,0,1));</div>
+<div class="line">normals.push_back(Vector3(0,0,1));</div>
+<div class="line">normals.push_back(Vector3(0,0,1));</div>
+<div class="line">normals.push_back(Vector3(0,0,1));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// four texture coords, each requires 2 floats: (u,v)</span></div>
+<div class="line">texcoords.push_back(Point2(0,1));</div>
+<div class="line">texcoords.push_back(Point2(1,1));</div>
+<div class="line">texcoords.push_back(Point2(1,0));</div>
+<div class="line">texcoords.push_back(Point2(0,0));</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// indices into the arrays above for the first triangle</span></div>
+<div class="line">indices.push_back(0); </div>
+<div class="line">indices.push_back(1); </div>
+<div class="line">indices.push_back(2);</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// indices for the second triangle, note some are reused</span></div>
+<div class="line">indices.push_back(0); </div>
+<div class="line">indices.push_back(2); </div>
+<div class="line">indices.push_back(3);</div>
+<div class="line"> </div>
+<div class="line"><a class="code" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a> mesh1;</div>
+<div class="line">mesh1.SetVertices(vertices);</div>
+<div class="line">mesh1.SetNormals(normals);</div>
+<div class="line">mesh1.SetTexCoords(0, texcoords);</div>
+<div class="line">mesh1.SetIndices(indices);</div>
+<div class="line">mesh1.UpdateGPUMemory();</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// then you can draw the same way as in the previous example.</span></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="mesh_8h_source.html#l00127">127</a> of file <a class="el" href="mesh_8h_source.html">mesh.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="mesh_8h_source.html">mesh.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a69613870d54989f4226e50caf4ca9fb9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a> ()</td></tr>
+<tr class="memdesc:a69613870d54989f4226e50caf4ca9fb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty mesh. <a href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">More...</a><br /></td></tr>
+<tr class="separator:a69613870d54989f4226e50caf4ca9fb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a76b4977f0a7f156aa8a0027f10dcbdc1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1">Mesh</a> (const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;other)</td></tr>
+<tr class="memdesc:a76b4977f0a7f156aa8a0027f10dcbdc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies all data and sets GPU dirty bit for the new mesh. <a href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1">More...</a><br /></td></tr>
+<tr class="separator:a76b4977f0a7f156aa8a0027f10dcbdc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace7b23730dbcb581c4886cf2b9998327"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">~Mesh</a> ()</td></tr>
+<tr class="separator:ace7b23730dbcb581c4886cf2b9998327"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d05faf18ef8d170fc3c2a343075823f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">LoadFromOBJ</a> (const std::string &amp;filename)</td></tr>
+<tr class="memdesc:a8d05faf18ef8d170fc3c2a343075823f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This reads a mesh stored in the common Wavefront Obj file format. <a href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">More...</a><br /></td></tr>
+<tr class="separator:a8d05faf18ef8d170fc3c2a343075823f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29eeb2e778704350789033ec4940d55a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">AddTriangle</a> (<a class="el" href="classmingfx_1_1_point3.html">Point3</a> v1, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> v2, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> v3)</td></tr>
+<tr class="memdesc:a29eeb2e778704350789033ec4940d55a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a triangle to the mesh datastructure and returns a triangle ID. <a href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">More...</a><br /></td></tr>
+<tr class="separator:a29eeb2e778704350789033ec4940d55a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3e0ac86714f6b7c3f62761ef3952a044"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">UpdateTriangle</a> (int triangle_id, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> v1, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> v2, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> v3)</td></tr>
+<tr class="memdesc:a3e0ac86714f6b7c3f62761ef3952a044"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the vertex positions for a triangle that has already been added to the mesh. <a href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">More...</a><br /></td></tr>
+<tr class="separator:a3e0ac86714f6b7c3f62761ef3952a044"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43d5a5cc3ef742a8c2b5e3f1b4da0903"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">SetNormals</a> (int triangle_id, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> n1, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> n2, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> n3)</td></tr>
+<tr class="memdesc:a43d5a5cc3ef742a8c2b5e3f1b4da0903"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the normals for the three vertices of a triangle that has already been added to the mesh. <a href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">More...</a><br /></td></tr>
+<tr class="separator:a43d5a5cc3ef742a8c2b5e3f1b4da0903"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f59e19b74f4f9dc2ad580756f8b319f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">SetColors</a> (int triangle_id, <a class="el" href="classmingfx_1_1_color.html">Color</a> c1, <a class="el" href="classmingfx_1_1_color.html">Color</a> c2, <a class="el" href="classmingfx_1_1_color.html">Color</a> c3)</td></tr>
+<tr class="memdesc:a0f59e19b74f4f9dc2ad580756f8b319f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh. <a href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">More...</a><br /></td></tr>
+<tr class="separator:a0f59e19b74f4f9dc2ad580756f8b319f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17cb896939007357014c74a1ece6f1f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">SetTexCoords</a> (int triangle_id, int texture_unit, <a class="el" href="classmingfx_1_1_point2.html">Point2</a> uv1, <a class="el" href="classmingfx_1_1_point2.html">Point2</a> uv2, <a class="el" href="classmingfx_1_1_point2.html">Point2</a> uv3)</td></tr>
+<tr class="memdesc:a17cb896939007357014c74a1ece6f1f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the texture coordinates for the three vertices of a triangle that has already been added to the mesh. <a href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">More...</a><br /></td></tr>
+<tr class="separator:a17cb896939007357014c74a1ece6f1f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1dd243b53826765ba468f505645102a6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">SetVertices</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;verts)</td></tr>
+<tr class="memdesc:a1dd243b53826765ba468f505645102a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the vertex array for the mesh directly. <a href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">More...</a><br /></td></tr>
+<tr class="separator:a1dd243b53826765ba468f505645102a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad28dbd5b0ab77bec28f30f618dd9e57d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d">SetNormals</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &gt; &amp;norms)</td></tr>
+<tr class="memdesc:ad28dbd5b0ab77bec28f30f618dd9e57d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the normal array for the mesh directly. <a href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d">More...</a><br /></td></tr>
+<tr class="separator:ad28dbd5b0ab77bec28f30f618dd9e57d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9b05a77591a9adad12032d513256dae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae">SetColors</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_color.html">Color</a> &gt; &amp;colors)</td></tr>
+<tr class="memdesc:ab9b05a77591a9adad12032d513256dae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the per-vertex colors array for the mesh directly. <a href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae">More...</a><br /></td></tr>
+<tr class="separator:ab9b05a77591a9adad12032d513256dae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba2dfd0ade2d8a728897d411ef3fdaf1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1">SetTexCoords</a> (int texture_unit, const std::vector&lt; <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &gt; &amp;tex_coords)</td></tr>
+<tr class="memdesc:aba2dfd0ade2d8a728897d411ef3fdaf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a texture coordinates array for the mesh directly. <a href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1">More...</a><br /></td></tr>
+<tr class="separator:aba2dfd0ade2d8a728897d411ef3fdaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f94c9ca7867b65e04f7e02813a06581"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">SetIndices</a> (const std::vector&lt; unsigned int &gt; index_array)</td></tr>
+<tr class="memdesc:a1f94c9ca7867b65e04f7e02813a06581"><td class="mdescLeft">&#160;</td><td class="mdescRight">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), ... <a href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">More...</a><br /></td></tr>
+<tr class="separator:a1f94c9ca7867b65e04f7e02813a06581"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7175238f5874929e2258458b98421d87"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">SetInstanceTransforms</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &gt; &amp;xforms)</td></tr>
+<tr class="separator:a7175238f5874929e2258458b98421d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a033076b9bf1714c9b9e0eeef11ebcd49"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49">SetVertices</a> (float *verts_array, int num_verts)</td></tr>
+<tr class="memdesc:a033076b9bf1714c9b9e0eeef11ebcd49"><td class="mdescLeft">&#160;</td><td class="mdescRight">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&lt;&gt; <a href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49">More...</a><br /></td></tr>
+<tr class="separator:a033076b9bf1714c9b9e0eeef11ebcd49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6ab1128fab6f969564d3a1329baeade6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6">SetNormals</a> (float *norms_array, int num_norms)</td></tr>
+<tr class="memdesc:a6ab1128fab6f969564d3a1329baeade6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; <a href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6">More...</a><br /></td></tr>
+<tr class="separator:a6ab1128fab6f969564d3a1329baeade6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aed172bdd77858f3b59978cb8527e19ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae">SetColors</a> (float *colors_array, int num_colors)</td></tr>
+<tr class="memdesc:aed172bdd77858f3b59978cb8527e19ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; <a href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae">More...</a><br /></td></tr>
+<tr class="separator:aed172bdd77858f3b59978cb8527e19ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9cd4e8d67bb70295a48fcbc72ae32f9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9">SetTexCoords</a> (int texture_unit, float *tex_coords_array, int num_tex_coords)</td></tr>
+<tr class="memdesc:ac9cd4e8d67bb70295a48fcbc72ae32f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; <a href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9">More...</a><br /></td></tr>
+<tr class="separator:ac9cd4e8d67bb70295a48fcbc72ae32f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84711746b8d37c8d9b12ae748a4c5b8c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c">SetIndices</a> (unsigned int *index_array, int num_indices)</td></tr>
+<tr class="memdesc:a84711746b8d37c8d9b12ae748a4c5b8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">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&lt;&gt; <a href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c">More...</a><br /></td></tr>
+<tr class="separator:a84711746b8d37c8d9b12ae748a4c5b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac74345bf4b2994de4ee1c509bcc6840e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">UpdateGPUMemory</a> ()</td></tr>
+<tr class="memdesc:ac74345bf4b2994de4ee1c509bcc6840e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before you can draw the mesh. <a href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">More...</a><br /></td></tr>
+<tr class="separator:ac74345bf4b2994de4ee1c509bcc6840e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75075d472938fd760477be42585aff5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">Draw</a> ()</td></tr>
+<tr class="memdesc:a75075d472938fd760477be42585aff5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-indexed mode and glDrawElements() for the indexed mode. <a href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">More...</a><br /></td></tr>
+<tr class="separator:a75075d472938fd760477be42585aff5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a5cea9cfdf4c672ba0c781ee54718f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">CalcPerFaceNormals</a> ()</td></tr>
+<tr class="memdesc:a1a5cea9cfdf4c672ba0c781ee54718f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This (re)calculates the normals for the mesh and stores them with the mesh data structure. <a href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">More...</a><br /></td></tr>
+<tr class="separator:a1a5cea9cfdf4c672ba0c781ee54718f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc7df547b0a2175287cc9f509c04e93c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">CalcPerVertexNormals</a> ()</td></tr>
+<tr class="memdesc:acc7df547b0a2175287cc9f509c04e93c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This (re)calculates the normals for the mesh and stores them with the mesh data structure. <a href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">More...</a><br /></td></tr>
+<tr class="separator:acc7df547b0a2175287cc9f509c04e93c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d96c1b5985cd836f2aa2b2994af64c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">BuildBVH</a> ()</td></tr>
+<tr class="memdesc:a8d96c1b5985cd836f2aa2b2994af64c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc" title="Checks to see if the ray intersects a triangle mesh.">Ray::FastIntersectMesh()</a> to do faster ray-mesh intersection testing. <a href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">More...</a><br /></td></tr>
+<tr class="separator:a8d96c1b5985cd836f2aa2b2994af64c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a978b1341d5613d399a68e40c61c57ba4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">bvh_ptr</a> ()</td></tr>
+<tr class="memdesc:a978b1341d5613d399a68e40c61c57ba4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the underlying <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> data structure. <a href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">More...</a><br /></td></tr>
+<tr class="separator:a978b1341d5613d399a68e40c61c57ba4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8f6856429466f1b4600a6ec27b84d0d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">num_vertices</a> () const</td></tr>
+<tr class="memdesc:ab8f6856429466f1b4600a6ec27b84d0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The total number of vertices in the mesh. <a href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">More...</a><br /></td></tr>
+<tr class="separator:ab8f6856429466f1b4600a6ec27b84d0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ada9371e85aa0b61df79b26fc880b1863"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">read_vertex_data</a> (int vertex_id) const</td></tr>
+<tr class="memdesc:ada9371e85aa0b61df79b26fc880b1863"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the vertex position data. Data are returned as a <a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a> function to set (or edit) vertex data. <a href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">More...</a><br /></td></tr>
+<tr class="separator:ada9371e85aa0b61df79b26fc880b1863"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a439361e454ca63c35f564aed5cd0de65"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">read_normal_data</a> (int vertex_id) const</td></tr>
+<tr class="memdesc:a439361e454ca63c35f564aed5cd0de65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to per-vertex normal data. Data are returned as a <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903" title="Sets the normals for the three vertices of a triangle that has already been added to the mesh.">SetNormals()</a> function to set (or edit) per-vertex normal data. <a href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">More...</a><br /></td></tr>
+<tr class="separator:a439361e454ca63c35f564aed5cd0de65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5fc517fd8ea4cea8459d3f4d5d6ced3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">read_color_data</a> (int vertex_id) const</td></tr>
+<tr class="memdesc:ac5fc517fd8ea4cea8459d3f4d5d6ced3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to per-vertex color data. Data are returned as a <a class="el" href="classmingfx_1_1_color.html" title="Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...">Color</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f" title="Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.">SetColors()</a> function to set (or edit) per-vertex color data. <a href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">More...</a><br /></td></tr>
+<tr class="separator:ac5fc517fd8ea4cea8459d3f4d5d6ced3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a51aaa8d6a80af46f22ea9dfecd2f0b31"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">read_tex_coords_data</a> (int texture_unit, int vertex_id) const</td></tr>
+<tr class="memdesc:a51aaa8d6a80af46f22ea9dfecd2f0b31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to per-vertex texture coordinates data. Data are returned as a <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3" title="Sets the texture coordinates for the three vertices of a triangle that has already been added to the ...">SetTexCoords()</a> function to set (or edit) per-vertex tex coords. <a href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">More...</a><br /></td></tr>
+<tr class="separator:a51aaa8d6a80af46f22ea9dfecd2f0b31"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3f3779506e15e3888ccbb8b9b572b8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">num_triangles</a> () const</td></tr>
+<tr class="memdesc:ab3f3779506e15e3888ccbb8b9b572b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The total number of triangles in the mesh. <a href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">More...</a><br /></td></tr>
+<tr class="separator:ab3f3779506e15e3888ccbb8b9b572b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15d79cbc48a6ef72ef1208d734cc2f8a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">read_triangle_indices_data</a> (int triangle_id) const</td></tr>
+<tr class="memdesc:a15d79cbc48a6ef72ef1208d734cc2f8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the indices that make up a particular triangle. Data are returned as a 3-element array. <a href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">More...</a><br /></td></tr>
+<tr class="separator:a15d79cbc48a6ef72ef1208d734cc2f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a69613870d54989f4226e50caf4ca9fb9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a69613870d54989f4226e50caf4ca9fb9">&#9670;&nbsp;</a></span>Mesh() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Mesh::Mesh </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates an empty mesh. </p>
+
+</div>
+</div>
+<a id="a76b4977f0a7f156aa8a0027f10dcbdc1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a76b4977f0a7f156aa8a0027f10dcbdc1">&#9670;&nbsp;</a></span>Mesh() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Mesh::Mesh </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copies all data and sets GPU dirty bit for the new mesh. </p>
+
+</div>
+</div>
+<a id="ace7b23730dbcb581c4886cf2b9998327"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ace7b23730dbcb581c4886cf2b9998327">&#9670;&nbsp;</a></span>~Mesh()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Mesh::~Mesh </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a29eeb2e778704350789033ec4940d55a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a29eeb2e778704350789033ec4940d55a">&#9670;&nbsp;</a></span>AddTriangle()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::Mesh::AddTriangle </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a triangle to the mesh datastructure and returns a triangle ID. </p>
+<p>The ID should then be used as the first argument for follow-on calls to <a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903" title="Sets the normals for the three vertices of a triangle that has already been added to the mesh.">SetNormals()</a>, <a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f" title="Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.">SetColors()</a>, and <a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3" title="Sets the texture coordinates for the three vertices of a triangle that has already been added to the ...">SetTexCoords()</a>. The vertices must be specified in counter-clockwise order so that the normal of the triangle can be determined following the right-hand rule. </p>
+
+</div>
+</div>
+<a id="a8d96c1b5985cd836f2aa2b2994af64c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d96c1b5985cd836f2aa2b2994af64c1">&#9670;&nbsp;</a></span>BuildBVH()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::BuildBVH </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc" title="Checks to see if the ray intersects a triangle mesh.">Ray::FastIntersectMesh()</a> to do faster ray-mesh intersection testing. </p>
+
+</div>
+</div>
+<a id="a978b1341d5613d399a68e40c61c57ba4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a978b1341d5613d399a68e40c61c57ba4">&#9670;&nbsp;</a></span>bvh_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a>* mingfx::Mesh::bvh_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a pointer to the underlying <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> data structure. </p>
+<p>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 <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> is recalculated before returning the pointer. </p>
+
+</div>
+</div>
+<a id="a1a5cea9cfdf4c672ba0c781ee54718f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a5cea9cfdf4c672ba0c781ee54718f7">&#9670;&nbsp;</a></span>CalcPerFaceNormals()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::CalcPerFaceNormals </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This (re)calculates the normals for the mesh and stores them with the mesh data structure. </p>
+<p>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 <a class="el" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c" title="This (re)calculates the normals for the mesh and stores them with the mesh data structure.">CalcPerVertexNormals()</a> instead. </p>
+
+</div>
+</div>
+<a id="acc7df547b0a2175287cc9f509c04e93c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc7df547b0a2175287cc9f509c04e93c">&#9670;&nbsp;</a></span>CalcPerVertexNormals()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::CalcPerVertexNormals </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This (re)calculates the normals for the mesh and stores them with the mesh data structure. </p>
+<p>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). </p>
+
+</div>
+</div>
+<a id="a75075d472938fd760477be42585aff5c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75075d472938fd760477be42585aff5c">&#9670;&nbsp;</a></span>Draw()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::Draw </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-indexed mode and glDrawElements() for the indexed mode. </p>
+<p>This is just the geometry &ndash; for anything to show up on the screen, you must already have a <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> enabled before calling this function. </p>
+
+</div>
+</div>
+<a id="a8d05faf18ef8d170fc3c2a343075823f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d05faf18ef8d170fc3c2a343075823f">&#9670;&nbsp;</a></span>LoadFromOBJ()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::LoadFromOBJ </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This reads a mesh stored in the common Wavefront Obj file format. </p>
+<p>The loader here is simplistic and not guaranteed to work on all valid .obj files, but it should work on many simple ones. <a class="el" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e" title="This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before ...">UpdateGPUMemory()</a> is called automatically after the model is loaded. </p>
+
+</div>
+</div>
+<a id="ab3f3779506e15e3888ccbb8b9b572b8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3f3779506e15e3888ccbb8b9b572b8f">&#9670;&nbsp;</a></span>num_triangles()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::Mesh::num_triangles </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The total number of triangles in the mesh. </p>
+
+</div>
+</div>
+<a id="ab8f6856429466f1b4600a6ec27b84d0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab8f6856429466f1b4600a6ec27b84d0d">&#9670;&nbsp;</a></span>num_vertices()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::Mesh::num_vertices </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The total number of vertices in the mesh. </p>
+
+</div>
+</div>
+<a id="ac5fc517fd8ea4cea8459d3f4d5d6ced3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac5fc517fd8ea4cea8459d3f4d5d6ced3">&#9670;&nbsp;</a></span>read_color_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::Mesh::read_color_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>vertex_id</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to per-vertex color data. Data are returned as a <a class="el" href="classmingfx_1_1_color.html" title="Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...">Color</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f" title="Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.">SetColors()</a> function to set (or edit) per-vertex color data. </p>
+
+</div>
+</div>
+<a id="a439361e454ca63c35f564aed5cd0de65"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a439361e454ca63c35f564aed5cd0de65">&#9670;&nbsp;</a></span>read_normal_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Mesh::read_normal_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>vertex_id</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to per-vertex normal data. Data are returned as a <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903" title="Sets the normals for the three vertices of a triangle that has already been added to the mesh.">SetNormals()</a> function to set (or edit) per-vertex normal data. </p>
+
+</div>
+</div>
+<a id="a51aaa8d6a80af46f22ea9dfecd2f0b31"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a51aaa8d6a80af46f22ea9dfecd2f0b31">&#9670;&nbsp;</a></span>read_tex_coords_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::Mesh::read_tex_coords_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texture_unit</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>vertex_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to per-vertex texture coordinates data. Data are returned as a <a class="el" href="classmingfx_1_1_point2.html" title="A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...">Point2</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3" title="Sets the texture coordinates for the three vertices of a triangle that has already been added to the ...">SetTexCoords()</a> function to set (or edit) per-vertex tex coords. </p>
+
+</div>
+</div>
+<a id="a15d79cbc48a6ef72ef1208d734cc2f8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15d79cbc48a6ef72ef1208d734cc2f8a">&#9670;&nbsp;</a></span>read_triangle_indices_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;unsigned int&gt; mingfx::Mesh::read_triangle_indices_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>triangle_id</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the indices that make up a particular triangle. Data are returned as a 3-element array. </p>
+
+</div>
+</div>
+<a id="ada9371e85aa0b61df79b26fc880b1863"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ada9371e85aa0b61df79b26fc880b1863">&#9670;&nbsp;</a></span>read_vertex_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Mesh::read_vertex_data </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>vertex_id</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the vertex position data. Data are returned as a <a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>. Indexed by vertex number. Also see <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d" title="The total number of vertices in the mesh.">num_vertices()</a>. Use the <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a> function to set (or edit) vertex data. </p>
+
+</div>
+</div>
+<a id="ab9b05a77591a9adad12032d513256dae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab9b05a77591a9adad12032d513256dae">&#9670;&nbsp;</a></span>SetColors() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetColors </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_color.html">Color</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>colors</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the per-vertex colors array for the mesh directly. </p>
+
+</div>
+</div>
+<a id="aed172bdd77858f3b59978cb8527e19ae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aed172bdd77858f3b59978cb8527e19ae">&#9670;&nbsp;</a></span>SetColors() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetColors </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>colors_array</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_colors</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; </p>
+
+</div>
+</div>
+<a id="a0f59e19b74f4f9dc2ad580756f8b319f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f59e19b74f4f9dc2ad580756f8b319f">&#9670;&nbsp;</a></span>SetColors() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetColors </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>triangle_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td>
+ <td class="paramname"><em>c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td>
+ <td class="paramname"><em>c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td>
+ <td class="paramname"><em>c3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh. </p>
+
+</div>
+</div>
+<a id="a1f94c9ca7867b65e04f7e02813a06581"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1f94c9ca7867b65e04f7e02813a06581">&#9670;&nbsp;</a></span>SetIndices() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetIndices </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt;&#160;</td>
+ <td class="paramname"><em>index_array</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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), ... </p>
+
+</div>
+</div>
+<a id="a84711746b8d37c8d9b12ae748a4c5b8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84711746b8d37c8d9b12ae748a4c5b8c">&#9670;&nbsp;</a></span>SetIndices() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetIndices </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>index_array</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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&lt;&gt; </p>
+
+</div>
+</div>
+<a id="a7175238f5874929e2258458b98421d87"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7175238f5874929e2258458b98421d87">&#9670;&nbsp;</a></span>SetInstanceTransforms()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetInstanceTransforms </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>xforms</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ad28dbd5b0ab77bec28f30f618dd9e57d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad28dbd5b0ab77bec28f30f618dd9e57d">&#9670;&nbsp;</a></span>SetNormals() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetNormals </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>norms</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the normal array for the mesh directly. </p>
+
+</div>
+</div>
+<a id="a6ab1128fab6f969564d3a1329baeade6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6ab1128fab6f969564d3a1329baeade6">&#9670;&nbsp;</a></span>SetNormals() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetNormals </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>norms_array</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_norms</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; </p>
+
+</div>
+</div>
+<a id="a43d5a5cc3ef742a8c2b5e3f1b4da0903"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43d5a5cc3ef742a8c2b5e3f1b4da0903">&#9670;&nbsp;</a></span>SetNormals() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetNormals </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>triangle_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>n2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>n3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the normals for the three vertices of a triangle that has already been added to the mesh. </p>
+
+</div>
+</div>
+<a id="aba2dfd0ade2d8a728897d411ef3fdaf1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aba2dfd0ade2d8a728897d411ef3fdaf1">&#9670;&nbsp;</a></span>SetTexCoords() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetTexCoords </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texture_unit</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>tex_coords</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets a texture coordinates array for the mesh directly. </p>
+
+</div>
+</div>
+<a id="ac9cd4e8d67bb70295a48fcbc72ae32f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac9cd4e8d67bb70295a48fcbc72ae32f9">&#9670;&nbsp;</a></span>SetTexCoords() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetTexCoords </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texture_unit</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>tex_coords_array</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_tex_coords</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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 <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6" title="Sets the vertex array for the mesh directly.">SetVertices()</a>. This version of the function accepts a C-style array rather than std::vector&lt;&gt; </p>
+
+</div>
+</div>
+<a id="a17cb896939007357014c74a1ece6f1f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a17cb896939007357014c74a1ece6f1f3">&#9670;&nbsp;</a></span>SetTexCoords() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetTexCoords </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>triangle_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texture_unit</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td>
+ <td class="paramname"><em>uv1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td>
+ <td class="paramname"><em>uv2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td>
+ <td class="paramname"><em>uv3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the texture coordinates for the three vertices of a triangle that has already been added to the mesh. </p>
+<p>The first textureUnit is 0, and you should always use 0 for this parameter unless you are doing multi-texturing. </p>
+
+</div>
+</div>
+<a id="a1dd243b53826765ba468f505645102a6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1dd243b53826765ba468f505645102a6">&#9670;&nbsp;</a></span>SetVertices() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetVertices </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>verts</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the vertex array for the mesh directly. </p>
+
+</div>
+</div>
+<a id="a033076b9bf1714c9b9e0eeef11ebcd49"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a033076b9bf1714c9b9e0eeef11ebcd49">&#9670;&nbsp;</a></span>SetVertices() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::SetVertices </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>verts_array</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_verts</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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&lt;&gt; </p>
+
+</div>
+</div>
+<a id="ac74345bf4b2994de4ee1c509bcc6840e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac74345bf4b2994de4ee1c509bcc6840e">&#9670;&nbsp;</a></span>UpdateGPUMemory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::UpdateGPUMemory </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before you can draw the mesh. </p>
+<p>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 <a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c" title="This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-i...">Draw()</a> is called. If the mesh contains normals, per- vertex colors and/or texture coordinates these are added as attributes within the vertex array. </p>
+
+</div>
+</div>
+<a id="a3e0ac86714f6b7c3f62761ef3952a044"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e0ac86714f6b7c3f62761ef3952a044">&#9670;&nbsp;</a></span>UpdateTriangle()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Mesh::UpdateTriangle </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>triangle_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>v3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Updates the vertex positions for a triangle that has already been added to the mesh. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="mesh_8h_source.html">mesh.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_platform.html">Platform</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Platform Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">FileExists</a>(const std::string &amp;filename)</td><td class="entry"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">FindFile</a>(const std::string &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)</td><td class="entry"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2">FindFile</a>(const std::string &amp;basename, const std::string &amp;searchpath)</td><td class="entry"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">FindMinGfxDataFile</a>(const std::string &amp;basename)</td><td class="entry"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">FindMinGfxShaderFile</a>(const std::string &amp;basename)</td><td class="entry"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Platform Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_platform.html">Platform</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_platform-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Platform Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Provides access to the underlying file system and other platform-specific routines. </p>
+
+<p class="definition">Definition at line <a class="el" href="platform_8h_source.html#l00026">26</a> of file <a class="el" href="platform_8h_source.html">platform.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="platform_8h_source.html">platform.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a045007efda73123a7f4019837d83bc92"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">FileExists</a> (const std::string &amp;filename)</td></tr>
+<tr class="memdesc:a045007efda73123a7f4019837d83bc92"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if filename is found and can be opened for reading on the system. <a href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">More...</a><br /></td></tr>
+<tr class="separator:a045007efda73123a7f4019837d83bc92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32a392f4bac832c95fabc2d10bd03ad1"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">FindFile</a> (const std::string &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)</td></tr>
+<tr class="separator:a32a392f4bac832c95fabc2d10bd03ad1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03ade910313dd9580c9e37a7b63f87b2"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2">FindFile</a> (const std::string &amp;basename, const std::string &amp;searchpath)</td></tr>
+<tr class="separator:a03ade910313dd9580c9e37a7b63f87b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c36ca57a246efa218a49a942c8c4a3b"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">FindMinGfxDataFile</a> (const std::string &amp;basename)</td></tr>
+<tr class="memdesc:a2c36ca57a246efa218a49a942c8c4a3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Searches for a data file that ships with MinGfx. <a href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">More...</a><br /></td></tr>
+<tr class="separator:a2c36ca57a246efa218a49a942c8c4a3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af12cd63e1ede33529d8c282d7d916169"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">FindMinGfxShaderFile</a> (const std::string &amp;basename)</td></tr>
+<tr class="memdesc:af12cd63e1ede33529d8c282d7d916169"><td class="mdescLeft">&#160;</td><td class="mdescRight">Searches for a shader file that ships with MinGfx. <a href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">More...</a><br /></td></tr>
+<tr class="separator:af12cd63e1ede33529d8c282d7d916169"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a045007efda73123a7f4019837d83bc92"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a045007efda73123a7f4019837d83bc92">&#9670;&nbsp;</a></span>FileExists()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool mingfx::Platform::FileExists </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if filename is found and can be opened for reading on the system. </p>
+
+</div>
+</div>
+<a id="a03ade910313dd9580c9e37a7b63f87b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a03ade910313dd9580c9e37a7b63f87b2">&#9670;&nbsp;</a></span>FindFile() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static std::string mingfx::Platform::FindFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>basename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>searchpath</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a32a392f4bac832c95fabc2d10bd03ad1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a32a392f4bac832c95fabc2d10bd03ad1">&#9670;&nbsp;</a></span>FindFile() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static std::string mingfx::Platform::FindFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>basename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
+ <td class="paramname"><em>searchpath</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a2c36ca57a246efa218a49a942c8c4a3b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c36ca57a246efa218a49a942c8c4a3b">&#9670;&nbsp;</a></span>FindMinGfxDataFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static std::string mingfx::Platform::FindMinGfxDataFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>basename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Searches for a data file that ships with MinGfx. </p>
+<p>This will look in the following locations in order:</p><ol type="1">
+<li>the current working directory.</li>
+<li>a subdirectory called data within the current working directory.</li>
+<li>the installed data directory INSTALL_PREFIX/share/MinGfx-1.0/data.</li>
+<li>the data directory in the MinGfx build tree. If the file is found, the full path is returned, else basename is returned. </li>
+</ol>
+
+</div>
+</div>
+<a id="af12cd63e1ede33529d8c282d7d916169"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af12cd63e1ede33529d8c282d7d916169">&#9670;&nbsp;</a></span>FindMinGfxShaderFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static std::string mingfx::Platform::FindMinGfxShaderFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>basename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Searches for a shader file that ships with MinGfx. </p>
+<p>This will look in the following locations in order:</p><ol type="1">
+<li>the current working directory.</li>
+<li>a subdirectory called shaders within the current working directory.</li>
+<li>the installed shaders directory INSTALL_PREFIX/share/MinGfx-1.0/shaders.</li>
+<li>the shaders directory in the MinGfx build tree. If the file is found, the full path is returned, else basename is returned. </li>
+</ol>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="platform_8h_source.html">platform.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_point2.html">Point2</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Point2 Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">Lerp</a>(const Point2 &amp;b, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e">Lerp</a>(const Point2 &amp;a, const Point2 &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">One</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">operator!=</a>(const Point2 &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">operator=</a>(const Point2 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">operator==</a>(const Point2 &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">Origin</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">Point2</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483">Point2</a>(float x, float y)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f">Point2</a>(float *p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0">Point2</a>(const Point2 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">w</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">x</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">y</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">Zero</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">~Point2</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Point2 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_point2.html">Point2</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_point2-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Point2 Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input. </p>
+
+<p class="definition">Definition at line <a class="el" href="point2_8h_source.html#l00028">28</a> of file <a class="el" href="point2_8h_source.html">point2.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="point2_8h_source.html">point2.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2e5869d810b52be4ba43c8a4f4e117a1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">Point2</a> ()</td></tr>
+<tr class="memdesc:a2e5869d810b52be4ba43c8a4f4e117a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default point at the origin. <a href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">More...</a><br /></td></tr>
+<tr class="separator:a2e5869d810b52be4ba43c8a4f4e117a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a716fcff21456f29561ec27118a646483"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483">Point2</a> (float <a class="el" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">x</a>, float <a class="el" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">y</a>)</td></tr>
+<tr class="memdesc:a716fcff21456f29561ec27118a646483"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. <a href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483">More...</a><br /></td></tr>
+<tr class="separator:a716fcff21456f29561ec27118a646483"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ba487a2038ebc78b461b66f1987053f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f">Point2</a> (float *p)</td></tr>
+<tr class="memdesc:a4ba487a2038ebc78b461b66f1987053f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given a pointer to x,y data. <a href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f">More...</a><br /></td></tr>
+<tr class="separator:a4ba487a2038ebc78b461b66f1987053f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97464af92444984e275dca38a3f4eef0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0">Point2</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="memdesc:a97464af92444984e275dca38a3f4eef0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor for point. <a href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0">More...</a><br /></td></tr>
+<tr class="separator:a97464af92444984e275dca38a3f4eef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e5b2dcd7e079bdd00354e7ccf9c5c2a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">~Point2</a> ()</td></tr>
+<tr class="memdesc:a7e5b2dcd7e079bdd00354e7ccf9c5c2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point destructor. <a href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">More...</a><br /></td></tr>
+<tr class="separator:a7e5b2dcd7e079bdd00354e7ccf9c5c2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8729260293b993bbf3cb31c0a33edfa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">operator==</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p) const</td></tr>
+<tr class="memdesc:ae8729260293b993bbf3cb31c0a33edfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">More...</a><br /></td></tr>
+<tr class="separator:ae8729260293b993bbf3cb31c0a33edfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b99fcf93a0c6d2b247290f5564f8a84"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">operator!=</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p) const</td></tr>
+<tr class="memdesc:a5b99fcf93a0c6d2b247290f5564f8a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">More...</a><br /></td></tr>
+<tr class="separator:a5b99fcf93a0c6d2b247290f5564f8a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc68153cce7dc528e95cf5ad81c63902"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">operator=</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="memdesc:afc68153cce7dc528e95cf5ad81c63902"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <a href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">More...</a><br /></td></tr>
+<tr class="separator:afc68153cce7dc528e95cf5ad81c63902"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af4c0cc334dfbfe8e8068156e6da16542"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:af4c0cc334dfbfe8e8068156e6da16542"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the ith coordinate of the point. <a href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">More...</a><br /></td></tr>
+<tr class="separator:af4c0cc334dfbfe8e8068156e6da16542"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50f09df619fd226e6dc3ccff452abab3"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:a50f09df619fd226e6dc3ccff452abab3"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3">More...</a><br /></td></tr>
+<tr class="separator:a50f09df619fd226e6dc3ccff452abab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92447f64ca82f67e855da0c42db12ffa"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">x</a> () const</td></tr>
+<tr class="memdesc:a92447f64ca82f67e855da0c42db12ffa"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">More...</a><br /></td></tr>
+<tr class="separator:a92447f64ca82f67e855da0c42db12ffa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4f97a7a75276a147ac06fc4dec810ec8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">y</a> () const</td></tr>
+<tr class="memdesc:a4f97a7a75276a147ac06fc4dec810ec8"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">More...</a><br /></td></tr>
+<tr class="separator:a4f97a7a75276a147ac06fc4dec810ec8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab00e35eccdc4b7deae8172f5954a86e8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">w</a> () const</td></tr>
+<tr class="memdesc:ab00e35eccdc4b7deae8172f5954a86e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">In homogeneous coordinates, the w coordinate for all points is 1.0. <a href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">More...</a><br /></td></tr>
+<tr class="separator:ab00e35eccdc4b7deae8172f5954a86e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a027b2412f1c36242ccb06cf37c7e29bc"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">value_ptr</a> () const</td></tr>
+<tr class="memdesc:a027b2412f1c36242ccb06cf37c7e29bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array. <a href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">More...</a><br /></td></tr>
+<tr class="separator:a027b2412f1c36242ccb06cf37c7e29bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a900567ad5e3c0e6de217b52167c49fd6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">Lerp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;b, float alpha) const</td></tr>
+<tr class="memdesc:a900567ad5e3c0e6de217b52167c49fd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">More...</a><br /></td></tr>
+<tr class="separator:a900567ad5e3c0e6de217b52167c49fd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a24d7a5121fceba01b46f3ba0f6525630"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">Origin</a> ()</td></tr>
+<tr class="memdesc:a24d7a5121fceba01b46f3ba0f6525630"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">More...</a><br /></td></tr>
+<tr class="separator:a24d7a5121fceba01b46f3ba0f6525630"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60a2b348deab631b51caca3eb715461f"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">Zero</a> ()</td></tr>
+<tr class="memdesc:a60a2b348deab631b51caca3eb715461f"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">More...</a><br /></td></tr>
+<tr class="separator:a60a2b348deab631b51caca3eb715461f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38149d8797bf7406fc34cab0ea5a3ac8"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">One</a> ()</td></tr>
+<tr class="memdesc:a38149d8797bf7406fc34cab0ea5a3ac8"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,1) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">More...</a><br /></td></tr>
+<tr class="separator:a38149d8797bf7406fc34cab0ea5a3ac8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a680648ae01c549c48f7a3d5d75d8791e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e">Lerp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;a, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:a680648ae01c549c48f7a3d5d75d8791e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. <a href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e">More...</a><br /></td></tr>
+<tr class="separator:a680648ae01c549c48f7a3d5d75d8791e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a2e5869d810b52be4ba43c8a4f4e117a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2e5869d810b52be4ba43c8a4f4e117a1">&#9670;&nbsp;</a></span>Point2() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point2::Point2 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Default point at the origin. </p>
+
+</div>
+</div>
+<a id="a716fcff21456f29561ec27118a646483"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a716fcff21456f29561ec27118a646483">&#9670;&nbsp;</a></span>Point2() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point2::Point2 </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>y</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. </p>
+
+</div>
+</div>
+<a id="a4ba487a2038ebc78b461b66f1987053f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4ba487a2038ebc78b461b66f1987053f">&#9670;&nbsp;</a></span>Point2() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point2::Point2 </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given a pointer to x,y data. </p>
+
+</div>
+</div>
+<a id="a97464af92444984e275dca38a3f4eef0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a97464af92444984e275dca38a3f4eef0">&#9670;&nbsp;</a></span>Point2() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point2::Point2 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor for point. </p>
+
+</div>
+</div>
+<a id="a7e5b2dcd7e079bdd00354e7ccf9c5c2a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">&#9670;&nbsp;</a></span>~Point2()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Point2::~Point2 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Point destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a680648ae01c549c48f7a3d5d75d8791e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a680648ae01c549c48f7a3d5d75d8791e">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::Point2::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. </p>
+
+</div>
+</div>
+<a id="a900567ad5e3c0e6de217b52167c49fd6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a900567ad5e3c0e6de217b52167c49fd6">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::Point2::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a38149d8797bf7406fc34cab0ea5a3ac8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38149d8797bf7406fc34cab0ea5a3ac8">&#9670;&nbsp;</a></span>One()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&amp; mingfx::Point2::One </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,1) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<a id="a5b99fcf93a0c6d2b247290f5564f8a84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b99fcf93a0c6d2b247290f5564f8a84">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Point2::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="afc68153cce7dc528e95cf5ad81c63902"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc68153cce7dc528e95cf5ad81c63902">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&amp; mingfx::Point2::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Assignment operator. </p>
+
+</div>
+</div>
+<a id="ae8729260293b993bbf3cb31c0a33edfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8729260293b993bbf3cb31c0a33edfa">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Point2::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a50f09df619fd226e6dc3ccff452abab3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a50f09df619fd226e6dc3ccff452abab3">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Point2::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">Point2</a> a;</div>
+<div class="line">a[0] = 5.0; <span class="comment">// set the x-coordinate of the point</span></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a2e5869d810b52be4ba43c8a4f4e117a1"><div class="ttname"><a href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">mingfx::Point2::Point2</a></div><div class="ttdeci">Point2()</div><div class="ttdoc">Default point at the origin.</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af4c0cc334dfbfe8e8068156e6da16542"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af4c0cc334dfbfe8e8068156e6da16542">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point2::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the ith coordinate of the point. </p>
+
+</div>
+</div>
+<a id="a24d7a5121fceba01b46f3ba0f6525630"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a24d7a5121fceba01b46f3ba0f6525630">&#9670;&nbsp;</a></span>Origin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&amp; mingfx::Point2::Origin </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<a id="a027b2412f1c36242ccb06cf37c7e29bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a027b2412f1c36242ccb06cf37c7e29bc">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Point2::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array. </p>
+
+</div>
+</div>
+<a id="ab00e35eccdc4b7deae8172f5954a86e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab00e35eccdc4b7deae8172f5954a86e8">&#9670;&nbsp;</a></span>w()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point2::w </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>In homogeneous coordinates, the w coordinate for all points is 1.0. </p>
+
+<p class="definition">Definition at line <a class="el" href="point2_8h_source.html#l00076">76</a> of file <a class="el" href="point2_8h_source.html">point2.h</a>.</p>
+
+</div>
+</div>
+<a id="a92447f64ca82f67e855da0c42db12ffa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92447f64ca82f67e855da0c42db12ffa">&#9670;&nbsp;</a></span>x()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point2::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="point2_8h_source.html#l00069">69</a> of file <a class="el" href="point2_8h_source.html">point2.h</a>.</p>
+
+</div>
+</div>
+<a id="a4f97a7a75276a147ac06fc4dec810ec8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4f97a7a75276a147ac06fc4dec810ec8">&#9670;&nbsp;</a></span>y()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point2::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="point2_8h_source.html#l00073">73</a> of file <a class="el" href="point2_8h_source.html">point2.h</a>.</p>
+
+</div>
+</div>
+<a id="a60a2b348deab631b51caca3eb715461f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60a2b348deab631b51caca3eb715461f">&#9670;&nbsp;</a></span>Zero()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point2.html">Point2</a>&amp; mingfx::Point2::Zero </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="point2_8h_source.html">point2.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_point3.html">Point3</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Point3 Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">ClosestPoint</a>(const std::vector&lt; Point3 &gt; &amp;point_list)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">ClosestPointOnPlane</a>(const Point3 &amp;plane_origin, const Vector3 &amp;plane_normal)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">DistanceToPlane</a>(const Point3 &amp;plane_origin, const Vector3 &amp;plane_normal)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">Lerp</a>(const Point3 &amp;b, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74">Lerp</a>(const Point3 &amp;a, const Point3 &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">One</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">operator!=</a>(const Point3 &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">operator=</a>(const Point3 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">operator==</a>(const Point3 &amp;p) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">Origin</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953">Point3</a>(float x, float y, float z)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756">Point3</a>(float *p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97">Point3</a>(const Point3 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">w</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">x</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">y</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">z</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">Zero</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">~Point3</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Point3 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_point3.html">Point3</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_point3-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Point3 Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations. </p>
+<p>Point3s can be transformed by a <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a>. Example: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> a(0,0,1);</div>
+<div class="line">std::cout &lt;&lt; a &lt;&lt; std::endl;</div>
+<div class="line"> </div>
+<div class="line">Matrix4 M = <a class="code" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Matrix4::Translation</a>(Vector3(0,0,-1));</div>
+<div class="line"><a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> b = M * a;</div>
+<div class="line">std::cout &lt;&lt; b &lt;&lt; std::endl;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// you can access the individual components of the point in two ways:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> p(1,2,3);</div>
+<div class="line"><span class="keywordtype">float</span> option1 = p.x();</div>
+<div class="line"><span class="keywordtype">float</span> option2 = p[0];</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// to set an individual component of the point use the [] operator:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> p2;</div>
+<div class="line">p2[0] = 0.4;</div>
+<div class="line">p2[1] = 1.2;</div>
+<div class="line">p2[2] = 3.1;</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae82bab81df82dc03f5eb11e74ba1dd84"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4::Translation</a></div><div class="ttdeci">static Matrix4 Translation(const Vector3 &amp;v)</div><div class="ttdoc">Returns the translation matrix described by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ae8ab322852c24c6e03bed03cac443664"><div class="ttname"><a href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">mingfx::Point3::Point3</a></div><div class="ttdeci">Point3()</div><div class="ttdoc">Default point at the origin.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00052">52</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="point3_8h_source.html">point3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ae8ab322852c24c6e03bed03cac443664"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> ()</td></tr>
+<tr class="memdesc:ae8ab322852c24c6e03bed03cac443664"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default point at the origin. <a href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">More...</a><br /></td></tr>
+<tr class="separator:ae8ab322852c24c6e03bed03cac443664"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29d113f0fa37fa04a642817c680fe953"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953">Point3</a> (float <a class="el" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">x</a>, float <a class="el" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">y</a>, float <a class="el" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">z</a>)</td></tr>
+<tr class="memdesc:a29d113f0fa37fa04a642817c680fe953"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. <a href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953">More...</a><br /></td></tr>
+<tr class="separator:a29d113f0fa37fa04a642817c680fe953"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a062caf579ef643b25129cc35b3dbe756"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756">Point3</a> (float *p)</td></tr>
+<tr class="memdesc:a062caf579ef643b25129cc35b3dbe756"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a point given a pointer to x,y,z data. <a href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756">More...</a><br /></td></tr>
+<tr class="separator:a062caf579ef643b25129cc35b3dbe756"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23534a1ce3d4466c303b9205bd21cd97"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97">Point3</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:a23534a1ce3d4466c303b9205bd21cd97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor for point. <a href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97">More...</a><br /></td></tr>
+<tr class="separator:a23534a1ce3d4466c303b9205bd21cd97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa55aef76986cc7424c2a535d6fd1ab7a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">~Point3</a> ()</td></tr>
+<tr class="memdesc:aa55aef76986cc7424c2a535d6fd1ab7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point destructor. <a href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">More...</a><br /></td></tr>
+<tr class="separator:aa55aef76986cc7424c2a535d6fd1ab7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab22d5cc4631f26274ada550c90d39699"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">operator==</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p) const</td></tr>
+<tr class="memdesc:ab22d5cc4631f26274ada550c90d39699"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">More...</a><br /></td></tr>
+<tr class="separator:ab22d5cc4631f26274ada550c90d39699"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acccf9d3fca27174c18ada3b33209c71e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">operator!=</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p) const</td></tr>
+<tr class="memdesc:acccf9d3fca27174c18ada3b33209c71e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">More...</a><br /></td></tr>
+<tr class="separator:acccf9d3fca27174c18ada3b33209c71e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8e54b18bfaa39f4b7048b85c9ca43c3d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">operator=</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:a8e54b18bfaa39f4b7048b85c9ca43c3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <a href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">More...</a><br /></td></tr>
+<tr class="separator:a8e54b18bfaa39f4b7048b85c9ca43c3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a586db5b58d5f1fdaddb1e33e84d566"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:a3a586db5b58d5f1fdaddb1e33e84d566"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the ith coordinate of the point. <a href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">More...</a><br /></td></tr>
+<tr class="separator:a3a586db5b58d5f1fdaddb1e33e84d566"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a790468d68b6d957b22959f9078f85c3e"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:a790468d68b6d957b22959f9078f85c3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e">More...</a><br /></td></tr>
+<tr class="separator:a790468d68b6d957b22959f9078f85c3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac409e3213620b80c868245c1f6a6eea5"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">x</a> () const</td></tr>
+<tr class="memdesc:ac409e3213620b80c868245c1f6a6eea5"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">More...</a><br /></td></tr>
+<tr class="separator:ac409e3213620b80c868245c1f6a6eea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0757315cd84f91879021d7afe18e0545"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">y</a> () const</td></tr>
+<tr class="memdesc:a0757315cd84f91879021d7afe18e0545"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">More...</a><br /></td></tr>
+<tr class="separator:a0757315cd84f91879021d7afe18e0545"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac463e3a3ec3edd02c86505ea6400d8e6"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">z</a> () const</td></tr>
+<tr class="memdesc:ac463e3a3ec3edd02c86505ea6400d8e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">More...</a><br /></td></tr>
+<tr class="separator:ac463e3a3ec3edd02c86505ea6400d8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abbf85b5749b37869f4c1b98443ebbd9e"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">w</a> () const</td></tr>
+<tr class="memdesc:abbf85b5749b37869f4c1b98443ebbd9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">In homogeneous coordinates, the w coordinate for all points is 1.0. <a href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">More...</a><br /></td></tr>
+<tr class="separator:abbf85b5749b37869f4c1b98443ebbd9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0557bdc07452cf335e2b7e04fc0aa3c"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">value_ptr</a> () const</td></tr>
+<tr class="memdesc:af0557bdc07452cf335e2b7e04fc0aa3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array. <a href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">More...</a><br /></td></tr>
+<tr class="separator:af0557bdc07452cf335e2b7e04fc0aa3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a228a1f3754b8ee82b9bb148ce183fc5b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">Lerp</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, float alpha) const</td></tr>
+<tr class="memdesc:a228a1f3754b8ee82b9bb148ce183fc5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">More...</a><br /></td></tr>
+<tr class="separator:a228a1f3754b8ee82b9bb148ce183fc5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af554773b2d7f4492a0727e8e42efe002"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">DistanceToPlane</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;plane_origin, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;plane_normal)</td></tr>
+<tr class="memdesc:af554773b2d7f4492a0727e8e42efe002"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and a normal. <a href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">More...</a><br /></td></tr>
+<tr class="separator:af554773b2d7f4492a0727e8e42efe002"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae31d5f91a03fabdf72b2fa54e177b743"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">ClosestPointOnPlane</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;plane_origin, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;plane_normal)</td></tr>
+<tr class="memdesc:ae31d5f91a03fabdf72b2fa54e177b743"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the perpendicular projection of this point onto a plane defined by a point and a normal. <a href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">More...</a><br /></td></tr>
+<tr class="separator:ae31d5f91a03fabdf72b2fa54e177b743"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9dd5396f53b7006ec4cb63abffd90a7c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">ClosestPoint</a> (const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;point_list)</td></tr>
+<tr class="memdesc:a9dd5396f53b7006ec4cb63abffd90a7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a list of points, returns the closest in the last to the current point. <a href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">More...</a><br /></td></tr>
+<tr class="separator:a9dd5396f53b7006ec4cb63abffd90a7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:aecb7c3137356cd4470851c54a47c7930"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">Origin</a> ()</td></tr>
+<tr class="memdesc:aecb7c3137356cd4470851c54a47c7930"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0,0) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">More...</a><br /></td></tr>
+<tr class="separator:aecb7c3137356cd4470851c54a47c7930"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9983b62979f9ac5a11efea08d9d283ed"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">Zero</a> ()</td></tr>
+<tr class="memdesc:a9983b62979f9ac5a11efea08d9d283ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0,0) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">More...</a><br /></td></tr>
+<tr class="separator:a9983b62979f9ac5a11efea08d9d283ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2cfcbefe652720779e0d7beff1c86ece"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">One</a> ()</td></tr>
+<tr class="memdesc:a2cfcbefe652720779e0d7beff1c86ece"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,1,1) - a shortcut for a special point that is frequently needed <a href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">More...</a><br /></td></tr>
+<tr class="separator:a2cfcbefe652720779e0d7beff1c86ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a206691c31872e537eefbf897603dba74"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74">Lerp</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;a, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:a206691c31872e537eefbf897603dba74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. <a href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74">More...</a><br /></td></tr>
+<tr class="separator:a206691c31872e537eefbf897603dba74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ae8ab322852c24c6e03bed03cac443664"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8ab322852c24c6e03bed03cac443664">&#9670;&nbsp;</a></span>Point3() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point3::Point3 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Default point at the origin. </p>
+
+</div>
+</div>
+<a id="a29d113f0fa37fa04a642817c680fe953"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a29d113f0fa37fa04a642817c680fe953">&#9670;&nbsp;</a></span>Point3() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point3::Point3 </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. </p>
+
+</div>
+</div>
+<a id="a062caf579ef643b25129cc35b3dbe756"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a062caf579ef643b25129cc35b3dbe756">&#9670;&nbsp;</a></span>Point3() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point3::Point3 </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a point given a pointer to x,y,z data. </p>
+
+</div>
+</div>
+<a id="a23534a1ce3d4466c303b9205bd21cd97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a23534a1ce3d4466c303b9205bd21cd97">&#9670;&nbsp;</a></span>Point3() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Point3::Point3 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor for point. </p>
+
+</div>
+</div>
+<a id="aa55aef76986cc7424c2a535d6fd1ab7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa55aef76986cc7424c2a535d6fd1ab7a">&#9670;&nbsp;</a></span>~Point3()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Point3::~Point3 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Point destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a9dd5396f53b7006ec4cb63abffd90a7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9dd5396f53b7006ec4cb63abffd90a7c">&#9670;&nbsp;</a></span>ClosestPoint()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Point3::ClosestPoint </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>point_list</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Given a list of points, returns the closest in the last to the current point. </p>
+
+</div>
+</div>
+<a id="ae31d5f91a03fabdf72b2fa54e177b743"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae31d5f91a03fabdf72b2fa54e177b743">&#9670;&nbsp;</a></span>ClosestPointOnPlane()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Point3::ClosestPointOnPlane </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>plane_origin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>plane_normal</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the perpendicular projection of this point onto a plane defined by a point and a normal. </p>
+
+</div>
+</div>
+<a id="af554773b2d7f4492a0727e8e42efe002"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af554773b2d7f4492a0727e8e42efe002">&#9670;&nbsp;</a></span>DistanceToPlane()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::DistanceToPlane </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>plane_origin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>plane_normal</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and a normal. </p>
+
+</div>
+</div>
+<a id="a206691c31872e537eefbf897603dba74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a206691c31872e537eefbf897603dba74">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Point3::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. </p>
+
+</div>
+</div>
+<a id="a228a1f3754b8ee82b9bb148ce183fc5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a228a1f3754b8ee82b9bb148ce183fc5b">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Point3::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a2cfcbefe652720779e0d7beff1c86ece"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2cfcbefe652720779e0d7beff1c86ece">&#9670;&nbsp;</a></span>One()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&amp; mingfx::Point3::One </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,1,1) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<a id="acccf9d3fca27174c18ada3b33209c71e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acccf9d3fca27174c18ada3b33209c71e">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Point3::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a8e54b18bfaa39f4b7048b85c9ca43c3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8e54b18bfaa39f4b7048b85c9ca43c3d">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&amp; mingfx::Point3::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Assignment operator. </p>
+
+</div>
+</div>
+<a id="ab22d5cc4631f26274ada550c90d39699"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab22d5cc4631f26274ada550c90d39699">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Point3::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a790468d68b6d957b22959f9078f85c3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a790468d68b6d957b22959f9078f85c3e">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Point3::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a> a;</div>
+<div class="line">a[0] = 5.0; <span class="comment">// set the x-coordinate of the point</span></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3a586db5b58d5f1fdaddb1e33e84d566"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a586db5b58d5f1fdaddb1e33e84d566">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the ith coordinate of the point. </p>
+
+</div>
+</div>
+<a id="aecb7c3137356cd4470851c54a47c7930"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aecb7c3137356cd4470851c54a47c7930">&#9670;&nbsp;</a></span>Origin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&amp; mingfx::Point3::Origin </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0,0) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<a id="af0557bdc07452cf335e2b7e04fc0aa3c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af0557bdc07452cf335e2b7e04fc0aa3c">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Point3::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array. </p>
+
+</div>
+</div>
+<a id="abbf85b5749b37869f4c1b98443ebbd9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abbf85b5749b37869f4c1b98443ebbd9e">&#9670;&nbsp;</a></span>w()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::w </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>In homogeneous coordinates, the w coordinate for all points is 1.0. </p>
+
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00104">104</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+
+</div>
+</div>
+<a id="ac409e3213620b80c868245c1f6a6eea5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac409e3213620b80c868245c1f6a6eea5">&#9670;&nbsp;</a></span>x()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00093">93</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+
+</div>
+</div>
+<a id="a0757315cd84f91879021d7afe18e0545"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0757315cd84f91879021d7afe18e0545">&#9670;&nbsp;</a></span>y()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00097">97</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+
+</div>
+</div>
+<a id="ac463e3a3ec3edd02c86505ea6400d8e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac463e3a3ec3edd02c86505ea6400d8e6">&#9670;&nbsp;</a></span>z()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Point3::z </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00101">101</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+
+</div>
+</div>
+<a id="a9983b62979f9ac5a11efea08d9d283ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9983b62979f9ac5a11efea08d9d283ed">&#9670;&nbsp;</a></span>Zero()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_point3.html">Point3</a>&amp; mingfx::Point3::Zero </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0,0) - a shortcut for a special point that is frequently needed </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="point3_8h_source.html">point3.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Quaternion Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">Conjugate</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">Dot</a>(const Quaternion &amp;q) const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">FromAxisAngle</a>(const Vector3 &amp;axis, float angle)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">FromEulerAnglesZYX</a>(const Vector3 &amp;angles)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">Length</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">Normalize</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">operator!=</a>(const Quaternion &amp;q) const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">operator=</a>(const Quaternion &amp;q)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">operator==</a>(const Quaternion &amp;q) const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">Quaternion</a>(float qx, float qy, float qz, float qw)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6">Quaternion</a>(float *ptr)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243">Quaternion</a>(const Quaternion &amp;other)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">Slerp</a>(const Quaternion &amp;other, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133">Slerp</a>(const Quaternion &amp;a, const Quaternion &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">ToEulerAnglesZYX</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">ToUnit</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">w</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">x</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">y</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">z</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">~Quaternion</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Quaternion Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_quaternion-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Quaternion Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A quaternion to represent rotations in 3D space. </p>
+<p>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: </p><div class="fragment"><div class="line"><span class="comment">// find a rotation 1/2 way between r1 and r2, both originally expressed in Euler angles</span></div>
+<div class="line"> </div>
+<div class="line">Vector3 euler1 = <a class="code" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">GfxMath::ToRadians</a>(Vector3(0,0,60));</div>
+<div class="line">Vector3 euler2 = <a class="code" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">GfxMath::ToRadians</a>(Vector3(45,45,60));</div>
+<div class="line"> </div>
+<div class="line"><a class="code" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a> q1 = <a class="code" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">Quaternion::FromEulerAnglesZYX</a>(euler1);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a> q2 = <a class="code" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">Quaternion::FromEulerAnglesZYX</a>(euler2);</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">float</span> alpha = 0.5;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a> q_half_way = q1.Slerp(q2, alpha);</div>
+<div class="line">Vector3 new_euler_angles = <a class="code" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">GfxMath::ToDegrees</a>(q_half_way.ToEulerAnglesZYX());</div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a1336de2695bc3bb750b23fb0ea211637"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath::ToRadians</a></div><div class="ttdeci">static float ToRadians(float degrees)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a39a2b5973249fb3aefc210b18b0fdff3"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">mingfx::GfxMath::ToDegrees</a></div><div class="ttdeci">static float ToDegrees(float radians)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a9548599ea5c527f9f67d2ea6710e3d18"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">mingfx::Quaternion::FromEulerAnglesZYX</a></div><div class="ttdeci">static Quaternion FromEulerAnglesZYX(const Vector3 &amp;angles)</div><div class="ttdoc">Creates a new quaternion from a rotation defined in Euler angles.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_ad58ac80804ec63af354912a71361f165"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">mingfx::Quaternion::Quaternion</a></div><div class="ttdeci">Quaternion()</div><div class="ttdoc">Creates a quat with the identity rotation.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="quaternion_8h_source.html#l00041">41</a> of file <a class="el" href="quaternion_8h_source.html">quaternion.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="quaternion_8h_source.html">quaternion.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ad58ac80804ec63af354912a71361f165"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a> ()</td></tr>
+<tr class="memdesc:ad58ac80804ec63af354912a71361f165"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a quat with the identity rotation. <a href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">More...</a><br /></td></tr>
+<tr class="separator:ad58ac80804ec63af354912a71361f165"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c6cbe4fc70e8e4ec23142d0a5a2ba97"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">Quaternion</a> (float qx, float qy, float qz, float qw)</td></tr>
+<tr class="memdesc:a5c6cbe4fc70e8e4ec23142d0a5a2ba97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a quat from the 4 parameters. <a href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">More...</a><br /></td></tr>
+<tr class="separator:a5c6cbe4fc70e8e4ec23142d0a5a2ba97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07bb09eb7d0b368ef5e8d9da02fbdad6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6">Quaternion</a> (float *ptr)</td></tr>
+<tr class="memdesc:a07bb09eb7d0b368ef5e8d9da02fbdad6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz, qw. <a href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6">More...</a><br /></td></tr>
+<tr class="separator:a07bb09eb7d0b368ef5e8d9da02fbdad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0be885a1b3f2d54675c6866ec3578243"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243">Quaternion</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;other)</td></tr>
+<tr class="memdesc:a0be885a1b3f2d54675c6866ec3578243"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <a href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243">More...</a><br /></td></tr>
+<tr class="separator:a0be885a1b3f2d54675c6866ec3578243"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f9ddd82678ccf51a462e4e03a02c7cc"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">~Quaternion</a> ()</td></tr>
+<tr class="separator:a1f9ddd82678ccf51a462e4e03a02c7cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa89165641485cf9337cd6279df40a403"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">operator==</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q) const</td></tr>
+<tr class="memdesc:aa89165641485cf9337cd6279df40a403"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">More...</a><br /></td></tr>
+<tr class="separator:aa89165641485cf9337cd6279df40a403"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad72c021d2d1fa543c96ac4a8b360dd2e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">operator!=</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q) const</td></tr>
+<tr class="memdesc:ad72c021d2d1fa543c96ac4a8b360dd2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">More...</a><br /></td></tr>
+<tr class="separator:ad72c021d2d1fa543c96ac4a8b360dd2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5f82b7ed1d620c3c15f57aca028fcdd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">operator=</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q)</td></tr>
+<tr class="memdesc:ac5f82b7ed1d620c3c15f57aca028fcdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <a href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">More...</a><br /></td></tr>
+<tr class="separator:ac5f82b7ed1d620c3c15f57aca028fcdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a548d09ecd25788241d734240c0dd7ea8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:a548d09ecd25788241d734240c0dd7ea8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw). <a href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">More...</a><br /></td></tr>
+<tr class="separator:a548d09ecd25788241d734240c0dd7ea8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a40e6587cc0511572297c5507634db7e1"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:a40e6587cc0511572297c5507634db7e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writable access the ith coordinate of the quaternion (qx, qy, qz, qw). <a href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1">More...</a><br /></td></tr>
+<tr class="separator:a40e6587cc0511572297c5507634db7e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85464500e1d3c8ba10f1968426dc24ae"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">x</a> () const</td></tr>
+<tr class="memdesc:a85464500e1d3c8ba10f1968426dc24ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the x coordinate of the imaginary part of the quaternion. <a href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">More...</a><br /></td></tr>
+<tr class="separator:a85464500e1d3c8ba10f1968426dc24ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb294449db2a80bd11426148592d9e0b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">y</a> () const</td></tr>
+<tr class="memdesc:adb294449db2a80bd11426148592d9e0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the y coordinate of the imaginary part of the quaternion. <a href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">More...</a><br /></td></tr>
+<tr class="separator:adb294449db2a80bd11426148592d9e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75ec001cbbf08cf5c4e1f8978082a55f"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">z</a> () const</td></tr>
+<tr class="memdesc:a75ec001cbbf08cf5c4e1f8978082a55f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the z coordinate of the imaginary part of the quaternion. <a href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">More...</a><br /></td></tr>
+<tr class="separator:a75ec001cbbf08cf5c4e1f8978082a55f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8aa53f71892f02c981d98d100a8b57c7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">w</a> () const</td></tr>
+<tr class="memdesc:a8aa53f71892f02c981d98d100a8b57c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the w, real part, of the quaternion. <a href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">More...</a><br /></td></tr>
+<tr class="separator:a8aa53f71892f02c981d98d100a8b57c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abca597e756f257dc33838734ae19baf9"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">value_ptr</a> () const</td></tr>
+<tr class="memdesc:abca597e756f257dc33838734ae19baf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw. <a href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">More...</a><br /></td></tr>
+<tr class="separator:abca597e756f257dc33838734ae19baf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a90a9b715d06c75ba60eb1164dc6e9c6f"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">Dot</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q) const</td></tr>
+<tr class="memdesc:a90a9b715d06c75ba60eb1164dc6e9c6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the dot product of this quaternion with another. <a href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">More...</a><br /></td></tr>
+<tr class="separator:a90a9b715d06c75ba60eb1164dc6e9c6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af6527ae19f31be2b265b8b8c4b34b77a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">Length</a> () const</td></tr>
+<tr class="memdesc:af6527ae19f31be2b265b8b8c4b34b77a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the length of the quaternion. <a href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">More...</a><br /></td></tr>
+<tr class="separator:af6527ae19f31be2b265b8b8c4b34b77a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05def5c8eb729037b3d9522711a5c2a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">Normalize</a> ()</td></tr>
+<tr class="memdesc:a05def5c8eb729037b3d9522711a5c2a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the quat by making it unit length. <a href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">More...</a><br /></td></tr>
+<tr class="separator:a05def5c8eb729037b3d9522711a5c2a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3572b35419c51332204adb5bf35f0b03"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">ToUnit</a> () const</td></tr>
+<tr class="memdesc:a3572b35419c51332204adb5bf35f0b03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a normalized (i.e., unit length) version of the quaternion without modifying the original. <a href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">More...</a><br /></td></tr>
+<tr class="separator:a3572b35419c51332204adb5bf35f0b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0e3e20f78e537de0187def78d808584"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">Conjugate</a> () const</td></tr>
+<tr class="memdesc:ab0e3e20f78e537de0187def78d808584"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the conjugate of the quaternion. <a href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">More...</a><br /></td></tr>
+<tr class="separator:ab0e3e20f78e537de0187def78d808584"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a033f05ed7e7215a5c3c4cd26548c8007"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">ToEulerAnglesZYX</a> () const</td></tr>
+<tr class="memdesc:a033f05ed7e7215a5c3c4cd26548c8007"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts the rotation specified by the quaternion into Euler angles. <a href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">More...</a><br /></td></tr>
+<tr class="separator:a033f05ed7e7215a5c3c4cd26548c8007"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0290914928a2618f7faaa40989113d22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">Slerp</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;other, float alpha) const</td></tr>
+<tr class="memdesc:a0290914928a2618f7faaa40989113d22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the rotation stored in another. <a href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">More...</a><br /></td></tr>
+<tr class="separator:a0290914928a2618f7faaa40989113d22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a5bacec2f9a3cbbcf24572f9c8eeb480c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">FromAxisAngle</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;axis, float angle)</td></tr>
+<tr class="memdesc:a5bacec2f9a3cbbcf24572f9c8eeb480c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new quaternion that describes a rotation by angle radians about. <a href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">More...</a><br /></td></tr>
+<tr class="separator:a5bacec2f9a3cbbcf24572f9c8eeb480c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9548599ea5c527f9f67d2ea6710e3d18"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">FromEulerAnglesZYX</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;angles)</td></tr>
+<tr class="memdesc:a9548599ea5c527f9f67d2ea6710e3d18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new quaternion from a rotation defined in Euler angles. <a href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">More...</a><br /></td></tr>
+<tr class="separator:a9548599ea5c527f9f67d2ea6710e3d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31d37561099fab3d75a74455c5f43133"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133">Slerp</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;a, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:a31d37561099fab3d75a74455c5f43133"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses spherical interpolation to interpoloate between the rotations specified by two quaternions. <a href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133">More...</a><br /></td></tr>
+<tr class="separator:a31d37561099fab3d75a74455c5f43133"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ad58ac80804ec63af354912a71361f165"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad58ac80804ec63af354912a71361f165">&#9670;&nbsp;</a></span>Quaternion() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Quaternion::Quaternion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a quat with the identity rotation. </p>
+
+</div>
+</div>
+<a id="a5c6cbe4fc70e8e4ec23142d0a5a2ba97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">&#9670;&nbsp;</a></span>Quaternion() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Quaternion::Quaternion </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>qx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>qy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>qz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>qw</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a quat from the 4 parameters. </p>
+
+</div>
+</div>
+<a id="a07bb09eb7d0b368ef5e8d9da02fbdad6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07bb09eb7d0b368ef5e8d9da02fbdad6">&#9670;&nbsp;</a></span>Quaternion() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Quaternion::Quaternion </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>ptr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz, qw. </p>
+
+</div>
+</div>
+<a id="a0be885a1b3f2d54675c6866ec3578243"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0be885a1b3f2d54675c6866ec3578243">&#9670;&nbsp;</a></span>Quaternion() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Quaternion::Quaternion </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor. </p>
+
+</div>
+</div>
+<a id="a1f9ddd82678ccf51a462e4e03a02c7cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1f9ddd82678ccf51a462e4e03a02c7cc">&#9670;&nbsp;</a></span>~Quaternion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Quaternion::~Quaternion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ab0e3e20f78e537de0187def78d808584"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab0e3e20f78e537de0187def78d808584">&#9670;&nbsp;</a></span>Conjugate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::Conjugate </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the conjugate of the quaternion. </p>
+
+</div>
+</div>
+<a id="a90a9b715d06c75ba60eb1164dc6e9c6f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a90a9b715d06c75ba60eb1164dc6e9c6f">&#9670;&nbsp;</a></span>Dot()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::Dot </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the dot product of this quaternion with another. </p>
+
+</div>
+</div>
+<a id="a5bacec2f9a3cbbcf24572f9c8eeb480c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5bacec2f9a3cbbcf24572f9c8eeb480c">&#9670;&nbsp;</a></span>FromAxisAngle()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::FromAxisAngle </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>axis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>angle</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates a new quaternion that describes a rotation by angle radians about. </p>
+
+</div>
+</div>
+<a id="a9548599ea5c527f9f67d2ea6710e3d18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9548599ea5c527f9f67d2ea6710e3d18">&#9670;&nbsp;</a></span>FromEulerAnglesZYX()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::FromEulerAnglesZYX </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>angles</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates a new quaternion from a rotation defined in Euler angles. </p>
+
+</div>
+</div>
+<a id="af6527ae19f31be2b265b8b8c4b34b77a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6527ae19f31be2b265b8b8c4b34b77a">&#9670;&nbsp;</a></span>Length()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::Length </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the length of the quaternion. </p>
+
+</div>
+</div>
+<a id="a05def5c8eb729037b3d9522711a5c2a2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a05def5c8eb729037b3d9522711a5c2a2">&#9670;&nbsp;</a></span>Normalize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Quaternion::Normalize </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Normalizes the quat by making it unit length. </p>
+
+</div>
+</div>
+<a id="ad72c021d2d1fa543c96ac4a8b360dd2e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad72c021d2d1fa543c96ac4a8b360dd2e">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Quaternion::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="ac5f82b7ed1d620c3c15f57aca028fcdd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac5f82b7ed1d620c3c15f57aca028fcdd">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; mingfx::Quaternion::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Assignment operator. </p>
+
+</div>
+</div>
+<a id="aa89165641485cf9337cd6279df40a403"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa89165641485cf9337cd6279df40a403">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Quaternion::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a40e6587cc0511572297c5507634db7e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a40e6587cc0511572297c5507634db7e1">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Quaternion::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Writable access the ith coordinate of the quaternion (qx, qy, qz, qw). </p>
+
+</div>
+</div>
+<a id="a548d09ecd25788241d734240c0dd7ea8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a548d09ecd25788241d734240c0dd7ea8">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw). </p>
+
+</div>
+</div>
+<a id="a31d37561099fab3d75a74455c5f43133"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31d37561099fab3d75a74455c5f43133">&#9670;&nbsp;</a></span>Slerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::Slerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Uses spherical interpolation to interpoloate between the rotations specified by two quaternions. </p>
+
+</div>
+</div>
+<a id="a0290914928a2618f7faaa40989113d22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0290914928a2618f7faaa40989113d22">&#9670;&nbsp;</a></span>Slerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::Slerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the rotation stored in another. </p>
+
+</div>
+</div>
+<a id="a033f05ed7e7215a5c3c4cd26548c8007"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a033f05ed7e7215a5c3c4cd26548c8007">&#9670;&nbsp;</a></span>ToEulerAnglesZYX()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Quaternion::ToEulerAnglesZYX </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Converts the rotation specified by the quaternion into Euler angles. </p>
+
+</div>
+</div>
+<a id="a3572b35419c51332204adb5bf35f0b03"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3572b35419c51332204adb5bf35f0b03">&#9670;&nbsp;</a></span>ToUnit()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::Quaternion::ToUnit </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a normalized (i.e., unit length) version of the quaternion without modifying the original. </p>
+
+</div>
+</div>
+<a id="abca597e756f257dc33838734ae19baf9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abca597e756f257dc33838734ae19baf9">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Quaternion::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw. </p>
+
+</div>
+</div>
+<a id="a8aa53f71892f02c981d98d100a8b57c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8aa53f71892f02c981d98d100a8b57c7">&#9670;&nbsp;</a></span>w()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::w </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Read only access to the w, real part, of the quaternion. </p>
+
+<p class="definition">Definition at line <a class="el" href="quaternion_8h_source.html#l00083">83</a> of file <a class="el" href="quaternion_8h_source.html">quaternion.h</a>.</p>
+
+</div>
+</div>
+<a id="a85464500e1d3c8ba10f1968426dc24ae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85464500e1d3c8ba10f1968426dc24ae">&#9670;&nbsp;</a></span>x()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Read only access to the x coordinate of the imaginary part of the quaternion. </p>
+
+<p class="definition">Definition at line <a class="el" href="quaternion_8h_source.html#l00074">74</a> of file <a class="el" href="quaternion_8h_source.html">quaternion.h</a>.</p>
+
+</div>
+</div>
+<a id="adb294449db2a80bd11426148592d9e0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb294449db2a80bd11426148592d9e0b">&#9670;&nbsp;</a></span>y()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Read only access to the y coordinate of the imaginary part of the quaternion. </p>
+
+<p class="definition">Definition at line <a class="el" href="quaternion_8h_source.html#l00077">77</a> of file <a class="el" href="quaternion_8h_source.html">quaternion.h</a>.</p>
+
+</div>
+</div>
+<a id="a75ec001cbbf08cf5c4e1f8978082a55f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75ec001cbbf08cf5c4e1f8978082a55f">&#9670;&nbsp;</a></span>z()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Quaternion::z </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Read only access to the z coordinate of the imaginary part of the quaternion. </p>
+
+<p class="definition">Definition at line <a class="el" href="quaternion_8h_source.html#l00080">80</a> of file <a class="el" href="quaternion_8h_source.html">quaternion.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="quaternion_8h_source.html">quaternion.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::QuickShapes Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">default_shader</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">DrawArrow</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, Point3 p, Vector3 dir, float radius)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">DrawAxes</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">DrawBrush</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">DrawCone</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">DrawCube</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">DrawCylinder</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">DrawFullscreenTexture</a>(const Color &amp;color, const Texture2D &amp;texture)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">DrawLines</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const std::vector&lt; Point3 &gt; &amp;points, LinesType linesType, float radius)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">DrawLineSegment</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Point3 &amp;p1, const Point3 &amp;p2, float radius)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">DrawSphere</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">DrawSquare</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc">DrawSquare</a>(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Texture2D &amp;texture)</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a> enum name</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">material</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">QuickShapes</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">~QuickShapes</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::QuickShapes Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-types">Public Types</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_quick_shapes-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::QuickShapes Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This class provides a quick way to draw shapes for use in debugging or simple scenes. </p>
+<p>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 &ndash; this is not the right tool to use if you wish to do quality renderings and use multiple types of materials.</p>
+<p>Example usage: ~~~ define a new <a class="el" href="classmingfx_1_1_quick_shapes.html" title="This class provides a quick way to draw shapes for use in debugging or simple scenes.">QuickShapes</a> object during initialization, or as a class member variable <a class="el" href="classmingfx_1_1_quick_shapes.html" title="This class provides a quick way to draw shapes for use in debugging or simple scenes.">QuickShapes</a> quick_shapes;</p>
+<p>void DrawUsingOpenGL() { later, in your draw routine, use it to draw shapes <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> view = <a class="el" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de" title="Returns a view matrix that centers the camera at the &#39;eye&#39; position and orients it to look at the des...">Matrix4::LookAt</a>(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0)); <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> proj = <a class="el" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e" title="Returns a perspective projection matrix equivalent to the one gluPerspective creates.">Matrix4::Perspective</a>(60.0, aspect_ratio(), 0.1, 10.0);</p>
+<p><a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> m_cube = <a class="el" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84" title="Returns the translation matrix described by the vector.">Matrix4::Translation</a>(<a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a>(-2.5,0,0)) * <a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e" title="Returns the scale matrix described by the vector.">Matrix4::Scale</a>(<a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a>(0.5, 0.5, 0.5)); quick_shapes.DrawCube(m_cube, view, proj, Color(1,1,1));</p>
+<p><a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> m_sphere = <a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e" title="Returns the scale matrix described by the vector.">Matrix4::Scale</a>(<a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a>(2.5, 2.5, 2.5)); quick_shapes.DrawSphere(m_sphere, view, proj, Color(1,1,1));</p>
+<p><a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a> m_loop; std::vector&lt;Point3&gt; loop; loop.push_back(<a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>( 4.0, 4.0, -4.0)); loop.push_back(<a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>(-4.0, 4.0, -4.0)); loop.push_back(<a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>(-4.0, 4.0, 4.0)); loop.push_back(<a class="el" href="classmingfx_1_1_point3.html" title="A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...">Point3</a>( 4.0, 4.0, 4.0)); quick_shapes.DrawLines(m_loop, view, proj, Color(1,1,1), loop, <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">QuickShapes::LinesType::LINE_LOOP</a>, 0.1); } ~~~ </p>
+
+<p class="definition">Definition at line <a class="el" href="quick__shapes_8h_source.html#l00069">69</a> of file <a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aaea35a34a9495a9ab25cd9aa32a91603"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a> { <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727">LINES</a>
+, <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814">LINE_STRIP</a>
+, <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">LINE_LOOP</a>
+ }</td></tr>
+<tr class="separator:aaea35a34a9495a9ab25cd9aa32a91603"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a5764a0953013ece013bf3e2a72e4afa2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">QuickShapes</a> ()</td></tr>
+<tr class="separator:a5764a0953013ece013bf3e2a72e4afa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a75dde188ec076ea46a6319ed1ca046"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">~QuickShapes</a> ()</td></tr>
+<tr class="separator:a3a75dde188ec076ea46a6319ed1ca046"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adad98f87a40650ff7c605a94b6d937af"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">DrawCube</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:adad98f87a40650ff7c605a94b6d937af"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">More...</a><br /></td></tr>
+<tr class="separator:adad98f87a40650ff7c605a94b6d937af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69c442154f800c6bb3f6ffa8395e2844"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">DrawCylinder</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:a69c442154f800c6bb3f6ffa8395e2844"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">More...</a><br /></td></tr>
+<tr class="separator:a69c442154f800c6bb3f6ffa8395e2844"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1880f6dd3e794cd9f6e5d9138f93a424"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">DrawCone</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:a1880f6dd3e794cd9f6e5d9138f93a424"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">More...</a><br /></td></tr>
+<tr class="separator:a1880f6dd3e794cd9f6e5d9138f93a424"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5f4f64e3708630a6d58f6b4ca7d2744"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">DrawSphere</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:aa5f4f64e3708630a6d58f6b4ca7d2744"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the supplied color as a material property. <a href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">More...</a><br /></td></tr>
+<tr class="separator:aa5f4f64e3708630a6d58f6b4ca7d2744"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab24811cfd980b3f2ec4ebccf6c0e8b30"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">DrawBrush</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:ab24811cfd980b3f2ec4ebccf6c0e8b30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the classic 3D paintbrush cursor from the 2001 Keefe et al. <a href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">More...</a><br /></td></tr>
+<tr class="separator:ab24811cfd980b3f2ec4ebccf6c0e8b30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0feae19a04d9f315a39e2bdbf659bd7e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">DrawLineSegment</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p1, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p2, float radius)</td></tr>
+<tr class="memdesc:a0feae19a04d9f315a39e2bdbf659bd7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a cylinder between the two points. <a href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">More...</a><br /></td></tr>
+<tr class="separator:a0feae19a04d9f315a39e2bdbf659bd7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af59ae8d8c5bd0447f3bb7f56112400bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">DrawLines</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color, const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;points, <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a> linesType, float radius)</td></tr>
+<tr class="memdesc:af59ae8d8c5bd0447f3bb7f56112400bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a series of line segments. <a href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">More...</a><br /></td></tr>
+<tr class="separator:af59ae8d8c5bd0447f3bb7f56112400bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebe27814a826558ac0475fef3d4481eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">DrawArrow</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> p, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> dir, float radius)</td></tr>
+<tr class="memdesc:aebe27814a826558ac0475fef3d4481eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws an arrow originating at point p and extending in the direction and length specified by dir. <a href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">More...</a><br /></td></tr>
+<tr class="separator:aebe27814a826558ac0475fef3d4481eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a637876fdc13e84282922350b53dab5f8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">DrawAxes</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix)</td></tr>
+<tr class="memdesc:a637876fdc13e84282922350b53dab5f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a right handed set of axes at the coordinate frame specified by the modelMatrix. <a href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">More...</a><br /></td></tr>
+<tr class="separator:a637876fdc13e84282922350b53dab5f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4350ea23b8b9e0e8119310423d641ab3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">DrawSquare</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color)</td></tr>
+<tr class="memdesc:a4350ea23b8b9e0e8119310423d641ab3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction. <a href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">More...</a><br /></td></tr>
+<tr class="separator:a4350ea23b8b9e0e8119310423d641ab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7187f72fa8e12b38dcd0ce424fc85fbc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc">DrawSquare</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;texture)</td></tr>
+<tr class="memdesc:a7187f72fa8e12b38dcd0ce424fc85fbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a square, which you can deform into some other shape by adjusting the model matrix, and applies a texture to it. <a href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc">More...</a><br /></td></tr>
+<tr class="separator:a7187f72fa8e12b38dcd0ce424fc85fbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abec2513648c1238f36c41cf3c85dd868"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">DrawFullscreenTexture</a> (const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;color, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;texture)</td></tr>
+<tr class="memdesc:abec2513648c1238f36c41cf3c85dd868"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a background texture across the whole screen. <a href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">More...</a><br /></td></tr>
+<tr class="separator:abec2513648c1238f36c41cf3c85dd868"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7564a49dc2ff8efd93dec13186cb75b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">default_shader</a> ()</td></tr>
+<tr class="memdesc:aa7564a49dc2ff8efd93dec13186cb75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">More...</a><br /></td></tr>
+<tr class="separator:aa7564a49dc2ff8efd93dec13186cb75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac8b702a25296cfea15eef1e185333272"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">material</a> ()</td></tr>
+<tr class="memdesc:ac8b702a25296cfea15eef1e185333272"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">More...</a><br /></td></tr>
+<tr class="separator:ac8b702a25296cfea15eef1e185333272"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Enumeration Documentation</h2>
+<a id="aaea35a34a9495a9ab25cd9aa32a91603"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaea35a34a9495a9ab25cd9aa32a91603">&#9670;&nbsp;</a></span>LinesType</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">mingfx::QuickShapes::LinesType</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727"></a>LINES&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814"></a>LINE_STRIP&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134"></a>LINE_LOOP&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<p class="definition">Definition at line <a class="el" href="quick__shapes_8h_source.html#l00134">134</a> of file <a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a5764a0953013ece013bf3e2a72e4afa2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5764a0953013ece013bf3e2a72e4afa2">&#9670;&nbsp;</a></span>QuickShapes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::QuickShapes::QuickShapes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3a75dde188ec076ea46a6319ed1ca046"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a75dde188ec076ea46a6319ed1ca046">&#9670;&nbsp;</a></span>~QuickShapes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::QuickShapes::~QuickShapes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="aa7564a49dc2ff8efd93dec13186cb75b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7564a49dc2ff8efd93dec13186cb75b">&#9670;&nbsp;</a></span>default_shader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a>* mingfx::QuickShapes::default_shader </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="aebe27814a826558ac0475fef3d4481eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aebe27814a826558ac0475fef3d4481eb">&#9670;&nbsp;</a></span>DrawArrow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawArrow </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>dir</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radius</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws an arrow originating at point p and extending in the direction and length specified by dir. </p>
+<p>radius is the radius of the cylinder used to draw the shaft of the arrow. </p>
+
+</div>
+</div>
+<a id="a637876fdc13e84282922350b53dab5f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a637876fdc13e84282922350b53dab5f8">&#9670;&nbsp;</a></span>DrawAxes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawAxes </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a right handed set of axes at the coordinate frame specified by the modelMatrix. </p>
+<p>The arrows are 1 unit in length and colored based on the axis: X=red, Y=green, Z=blue. </p>
+
+</div>
+</div>
+<a id="ab24811cfd980b3f2ec4ebccf6c0e8b30"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab24811cfd980b3f2ec4ebccf6c0e8b30">&#9670;&nbsp;</a></span>DrawBrush()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawBrush </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws the classic 3D paintbrush cursor from the 2001 Keefe et al. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="a1880f6dd3e794cd9f6e5d9138f93a424"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1880f6dd3e794cd9f6e5d9138f93a424">&#9670;&nbsp;</a></span>DrawCone()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawCone </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="adad98f87a40650ff7c605a94b6d937af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adad98f87a40650ff7c605a94b6d937af">&#9670;&nbsp;</a></span>DrawCube()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawCube </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a69c442154f800c6bb3f6ffa8395e2844"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a69c442154f800c6bb3f6ffa8395e2844">&#9670;&nbsp;</a></span>DrawCylinder()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawCylinder </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="abec2513648c1238f36c41cf3c85dd868"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abec2513648c1238f36c41cf3c85dd868">&#9670;&nbsp;</a></span>DrawFullscreenTexture()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawFullscreenTexture </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>texture</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a background texture across the whole screen. </p>
+<p>Typically, you will want to do this before any other draw calls. </p>
+
+</div>
+</div>
+<a id="af59ae8d8c5bd0447f3bb7f56112400bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af59ae8d8c5bd0447f3bb7f56112400bf">&#9670;&nbsp;</a></span>DrawLines()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawLines </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>points</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a>&#160;</td>
+ <td class="paramname"><em>linesType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radius</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a series of line segments. </p>
+<p>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: </p><div class="fragment"><div class="line">Matrix4 model;</div>
+<div class="line">Matrix4 view = <a class="code" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">Matrix4::LookAt</a>(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));</div>
+<div class="line">Matrix4 proj = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(60.0, aspect_ratio(), 0.1, 10.0);</div>
+<div class="line">std::vector&lt;Point3&gt; loop;</div>
+<div class="line">loop.push_back(Point3( 4.0, 4.0, -4.0));</div>
+<div class="line">loop.push_back(Point3(-4.0, 4.0, -4.0));</div>
+<div class="line">loop.push_back(Point3(-4.0, 4.0, 4.0));</div>
+<div class="line">loop.push_back(Point3( 4.0, 4.0, 4.0));</div>
+<div class="line">quick_shapes.DrawLines(model, view, proj, Color(1,1,1), loop, <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">QuickShapes::LinesType::LINE_LOOP</a>, 0.1);</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4543695a6dfc996d0312b70c2eaa00de"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4::LookAt</a></div><div class="ttdeci">static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)</div><div class="ttdoc">Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">mingfx::QuickShapes::LinesType::LINE_LOOP</a></div><div class="ttdeci">@ LINE_LOOP</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0feae19a04d9f315a39e2bdbf659bd7e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0feae19a04d9f315a39e2bdbf659bd7e">&#9670;&nbsp;</a></span>DrawLineSegment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawLineSegment </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radius</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a cylinder between the two points. </p>
+
+</div>
+</div>
+<a id="aa5f4f64e3708630a6d58f6b4ca7d2744"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5f4f64e3708630a6d58f6b4ca7d2744">&#9670;&nbsp;</a></span>DrawSphere()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawSphere </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the supplied color as a material property. </p>
+
+</div>
+</div>
+<a id="a4350ea23b8b9e0e8119310423d641ab3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4350ea23b8b9e0e8119310423d641ab3">&#9670;&nbsp;</a></span>DrawSquare() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawSquare </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction. </p>
+<p>Uses the model, view, and projection matrices provided and the supplied color as a material property. </p>
+
+</div>
+</div>
+<a id="a7187f72fa8e12b38dcd0ce424fc85fbc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7187f72fa8e12b38dcd0ce424fc85fbc">&#9670;&nbsp;</a></span>DrawSquare() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::QuickShapes::DrawSquare </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>viewMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>color</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>texture</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Draws a square, which you can deform into some other shape by adjusting the model matrix, and applies a texture to it. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="ac8b702a25296cfea15eef1e185333272"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac8b702a25296cfea15eef1e185333272">&#9670;&nbsp;</a></span>material()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a>* mingfx::QuickShapes::material </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_ray.html">Ray</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Ray Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">direction</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">FastIntersectMesh</a>(Mesh *mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">IntersectAABB</a>(const AABB &amp;box, float *iTime) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">IntersectMesh</a>(const Mesh &amp;mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">IntersectPlane</a>(const Point3 &amp;planePt, const Vector3 &amp;planeNormal, float *iTime, Point3 *iPoint) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">IntersectQuad</a>(const Point3 &amp;v1, const Point3 &amp;v2, const Point3 &amp;v3, const Point3 &amp;v4, float *iTime, Point3 *iPoint) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">IntersectSphere</a>(const Point3 &amp;center, float radius, float *iTime, Point3 *iPoint) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">IntersectTriangle</a>(const Point3 &amp;v1, const Point3 &amp;v2, const Point3 &amp;v3, float *iTime, Point3 *iPoint) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">Length</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">operator!=</a>(const Ray &amp;other) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">operator==</a>(const Ray &amp;other) const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">origin</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">Ray</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6">Ray</a>(const Point3 &amp;origin, const Vector3 &amp;direction)</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">set</a>(Point3 newOrigin, Vector3 newDir)</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">~Ray</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Ray Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_ray.html">Ray</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_ray-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Ray Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector). </p>
+<p>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 <a class="el" href="classmingfx_1_1_ray.html" title="Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...">Ray</a> can also be transformed by a <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a>. Example: </p><div class="fragment"><div class="line"><span class="comment">// Create a pick ray from the mouse position</span></div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnLeftMouseDown(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"> Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> <span class="keywordtype">float</span> mouse_z = ReadZValueAtPixel(pos);</div>
+<div class="line"> Point3 mouse_3d = <a class="code" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">GfxMath::ScreenToNearPlane</a>(view_matrix, proj_matrix, mouse_xy, mouse_z);</div>
+<div class="line"> Matrix4 camera_matrix = view_matrix.Inverse();</div>
+<div class="line"> Point3 eye = camera_matrix.ColumnToPoint3(3);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">Ray</a> pick_ray(eye, mouse_3d - eye);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// check to see if the ray intersects a sphere</span></div>
+<div class="line"> <span class="keywordtype">float</span> t;</div>
+<div class="line"> Point3 p;</div>
+<div class="line"> <span class="keywordflow">if</span> (pick_ray.IntersectSphere(Point3(0,0,0), 2.0, &amp;t, &amp;p)) {</div>
+<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Mouse pointing at sphere! Intersection point = &quot;</span> &lt;&lt; p &lt;&lt; std::endl;</div>
+<div class="line"> }</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a2086a2f885f887fb53da8a5adb5860f0"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">mingfx::GfxMath::ScreenToNearPlane</a></div><div class="ttdeci">static Point3 ScreenToNearPlane(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt)</div><div class="ttdoc">Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_aee3fe586869e00ae657a74bb4bbbbfda"><div class="ttname"><a href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">mingfx::Ray::Ray</a></div><div class="ttdeci">Ray()</div><div class="ttdoc">Defaults to a ray at the origin and pointing in the -Z direction.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="ray_8h_source.html#l00054">54</a> of file <a class="el" href="ray_8h_source.html">ray.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="ray_8h_source.html">ray.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aee3fe586869e00ae657a74bb4bbbbfda"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">Ray</a> ()</td></tr>
+<tr class="memdesc:aee3fe586869e00ae657a74bb4bbbbfda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defaults to a ray at the origin and pointing in the -Z direction. <a href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">More...</a><br /></td></tr>
+<tr class="separator:aee3fe586869e00ae657a74bb4bbbbfda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab38cdd0793b3acfe55fa9ebca5ddebf6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6">Ray</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;<a class="el" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">origin</a>, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;<a class="el" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">direction</a>)</td></tr>
+<tr class="memdesc:ab38cdd0793b3acfe55fa9ebca5ddebf6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a ray from a 3D origin and direction. <a href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6">More...</a><br /></td></tr>
+<tr class="separator:ab38cdd0793b3acfe55fa9ebca5ddebf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac20909f30c07d5375598876c6d294625"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">~Ray</a> ()</td></tr>
+<tr class="memdesc:ac20909f30c07d5375598876c6d294625"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmingfx_1_1_ray.html" title="Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...">Ray</a> destructor. <a href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">More...</a><br /></td></tr>
+<tr class="separator:ac20909f30c07d5375598876c6d294625"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87b07c4f7c9f33189efade7e519b5d9d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">operator==</a> (const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;other) const</td></tr>
+<tr class="memdesc:a87b07c4f7c9f33189efade7e519b5d9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">More...</a><br /></td></tr>
+<tr class="separator:a87b07c4f7c9f33189efade7e519b5d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab62fa6ea1c20870f67c58401aefe3eff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">operator!=</a> (const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;other) const</td></tr>
+<tr class="memdesc:ab62fa6ea1c20870f67c58401aefe3eff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">More...</a><br /></td></tr>
+<tr class="separator:ab62fa6ea1c20870f67c58401aefe3eff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c926e2da6dfd1b0a435577617eae984"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">Length</a> () const</td></tr>
+<tr class="memdesc:a3c926e2da6dfd1b0a435577617eae984"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the length of the direction vector. <a href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">More...</a><br /></td></tr>
+<tr class="separator:a3c926e2da6dfd1b0a435577617eae984"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8707604031eb9437c449345d85d69d24"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">IntersectPlane</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;planePt, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;planeNormal, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) const</td></tr>
+<tr class="memdesc:a8707604031eb9437c449345d85d69d24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a plane defined by a point and a normal. <a href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">More...</a><br /></td></tr>
+<tr class="separator:a8707604031eb9437c449345d85d69d24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a6130616c4e4eebe9d09181b0f8b734"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">IntersectTriangle</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v2, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v3, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) const</td></tr>
+<tr class="memdesc:a1a6130616c4e4eebe9d09181b0f8b734"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3. <a href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">More...</a><br /></td></tr>
+<tr class="separator:a1a6130616c4e4eebe9d09181b0f8b734"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37689523a0b73d3d3288ce60bdcb7ae3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">IntersectQuad</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v2, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v3, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;v4, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) const</td></tr>
+<tr class="memdesc:a37689523a0b73d3d3288ce60bdcb7ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4. <a href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">More...</a><br /></td></tr>
+<tr class="separator:a37689523a0b73d3d3288ce60bdcb7ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a970c7dbc19167be625967fabfb39b4ff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">IntersectSphere</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;center, float radius, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) const</td></tr>
+<tr class="memdesc:a970c7dbc19167be625967fabfb39b4ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a sphere defined by a center point and a radius. <a href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">More...</a><br /></td></tr>
+<tr class="separator:a970c7dbc19167be625967fabfb39b4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a79caa1df0839d13339575d3d5527ae6f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">IntersectMesh</a> (const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint, int *iTriangleID) const</td></tr>
+<tr class="memdesc:a79caa1df0839d13339575d3d5527ae6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a triangle mesh. <a href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">More...</a><br /></td></tr>
+<tr class="separator:a79caa1df0839d13339575d3d5527ae6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac90097090f0f8f49db13f6f232712afc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">FastIntersectMesh</a> (<a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> *mesh, float *iTime, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> *iPoint, int *iTriangleID) const</td></tr>
+<tr class="memdesc:ac90097090f0f8f49db13f6f232712afc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects a triangle mesh. <a href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">More...</a><br /></td></tr>
+<tr class="separator:ac90097090f0f8f49db13f6f232712afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a57d3ee10518ed361ae02d9cbdef842b7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">IntersectAABB</a> (const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;box, float *iTime) const</td></tr>
+<tr class="memdesc:a57d3ee10518ed361ae02d9cbdef842b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks to see if the ray intersects an <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> (Axis-Aligned Bounding Box). <a href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">More...</a><br /></td></tr>
+<tr class="separator:a57d3ee10518ed361ae02d9cbdef842b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">origin</a> () const</td></tr>
+<tr class="memdesc:a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the origin. <a href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">More...</a><br /></td></tr>
+<tr class="separator:a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b7826730a410c10be00122c99fe6dbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">direction</a> () const</td></tr>
+<tr class="memdesc:a7b7826730a410c10be00122c99fe6dbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the direction. <a href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">More...</a><br /></td></tr>
+<tr class="separator:a7b7826730a410c10be00122c99fe6dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75593293307b4eead15a876bf3597071"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">set</a> (<a class="el" href="classmingfx_1_1_point3.html">Point3</a> newOrigin, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> newDir)</td></tr>
+<tr class="memdesc:a75593293307b4eead15a876bf3597071"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a new origin and direction. <a href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">More...</a><br /></td></tr>
+<tr class="separator:a75593293307b4eead15a876bf3597071"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="aee3fe586869e00ae657a74bb4bbbbfda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aee3fe586869e00ae657a74bb4bbbbfda">&#9670;&nbsp;</a></span>Ray() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Ray::Ray </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Defaults to a ray at the origin and pointing in the -Z direction. </p>
+
+</div>
+</div>
+<a id="ab38cdd0793b3acfe55fa9ebca5ddebf6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab38cdd0793b3acfe55fa9ebca5ddebf6">&#9670;&nbsp;</a></span>Ray() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Ray::Ray </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>origin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>direction</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a ray from a 3D origin and direction. </p>
+
+</div>
+</div>
+<a id="ac20909f30c07d5375598876c6d294625"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac20909f30c07d5375598876c6d294625">&#9670;&nbsp;</a></span>~Ray()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Ray::~Ray </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p><a class="el" href="classmingfx_1_1_ray.html" title="Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...">Ray</a> destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a7b7826730a410c10be00122c99fe6dbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b7826730a410c10be00122c99fe6dbe">&#9670;&nbsp;</a></span>direction()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Ray::direction </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the direction. </p>
+
+</div>
+</div>
+<a id="ac90097090f0f8f49db13f6f232712afc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac90097090f0f8f49db13f6f232712afc">&#9670;&nbsp;</a></span>FastIntersectMesh()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::FastIntersectMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> *&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>iTriangleID</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a triangle mesh. </p>
+<p>This uses a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> (Bounding Volume Hierarchy) to accelerate the ray-triangle intersection tests. Each mesh can optionally store a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a>. If a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> has already been calculated for the mesh (done with Mesh::CalculateBVH()), then this function will be much faster than the brute-force <a class="el" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f" title="Checks to see if the ray intersects a triangle mesh.">IntersectMesh()</a> function. If a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> has not already been calculated for the mesh, the first call to <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc" title="Checks to see if the ray intersects a triangle mesh.">FastIntersectMesh()</a> will trigger the mesh to create a <a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a> (not a fast operation) but then subsequent calls to <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc" title="Checks to see if the ray intersects a triangle mesh.">FastIntersectMesh()</a> will be fast. </p>
+
+</div>
+</div>
+<a id="a57d3ee10518ed361ae02d9cbdef842b7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a57d3ee10518ed361ae02d9cbdef842b7">&#9670;&nbsp;</a></span>IntersectAABB()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectAABB </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;&#160;</td>
+ <td class="paramname"><em>box</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects an <a class="el" href="classmingfx_1_1_a_a_b_b.html" title="A 3D axis-aligned bounding box defined by two corners (min and max).">AABB</a> (Axis-Aligned Bounding Box). </p>
+<p>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: </p><div class="fragment"><div class="line"><span class="keywordtype">float</span> t;</div>
+<div class="line"><span class="keywordflow">if</span> (ray.IntersectAABB(box, &amp;t)) {</div>
+<div class="line"> Point3 iPoint = ray.origin() + t*ray.direction();</div>
+<div class="line">}</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a79caa1df0839d13339575d3d5527ae6f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a79caa1df0839d13339575d3d5527ae6f">&#9670;&nbsp;</a></span>IntersectMesh()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectMesh </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>iTriangleID</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a triangle mesh. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="a8707604031eb9437c449345d85d69d24"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8707604031eb9437c449345d85d69d24">&#9670;&nbsp;</a></span>IntersectPlane()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectPlane </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>planePt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>planeNormal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a plane defined by a point and a normal. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="a37689523a0b73d3d3288ce60bdcb7ae3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37689523a0b73d3d3288ce60bdcb7ae3">&#9670;&nbsp;</a></span>IntersectQuad()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectQuad </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v4</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="a970c7dbc19167be625967fabfb39b4ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a970c7dbc19167be625967fabfb39b4ff">&#9670;&nbsp;</a></span>IntersectSphere()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectSphere </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>center</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a sphere defined by a center point and a radius. </p>
+<p>If there was an intersection, true is returned, iTime is set to the intersection time, and iPoint is set to the intersection point. </p>
+
+</div>
+</div>
+<a id="a1a6130616c4e4eebe9d09181b0f8b734"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a6130616c4e4eebe9d09181b0f8b734">&#9670;&nbsp;</a></span>IntersectTriangle()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::IntersectTriangle </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>iTime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> *&#160;</td>
+ <td class="paramname"><em>iPoint</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3. </p>
+<p>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. </p>
+
+</div>
+</div>
+<a id="a3c926e2da6dfd1b0a435577617eae984"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c926e2da6dfd1b0a435577617eae984">&#9670;&nbsp;</a></span>Length()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Ray::Length </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the length of the direction vector. </p>
+
+</div>
+</div>
+<a id="ab62fa6ea1c20870f67c58401aefe3eff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab62fa6ea1c20870f67c58401aefe3eff">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a87b07c4f7c9f33189efade7e519b5d9d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87b07c4f7c9f33189efade7e519b5d9d">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Ray::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">&#9670;&nbsp;</a></span>origin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::Ray::origin </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the origin. </p>
+
+</div>
+</div>
+<a id="a75593293307b4eead15a876bf3597071"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75593293307b4eead15a876bf3597071">&#9670;&nbsp;</a></span>set()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Ray::set </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td>
+ <td class="paramname"><em>newOrigin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td>
+ <td class="paramname"><em>newDir</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets a new origin and direction. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="ray_8h_source.html">ray.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::ShaderProgram Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">AddFragmentShaderFromFile</a>(const std::string &amp;file)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">AddFragmentShaderFromSource</a>(const std::string &amp;code)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">AddVertexShaderFromFile</a>(const std::string &amp;file)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">AddVertexShaderFromSource</a>(const std::string &amp;code)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">BindTexture</a>(const std::string &amp;name, const Texture2D &amp;tex)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">BindTexture</a>(const std::string &amp;name, const Texture2D &amp;tex, int texUnit)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">initialized</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">LinkProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">SetUniform</a>(const std::string &amp;name, const Point2 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">SetUniform</a>(const std::string &amp;name, const Vector2 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">SetUniform</a>(const std::string &amp;name, const Point3 &amp;p)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">SetUniform</a>(const std::string &amp;name, const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">SetUniform</a>(const std::string &amp;name, const Matrix4 &amp;m)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">SetUniform</a>(const std::string &amp;name, const Color &amp;c)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">SetUniform</a>(const std::string &amp;name, int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">SetUniform</a>(const std::string &amp;name, unsigned int ui)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">SetUniform</a>(const std::string &amp;name, float f)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">SetUniformArray1</a>(const std::string &amp;name, int *i, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">SetUniformArray1</a>(const std::string &amp;name, unsigned int *ui, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">SetUniformArray1</a>(const std::string &amp;name, float *f, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">SetUniformArray2</a>(const std::string &amp;name, int *i, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">SetUniformArray2</a>(const std::string &amp;name, unsigned int *ui, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">SetUniformArray2</a>(const std::string &amp;name, float *f, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">SetUniformArray3</a>(const std::string &amp;name, int *i, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">SetUniformArray3</a>(const std::string &amp;name, unsigned int *ui, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">SetUniformArray3</a>(const std::string &amp;name, float *f, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">SetUniformArray4</a>(const std::string &amp;name, int *i, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">SetUniformArray4</a>(const std::string &amp;name, unsigned int *ui, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">SetUniformArray4</a>(const std::string &amp;name, float *f, int count)</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">StopProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">UseProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">~ShaderProgram</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::ShaderProgram Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_shader_program-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::ShaderProgram Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A wrapper around GLSL shader programs. </p>
+<p>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: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a> shader_prog;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::InitOpenGL() {</div>
+<div class="line"> shader_prog.AddVertexShaderFromFile(Platform::findFile(<span class="stringliteral">&quot;my_shader.vert&quot;</span>, searchPath));</div>
+<div class="line"> shader_prog.AddFragmentShaderFromFile(Platform::findFile(<span class="stringliteral">&quot;my_shader.frag&quot;</span>, searchPath));</div>
+<div class="line"> shader_prog.LinkProgram();</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::DrawUsingOpenGL() {</div>
+<div class="line"> <span class="comment">// Activate the shader program</span></div>
+<div class="line"> shader_prog.UseProgram();</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Pass uniforms and textures from C++ to the GPU Shader Program</span></div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ModelMatrix&quot;</span>, modelMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ViewMatrix&quot;</span>, viewMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ProjectionMatrix&quot;</span>, projMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;LightPosition&quot;</span>, Point3(2,2,2));</div>
+<div class="line"> shader_prog.BindTexture(<span class="stringliteral">&quot;SurfaceTexture&quot;</span>, my_tex);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Draw whatever geometry you want now</span></div>
+<div class="line"> mesh1.Draw();</div>
+<div class="line"> mesh2.Draw();</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Deactivate the shader program</span></div>
+<div class="line"> shader_prog.StopProgram();</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a0c3d86656c464223dc615cbec0943700"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">mingfx::ShaderProgram::ShaderProgram</a></div><div class="ttdeci">ShaderProgram()</div><div class="ttdoc">Creates an empty ShaderProgram object.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="shader__program_8h_source.html#l00066">66</a> of file <a class="el" href="shader__program_8h_source.html">shader_program.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0c3d86656c464223dc615cbec0943700"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a> ()</td></tr>
+<tr class="memdesc:a0c3d86656c464223dc615cbec0943700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> object. <a href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">More...</a><br /></td></tr>
+<tr class="separator:a0c3d86656c464223dc615cbec0943700"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96da0dede354f2511084eeb25428edb4"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">~ShaderProgram</a> ()</td></tr>
+<tr class="separator:a96da0dede354f2511084eeb25428edb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63ac061271fad9338e922389d4a179e5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">AddVertexShaderFromFile</a> (const std::string &amp;file)</td></tr>
+<tr class="memdesc:a63ac061271fad9338e922389d4a179e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">More...</a><br /></td></tr>
+<tr class="separator:a63ac061271fad9338e922389d4a179e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">AddVertexShaderFromSource</a> (const std::string &amp;code)</td></tr>
+<tr class="memdesc:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">More...</a><br /></td></tr>
+<tr class="separator:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd94fc12beb85fe57aa80d3b825018b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">AddFragmentShaderFromFile</a> (const std::string &amp;file)</td></tr>
+<tr class="memdesc:acd94fc12beb85fe57aa80d3b825018b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">More...</a><br /></td></tr>
+<tr class="separator:acd94fc12beb85fe57aa80d3b825018b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">AddFragmentShaderFromSource</a> (const std::string &amp;code)</td></tr>
+<tr class="memdesc:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">More...</a><br /></td></tr>
+<tr class="separator:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad14c3a9a4ee1eef39f933bc46260c794"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">LinkProgram</a> ()</td></tr>
+<tr class="memdesc:ad14c3a9a4ee1eef39f933bc46260c794"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">More...</a><br /></td></tr>
+<tr class="separator:ad14c3a9a4ee1eef39f933bc46260c794"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af1c968f1c79f70e183c9d1239d3d205e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">UseProgram</a> ()</td></tr>
+<tr class="memdesc:af1c968f1c79f70e183c9d1239d3d205e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this first to make the shader program active, then call <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a" title="Passes the x,y values of point p to the shader program and stores the result in the shader variable n...">SetUniform()</a> 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 <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da" title="Call this after rendering geometry to deactivate the shader.">StopProgram()</a> to turn off the shader program. <a href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">More...</a><br /></td></tr>
+<tr class="separator:af1c968f1c79f70e183c9d1239d3d205e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a461ba9368ad89fe1e9749b14b099027a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="memdesc:a461ba9368ad89fe1e9749b14b099027a"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">More...</a><br /></td></tr>
+<tr class="separator:a461ba9368ad89fe1e9749b14b099027a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">More...</a><br /></td></tr>
+<tr class="separator:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac59b3d0542ce45631876615eabf66487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:ac59b3d0542ce45631876615eabf66487"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">More...</a><br /></td></tr>
+<tr class="separator:ac59b3d0542ce45631876615eabf66487"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b3e6285354e007bf79a9ac1587f86f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:a0b3e6285354e007bf79a9ac1587f86f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">More...</a><br /></td></tr>
+<tr class="separator:a0b3e6285354e007bf79a9ac1587f86f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a766988eac957e9d810fdf2cbd2eafae0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m)</td></tr>
+<tr class="memdesc:a766988eac957e9d810fdf2cbd2eafae0"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">More...</a><br /></td></tr>
+<tr class="separator:a766988eac957e9d810fdf2cbd2eafae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;c)</td></tr>
+<tr class="memdesc:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">More...</a><br /></td></tr>
+<tr class="separator:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab547dadc25582bec157b39de29d1419e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">SetUniform</a> (const std::string &amp;name, int i)</td></tr>
+<tr class="memdesc:ab547dadc25582bec157b39de29d1419e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int. <a href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">More...</a><br /></td></tr>
+<tr class="separator:ab547dadc25582bec157b39de29d1419e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a707d2cb51a54151959c6570d6bfc7840"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">SetUniform</a> (const std::string &amp;name, unsigned int ui)</td></tr>
+<tr class="memdesc:a707d2cb51a54151959c6570d6bfc7840"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint. <a href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">More...</a><br /></td></tr>
+<tr class="separator:a707d2cb51a54151959c6570d6bfc7840"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a680fa87cb30343bb56abc48a090e823c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">SetUniform</a> (const std::string &amp;name, float f)</td></tr>
+<tr class="memdesc:a680fa87cb30343bb56abc48a090e823c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float. <a href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">More...</a><br /></td></tr>
+<tr class="separator:a680fa87cb30343bb56abc48a090e823c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">SetUniformArray1</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">More...</a><br /></td></tr>
+<tr class="separator:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abba87d2b0baca89232dbd1d6331875de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">SetUniformArray1</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:abba87d2b0baca89232dbd1d6331875de"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">More...</a><br /></td></tr>
+<tr class="separator:abba87d2b0baca89232dbd1d6331875de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c7891252d6b6c40982b56543820cd19"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">SetUniformArray1</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a5c7891252d6b6c40982b56543820cd19"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">More...</a><br /></td></tr>
+<tr class="separator:a5c7891252d6b6c40982b56543820cd19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9bab504c74a1c4258258b91afe9a9623"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">SetUniformArray2</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:a9bab504c74a1c4258258b91afe9a9623"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">More...</a><br /></td></tr>
+<tr class="separator:a9bab504c74a1c4258258b91afe9a9623"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">SetUniformArray2</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">More...</a><br /></td></tr>
+<tr class="separator:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93914cad6d8e751218c88010c51cf657"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">SetUniformArray2</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a93914cad6d8e751218c88010c51cf657"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">More...</a><br /></td></tr>
+<tr class="separator:a93914cad6d8e751218c88010c51cf657"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac582a2aa74a83095e0b8e359ce432511"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">SetUniformArray3</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:ac582a2aa74a83095e0b8e359ce432511"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">More...</a><br /></td></tr>
+<tr class="separator:ac582a2aa74a83095e0b8e359ce432511"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c31de93b17f050baecb5323a69bdbfa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">SetUniformArray3</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a8c31de93b17f050baecb5323a69bdbfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">More...</a><br /></td></tr>
+<tr class="separator:a8c31de93b17f050baecb5323a69bdbfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc84377716296a57299ebbc01884b65d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">SetUniformArray3</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:afc84377716296a57299ebbc01884b65d"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">More...</a><br /></td></tr>
+<tr class="separator:afc84377716296a57299ebbc01884b65d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab06ef4682f801fca080a8f67dc6345ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">SetUniformArray4</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:ab06ef4682f801fca080a8f67dc6345ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">More...</a><br /></td></tr>
+<tr class="separator:ab06ef4682f801fca080a8f67dc6345ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2854ad947f74432edc0b730462b7f695"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">SetUniformArray4</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a2854ad947f74432edc0b730462b7f695"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">More...</a><br /></td></tr>
+<tr class="separator:a2854ad947f74432edc0b730462b7f695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">SetUniformArray4</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="mdescLeft">&#160;</td><td class="mdescRight">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]. <a href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">More...</a><br /></td></tr>
+<tr class="separator:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e5a2659f66f29433b15748f36c61ea2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">BindTexture</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex)</td></tr>
+<tr class="memdesc:a4e5a2659f66f29433b15748f36c61ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> 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. <a href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">More...</a><br /></td></tr>
+<tr class="separator:a4e5a2659f66f29433b15748f36c61ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af81d97c2843278eb40cdcdf8e5d54a96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">BindTexture</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex, int texUnit)</td></tr>
+<tr class="memdesc:af81d97c2843278eb40cdcdf8e5d54a96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version allows you to specify the texture unit to use. <a href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">More...</a><br /></td></tr>
+<tr class="separator:af81d97c2843278eb40cdcdf8e5d54a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2e4d6db720bf22038270cf8c51cdf7da"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">StopProgram</a> ()</td></tr>
+<tr class="memdesc:a2e4d6db720bf22038270cf8c51cdf7da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this after rendering geometry to deactivate the shader. <a href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">More...</a><br /></td></tr>
+<tr class="separator:a2e4d6db720bf22038270cf8c51cdf7da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2eddd93e446ad2079d1c57676655ffbe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">initialized</a> ()</td></tr>
+<tr class="memdesc:a2eddd93e446ad2079d1c57676655ffbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the shader program has been successfully compiled and linked. <a href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">More...</a><br /></td></tr>
+<tr class="separator:a2eddd93e446ad2079d1c57676655ffbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a0c3d86656c464223dc615cbec0943700"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c3d86656c464223dc615cbec0943700">&#9670;&nbsp;</a></span>ShaderProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::ShaderProgram::ShaderProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates an empty <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> object. </p>
+
+</div>
+</div>
+<a id="a96da0dede354f2511084eeb25428edb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96da0dede354f2511084eeb25428edb4">&#9670;&nbsp;</a></span>~ShaderProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::ShaderProgram::~ShaderProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="acd94fc12beb85fe57aa80d3b825018b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd94fc12beb85fe57aa80d3b825018b0">&#9670;&nbsp;</a></span>AddFragmentShaderFromFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddFragmentShaderFromFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a7a3063ec42798c076e1ab0c0e6411e9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a3063ec42798c076e1ab0c0e6411e9c">&#9670;&nbsp;</a></span>AddFragmentShaderFromSource()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddFragmentShaderFromSource </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>code</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="a63ac061271fad9338e922389d4a179e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a63ac061271fad9338e922389d4a179e5">&#9670;&nbsp;</a></span>AddVertexShaderFromFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddVertexShaderFromFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="ab5fed4904a59c6e83ebb43aebf4c043d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab5fed4904a59c6e83ebb43aebf4c043d">&#9670;&nbsp;</a></span>AddVertexShaderFromSource()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddVertexShaderFromSource </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>code</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="a4e5a2659f66f29433b15748f36c61ea2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e5a2659f66f29433b15748f36c61ea2">&#9670;&nbsp;</a></span>BindTexture() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::BindTexture </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>tex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> 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. </p>
+
+</div>
+</div>
+<a id="af81d97c2843278eb40cdcdf8e5d54a96"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af81d97c2843278eb40cdcdf8e5d54a96">&#9670;&nbsp;</a></span>BindTexture() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::BindTexture </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>tex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texUnit</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version allows you to specify the texture unit to use. </p>
+
+</div>
+</div>
+<a id="a2eddd93e446ad2079d1c57676655ffbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2eddd93e446ad2079d1c57676655ffbe">&#9670;&nbsp;</a></span>initialized()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::initialized </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns true if the shader program has been successfully compiled and linked. </p>
+
+</div>
+</div>
+<a id="ad14c3a9a4ee1eef39f933bc46260c794"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad14c3a9a4ee1eef39f933bc46260c794">&#9670;&nbsp;</a></span>LinkProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::LinkProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a9ec2b53ba4bea7e48ef459530b8c6d60"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ec2b53ba4bea7e48ef459530b8c6d60">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[1/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a766988eac957e9d810fdf2cbd2eafae0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a766988eac957e9d810fdf2cbd2eafae0">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[2/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a461ba9368ad89fe1e9749b14b099027a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a461ba9368ad89fe1e9749b14b099027a">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[3/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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. </p>
+
+</div>
+</div>
+<a id="ac59b3d0542ce45631876615eabf66487"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac59b3d0542ce45631876615eabf66487">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[4/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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. </p>
+
+</div>
+</div>
+<a id="aef58537d81bdb9d88a5f1c56a2b98b25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef58537d81bdb9d88a5f1c56a2b98b25">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[5/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a0b3e6285354e007bf79a9ac1587f86f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b3e6285354e007bf79a9ac1587f86f5">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[6/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a680fa87cb30343bb56abc48a090e823c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a680fa87cb30343bb56abc48a090e823c">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[7/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>f</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float. </p>
+
+</div>
+</div>
+<a id="ab547dadc25582bec157b39de29d1419e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab547dadc25582bec157b39de29d1419e">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[8/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int. </p>
+
+</div>
+</div>
+<a id="a707d2cb51a54151959c6570d6bfc7840"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a707d2cb51a54151959c6570d6bfc7840">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[9/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>ui</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint. </p>
+
+</div>
+</div>
+<a id="a5c7891252d6b6c40982b56543820cd19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c7891252d6b6c40982b56543820cd19">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a51cd1c1d194b2f5c07e81d4f579f2f2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a51cd1c1d194b2f5c07e81d4f579f2f2b">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="abba87d2b0baca89232dbd1d6331875de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abba87d2b0baca89232dbd1d6331875de">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a93914cad6d8e751218c88010c51cf657"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93914cad6d8e751218c88010c51cf657">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a9bab504c74a1c4258258b91afe9a9623"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9bab504c74a1c4258258b91afe9a9623">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a6fdca4b0ccaa8a0b2c8c68fd7645727c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fdca4b0ccaa8a0b2c8c68fd7645727c">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="afc84377716296a57299ebbc01884b65d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc84377716296a57299ebbc01884b65d">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="ac582a2aa74a83095e0b8e359ce432511"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac582a2aa74a83095e0b8e359ce432511">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a8c31de93b17f050baecb5323a69bdbfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c31de93b17f050baecb5323a69bdbfa">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a9710cf4c72a7321b9a1ff1b86ae42da1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9710cf4c72a7321b9a1ff1b86ae42da1">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="ab06ef4682f801fca080a8f67dc6345ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab06ef4682f801fca080a8f67dc6345ba">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a2854ad947f74432edc0b730462b7f695"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2854ad947f74432edc0b730462b7f695">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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]. </p>
+
+</div>
+</div>
+<a id="a2e4d6db720bf22038270cf8c51cdf7da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2e4d6db720bf22038270cf8c51cdf7da">&#9670;&nbsp;</a></span>StopProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::StopProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this after rendering geometry to deactivate the shader. </p>
+
+</div>
+</div>
+<a id="af1c968f1c79f70e183c9d1239d3d205e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af1c968f1c79f70e183c9d1239d3d205e">&#9670;&nbsp;</a></span>UseProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::UseProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this first to make the shader program active, then call <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a" title="Passes the x,y values of point p to the shader program and stores the result in the shader variable n...">SetUniform()</a> 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 <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da" title="Call this after rendering geometry to deactivate the shader.">StopProgram()</a> to turn off the shader program. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="shader__program_8h_source.html">shader_program.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::TextShader Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">Draw3D</a>(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, const std::string &amp;text, TextFormat format, bool cache=false)</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a> enum name</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">Init</a>(const std::string &amp;font_file, int native_font_size)</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">native_font_size</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">TextExtents</a>(const std::string &amp;text, TextFormat format, bool cache=false)</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">TextShader</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a> enum name</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">~TextShader</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::TextShader Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-types">Public Types</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_text_shader-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::TextShader Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00036">36</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="text__shader_8h_source.html">text_shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:af464d970e6475a2176f21c3f4b24c63c"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a> { <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92">HORIZ_ALIGN_LEFT</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4">HORIZ_ALIGN_CENTER</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b">HORIZ_ALIGN_RIGHT</a>
+ }</td></tr>
+<tr class="separator:af464d970e6475a2176f21c3f4b24c63c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7624918a2d157cf2880fc8858c00db2a"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a> { <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04">VERT_ALIGN_TOP</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af">VERT_ALIGN_CENTER</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb">VERT_ALIGN_BASELINE</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28">VERT_ALIGN_BOTTOM</a>
+ }</td></tr>
+<tr class="separator:a7624918a2d157cf2880fc8858c00db2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0ec5a6ba22abb3f86c611107925fca67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">TextShader</a> ()</td></tr>
+<tr class="separator:a0ec5a6ba22abb3f86c611107925fca67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a457f7a42eceb957cdb103664dd864feb"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">~TextShader</a> ()</td></tr>
+<tr class="separator:a457f7a42eceb957cdb103664dd864feb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad60a8b572adc30dad47e2d163dc603a3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">Init</a> (const std::string &amp;font_file, int <a class="el" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">native_font_size</a>)</td></tr>
+<tr class="memdesc:ad60a8b572adc30dad47e2d163dc603a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">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). <a href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">More...</a><br /></td></tr>
+<tr class="separator:ad60a8b572adc30dad47e2d163dc603a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2caaaf2decfac523b476951474e9a359"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">Draw3D</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection, const std::string &amp;text, <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a> format, bool cache=false)</td></tr>
+<tr class="separator:a2caaaf2decfac523b476951474e9a359"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4e9a150311fe6d74e9f6214ebeb6b28"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">TextExtents</a> (const std::string &amp;text, <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a> format, bool cache=false)</td></tr>
+<tr class="separator:ac4e9a150311fe6d74e9f6214ebeb6b28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a707b2b36547db78d19139575003c8a0d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">native_font_size</a> ()</td></tr>
+<tr class="separator:a707b2b36547db78d19139575003c8a0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Enumeration Documentation</h2>
+<a id="af464d970e6475a2176f21c3f4b24c63c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af464d970e6475a2176f21c3f4b24c63c">&#9670;&nbsp;</a></span>HorizAlign</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">mingfx::TextShader::HorizAlign</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92"></a>HORIZ_ALIGN_LEFT&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4"></a>HORIZ_ALIGN_CENTER&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b"></a>HORIZ_ALIGN_RIGHT&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00047">47</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="a7624918a2d157cf2880fc8858c00db2a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7624918a2d157cf2880fc8858c00db2a">&#9670;&nbsp;</a></span>VertAlign</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">mingfx::TextShader::VertAlign</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04"></a>VERT_ALIGN_TOP&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af"></a>VERT_ALIGN_CENTER&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb"></a>VERT_ALIGN_BASELINE&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28"></a>VERT_ALIGN_BOTTOM&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00053">53</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a0ec5a6ba22abb3f86c611107925fca67"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ec5a6ba22abb3f86c611107925fca67">&#9670;&nbsp;</a></span>TextShader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::TextShader::TextShader </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a457f7a42eceb957cdb103664dd864feb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a457f7a42eceb957cdb103664dd864feb">&#9670;&nbsp;</a></span>~TextShader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::TextShader::~TextShader </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a2caaaf2decfac523b476951474e9a359"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2caaaf2decfac523b476951474e9a359">&#9670;&nbsp;</a></span>Draw3D()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::TextShader::Draw3D </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>model</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>view</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projection</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>text</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a>&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>cache</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ad60a8b572adc30dad47e2d163dc603a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad60a8b572adc30dad47e2d163dc603a3">&#9670;&nbsp;</a></span>Init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::TextShader::Init </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>font_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>native_font_size</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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). </p>
+
+</div>
+</div>
+<a id="a707b2b36547db78d19139575003c8a0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a707b2b36547db78d19139575003c8a0d">&#9670;&nbsp;</a></span>native_font_size()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::TextShader::native_font_size </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac4e9a150311fe6d74e9f6214ebeb6b28"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4e9a150311fe6d74e9f6214ebeb6b28">&#9670;&nbsp;</a></span>TextExtents()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::TextShader::TextExtents </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>text</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a>&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>cache</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="text__shader_8h_source.html">text_shader.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::TextShader::TextFormat Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">color</a></td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">h_align</a></td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">size</a></td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">TextFormat</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">v_align</a></td><td class="entry"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::TextShader::TextFormat Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="classmingfx_1_1_text_shader_1_1_text_format-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::TextShader::TextFormat Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00060">60</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="text__shader_8h_source.html">text_shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2b7d7e2e540c881952b97b8948b49fcb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">TextFormat</a> ()</td></tr>
+<tr class="separator:a2b7d7e2e540c881952b97b8948b49fcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:aeecda817624276f0cfb812ddcdbbc2f0"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">size</a></td></tr>
+<tr class="separator:aeecda817624276f0cfb812ddcdbbc2f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0483874ac3fcea58b6ff99ef6644ff7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">color</a></td></tr>
+<tr class="separator:af0483874ac3fcea58b6ff99ef6644ff7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acde55d28b0446e788e6c68b85df83066"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">h_align</a></td></tr>
+<tr class="separator:acde55d28b0446e788e6c68b85df83066"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8455382a6829022020eb307ae9168bd7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">v_align</a></td></tr>
+<tr class="separator:a8455382a6829022020eb307ae9168bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a2b7d7e2e540c881952b97b8948b49fcb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b7d7e2e540c881952b97b8948b49fcb">&#9670;&nbsp;</a></span>TextFormat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::TextShader::TextFormat::TextFormat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00063">63</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="af0483874ac3fcea58b6ff99ef6644ff7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af0483874ac3fcea58b6ff99ef6644ff7">&#9670;&nbsp;</a></span>color</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::TextShader::TextFormat::color</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00070">70</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="acde55d28b0446e788e6c68b85df83066"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acde55d28b0446e788e6c68b85df83066">&#9670;&nbsp;</a></span>h_align</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a> mingfx::TextShader::TextFormat::h_align</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00071">71</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="aeecda817624276f0cfb812ddcdbbc2f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeecda817624276f0cfb812ddcdbbc2f0">&#9670;&nbsp;</a></span>size</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::TextShader::TextFormat::size</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00069">69</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<a id="a8455382a6829022020eb307ae9168bd7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8455382a6829022020eb307ae9168bd7">&#9670;&nbsp;</a></span>v_align</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a> mingfx::TextShader::TextFormat::v_align</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="text__shader_8h_source.html#l00072">72</a> of file <a class="el" href="text__shader_8h_source.html">text_shader.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="text__shader_8h_source.html">text_shader.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Texture2D Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">filter_mode</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">InitFromBytes</a>(int width, int height, const unsigned char *data)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">InitFromFile</a>(const std::string &amp;filename)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">InitFromFloats</a>(int width, int height, const float *data)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">initialized</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">opengl_id</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">Pixel</a>(int x, int y) const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">set_filter_mode</a>(GLenum filterMode)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">set_wrap_mode</a>(GLenum wrapMode)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">Texture2D</a>(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">UpdateFromBytes</a>(const unsigned char *data)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">UpdateFromFloats</a>(const float *data)</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">wrap_mode</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">~Texture2D</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Texture2D Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_texture2_d-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Texture2D Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A wrapper around a 2D texture that supports loading images from files or setting texture color data directly. </p>
+<p>Example: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">Texture2D</a> tex1;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">Texture2D</a> tex2(GL_CLAMP_TO_EDGE);</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::InitOpenGL() {</div>
+<div class="line"> std::vector&lt;std::string&gt; search_path;</div>
+<div class="line"> search_path.push_back(<span class="stringliteral">&quot;.&quot;</span>);</div>
+<div class="line"> search_path.push_back(<span class="stringliteral">&quot;./data&quot;</span>);</div>
+<div class="line"> search_path.push_back(<span class="stringliteral">&quot;./shaders&quot;</span>);</div>
+<div class="line"> tex1.InitFromFile(<a class="code" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">Platform::FindFile</a>(<span class="stringliteral">&quot;earth-2k.png&quot;</span>, search_path));</div>
+<div class="line"> tex2.InitFromFile(<a class="code" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">Platform::FindFile</a>(<span class="stringliteral">&quot;toon-ramp.png&quot;</span>, search_path));</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a32a392f4bac832c95fabc2d10bd03ad1"><div class="ttname"><a href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">mingfx::Platform::FindFile</a></div><div class="ttdeci">static std::string FindFile(const std::string &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aa15b86ec3b7312842c220b081c39980d"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">mingfx::Texture2D::Texture2D</a></div><div class="ttdeci">Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)</div><div class="ttdoc">Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter...</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="texture2d_8h_source.html#l00042">42</a> of file <a class="el" href="texture2d_8h_source.html">texture2d.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aa15b86ec3b7312842c220b081c39980d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">Texture2D</a> (GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)</td></tr>
+<tr class="memdesc:aa15b86ec3b7312842c220b081c39980d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter mode. <a href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">More...</a><br /></td></tr>
+<tr class="separator:aa15b86ec3b7312842c220b081c39980d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab734dbbcf6211507ab65d5bb94a4ef9"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">~Texture2D</a> ()</td></tr>
+<tr class="separator:aab734dbbcf6211507ab65d5bb94a4ef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8eded044ccdf9bd3e1e5bcfe74526bdc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">InitFromFile</a> (const std::string &amp;filename)</td></tr>
+<tr class="memdesc:a8eded044ccdf9bd3e1e5bcfe74526bdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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. <a href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">More...</a><br /></td></tr>
+<tr class="separator:a8eded044ccdf9bd3e1e5bcfe74526bdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba57b01065096fe9f6483e8f68622944"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">InitFromBytes</a> (int <a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>, int <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>, const unsigned char *data)</td></tr>
+<tr class="memdesc:aba57b01065096fe9f6483e8f68622944"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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 <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b" title="Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...">Pixel()</a>, 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 <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> object. <a href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">More...</a><br /></td></tr>
+<tr class="separator:aba57b01065096fe9f6483e8f68622944"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee8a0aad1795680cb840ffcf544ed7b8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">InitFromFloats</a> (int <a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>, int <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>, const float *data)</td></tr>
+<tr class="memdesc:aee8a0aad1795680cb840ffcf544ed7b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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 <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b" title="Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...">Pixel()</a>, 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 <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> object. <a href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">More...</a><br /></td></tr>
+<tr class="separator:aee8a0aad1795680cb840ffcf544ed7b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0783ad70829ef353aa92344d320b107c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">UpdateFromBytes</a> (const unsigned char *data)</td></tr>
+<tr class="memdesc:a0783ad70829ef353aa92344d320b107c"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">More...</a><br /></td></tr>
+<tr class="separator:a0783ad70829ef353aa92344d320b107c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7640f0cbda6398a6bb80202b80dd693"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">UpdateFromFloats</a> (const float *data)</td></tr>
+<tr class="memdesc:ad7640f0cbda6398a6bb80202b80dd693"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">More...</a><br /></td></tr>
+<tr class="separator:ad7640f0cbda6398a6bb80202b80dd693"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15d5c319cf7e012e703668f4d4e7be87"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">initialized</a> () const</td></tr>
+<tr class="memdesc:a15d5c319cf7e012e703668f4d4e7be87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the texture data has been successfully transferred to OpenGL. <a href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">More...</a><br /></td></tr>
+<tr class="separator:a15d5c319cf7e012e703668f4d4e7be87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a401629d948aa144be81b94fe21938869"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a> () const</td></tr>
+<tr class="memdesc:a401629d948aa144be81b94fe21938869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the width in pixels of the texture. <a href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">More...</a><br /></td></tr>
+<tr class="separator:a401629d948aa144be81b94fe21938869"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c396193b466053f23803894039d8d88"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a> () const</td></tr>
+<tr class="memdesc:a3c396193b466053f23803894039d8d88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the height in pixels of the texture. <a href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">More...</a><br /></td></tr>
+<tr class="separator:a3c396193b466053f23803894039d8d88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4e0faadfe016e6ee501e66fc0244504"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">opengl_id</a> () const</td></tr>
+<tr class="memdesc:ad4e0faadfe016e6ee501e66fc0244504"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the unsigned int used as the texture handle by OpenGL. <a href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">More...</a><br /></td></tr>
+<tr class="separator:ad4e0faadfe016e6ee501e66fc0244504"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c8827426f43343c0ad171e181a741ea"><td class="memItemLeft" align="right" valign="top">GLenum&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">wrap_mode</a> () const</td></tr>
+<tr class="memdesc:a1c8827426f43343c0ad171e181a741ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an enumerated constant for the OpenGL wrap mode used by the texture. <a href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">More...</a><br /></td></tr>
+<tr class="separator:a1c8827426f43343c0ad171e181a741ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0052203fcfd9bbb903a40d14700b13b"><td class="memItemLeft" align="right" valign="top">GLenum&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">filter_mode</a> () const</td></tr>
+<tr class="memdesc:af0052203fcfd9bbb903a40d14700b13b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an enumerated constant for the OpenGL filter mode used by the texture. <a href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">More...</a><br /></td></tr>
+<tr class="separator:af0052203fcfd9bbb903a40d14700b13b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5cbe3396e4560ec0746e91dbc55bc9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">set_wrap_mode</a> (GLenum wrapMode)</td></tr>
+<tr class="memdesc:aa5cbe3396e4560ec0746e91dbc55bc9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the OpenGL texture wrap mode arguments. <a href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">More...</a><br /></td></tr>
+<tr class="separator:aa5cbe3396e4560ec0746e91dbc55bc9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a3b2b550fefdf79f0fb392b04e7b013"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">set_filter_mode</a> (GLenum filterMode)</td></tr>
+<tr class="memdesc:a4a3b2b550fefdf79f0fb392b04e7b013"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the OpenGL texture filter mode arguments. <a href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">More...</a><br /></td></tr>
+<tr class="separator:a4a3b2b550fefdf79f0fb392b04e7b013"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e843f3d8904f9c7a99f7614f87de73b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">Pixel</a> (int x, int y) const</td></tr>
+<tr class="memdesc:a1e843f3d8904f9c7a99f7614f87de73b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom right is (<a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869" title="Returns the width in pixels of the texture.">width()</a>-1, <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88" title="Returns the height in pixels of the texture.">height()</a>-1). <a href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">More...</a><br /></td></tr>
+<tr class="separator:a1e843f3d8904f9c7a99f7614f87de73b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="aa15b86ec3b7312842c220b081c39980d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa15b86ec3b7312842c220b081c39980d">&#9670;&nbsp;</a></span>Texture2D()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Texture2D::Texture2D </td>
+ <td>(</td>
+ <td class="paramtype">GLenum&#160;</td>
+ <td class="paramname"><em>wrapMode</em> = <code>GL_REPEAT</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">GLenum&#160;</td>
+ <td class="paramname"><em>filterMode</em> = <code>GL_LINEAR</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter mode. </p>
+
+</div>
+</div>
+<a id="aab734dbbcf6211507ab65d5bb94a4ef9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aab734dbbcf6211507ab65d5bb94a4ef9">&#9670;&nbsp;</a></span>~Texture2D()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Texture2D::~Texture2D </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af0052203fcfd9bbb903a40d14700b13b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af0052203fcfd9bbb903a40d14700b13b">&#9670;&nbsp;</a></span>filter_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GLenum mingfx::Texture2D::filter_mode </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns an enumerated constant for the OpenGL filter mode used by the texture. </p>
+
+</div>
+</div>
+<a id="a3c396193b466053f23803894039d8d88"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c396193b466053f23803894039d8d88">&#9670;&nbsp;</a></span>height()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::Texture2D::height </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the height in pixels of the texture. </p>
+
+</div>
+</div>
+<a id="aba57b01065096fe9f6483e8f68622944"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aba57b01065096fe9f6483e8f68622944">&#9670;&nbsp;</a></span>InitFromBytes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::InitFromBytes </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned char *&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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 <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b" title="Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...">Pixel()</a>, 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 <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> object. </p>
+
+</div>
+</div>
+<a id="a8eded044ccdf9bd3e1e5bcfe74526bdc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8eded044ccdf9bd3e1e5bcfe74526bdc">&#9670;&nbsp;</a></span>InitFromFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::InitFromFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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. </p>
+
+</div>
+</div>
+<a id="aee8a0aad1795680cb840ffcf544ed7b8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aee8a0aad1795680cb840ffcf544ed7b8">&#9670;&nbsp;</a></span>InitFromFloats()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::InitFromFloats </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this from within the InitOpenGL() function since it will initialize not just the <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a>'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 <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b" title="Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...">Pixel()</a>, 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 <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> object. </p>
+
+</div>
+</div>
+<a id="a15d5c319cf7e012e703668f4d4e7be87"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15d5c319cf7e012e703668f4d4e7be87">&#9670;&nbsp;</a></span>initialized()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::initialized </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns true if the texture data has been successfully transferred to OpenGL. </p>
+
+</div>
+</div>
+<a id="ad4e0faadfe016e6ee501e66fc0244504"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4e0faadfe016e6ee501e66fc0244504">&#9670;&nbsp;</a></span>opengl_id()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GLuint mingfx::Texture2D::opengl_id </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the unsigned int used as the texture handle by OpenGL. </p>
+
+</div>
+</div>
+<a id="a1e843f3d8904f9c7a99f7614f87de73b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e843f3d8904f9c7a99f7614f87de73b">&#9670;&nbsp;</a></span>Pixel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_color.html">Color</a> mingfx::Texture2D::Pixel </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>y</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom right is (<a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869" title="Returns the width in pixels of the texture.">width()</a>-1, <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88" title="Returns the height in pixels of the texture.">height()</a>-1). </p>
+
+</div>
+</div>
+<a id="a4a3b2b550fefdf79f0fb392b04e7b013"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4a3b2b550fefdf79f0fb392b04e7b013">&#9670;&nbsp;</a></span>set_filter_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Texture2D::set_filter_mode </td>
+ <td>(</td>
+ <td class="paramtype">GLenum&#160;</td>
+ <td class="paramname"><em>filterMode</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Uses the OpenGL texture filter mode arguments. </p>
+
+</div>
+</div>
+<a id="aa5cbe3396e4560ec0746e91dbc55bc9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5cbe3396e4560ec0746e91dbc55bc9f">&#9670;&nbsp;</a></span>set_wrap_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Texture2D::set_wrap_mode </td>
+ <td>(</td>
+ <td class="paramtype">GLenum&#160;</td>
+ <td class="paramname"><em>wrapMode</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Uses the OpenGL texture wrap mode arguments. </p>
+
+</div>
+</div>
+<a id="a0783ad70829ef353aa92344d320b107c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0783ad70829ef353aa92344d320b107c">&#9670;&nbsp;</a></span>UpdateFromBytes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::UpdateFromBytes </td>
+ <td>(</td>
+ <td class="paramtype">const unsigned char *&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="ad7640f0cbda6398a6bb80202b80dd693"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7640f0cbda6398a6bb80202b80dd693">&#9670;&nbsp;</a></span>UpdateFromFloats()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Texture2D::UpdateFromFloats </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a401629d948aa144be81b94fe21938869"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a401629d948aa144be81b94fe21938869">&#9670;&nbsp;</a></span>width()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int mingfx::Texture2D::width </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the width in pixels of the texture. </p>
+
+</div>
+</div>
+<a id="a1c8827426f43343c0ad171e181a741ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1c8827426f43343c0ad171e181a741ea">&#9670;&nbsp;</a></span>wrap_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GLenum mingfx::Texture2D::wrap_mode </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns an enumerated constant for the OpenGL wrap mode used by the texture. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="texture2d_8h_source.html">texture2d.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_uni_cam.html">UniCam</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::UniCam Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">AdvanceAnimation</a>(double dt)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">Draw</a>(const Matrix4 &amp;projectionMatrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">eye</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">look</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">OnButtonDown</a>(const Point2 &amp;normalizedMousePos, float mouseZ)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">OnButtonUp</a>(const Point2 &amp;normalizedMousePos)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">OnDrag</a>(const Point2 &amp;normalizedMousePos)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">set_default_depth</a>(float d)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">set_view_matrix</a>(Matrix4 viewMatrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">UniCam</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07">UniCam</a>(const Matrix4 &amp;initialViewMatrix)</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">view_matrix</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">~UniCam</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::UniCam Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_uni_cam.html">UniCam</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_uni_cam-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::UniCam Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This implements a user interface for controlling the camera with the mouse. </p>
+<p>It is a special interface inspired by the "Unicam" technique developed by Zeleznik et al. <br />
+</p>
+<p>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.</p>
+<p>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:</p>
+<ul>
+<li>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.</li>
+<li>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.</li>
+<li>Rotate: Start with a quick click and release to set the center of rotation. <br />
+ 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 <a class="el" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068" title="This sets the depth of the center of rotation for the case when the user&#39;s click does not intersect a...">set_default_depth()</a>. 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!</li>
+<li>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.</li>
+</ul>
+<p>Example usage: </p><div class="fragment"><div class="line"><span class="comment">// Create a global or member variable in your MyGraphicsApp class:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">UniCam</a> unicam_;</div>
+<div class="line"> </div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnLeftMouseDown(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"> Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> <span class="keywordtype">float</span> mouse_z = ReadZValueAtPixel(pos);</div>
+<div class="line"> unicam_.OnButtonDown(mouse_xy, mouse_z);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnLeftMouseDrag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"> Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> unicam_.OnDrag(mouse_xy);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::OnLeftMouseUp(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"> Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);</div>
+<div class="line"> unicam_.OnButtonUp(mouse_xy);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::InitOpenGL() {</div>
+<div class="line"> projMatrix_ = Matrix4::perspective(30, aspect_ratio(), 1, 20);</div>
+<div class="line"> unicam_.set_view_matrix(Matrix4::lookAt(Point3(2.5,1,2.5), Point3(0,0,0), Vector3(0,1,0)););</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::DrawOpenGL() {</div>
+<div class="line"> <span class="comment">// draw your scene using the view matrix from UniCam</span></div>
+<div class="line"> Matrix4 proj_matrix = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(60, aspect_ratio(), 0.001, 10);;</div>
+<div class="line"> Matrix4 <a class="code" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">view_matrix</a> = uniCam.view_matrix();</div>
+<div class="line"> Matrix4 model_matrix = Matrix4::RotateY(to_radians(45.0));</div>
+<div class="line"> quickShapes.DrawCube(model_matrix, view_matirx, proj_matrix, Color(1,1,1));</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// tell unicam to draw itself (i.e., the small sphere that marks the center of</span></div>
+<div class="line"> <span class="comment">// rotation when in rotation mode)</span></div>
+<div class="line"> unicam_.Draw(proj_matrix);</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a6e7771961011f573b2e2249f602b2d2e"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">mingfx::UniCam::UniCam</a></div><div class="ttdeci">UniCam()</div><div class="ttdoc">Creates a UniCam object with an initial view matrix = identity.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_af7e7276f9390ec57ca577092c99d6ca3"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">mingfx::UniCam::view_matrix</a></div><div class="ttdeci">Matrix4 view_matrix()</div><div class="ttdoc">Access the camera view matrix created by the UniCam interactions via this method and use it to draw t...</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="unicam_8h_source.html#l00105">105</a> of file <a class="el" href="unicam_8h_source.html">unicam.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="unicam_8h_source.html">unicam.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a6e7771961011f573b2e2249f602b2d2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">UniCam</a> ()</td></tr>
+<tr class="memdesc:a6e7771961011f573b2e2249f602b2d2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> object with an initial view matrix = identity. <a href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">More...</a><br /></td></tr>
+<tr class="separator:a6e7771961011f573b2e2249f602b2d2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af507e639c4bceb4c79e21a6f80c48d07"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07">UniCam</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;initialViewMatrix)</td></tr>
+<tr class="memdesc:af507e639c4bceb4c79e21a6f80c48d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> object with the supplied initial view matrix. <a href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07">More...</a><br /></td></tr>
+<tr class="separator:af507e639c4bceb4c79e21a6f80c48d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af98022627bcb52dbf54779cfaeb6ff7e"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">~UniCam</a> ()</td></tr>
+<tr class="separator:af98022627bcb52dbf54779cfaeb6ff7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85afba6e8792636f3c6ba2433db1c52f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">OnButtonDown</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos, float mouseZ)</td></tr>
+<tr class="memdesc:a85afba6e8792636f3c6ba2433db1c52f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach this to whatever mouse button you wish, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c" title="If the mouse button was pressed down since the last frame, then this function will be called to notif...">GraphicsApp::OnRightMouseDown()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can access both of these as follows: <a href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">More...</a><br /></td></tr>
+<tr class="separator:a85afba6e8792636f3c6ba2433db1c52f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a33f1b41fcf53ea78ca2b3640902c5bbe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">OnDrag</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos)</td></tr>
+<tr class="memdesc:a33f1b41fcf53ea78ca2b3640902c5bbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach this to the corresponding mouse move event, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7" title="If the mouse button is held down and the mouse has moved in the past frame then this function will be...">GraphicsApp::OnRightMouseDrag()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, use: <a href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">More...</a><br /></td></tr>
+<tr class="separator:a33f1b41fcf53ea78ca2b3640902c5bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a9431dc3943c8dc485994d88ce2a58a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">OnButtonUp</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos)</td></tr>
+<tr class="memdesc:a2a9431dc3943c8dc485994d88ce2a58a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach this to the corresponding button up event, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3" title="If the mouse button was released since the last frame, then this function will be called to notify yo...">GraphicsApp::OnRightMouseUp()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, use: <a href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">More...</a><br /></td></tr>
+<tr class="separator:a2a9431dc3943c8dc485994d88ce2a58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab253d966af52ac277ac51194745085c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">AdvanceAnimation</a> (double dt)</td></tr>
+<tr class="memdesc:aab253d966af52ac277ac51194745085c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach this to a callback that can be used to control animation. Within <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa" title="Called once per frame.">GraphicsApp::UpdateSimulation()</a>, use: <a href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">More...</a><br /></td></tr>
+<tr class="separator:aab253d966af52ac277ac51194745085c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae45f3c80c205a539baeb4f1b8787777d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">Draw</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix)</td></tr>
+<tr class="memdesc:ae45f3c80c205a539baeb4f1b8787777d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finally, attach this to your draw callback routine. Within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, use: <a href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">More...</a><br /></td></tr>
+<tr class="separator:ae45f3c80c205a539baeb4f1b8787777d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7e7276f9390ec57ca577092c99d6ca3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">view_matrix</a> ()</td></tr>
+<tr class="memdesc:af7e7276f9390ec57ca577092c99d6ca3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the camera view matrix created by the <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> interactions via this method and use it to draw the geometry in your scence. For example, within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, you might have: <a href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">More...</a><br /></td></tr>
+<tr class="separator:af7e7276f9390ec57ca577092c99d6ca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65d5735b4b3a8e38f2b30df4133cadd2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">eye</a> ()</td></tr>
+<tr class="memdesc:a65d5735b4b3a8e38f2b30df4133cadd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. <a href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">More...</a><br /></td></tr>
+<tr class="separator:a65d5735b4b3a8e38f2b30df4133cadd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8363576bf0f85c74d80ced697bd73d40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">look</a> ()</td></tr>
+<tr class="memdesc:a8363576bf0f85c74d80ced697bd73d40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. <a href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">More...</a><br /></td></tr>
+<tr class="separator:a8363576bf0f85c74d80ced697bd73d40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b17bab82595ca468a3c638512011e5b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">set_view_matrix</a> (<a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> viewMatrix)</td></tr>
+<tr class="memdesc:a6b17bab82595ca468a3c638512011e5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. <a href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">More...</a><br /></td></tr>
+<tr class="separator:a6b17bab82595ca468a3c638512011e5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71e0351ac19a18b9c02215a60dc51068"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">set_default_depth</a> (float d)</td></tr>
+<tr class="memdesc:a71e0351ac19a18b9c02215a60dc51068"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">More...</a><br /></td></tr>
+<tr class="separator:a71e0351ac19a18b9c02215a60dc51068"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a6e7771961011f573b2e2249f602b2d2e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e7771961011f573b2e2249f602b2d2e">&#9670;&nbsp;</a></span>UniCam() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::UniCam::UniCam </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> object with an initial view matrix = identity. </p>
+
+</div>
+</div>
+<a id="af507e639c4bceb4c79e21a6f80c48d07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af507e639c4bceb4c79e21a6f80c48d07">&#9670;&nbsp;</a></span>UniCam() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::UniCam::UniCam </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>initialViewMatrix</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> object with the supplied initial view matrix. </p>
+
+</div>
+</div>
+<a id="af98022627bcb52dbf54779cfaeb6ff7e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af98022627bcb52dbf54779cfaeb6ff7e">&#9670;&nbsp;</a></span>~UniCam()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::UniCam::~UniCam </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="aab253d966af52ac277ac51194745085c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aab253d966af52ac277ac51194745085c">&#9670;&nbsp;</a></span>AdvanceAnimation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::AdvanceAnimation </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Attach this to a callback that can be used to control animation. Within <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa" title="Called once per frame.">GraphicsApp::UpdateSimulation()</a>, use: </p>
+<div class="fragment"><div class="line">uniCam.AdvanceAnimation(dt);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae45f3c80c205a539baeb4f1b8787777d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae45f3c80c205a539baeb4f1b8787777d">&#9670;&nbsp;</a></span>Draw()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::Draw </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>projectionMatrix</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Finally, attach this to your draw callback routine. Within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, use: </p>
+<div class="fragment"><div class="line">uniCam.Draw(projMatrix);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a65d5735b4b3a8e38f2b30df4133cadd2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65d5735b4b3a8e38f2b30df4133cadd2">&#9670;&nbsp;</a></span>eye()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::UniCam::eye </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. </p>
+
+</div>
+</div>
+<a id="a8363576bf0f85c74d80ced697bd73d40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8363576bf0f85c74d80ced697bd73d40">&#9670;&nbsp;</a></span>look()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::UniCam::look </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. </p>
+
+</div>
+</div>
+<a id="a85afba6e8792636f3c6ba2433db1c52f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85afba6e8792636f3c6ba2433db1c52f">&#9670;&nbsp;</a></span>OnButtonDown()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::OnButtonDown </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedMousePos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>mouseZ</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Attach this to whatever mouse button you wish, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c" title="If the mouse button was pressed down since the last frame, then this function will be called to notif...">GraphicsApp::OnRightMouseDown()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, you can access both of these as follows: </p>
+<div class="fragment"><div class="line">Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);</div>
+<div class="line"><span class="keywordtype">float</span> mouse_z = ReadZValueAtPixel(mouse_in_pixels);</div>
+<div class="line">uniCam.OnButtonDown(mouse_xy, mouse_z);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2a9431dc3943c8dc485994d88ce2a58a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2a9431dc3943c8dc485994d88ce2a58a">&#9670;&nbsp;</a></span>OnButtonUp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::OnButtonUp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedMousePos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Attach this to the corresponding button up event, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3" title="If the mouse button was released since the last frame, then this function will be called to notify yo...">GraphicsApp::OnRightMouseUp()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, use: </p>
+<div class="fragment"><div class="line">Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);</div>
+<div class="line">uniCam.OnButtonUp(mouse_xy);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a33f1b41fcf53ea78ca2b3640902c5bbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a33f1b41fcf53ea78ca2b3640902c5bbe">&#9670;&nbsp;</a></span>OnDrag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::OnDrag </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>normalizedMousePos</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Attach this to the corresponding mouse move event, for example, call this from within <a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7" title="If the mouse button is held down and the mouse has moved in the past frame then this function will be...">GraphicsApp::OnRightMouseDrag()</a>. 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 <a class="el" href="classmingfx_1_1_graphics_app.html" title="This is the main application base class for the MinGfx Toolkit.">GraphicsApp</a>, use: </p>
+<div class="fragment"><div class="line">Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);</div>
+<div class="line">uniCam.OnDrag(mouse_xy);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a71e0351ac19a18b9c02215a60dc51068"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a71e0351ac19a18b9c02215a60dc51068">&#9670;&nbsp;</a></span>set_default_depth()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::set_default_depth </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>d</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a6b17bab82595ca468a3c638512011e5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b17bab82595ca468a3c638512011e5b">&#9670;&nbsp;</a></span>set_view_matrix()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::UniCam::set_view_matrix </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td>
+ <td class="paramname"><em>viewMatrix</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. </p>
+
+</div>
+</div>
+<a id="af7e7276f9390ec57ca577092c99d6ca3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af7e7276f9390ec57ca577092c99d6ca3">&#9670;&nbsp;</a></span>view_matrix()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::UniCam::view_matrix </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Access the camera view matrix created by the <a class="el" href="classmingfx_1_1_uni_cam.html" title="This implements a user interface for controlling the camera with the mouse.">UniCam</a> interactions via this method and use it to draw the geometry in your scence. For example, within <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca" title="Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.">GraphicsApp::DrawUsingOpenGL()</a>, you might have: </p>
+<div class="fragment"><div class="line">Matrix4 P = <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Matrix4::Perspective</a>(30, aspect_ratio(), 1, 20);</div>
+<div class="line">Matrix4 V = unicam.view_matrix();</div>
+<div class="line">Matrix4 M = Matrix4::RotateY(<a class="code" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">GfxMath::ToRadians</a>(45.0));</div>
+<div class="line">quick_shapes.DrawCube(M, V, P, Color(1,1,1));</div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a1336de2695bc3bb750b23fb0ea211637"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath::ToRadians</a></div><div class="ttdeci">static float ToRadians(float degrees)</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="unicam_8h_source.html">unicam.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Vector2 Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">Dot</a>(const Vector2 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd">Dot</a>(const Vector2 &amp;v1, const Vector2 &amp;v2)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">Length</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">Lerp</a>(const Vector2 &amp;b, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561">Lerp</a>(const Vector2 &amp;a, const Vector2 &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">Normalize</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2">Normalize</a>(const Vector2 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">One</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">operator!=</a>(const Vector2 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">operator=</a>(const Vector2 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">operator==</a>(const Vector2 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">ToUnit</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">UnitX</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">UnitY</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">Vector2</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd">Vector2</a>(float x, float y)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2">Vector2</a>(float *v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8">Vector2</a>(const Vector2 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">w</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">x</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">y</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">Zero</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">~Vector2</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Vector2 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_vector2-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Vector2 Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector2_8h_source.html#l00028">28</a> of file <a class="el" href="vector2_8h_source.html">vector2.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="vector2_8h_source.html">vector2.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a962433a7e3158cf6b224604a0463852f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">Vector2</a> ()</td></tr>
+<tr class="memdesc:a962433a7e3158cf6b224604a0463852f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor to create zero vector. <a href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">More...</a><br /></td></tr>
+<tr class="separator:a962433a7e3158cf6b224604a0463852f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc16337b6b06ebea2fde4c4bd1be7abd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd">Vector2</a> (float <a class="el" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">x</a>, float <a class="el" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">y</a>)</td></tr>
+<tr class="memdesc:acc16337b6b06ebea2fde4c4bd1be7abd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. <a href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd">More...</a><br /></td></tr>
+<tr class="separator:acc16337b6b06ebea2fde4c4bd1be7abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e3d063a7080bfe199acc70cd5afded2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2">Vector2</a> (float *v)</td></tr>
+<tr class="memdesc:a6e3d063a7080bfe199acc70cd5afded2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a vector given a pointer to x,y,z data. <a href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2">More...</a><br /></td></tr>
+<tr class="separator:a6e3d063a7080bfe199acc70cd5afded2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a40f53939581f5d06a1b757b0398525f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8">Vector2</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:a40f53939581f5d06a1b757b0398525f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor for vector. <a href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8">More...</a><br /></td></tr>
+<tr class="separator:a40f53939581f5d06a1b757b0398525f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac49b009c4b6052ebe71d5cf4ce241b1f"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">~Vector2</a> ()</td></tr>
+<tr class="memdesc:ac49b009c4b6052ebe71d5cf4ce241b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector destructor. <a href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">More...</a><br /></td></tr>
+<tr class="separator:ac49b009c4b6052ebe71d5cf4ce241b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7acc2cf4dcd2eca210899c846bb7dfe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">operator==</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v) const</td></tr>
+<tr class="memdesc:ad7acc2cf4dcd2eca210899c846bb7dfe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">More...</a><br /></td></tr>
+<tr class="separator:ad7acc2cf4dcd2eca210899c846bb7dfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1cf3488f1f14a9bf7f6e1278c1c63cdb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">operator!=</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v) const</td></tr>
+<tr class="memdesc:a1cf3488f1f14a9bf7f6e1278c1c63cdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">More...</a><br /></td></tr>
+<tr class="separator:a1cf3488f1f14a9bf7f6e1278c1c63cdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28c44a323e5bd1a251dee9e00e2e1769"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">operator=</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:a28c44a323e5bd1a251dee9e00e2e1769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector assignment operator. <a href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">More...</a><br /></td></tr>
+<tr class="separator:a28c44a323e5bd1a251dee9e00e2e1769"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae1fc0ce3ca1af3d0546af32742e13000"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:ae1fc0ce3ca1af3d0546af32742e13000"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the ith coordinate of the vector. <a href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">More...</a><br /></td></tr>
+<tr class="separator:ae1fc0ce3ca1af3d0546af32742e13000"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93acf7f4f150cfe53859e31d90eddd1e"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:a93acf7f4f150cfe53859e31d90eddd1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e">More...</a><br /></td></tr>
+<tr class="separator:a93acf7f4f150cfe53859e31d90eddd1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae84b079eb21494bc7c9a93d32a63712a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">x</a> () const</td></tr>
+<tr class="memdesc:ae84b079eb21494bc7c9a93d32a63712a"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">More...</a><br /></td></tr>
+<tr class="separator:ae84b079eb21494bc7c9a93d32a63712a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac427d5c06474777e851bed05ec5d134b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">y</a> () const</td></tr>
+<tr class="memdesc:ac427d5c06474777e851bed05ec5d134b"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">More...</a><br /></td></tr>
+<tr class="separator:ac427d5c06474777e851bed05ec5d134b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a267e6749091f23263d1620f801f0a831"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">w</a> () const</td></tr>
+<tr class="memdesc:a267e6749091f23263d1620f801f0a831"><td class="mdescLeft">&#160;</td><td class="mdescRight">In homogeneous coordinates, the w coordinate for all vectors is 0.0. <a href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">More...</a><br /></td></tr>
+<tr class="separator:a267e6749091f23263d1620f801f0a831"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2208539c6b29712c22f557dcfdd55d9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">Dot</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v) const</td></tr>
+<tr class="memdesc:ae2208539c6b29712c22f557dcfdd55d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns "this dot v". <a href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">More...</a><br /></td></tr>
+<tr class="separator:ae2208539c6b29712c22f557dcfdd55d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71b90903d00cdc318ea42f593db6dbb9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">Length</a> () const</td></tr>
+<tr class="memdesc:a71b90903d00cdc318ea42f593db6dbb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the length of the vector. <a href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">More...</a><br /></td></tr>
+<tr class="separator:a71b90903d00cdc318ea42f593db6dbb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a632ddd5b06c48fa0f6f39550e91082c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">Normalize</a> ()</td></tr>
+<tr class="memdesc:a632ddd5b06c48fa0f6f39550e91082c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the vector by making it unit length. <a href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">More...</a><br /></td></tr>
+<tr class="separator:a632ddd5b06c48fa0f6f39550e91082c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a70f9f612a99017bf051e40ebd7fa7f83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">ToUnit</a> () const</td></tr>
+<tr class="memdesc:a70f9f612a99017bf051e40ebd7fa7f83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this') vector. <a href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">More...</a><br /></td></tr>
+<tr class="separator:a70f9f612a99017bf051e40ebd7fa7f83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5813ffa3c185551eec1927e1daa4cb17"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">Lerp</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;b, float alpha) const</td></tr>
+<tr class="memdesc:a5813ffa3c185551eec1927e1daa4cb17"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">More...</a><br /></td></tr>
+<tr class="separator:a5813ffa3c185551eec1927e1daa4cb17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a80ef53519d50a6a6f158f66755c040d1"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">value_ptr</a> () const</td></tr>
+<tr class="memdesc:a80ef53519d50a6a6f158f66755c040d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array. <a href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">More...</a><br /></td></tr>
+<tr class="separator:a80ef53519d50a6a6f158f66755c040d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a06d6c283aba957bddc2b9849698838b2"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2">Normalize</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:a06d6c283aba957bddc2b9849698838b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a new vector that is the unit version of v. <a href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2">More...</a><br /></td></tr>
+<tr class="separator:a06d6c283aba957bddc2b9849698838b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9e81c518908ca06c98ba099b075fe1cd"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd">Dot</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v2)</td></tr>
+<tr class="memdesc:a9e81c518908ca06c98ba099b075fe1cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns v1 dot v2. <a href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd">More...</a><br /></td></tr>
+<tr class="separator:a9e81c518908ca06c98ba099b075fe1cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7cb11f9fe8962ff9092fc1e5736faacf"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">Zero</a> ()</td></tr>
+<tr class="memdesc:a7cb11f9fe8962ff9092fc1e5736faacf"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">More...</a><br /></td></tr>
+<tr class="separator:a7cb11f9fe8962ff9092fc1e5736faacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b51e62f03e95d6be1262f037aecf0fd"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">One</a> ()</td></tr>
+<tr class="memdesc:a5b51e62f03e95d6be1262f037aecf0fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,1) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">More...</a><br /></td></tr>
+<tr class="separator:a5b51e62f03e95d6be1262f037aecf0fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ef6e0525ec34aaee9cf35bab098ecdb"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">UnitX</a> ()</td></tr>
+<tr class="memdesc:a8ef6e0525ec34aaee9cf35bab098ecdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,0) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">More...</a><br /></td></tr>
+<tr class="separator:a8ef6e0525ec34aaee9cf35bab098ecdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab7b3ba42a5a63c512bd7b32fd4cc0db0"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">UnitY</a> ()</td></tr>
+<tr class="memdesc:ab7b3ba42a5a63c512bd7b32fd4cc0db0"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,1) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">More...</a><br /></td></tr>
+<tr class="separator:ab7b3ba42a5a63c512bd7b32fd4cc0db0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac332b5f01b3357b85e6d279fb059d561"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561">Lerp</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;a, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:ac332b5f01b3357b85e6d279fb059d561"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. <a href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561">More...</a><br /></td></tr>
+<tr class="separator:ac332b5f01b3357b85e6d279fb059d561"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a962433a7e3158cf6b224604a0463852f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a962433a7e3158cf6b224604a0463852f">&#9670;&nbsp;</a></span>Vector2() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector2::Vector2 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Default constructor to create zero vector. </p>
+
+</div>
+</div>
+<a id="acc16337b6b06ebea2fde4c4bd1be7abd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc16337b6b06ebea2fde4c4bd1be7abd">&#9670;&nbsp;</a></span>Vector2() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector2::Vector2 </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>y</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. </p>
+
+</div>
+</div>
+<a id="a6e3d063a7080bfe199acc70cd5afded2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e3d063a7080bfe199acc70cd5afded2">&#9670;&nbsp;</a></span>Vector2() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector2::Vector2 </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a vector given a pointer to x,y,z data. </p>
+
+</div>
+</div>
+<a id="a40f53939581f5d06a1b757b0398525f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a40f53939581f5d06a1b757b0398525f8">&#9670;&nbsp;</a></span>Vector2() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector2::Vector2 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor for vector. </p>
+
+</div>
+</div>
+<a id="ac49b009c4b6052ebe71d5cf4ce241b1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac49b009c4b6052ebe71d5cf4ce241b1f">&#9670;&nbsp;</a></span>~Vector2()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Vector2::~Vector2 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Vector destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ae2208539c6b29712c22f557dcfdd55d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae2208539c6b29712c22f557dcfdd55d9">&#9670;&nbsp;</a></span>Dot() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::Dot </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns "this dot v". </p>
+
+</div>
+</div>
+<a id="a9e81c518908ca06c98ba099b075fe1cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9e81c518908ca06c98ba099b075fe1cd">&#9670;&nbsp;</a></span>Dot() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::Vector2::Dot </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns v1 dot v2. </p>
+
+</div>
+</div>
+<a id="a71b90903d00cdc318ea42f593db6dbb9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a71b90903d00cdc318ea42f593db6dbb9">&#9670;&nbsp;</a></span>Length()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::Length </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the length of the vector. </p>
+
+</div>
+</div>
+<a id="ac332b5f01b3357b85e6d279fb059d561"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac332b5f01b3357b85e6d279fb059d561">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::Vector2::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. </p>
+
+</div>
+</div>
+<a id="a5813ffa3c185551eec1927e1daa4cb17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5813ffa3c185551eec1927e1daa4cb17">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::Vector2::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a632ddd5b06c48fa0f6f39550e91082c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a632ddd5b06c48fa0f6f39550e91082c0">&#9670;&nbsp;</a></span>Normalize() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Vector2::Normalize </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Normalizes the vector by making it unit length. </p>
+
+</div>
+</div>
+<a id="a06d6c283aba957bddc2b9849698838b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a06d6c283aba957bddc2b9849698838b2">&#9670;&nbsp;</a></span>Normalize() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::Vector2::Normalize </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a new vector that is the unit version of v. </p>
+
+</div>
+</div>
+<a id="a5b51e62f03e95d6be1262f037aecf0fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b51e62f03e95d6be1262f037aecf0fd">&#9670;&nbsp;</a></span>One()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; mingfx::Vector2::One </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,1) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="a1cf3488f1f14a9bf7f6e1278c1c63cdb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1cf3488f1f14a9bf7f6e1278c1c63cdb">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Vector2::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a28c44a323e5bd1a251dee9e00e2e1769"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28c44a323e5bd1a251dee9e00e2e1769">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; mingfx::Vector2::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Vector assignment operator. </p>
+
+</div>
+</div>
+<a id="ad7acc2cf4dcd2eca210899c846bb7dfe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7acc2cf4dcd2eca210899c846bb7dfe">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Vector2::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="a93acf7f4f150cfe53859e31d90eddd1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93acf7f4f150cfe53859e31d90eddd1e">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Vector2::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">Vector2</a> a;</div>
+<div class="line">a[0] = 5.0; <span class="comment">// set the x-coordinate of the vector</span></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a962433a7e3158cf6b224604a0463852f"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">mingfx::Vector2::Vector2</a></div><div class="ttdeci">Vector2()</div><div class="ttdoc">Default constructor to create zero vector.</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae1fc0ce3ca1af3d0546af32742e13000"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae1fc0ce3ca1af3d0546af32742e13000">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the ith coordinate of the vector. </p>
+
+</div>
+</div>
+<a id="a70f9f612a99017bf051e40ebd7fa7f83"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a70f9f612a99017bf051e40ebd7fa7f83">&#9670;&nbsp;</a></span>ToUnit()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::Vector2::ToUnit </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this') vector. </p>
+
+</div>
+</div>
+<a id="a8ef6e0525ec34aaee9cf35bab098ecdb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ef6e0525ec34aaee9cf35bab098ecdb">&#9670;&nbsp;</a></span>UnitX()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; mingfx::Vector2::UnitX </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,0) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="ab7b3ba42a5a63c512bd7b32fd4cc0db0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab7b3ba42a5a63c512bd7b32fd4cc0db0">&#9670;&nbsp;</a></span>UnitY()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; mingfx::Vector2::UnitY </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,1) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="a80ef53519d50a6a6f158f66755c040d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a80ef53519d50a6a6f158f66755c040d1">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Vector2::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array. </p>
+
+</div>
+</div>
+<a id="a267e6749091f23263d1620f801f0a831"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a267e6749091f23263d1620f801f0a831">&#9670;&nbsp;</a></span>w()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::w </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>In homogeneous coordinates, the w coordinate for all vectors is 0.0. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector2_8h_source.html#l00077">77</a> of file <a class="el" href="vector2_8h_source.html">vector2.h</a>.</p>
+
+</div>
+</div>
+<a id="ae84b079eb21494bc7c9a93d32a63712a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae84b079eb21494bc7c9a93d32a63712a">&#9670;&nbsp;</a></span>x()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector2_8h_source.html#l00070">70</a> of file <a class="el" href="vector2_8h_source.html">vector2.h</a>.</p>
+
+</div>
+</div>
+<a id="ac427d5c06474777e851bed05ec5d134b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac427d5c06474777e851bed05ec5d134b">&#9670;&nbsp;</a></span>y()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector2::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector2_8h_source.html#l00074">74</a> of file <a class="el" href="vector2_8h_source.html">vector2.h</a>.</p>
+
+</div>
+</div>
+<a id="a7cb11f9fe8962ff9092fc1e5736faacf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7cb11f9fe8962ff9092fc1e5736faacf">&#9670;&nbsp;</a></span>Zero()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; mingfx::Vector2::Zero </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="vector2_8h_source.html">vector2.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx::Vector3 Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">Cross</a>(const Vector3 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485">Cross</a>(const Vector3 &amp;v1, const Vector3 &amp;v2)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">Dot</a>(const Vector3 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507">Dot</a>(const Vector3 &amp;v1, const Vector3 &amp;v2)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">Length</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">Lerp</a>(const Vector3 &amp;b, float alpha) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f">Lerp</a>(const Vector3 &amp;a, const Vector3 &amp;b, float alpha)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">Normalize</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d">Normalize</a>(const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">One</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">operator!=</a>(const Vector3 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">operator=</a>(const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">operator==</a>(const Vector3 &amp;v) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">operator[]</a>(const int i) const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71">operator[]</a>(const int i)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">ToUnit</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">UnitX</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">UnitY</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">UnitZ</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">value_ptr</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65">Vector3</a>(float x, float y, float z)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1">Vector3</a>(float *v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd">Vector3</a>(const Vector3 &amp;v)</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a>() const</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">Zero</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">~Vector3</a>()</td><td class="entry"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::Vector3 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_vector3-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::Vector3 Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations. </p>
+<p>Vector3s can be transformed by a <a class="el" href="classmingfx_1_1_matrix4.html" title="A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...">Matrix4</a>, and a <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> can be created by subtracting two Point3s. Example: </p><div class="fragment"><div class="line"><span class="comment">// subtracting two points creates a vector</span></div>
+<div class="line">Point3 a(0,0,0);</div>
+<div class="line">Point3 b(2,0,0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> c = b - a;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// vectors can be transformed by Matrix4s</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> dir = c.ToUnit();</div>
+<div class="line">Matrix4 M = Matrix4::RotateX(<a class="code" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">GfxMath::ToDegrees</a>(30.0));</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> dir_transformed = M * dir;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// vectors can be added and subtracted</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> d(1,0,0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> e = c + d;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// and we can do the usual dot products and cross products too</span></div>
+<div class="line"><span class="keywordtype">float</span> f = d.Dot(e);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> g = b.Cross(d);</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// you can access the individual components of the vector in two ways:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> v(1,2,3);</div>
+<div class="line"><span class="keywordtype">float</span> option1 = v.x();</div>
+<div class="line"><span class="keywordtype">float</span> option2 = v[0];</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// to set an individual component of the vector use the [] operator:</span></div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>[0] = 0.4;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>[1] = 1.2;</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>[2] = 3.1;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// you can print the vector by sending it to stdout:</span></div>
+<div class="line">std::cout &lt;&lt; v &lt;&lt; std::endl;</div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a39a2b5973249fb3aefc210b18b0fdff3"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">mingfx::GfxMath::ToDegrees</a></div><div class="ttdeci">static float ToDegrees(float radians)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a2556298f536ba115019982222ce6e0c5"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">mingfx::Vector3::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">In homogeneous coordinates, the w coordinate for all vectors is 0.0.</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00115">vector3.h:115</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a7f57af8bbecbc793fa17def4521de4dd"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">mingfx::Vector3::Vector3</a></div><div class="ttdeci">Vector3()</div><div class="ttdoc">Default constructor to create zero vector.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="vector3_8h_source.html#l00062">62</a> of file <a class="el" href="vector3_8h_source.html">vector3.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="vector3_8h_source.html">vector3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a7f57af8bbecbc793fa17def4521de4dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> ()</td></tr>
+<tr class="memdesc:a7f57af8bbecbc793fa17def4521de4dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor to create zero vector. <a href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">More...</a><br /></td></tr>
+<tr class="separator:a7f57af8bbecbc793fa17def4521de4dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256018f34e230d542027d07d14fd6e65"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65">Vector3</a> (float <a class="el" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>, float <a class="el" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>, float <a class="el" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a>)</td></tr>
+<tr class="memdesc:a256018f34e230d542027d07d14fd6e65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. <a href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65">More...</a><br /></td></tr>
+<tr class="separator:a256018f34e230d542027d07d14fd6e65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95b274c7a5ff118af20bc71682c6b1f1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1">Vector3</a> (float *v)</td></tr>
+<tr class="memdesc:a95b274c7a5ff118af20bc71682c6b1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a vector given a pointer to x,y,z data. <a href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1">More...</a><br /></td></tr>
+<tr class="separator:a95b274c7a5ff118af20bc71682c6b1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af6100965af7770f833dbf0c9f30f4fdd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd">Vector3</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:af6100965af7770f833dbf0c9f30f4fdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor for vector. <a href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd">More...</a><br /></td></tr>
+<tr class="separator:af6100965af7770f833dbf0c9f30f4fdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e0d09d774615bcfde5645c22a645969"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">~Vector3</a> ()</td></tr>
+<tr class="memdesc:a6e0d09d774615bcfde5645c22a645969"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector destructor. <a href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">More...</a><br /></td></tr>
+<tr class="separator:a6e0d09d774615bcfde5645c22a645969"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85486d0a355417fe4b41fa64146c9e98"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">operator==</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v) const</td></tr>
+<tr class="memdesc:a85486d0a355417fe4b41fa64146c9e98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "equality", taking floating point imprecision into account. <a href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">More...</a><br /></td></tr>
+<tr class="separator:a85486d0a355417fe4b41fa64146c9e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab93acb916c310920b9c011159eaaa016"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">operator!=</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v) const</td></tr>
+<tr class="memdesc:ab93acb916c310920b9c011159eaaa016"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for "inequality", taking floating point imprecision into account. <a href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">More...</a><br /></td></tr>
+<tr class="separator:ab93acb916c310920b9c011159eaaa016"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5b1c05c285fad7f2709f6f351a63608"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">operator=</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:aa5b1c05c285fad7f2709f6f351a63608"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector assignment operator. <a href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">More...</a><br /></td></tr>
+<tr class="separator:aa5b1c05c285fad7f2709f6f351a63608"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa37b1fc4b1df9f72726d981c08cd0d1b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">operator[]</a> (const int i) const</td></tr>
+<tr class="memdesc:aa37b1fc4b1df9f72726d981c08cd0d1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read only access to the ith coordinate of the vector. <a href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">More...</a><br /></td></tr>
+<tr class="separator:aa37b1fc4b1df9f72726d981c08cd0d1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abcdda4627b24af879aba38d4fc0e6f71"><td class="memItemLeft" align="right" valign="top">float &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71">operator[]</a> (const int i)</td></tr>
+<tr class="memdesc:abcdda4627b24af879aba38d4fc0e6f71"><td class="mdescLeft">&#160;</td><td class="mdescRight">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 href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71">More...</a><br /></td></tr>
+<tr class="separator:abcdda4627b24af879aba38d4fc0e6f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac380342bfa614c9a3babe1efd14d2cf4"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a> () const</td></tr>
+<tr class="memdesc:ac380342bfa614c9a3babe1efd14d2cf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">More...</a><br /></td></tr>
+<tr class="separator:ac380342bfa614c9a3babe1efd14d2cf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb74fbc0a970b40abb0db8f8e490ee17"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a> () const</td></tr>
+<tr class="memdesc:aeb74fbc0a970b40abb0db8f8e490ee17"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">More...</a><br /></td></tr>
+<tr class="separator:aeb74fbc0a970b40abb0db8f8e490ee17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78d1dba881575517f0427d55cc418df6"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a> () const</td></tr>
+<tr class="memdesc:a78d1dba881575517f0427d55cc418df6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">More...</a><br /></td></tr>
+<tr class="separator:a78d1dba881575517f0427d55cc418df6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2556298f536ba115019982222ce6e0c5"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a> () const</td></tr>
+<tr class="memdesc:a2556298f536ba115019982222ce6e0c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">In homogeneous coordinates, the w coordinate for all vectors is 0.0. <a href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">More...</a><br /></td></tr>
+<tr class="separator:a2556298f536ba115019982222ce6e0c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31692a459a8056fe220d115eb5addc88"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">Dot</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v) const</td></tr>
+<tr class="memdesc:a31692a459a8056fe220d115eb5addc88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns "this dot v", for example: <a href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">More...</a><br /></td></tr>
+<tr class="separator:a31692a459a8056fe220d115eb5addc88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38cd4deed7d342464619b34b0ef95bec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">Cross</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v) const</td></tr>
+<tr class="memdesc:a38cd4deed7d342464619b34b0ef95bec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns "this cross v", for example: <a href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">More...</a><br /></td></tr>
+<tr class="separator:a38cd4deed7d342464619b34b0ef95bec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7633dc1625b1f2e6b381438e896b45a3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">Length</a> () const</td></tr>
+<tr class="memdesc:a7633dc1625b1f2e6b381438e896b45a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the length of the vector. <a href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">More...</a><br /></td></tr>
+<tr class="separator:a7633dc1625b1f2e6b381438e896b45a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b8e9ecbe10477adec527842f62d0dca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">Normalize</a> ()</td></tr>
+<tr class="memdesc:a9b8e9ecbe10477adec527842f62d0dca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the vector by making it unit length. <a href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">More...</a><br /></td></tr>
+<tr class="separator:a9b8e9ecbe10477adec527842f62d0dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3caef3c6f24b90730ef70c84ce0e0d71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">ToUnit</a> () const</td></tr>
+<tr class="memdesc:a3caef3c6f24b90730ef70c84ce0e0d71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' vector. <a href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">More...</a><br /></td></tr>
+<tr class="separator:a3caef3c6f24b90730ef70c84ce0e0d71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7ddfd662e866c019a772ba66eae7331"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">value_ptr</a> () const</td></tr>
+<tr class="memdesc:aa7ddfd662e866c019a772ba66eae7331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a const pointer to the raw data array. <a href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">More...</a><br /></td></tr>
+<tr class="separator:aa7ddfd662e866c019a772ba66eae7331"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8dafc21c64a4964bac27519972d909b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">Lerp</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b, float alpha) const</td></tr>
+<tr class="memdesc:a8dafc21c64a4964bac27519972d909b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">More...</a><br /></td></tr>
+<tr class="separator:a8dafc21c64a4964bac27519972d909b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a52bf8582baa71e7d6f80c412687d9714"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">Zero</a> ()</td></tr>
+<tr class="memdesc:a52bf8582baa71e7d6f80c412687d9714"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0,0) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">More...</a><br /></td></tr>
+<tr class="separator:a52bf8582baa71e7d6f80c412687d9714"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af71b12760516a9cc4837ba9e1dee28db"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">One</a> ()</td></tr>
+<tr class="memdesc:af71b12760516a9cc4837ba9e1dee28db"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,1,1) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">More...</a><br /></td></tr>
+<tr class="separator:af71b12760516a9cc4837ba9e1dee28db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8d822fdea67f63580b4e1f78f5b8922"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">UnitX</a> ()</td></tr>
+<tr class="memdesc:ae8d822fdea67f63580b4e1f78f5b8922"><td class="mdescLeft">&#160;</td><td class="mdescRight">(1,0,0) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">More...</a><br /></td></tr>
+<tr class="separator:ae8d822fdea67f63580b4e1f78f5b8922"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d31e433d1ac04aaceea1b1dcd1643df"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">UnitY</a> ()</td></tr>
+<tr class="memdesc:a8d31e433d1ac04aaceea1b1dcd1643df"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,1,0) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">More...</a><br /></td></tr>
+<tr class="separator:a8d31e433d1ac04aaceea1b1dcd1643df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b696b0d1143d6e30a34a2f889d2ca61"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">UnitZ</a> ()</td></tr>
+<tr class="memdesc:a4b696b0d1143d6e30a34a2f889d2ca61"><td class="mdescLeft">&#160;</td><td class="mdescRight">(0,0,1) - a shortcut for a special vector that is frequently needed <a href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">More...</a><br /></td></tr>
+<tr class="separator:a4b696b0d1143d6e30a34a2f889d2ca61"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeff0177e2111139469b60733248fad8d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d">Normalize</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:aeff0177e2111139469b60733248fad8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a new vector that is the unit version of v. <a href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d">More...</a><br /></td></tr>
+<tr class="separator:aeff0177e2111139469b60733248fad8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a45d7d211135edd97ca21b047439db485"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485">Cross</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2)</td></tr>
+<tr class="memdesc:a45d7d211135edd97ca21b047439db485"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns v1 cross v2. <a href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485">More...</a><br /></td></tr>
+<tr class="separator:a45d7d211135edd97ca21b047439db485"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a235fb20d4075960d2ce6198dc95ac507"><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507">Dot</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2)</td></tr>
+<tr class="memdesc:a235fb20d4075960d2ce6198dc95ac507"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns v1 dot v2. <a href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507">More...</a><br /></td></tr>
+<tr class="separator:a235fb20d4075960d2ce6198dc95ac507"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a489b042bedf8fa329ac05fe905ca1c6f"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f">Lerp</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b, float alpha)</td></tr>
+<tr class="memdesc:a489b042bedf8fa329ac05fe905ca1c6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. <a href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f">More...</a><br /></td></tr>
+<tr class="separator:a489b042bedf8fa329ac05fe905ca1c6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a7f57af8bbecbc793fa17def4521de4dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7f57af8bbecbc793fa17def4521de4dd">&#9670;&nbsp;</a></span>Vector3() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector3::Vector3 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Default constructor to create zero vector. </p>
+
+</div>
+</div>
+<a id="a256018f34e230d542027d07d14fd6e65"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a256018f34e230d542027d07d14fd6e65">&#9670;&nbsp;</a></span>Vector3() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector3::Vector3 </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. </p>
+
+</div>
+</div>
+<a id="a95b274c7a5ff118af20bc71682c6b1f1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95b274c7a5ff118af20bc71682c6b1f1">&#9670;&nbsp;</a></span>Vector3() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector3::Vector3 </td>
+ <td>(</td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructs a vector given a pointer to x,y,z data. </p>
+
+</div>
+</div>
+<a id="af6100965af7770f833dbf0c9f30f4fdd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6100965af7770f833dbf0c9f30f4fdd">&#9670;&nbsp;</a></span>Vector3() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::Vector3::Vector3 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Copy constructor for vector. </p>
+
+</div>
+</div>
+<a id="a6e0d09d774615bcfde5645c22a645969"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e0d09d774615bcfde5645c22a645969">&#9670;&nbsp;</a></span>~Vector3()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::Vector3::~Vector3 </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Vector destructor. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a38cd4deed7d342464619b34b0ef95bec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38cd4deed7d342464619b34b0ef95bec">&#9670;&nbsp;</a></span>Cross() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::Cross </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns "this cross v", for example: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>(1,0,0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>(0,1,0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a> = <a class="code" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>.Cross(<a class="code" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>);</div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a78d1dba881575517f0427d55cc418df6"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">mingfx::Vector3::z</a></div><div class="ttdeci">float z() const</div><div class="ttdoc">Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00112">vector3.h:112</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_ac380342bfa614c9a3babe1efd14d2cf4"><div class="ttname"><a href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">mingfx::Vector3::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00104">vector3.h:104</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aeb74fbc0a970b40abb0db8f8e490ee17"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">mingfx::Vector3::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00108">vector3.h:108</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a45d7d211135edd97ca21b047439db485"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45d7d211135edd97ca21b047439db485">&#9670;&nbsp;</a></span>Cross() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::Cross </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns v1 cross v2. </p>
+<p>This is just an alternative syntax for <a class="el" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec" title="Returns &quot;this cross v&quot;, for example:">Cross()</a>. Example: ~~~ <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> x(1,0,0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> y(0,1,0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> z1 = Vector3::Cross(x,y); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> z2 = x.Cross(y); z1 and z2 are the same. ~~~ </p>
+
+</div>
+</div>
+<a id="a31692a459a8056fe220d115eb5addc88"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31692a459a8056fe220d115eb5addc88">&#9670;&nbsp;</a></span>Dot() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::Dot </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns "this dot v", for example: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> a(1,0,0);</div>
+<div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> b(0.5,0,0);</div>
+<div class="line"><span class="keywordtype">float</span> c = a.Dot(b);</div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a235fb20d4075960d2ce6198dc95ac507"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a235fb20d4075960d2ce6198dc95ac507">&#9670;&nbsp;</a></span>Dot() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static float mingfx::Vector3::Dot </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns v1 dot v2. </p>
+<p>This is just an alternative syntax for <a class="el" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88" title="Returns &quot;this dot v&quot;, for example:">Dot()</a>. Example: ~~~ <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> a(1,0,0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> b(0.5,0,0); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> c1 = a.Dot(b); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> c2 = Vector3::Dot(a,b); c1 and c2 are the same. ~~~ </p>
+
+</div>
+</div>
+<a id="a7633dc1625b1f2e6b381438e896b45a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7633dc1625b1f2e6b381438e896b45a3">&#9670;&nbsp;</a></span>Length()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::Length </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the length of the vector. </p>
+
+</div>
+</div>
+<a id="a489b042bedf8fa329ac05fe905ca1c6f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a489b042bedf8fa329ac05fe905ca1c6f">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. </p>
+
+</div>
+</div>
+<a id="a8dafc21c64a4964bac27519972d909b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8dafc21c64a4964bac27519972d909b6">&#9670;&nbsp;</a></span>Lerp() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::Lerp </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>alpha</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+</div>
+</div>
+<a id="a9b8e9ecbe10477adec527842f62d0dca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b8e9ecbe10477adec527842f62d0dca">&#9670;&nbsp;</a></span>Normalize() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::Vector3::Normalize </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Normalizes the vector by making it unit length. </p>
+
+</div>
+</div>
+<a id="aeff0177e2111139469b60733248fad8d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeff0177e2111139469b60733248fad8d">&#9670;&nbsp;</a></span>Normalize() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::Normalize </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns a new vector that is the unit version of v. </p>
+<p>This is just an alternative syntax for <a class="el" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71" title="Returns a normalized (i.e., unit length) version of the vector without modifying the original &#39;this&#39; ...">ToUnit()</a>. Example: ~~~ <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> a(100,150,80); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> b = Vector3::Normalize(a); <a class="el" href="classmingfx_1_1_vector3.html" title="A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...">Vector3</a> c = a.ToUnit(); b and c are the same. ~~~ </p>
+
+</div>
+</div>
+<a id="af71b12760516a9cc4837ba9e1dee28db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af71b12760516a9cc4837ba9e1dee28db">&#9670;&nbsp;</a></span>One()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::One </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,1,1) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="ab93acb916c310920b9c011159eaaa016"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab93acb916c310920b9c011159eaaa016">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Vector3::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "inequality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="aa5b1c05c285fad7f2709f6f351a63608"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5b1c05c285fad7f2709f6f351a63608">&#9670;&nbsp;</a></span>operator=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Vector assignment operator. </p>
+
+</div>
+</div>
+<a id="a85486d0a355417fe4b41fa64146c9e98"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85486d0a355417fe4b41fa64146c9e98">&#9670;&nbsp;</a></span>operator==()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::Vector3::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Check for "equality", taking floating point imprecision into account. </p>
+
+</div>
+</div>
+<a id="abcdda4627b24af879aba38d4fc0e6f71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abcdda4627b24af879aba38d4fc0e6f71">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float&amp; mingfx::Vector3::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>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: </p>
+<div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a> a;</div>
+<div class="line">a[0] = 5.0; <span class="comment">// set the x-coordinate of the vector</span></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa37b1fc4b1df9f72726d981c08cd0d1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa37b1fc4b1df9f72726d981c08cd0d1b">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Read only access to the ith coordinate of the vector. </p>
+
+</div>
+</div>
+<a id="a3caef3c6f24b90730ef70c84ce0e0d71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3caef3c6f24b90730ef70c84ce0e0d71">&#9670;&nbsp;</a></span>ToUnit()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::Vector3::ToUnit </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' vector. </p>
+
+</div>
+</div>
+<a id="ae8d822fdea67f63580b4e1f78f5b8922"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8d822fdea67f63580b4e1f78f5b8922">&#9670;&nbsp;</a></span>UnitX()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::UnitX </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(1,0,0) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="a8d31e433d1ac04aaceea1b1dcd1643df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d31e433d1ac04aaceea1b1dcd1643df">&#9670;&nbsp;</a></span>UnitY()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::UnitY </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,1,0) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="a4b696b0d1143d6e30a34a2f889d2ca61"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4b696b0d1143d6e30a34a2f889d2ca61">&#9670;&nbsp;</a></span>UnitZ()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::UnitZ </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0,1) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<a id="aa7ddfd662e866c019a772ba66eae7331"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7ddfd662e866c019a772ba66eae7331">&#9670;&nbsp;</a></span>value_ptr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* mingfx::Vector3::value_ptr </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a const pointer to the raw data array. </p>
+
+</div>
+</div>
+<a id="a2556298f536ba115019982222ce6e0c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2556298f536ba115019982222ce6e0c5">&#9670;&nbsp;</a></span>w()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::w </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>In homogeneous coordinates, the w coordinate for all vectors is 0.0. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector3_8h_source.html#l00115">115</a> of file <a class="el" href="vector3_8h_source.html">vector3.h</a>.</p>
+
+</div>
+</div>
+<a id="ac380342bfa614c9a3babe1efd14d2cf4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac380342bfa614c9a3babe1efd14d2cf4">&#9670;&nbsp;</a></span>x()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector3_8h_source.html#l00104">104</a> of file <a class="el" href="vector3_8h_source.html">vector3.h</a>.</p>
+
+</div>
+</div>
+<a id="aeb74fbc0a970b40abb0db8f8e490ee17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeb74fbc0a970b40abb0db8f8e490ee17">&#9670;&nbsp;</a></span>y()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector3_8h_source.html#l00108">108</a> of file <a class="el" href="vector3_8h_source.html">vector3.h</a>.</p>
+
+</div>
+</div>
+<a id="a78d1dba881575517f0427d55cc418df6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a78d1dba881575517f0427d55cc418df6">&#9670;&nbsp;</a></span>z()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float mingfx::Vector3::z </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>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. </p>
+
+<p class="definition">Definition at line <a class="el" href="vector3_8h_source.html#l00112">112</a> of file <a class="el" href="vector3_8h_source.html">vector3.h</a>.</p>
+
+</div>
+</div>
+<a id="a52bf8582baa71e7d6f80c412687d9714"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52bf8582baa71e7d6f80c412687d9714">&#9670;&nbsp;</a></span>Zero()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; mingfx::Vector3::Zero </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>(0,0,0) - a shortcut for a special vector that is frequently needed </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="vector3_8h_source.html">vector3.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dev/MinGfx/docs/html/closed.png b/dev/MinGfx/docs/html/closed.png
new file mode 100644
index 0000000..11c68ad
--- /dev/null
+++ b/dev/MinGfx/docs/html/closed.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/color.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">color.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+</div>
+<p><a href="color_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html">mingfx::Color</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL. <a href="classmingfx_1_1_color.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a6bc967741341f4f318a505d884192906"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Color &amp;c)</td></tr>
+<tr class="separator:a6bc967741341f4f318a505d884192906"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6eb31e6e81c6e29144799be4c9db404d"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Color &amp;c)</td></tr>
+<tr class="separator:a6eb31e6e81c6e29144799be4c9db404d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/color.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">color.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="color_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_COLOR_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_COLOR_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_color.html">Color</a> {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>: </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d"> 44</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">Color</a>();</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3"> 47</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3">Color</a>(<span class="keywordtype">float</span> red, <span class="keywordtype">float</span> green, <span class="keywordtype">float</span> blue, <span class="keywordtype">float</span> alpha=1.0);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e"> 50</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e">Color</a>(<span class="keywordtype">float</span> *p);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9"> 53</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9">Color</a>(<span class="keyword">const</span> std::vector&lt;float&gt; &amp;vals);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a"> 56</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a">Color</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a>&amp; p);</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378"> 59</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">~Color</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0"> 62</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244"> 65</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e"> 68</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a>&amp; <a class="code" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a>&amp; p);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500"> 71</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc"> 74</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0"> 77</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b"> 79</a></span>&#160; std::vector&lt;float&gt; <a class="code" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">ToVector</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4"> 84</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;b, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363"> 89</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">float</span> c[4];</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906"> 97</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;c);</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d"> 98</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;c);</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;} <span class="comment">// namespace</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_a474ed028db8b31e359d8bfec50147bcc"><div class="ttname"><a href="classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc">mingfx::Color::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Accesses the ith coordinate of the color, stored in RGBA order.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_a5411077527ff2a12d18ce1ae52688cf0"><div class="ttname"><a href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">mingfx::Color::operator==</a></div><div class="ttdeci">bool operator==(const Color &amp;p) const</div><div class="ttdoc">Check for equality.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_a7e0ca85141895a108c852f59f7ca00b9"><div class="ttname"><a href="classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9">mingfx::Color::Color</a></div><div class="ttdeci">Color(const std::vector&lt; float &gt; &amp;vals)</div><div class="ttdoc">Constructs a point given a 3 or 4-element vector of floats.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_a81b442b8afcd157c260487081f25dcc3"><div class="ttname"><a href="classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3">mingfx::Color::Color</a></div><div class="ttdeci">Color(float red, float green, float blue, float alpha=1.0)</div><div class="ttdoc">Constructs a color. Alpha defaults to 1.0 (completely opaque)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_a883787431fef36c06c724c3b9ed25363"><div class="ttname"><a href="classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363">mingfx::Color::Lerp</a></div><div class="ttdeci">static Color Lerp(const Color &amp;a, const Color &amp;b, float alpha)</div><div class="ttdoc">Linear interpolation between two colors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_aa3a93033db8e00aff817a125eb5b54a0"><div class="ttname"><a href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">mingfx::Color::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_aa879c4f6e90c419a2c121e323ce31500"><div class="ttname"><a href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">mingfx::Color::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Accesses the ith component of the color, stored in RGBA order.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ab1a90432dd7fd7b2adf41d747be85378"><div class="ttname"><a href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">mingfx::Color::~Color</a></div><div class="ttdeci">virtual ~Color()</div><div class="ttdoc">Color destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ab4d264b5a1189b73443948c01eab088d"><div class="ttname"><a href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">mingfx::Color::Color</a></div><div class="ttdeci">Color()</div><div class="ttdoc">Defaults to black.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ab4d6c067128e779add5390d83ea3410e"><div class="ttname"><a href="classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e">mingfx::Color::Color</a></div><div class="ttdeci">Color(float *p)</div><div class="ttdoc">Constructs a point given a pointer to float array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_abdec9bbfdd82ed75afc45b103c8bbcf4"><div class="ttname"><a href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">mingfx::Color::Lerp</a></div><div class="ttdeci">Color Lerp(const Color &amp;b, float alpha) const</div><div class="ttdoc">Linear interpolation between this color and another. Alpha=0.0 returns this color,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_accb83cd759b7290ce2817724d57e246a"><div class="ttname"><a href="classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a">mingfx::Color::Color</a></div><div class="ttdeci">Color(const Color &amp;p)</div><div class="ttdoc">Copy constructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_acf92f9f413cf11639b73dc0d7d431244"><div class="ttname"><a href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">mingfx::Color::operator!=</a></div><div class="ttdeci">bool operator!=(const Color &amp;p) const</div><div class="ttdoc">Check for inequality.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ae51a066a9bb018e4f050d9b8cc7f330e"><div class="ttname"><a href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">mingfx::Color::operator=</a></div><div class="ttdeci">Color &amp; operator=(const Color &amp;p)</div><div class="ttdoc">Assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html_ae7371e464c4af7ac93d9edd4c0772c2b"><div class="ttname"><a href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">mingfx::Color::ToVector</a></div><div class="ttdeci">std::vector&lt; float &gt; ToVector() const</div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/craft_cam.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">craft_cam.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector2_8h_source.html">vector2.h</a>&quot;</code><br />
+</div>
+<p><a href="craft__cam_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This implements a user interface for controlling the camera with the mouse. <a href="classmingfx_1_1_craft_cam.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/craft_cam.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">craft_cam.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="craft__cam_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_CRAFT_CAM_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_CRAFT_CAM_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html"> 79</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_craft_cam.html">CraftCam</a> {</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171"> 83</a></span>&#160; <a class="code" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">CraftCam</a>();</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f"> 86</a></span>&#160; <a class="code" href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f">CraftCam</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;initial_view_matrix);</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff"> 88</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">~CraftCam</a>();</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// To make the interaction work, the following set of functions need to be</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// called from your GraphicsApp or whatever main application class you use</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// to receive user input events and a draw callback.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7"> 104</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">UpdateSimulation</a>(<span class="keywordtype">double</span> dt, GLFWwindow *window_ptr);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311"> 125</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">OnMouseMove</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;normalized_mouse_delta);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36"> 137</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a>();</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150"> 142</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">eye</a>();</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859"> 146</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">look</a>();</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b"> 153</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">UpdateHeight</a>(<span class="keywordtype">float</span> new_y_value);</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// -------------</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8"> 160</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">set_view_matrix</a>(<a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">view_matrix</a>);</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2"> 167</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">translation_scale</a>();</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7"> 173</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">set_translation_scale</a>(<span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac"> 179</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">rotation_scale</a>();</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
+<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831"> 185</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">set_rotation_scale</a>(<span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb"> 190</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">look_scale</a>();</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44"> 195</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">set_look_scale</a>(<span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">void</span> WalkForward(<span class="keywordtype">double</span> dt);</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> WalkBackward(<span class="keywordtype">double</span> dt);</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">void</span> RotateLeft(<span class="keywordtype">double</span> dt);</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">void</span> RotateRight(<span class="keywordtype">double</span> dt);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">void</span> LookWithMouse(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;mouse_delta);</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">float</span> t_scale_;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">float</span> r_scale_;</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">float</span> l_scale_;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">float</span> yaw_;</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">float</span> pitch_;</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> base_head_;</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> added_rot_;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;};</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html">mingfx::CraftCam</a></div><div class="ttdoc">This implements a user interface for controlling the camera with the mouse.</div><div class="ttdef"><b>Definition:</b> <a href="craft__cam_8h_source.html#l00079">craft_cam.h:79</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a15092ae5de6920546e3ce79aeb196f44"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">mingfx::CraftCam::set_look_scale</a></div><div class="ttdeci">void set_look_scale(float s)</div><div class="ttdoc">This is the scale factor used to speed up / slow down looking around when moving the head with the mo...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a151fde09d08001ee2a615f25ec1acea7"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">mingfx::CraftCam::set_translation_scale</a></div><div class="ttdeci">void set_translation_scale(float s)</div><div class="ttdoc">This is the scale factor used to speed up / slow down forward/backward translation when walking for t...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a2b7808e489933b117583cf709fa46bc7"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">mingfx::CraftCam::UpdateSimulation</a></div><div class="ttdeci">void UpdateSimulation(double dt, GLFWwindow *window_ptr)</div><div class="ttdoc">Call this from your app's UpdateSimulation() method. This tells the camera to simulate walking based ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a2c7546bccfbf986eb9cd0a2784f74859"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">mingfx::CraftCam::look</a></div><div class="ttdeci">Vector3 look()</div><div class="ttdoc">Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a352f5a42f6e88d2e599bd5acb42e5831"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">mingfx::CraftCam::set_rotation_scale</a></div><div class="ttdeci">void set_rotation_scale(float s)</div><div class="ttdoc">This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT /...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a79a194be8675a0a968f14fe3dcd79da8"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">mingfx::CraftCam::set_view_matrix</a></div><div class="ttdeci">void set_view_matrix(Matrix4 view_matrix)</div><div class="ttdoc">This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a82a8e20596247e2986e5929c1ef7f150"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">mingfx::CraftCam::eye</a></div><div class="ttdeci">Point3 eye()</div><div class="ttdoc">Returns the &quot;eye&quot; point (i.e., focal point) of the camera in world space coordinates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a8366e9d8e9bb3b048d1dd14af2f76311"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">mingfx::CraftCam::OnMouseMove</a></div><div class="ttdeci">void OnMouseMove(const Vector2 &amp;normalized_mouse_delta)</div><div class="ttdoc">Call this from your app's OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a85ef9bebdd1595be1288bc104245f4ff"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">mingfx::CraftCam::~CraftCam</a></div><div class="ttdeci">virtual ~CraftCam()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a93567af7acbae2939d57cfd8a72bcef2"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">mingfx::CraftCam::translation_scale</a></div><div class="ttdeci">float translation_scale()</div><div class="ttdoc">This is the scale factor used to speed up / slow down forward/backward translation when walking for t...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a96ba4a36029ca8234576cbf2791c5ccb"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">mingfx::CraftCam::look_scale</a></div><div class="ttdeci">float look_scale()</div><div class="ttdoc">This is the scale factor used to speed up / slow down looking around when moving the head with the mo...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_a9fe22cc3b933b12674a5b8f1b5c834ac"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">mingfx::CraftCam::rotation_scale</a></div><div class="ttdeci">float rotation_scale()</div><div class="ttdoc">This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT /...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_ab9e1864b5859c22d27ba809b1ba7a51f"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f">mingfx::CraftCam::CraftCam</a></div><div class="ttdeci">CraftCam(const Matrix4 &amp;initial_view_matrix)</div><div class="ttdoc">Creates a CraftCam object with the supplied initial view matrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_acccdadc08d8d8a0b7b9426f18209ff36"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">mingfx::CraftCam::view_matrix</a></div><div class="ttdeci">Matrix4 view_matrix()</div><div class="ttdoc">Access the camera view matrix created by the CraftCam interactions via this method and use it to draw...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_ae0b0e8d75ffc69c6373a13f1f9c2f171"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">mingfx::CraftCam::CraftCam</a></div><div class="ttdeci">CraftCam()</div><div class="ttdoc">Creates a CraftCam object with an initial view matrix = identity.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_craft_cam_html_ae3d9c7ea9307dbbadaa4b6e2f9933a7b"><div class="ttname"><a href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">mingfx::CraftCam::UpdateHeight</a></div><div class="ttdeci">void UpdateHeight(float new_y_value)</div><div class="ttdoc">Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/default_shader.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">default_shader.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mesh_8h_source.html">mesh.h</a>&quot;</code><br />
+</div>
+<p><a href="default__shader_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple GLSL shader for textured per-fragment Phong shading with multiple light sources. <a href="classmingfx_1_1_default_shader.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Small data structure to hold properties of the material to be lit. <a href="classmingfx_1_1_default_shader_1_1_material_properties.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Small data structure to hold per-light properties. <a href="classmingfx_1_1_default_shader_1_1_light_properties.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/default_shader.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">default_shader.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="default__shader_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_DEFAULT_SHADER_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_DEFAULT_SHADER_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shader__program_8h.html">shader_program.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture2d_8h.html">texture2d.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mesh_8h.html">mesh.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html"> 62</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_default_shader.html">DefaultShader</a> {</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24"> 66</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a> = 10;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html"> 70</a></span>&#160; <span class="keyword">class </span><a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657"> 72</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">ambient_reflectance</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f"> 73</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">diffuse_reflectance</a>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c"> 74</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">specular_reflectance</a>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13"> 75</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">shinniness</a>;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e"> 76</a></span>&#160; <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">surface_texture</a>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// eventually, this might include a normal map, etc.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// defaults</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96"> 80</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">MaterialProperties</a>() :</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">ambient_reflectance</a>(0.25f, 0.25f, 0.25f),</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">diffuse_reflectance</a>(0.6f, 0.6f, 0.6f),</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">specular_reflectance</a>(0.4f, 0.4f, 0.4f),</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">shinniness</a>(20.0f) {}</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; };</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html"> 88</a></span>&#160; <span class="keyword">class </span><a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> {</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e"> 90</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">position</a>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb"> 91</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">ambient_intensity</a>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7"> 92</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">diffuse_intensity</a>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4"> 93</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">specular_intensity</a>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// defaults</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3"> 96</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">LightProperties</a>() :</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">position</a>(10.0f, 10.0f, 10.0f),</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">ambient_intensity</a>(0.25f, 0.25f, 0.25f),</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">diffuse_intensity</a>(0.6f, 0.6f, 0.6f),</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">specular_intensity</a>(0.6f, 0.6f, 0.6f) {}</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; };</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428"> 106</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">DefaultShader</a>(<span class="keywordtype">bool</span> add_default_light=<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba"> 108</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">~DefaultShader</a>();</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c"> 112</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">AddLight</a>(<a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> <a class="code" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6"> 115</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">SetLight</a>(<span class="keywordtype">int</span> i, <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> <a class="code" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>);</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3"> 124</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">Init</a>();</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b"> 130</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">Draw</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection,</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> *mesh, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;material);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0"> 138</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">UseProgram</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection,</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html">MaterialProperties</a> &amp;material);</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67"> 143</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">StopProgram</a>();</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2"> 146</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">num_lights</a>();</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316"> 148</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_light_properties.html">LightProperties</a> <a class="code" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">light</a>(<span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; std::vector&lt;LightProperties&gt; lights_;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// cached raw float arrays store data to send directly to the gpu</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// GLSL requires fixed size arrays for these</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">float</span> lightPositions_[3*<a class="code" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a>];</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">float</span> lightIas_[4*<a class="code" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a>];</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">float</span> lightIds_[4*<a class="code" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a>];</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">float</span> lightIss_[4*<a class="code" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">MAX_LIGHTS</a>];</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> update_light_arrays();</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> phongShader_;</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;};</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html">mingfx::DefaultShader::LightProperties</a></div><div class="ttdoc">Small data structure to hold per-light properties.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00088">default_shader.h:88</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html_a160b58a0e70294008b9dac8eb6291d3e"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">mingfx::DefaultShader::LightProperties::position</a></div><div class="ttdeci">Point3 position</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00090">default_shader.h:90</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html_a226c173b193459af291687dd45280fbb"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">mingfx::DefaultShader::LightProperties::ambient_intensity</a></div><div class="ttdeci">Color ambient_intensity</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00091">default_shader.h:91</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html_a582ceee332260b06cbf2ec607257aba3"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">mingfx::DefaultShader::LightProperties::LightProperties</a></div><div class="ttdeci">LightProperties()</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00096">default_shader.h:96</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html_a9a010057c15e3db5661b07a03d5176d7"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">mingfx::DefaultShader::LightProperties::diffuse_intensity</a></div><div class="ttdeci">Color diffuse_intensity</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00092">default_shader.h:92</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_light_properties_html_abef7666629dbb9da661b163e0584c9a4"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">mingfx::DefaultShader::LightProperties::specular_intensity</a></div><div class="ttdeci">Color specular_intensity</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00093">default_shader.h:93</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></div><div class="ttdoc">Small data structure to hold properties of the material to be lit.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00070">default_shader.h:70</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_aa24361a9c6eb0a87355d0ad00e47dd96"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">mingfx::DefaultShader::MaterialProperties::MaterialProperties</a></div><div class="ttdeci">MaterialProperties()</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00080">default_shader.h:80</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_aa7b75f95a45d7a1030c297192b14014f"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">mingfx::DefaultShader::MaterialProperties::diffuse_reflectance</a></div><div class="ttdeci">Color diffuse_reflectance</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00073">default_shader.h:73</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_acfd78796e08f527a24cce3c1e206148c"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">mingfx::DefaultShader::MaterialProperties::specular_reflectance</a></div><div class="ttdeci">Color specular_reflectance</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00074">default_shader.h:74</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_ad4db9a1b0636db84f57f022c51ce7657"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">mingfx::DefaultShader::MaterialProperties::ambient_reflectance</a></div><div class="ttdeci">Color ambient_reflectance</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00072">default_shader.h:72</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_ad77e4c78a2bf60776c673b91bc4c8a13"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">mingfx::DefaultShader::MaterialProperties::shinniness</a></div><div class="ttdeci">float shinniness</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00075">default_shader.h:75</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html_ae26eed46a279c73e947880858763514e"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">mingfx::DefaultShader::MaterialProperties::surface_texture</a></div><div class="ttdeci">Texture2D surface_texture</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00076">default_shader.h:76</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html"><div class="ttname"><a href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></div><div class="ttdoc">A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00062">default_shader.h:62</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a053599d8c7acd9920461aab8ce945ab0"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">mingfx::DefaultShader::UseProgram</a></div><div class="ttdeci">void UseProgram(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, const MaterialProperties &amp;material)</div><div class="ttdoc">Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the D...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a0fe7d605d039ecdbf17837bc5bbe0aba"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">mingfx::DefaultShader::~DefaultShader</a></div><div class="ttdeci">virtual ~DefaultShader()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a21c1fd93273eaf643e7ac9b05ba0fb24"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">mingfx::DefaultShader::MAX_LIGHTS</a></div><div class="ttdeci">static const unsigned int MAX_LIGHTS</div><div class="ttdoc">If changed, this needs to also be changed in the glsl shader code.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00066">default_shader.h:66</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a2c188bc0fc5f7fc7405f04b036bd4d67"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">mingfx::DefaultShader::StopProgram</a></div><div class="ttdeci">void StopProgram()</div><div class="ttdoc">Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your ge...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a41e74fb8af72a6b22c72b0916726b6d6"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">mingfx::DefaultShader::SetLight</a></div><div class="ttdeci">void SetLight(int i, LightProperties light)</div><div class="ttdoc">Changes the properties for a light that was already added.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a5cb9f0a1709452268858ec338448a4c3"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">mingfx::DefaultShader::Init</a></div><div class="ttdeci">void Init()</div><div class="ttdoc">This loads vertex and fragment shaders from files, compiles them, and links them. So,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_a652b3d00bb6ae2a806b1ca3e3d42242b"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">mingfx::DefaultShader::Draw</a></div><div class="ttdeci">void Draw(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, Mesh *mesh, const MaterialProperties &amp;material)</div><div class="ttdoc">This starts the shader and sets its uniform variables based upon the current set of lights,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_aa2ed33efad35aefbb400be45250cd316"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">mingfx::DefaultShader::light</a></div><div class="ttdeci">LightProperties light(int i)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_ac030575fd76a6076262bdd09bbb93428"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">mingfx::DefaultShader::DefaultShader</a></div><div class="ttdeci">DefaultShader(bool add_default_light=true)</div><div class="ttdoc">The constructor defaults to adding a single white light to the scene at (10,10,10)....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_ac5b779672a983df8aa67c9cbe026e0c2"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">mingfx::DefaultShader::num_lights</a></div><div class="ttdeci">int num_lights()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html_af54a8e489d9fb34cfceb1c07562c6e2c"><div class="ttname"><a href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">mingfx::DefaultShader::AddLight</a></div><div class="ttdeci">void AddLight(LightProperties light)</div><div class="ttdoc">Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html"><div class="ttname"><a href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></div><div class="ttdoc">A wrapper around GLSL shader programs.</div><div class="ttdef"><b>Definition:</b> <a href="shader__program_8h_source.html#l00066">shader_program.h:66</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></div><div class="ttdoc">A wrapper around a 2D texture that supports loading images from files or setting texture color data d...</div><div class="ttdef"><b>Definition:</b> <a href="texture2d_8h_source.html#l00042">texture2d.h:42</a></div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="amesh_8h_html"><div class="ttname"><a href="mesh_8h.html">mesh.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="ashader__program_8h_html"><div class="ttname"><a href="shader__program_8h.html">shader_program.h</a></div></div>
+<div class="ttc" id="atexture2d_8h_html"><div class="ttname"><a href="texture2d_8h.html">texture2d.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">src Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:aabb_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aabb_8h.html">aabb.h</a> <a href="aabb_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:bvh_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bvh_8h.html">bvh.h</a> <a href="bvh_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:color_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color_8h.html">color.h</a> <a href="color_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:craft__cam_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="craft__cam_8h.html">craft_cam.h</a> <a href="craft__cam_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:default__shader_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="default__shader_8h.html">default_shader.h</a> <a href="default__shader_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gfxmath_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gfxmath_8h.html">gfxmath.h</a> <a href="gfxmath_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:graphics__app_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="graphics__app_8h.html">graphics_app.h</a> <a href="graphics__app_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:matrix4_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix4_8h.html">matrix4.h</a> <a href="matrix4_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:mesh_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mesh_8h.html">mesh.h</a> <a href="mesh_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:mingfx_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx_8h.html">mingfx.h</a> <a href="mingfx_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:mingfx_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Includes the entire MinGfx library and calls using namespace mingfx. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:mingfx__config_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx__config_8h.html">mingfx_config.h</a> <a href="mingfx__config_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:opengl__headers_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="opengl__headers_8h.html">opengl_headers.h</a> <a href="opengl__headers_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:platform_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="platform_8h.html">platform.h</a> <a href="platform_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:point2_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="point2_8h.html">point2.h</a> <a href="point2_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:point3_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="point3_8h.html">point3.h</a> <a href="point3_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:quaternion_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="quaternion_8h.html">quaternion.h</a> <a href="quaternion_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:quick__shapes_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="quick__shapes_8h.html">quick_shapes.h</a> <a href="quick__shapes_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ray_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ray_8h.html">ray.h</a> <a href="ray_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:shader__program_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="shader__program_8h.html">shader_program.h</a> <a href="shader__program_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:stb__rect__pack_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html">stb_rect_pack.h</a> <a href="stb__rect__pack_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:text__shader_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text__shader_8h.html">text_shader.h</a> <a href="text__shader_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:texture2d_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="texture2d_8h.html">texture2d.h</a> <a href="texture2d_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:unicam_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unicam_8h.html">unicam.h</a> <a href="unicam_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:vector2_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vector2_8h.html">vector2.h</a> <a href="vector2_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:vector3_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vector3_8h.html">vector3.h</a> <a href="vector3_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: doc Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_e68e8157741866f444e17edd764ebbae.html">doc</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">doc Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dev/MinGfx/docs/html/doc.png b/dev/MinGfx/docs/html/doc.png
new file mode 100644
index 0000000..7728f70
--- /dev/null
+++ b/dev/MinGfx/docs/html/doc.png
Binary files 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="a">
+ <stop stop-color="#707070" offset="0"/>
+ <stop stop-color="#909090" offset="1"/>
+ </linearGradient>
+ <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#C8C8C8" offset="0"/>
+ <stop stop-color="#F0F0F0" offset="1"/>
+ </linearGradient>
+ <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+ <feGaussianBlur stdDeviation="0.45293203"/>
+ </filter>
+ </defs>
+ <g>
+ <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
+ <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+ <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#606060" stroke-width=".7"/>
+ <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+ <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
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<level+1) {
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+ a.html('&#9660;');
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+ a.html('&#9658;');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ // the clicked row
+ var currentRow = $('#row_'+id);
+
+ // all rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+ // only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() { return this.id.match(re); });
+
+ // first row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ currentRowSpans.filter(".arrow").html('&#9658;');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+ currentRowSpans.filter(".arrow").html('&#9660;');
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ childRowsSpans.filter(".arrow").html('&#9658;');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+/* @license-end */
+
+$(document).ready(function() {
+ $('.code,.codeRef').each(function() {
+ $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
+ $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
+ });
+});
diff --git a/dev/MinGfx/docs/html/files.html b/dev/MinGfx/docs/html/files.html
new file mode 100644
index 0000000..37a546d
--- /dev/null
+++ b/dev/MinGfx/docs/html/files.html
@@ -0,0 +1,118 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="iconfclosed"></span><a class="el" href="dir_e68e8157741866f444e17edd764ebbae.html" target="_self">doc</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="aabb_8h_source.html"><span class="icondoc"></span></a><a class="el" href="aabb_8h.html" target="_self">aabb.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="bvh_8h_source.html"><span class="icondoc"></span></a><a class="el" href="bvh_8h.html" target="_self">bvh.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="color_8h_source.html"><span class="icondoc"></span></a><a class="el" href="color_8h.html" target="_self">color.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="craft__cam_8h_source.html"><span class="icondoc"></span></a><a class="el" href="craft__cam_8h.html" target="_self">craft_cam.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="default__shader_8h_source.html"><span class="icondoc"></span></a><a class="el" href="default__shader_8h.html" target="_self">default_shader.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="gfxmath_8h_source.html"><span class="icondoc"></span></a><a class="el" href="gfxmath_8h.html" target="_self">gfxmath.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="graphics__app_8h_source.html"><span class="icondoc"></span></a><a class="el" href="graphics__app_8h.html" target="_self">graphics_app.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="matrix4_8h_source.html"><span class="icondoc"></span></a><a class="el" href="matrix4_8h.html" target="_self">matrix4.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="mesh_8h_source.html"><span class="icondoc"></span></a><a class="el" href="mesh_8h.html" target="_self">mesh.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="mingfx_8h_source.html"><span class="icondoc"></span></a><a class="el" href="mingfx_8h.html" target="_self">mingfx.h</a></td><td class="desc">Includes the entire MinGfx library and calls using namespace mingfx </td></tr>
+<tr id="row_1_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="mingfx__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="mingfx__config_8h.html" target="_self">mingfx_config.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="opengl__headers_8h_source.html"><span class="icondoc"></span></a><a class="el" href="opengl__headers_8h.html" target="_self">opengl_headers.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_12_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="platform_8h_source.html"><span class="icondoc"></span></a><a class="el" href="platform_8h.html" target="_self">platform.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_13_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="point2_8h_source.html"><span class="icondoc"></span></a><a class="el" href="point2_8h.html" target="_self">point2.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_14_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="point3_8h_source.html"><span class="icondoc"></span></a><a class="el" href="point3_8h.html" target="_self">point3.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_15_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="quaternion_8h_source.html"><span class="icondoc"></span></a><a class="el" href="quaternion_8h.html" target="_self">quaternion.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_16_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="quick__shapes_8h_source.html"><span class="icondoc"></span></a><a class="el" href="quick__shapes_8h.html" target="_self">quick_shapes.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_17_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ray_8h_source.html"><span class="icondoc"></span></a><a class="el" href="ray_8h.html" target="_self">ray.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_18_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="shader__program_8h_source.html"><span class="icondoc"></span></a><a class="el" href="shader__program_8h.html" target="_self">shader_program.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_19_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="stb__rect__pack_8h_source.html"><span class="icondoc"></span></a><a class="el" href="stb__rect__pack_8h.html" target="_self">stb_rect_pack.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_20_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="text__shader_8h_source.html"><span class="icondoc"></span></a><a class="el" href="text__shader_8h.html" target="_self">text_shader.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_21_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="texture2d_8h_source.html"><span class="icondoc"></span></a><a class="el" href="texture2d_8h.html" target="_self">texture2d.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_22_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="unicam_8h_source.html"><span class="icondoc"></span></a><a class="el" href="unicam_8h.html" target="_self">unicam.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_23_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="vector2_8h_source.html"><span class="icondoc"></span></a><a class="el" href="vector2_8h.html" target="_self">vector2.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_24_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="vector3_8h_source.html"><span class="icondoc"></span></a><a class="el" href="vector3_8h.html" target="_self">vector3.h</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dev/MinGfx/docs/html/folderclosed.png b/dev/MinGfx/docs/html/folderclosed.png
new file mode 100644
index 0000000..44c8755
--- /dev/null
+++ b/dev/MinGfx/docs/html/folderclosed.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/folderopen.png b/dev/MinGfx/docs/html/folderopen.png
new file mode 100644
index 0000000..ed88e79
--- /dev/null
+++ b/dev/MinGfx/docs/html/folderopen.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_a"></a>- a -</h3><ul>
+<li>AABB()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">mingfx::AABB</a>
+</li>
+<li>active_head
+: <a class="el" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">stbrp_context</a>
+</li>
+<li>AddFragmentShaderFromFile()
+: <a class="el" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">mingfx::ShaderProgram</a>
+</li>
+<li>AddFragmentShaderFromSource()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">mingfx::ShaderProgram</a>
+</li>
+<li>AddLight()
+: <a class="el" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">mingfx::DefaultShader</a>
+</li>
+<li>AddTriangle()
+: <a class="el" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">mingfx::Mesh</a>
+</li>
+<li>AddVertexShaderFromFile()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">mingfx::ShaderProgram</a>
+</li>
+<li>AddVertexShaderFromSource()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">mingfx::ShaderProgram</a>
+</li>
+<li>AdvanceAnimation()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">mingfx::UniCam</a>
+</li>
+<li>Align()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">mingfx::Matrix4</a>
+</li>
+<li>align
+: <a class="el" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">stbrp_context</a>
+</li>
+<li>ambient_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>ambient_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>aspect_ratio()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_b"></a>- b -</h3><ul>
+<li>BindTexture()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">mingfx::ShaderProgram</a>
+</li>
+<li>BuildBVH()
+: <a class="el" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">mingfx::Mesh</a>
+</li>
+<li>BVH()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">mingfx::BVH</a>
+</li>
+<li>bvh_ptr()
+: <a class="el" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">mingfx::Mesh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_c"></a>- c -</h3><ul>
+<li>CalcPerFaceNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">mingfx::Mesh</a>
+</li>
+<li>CalcPerVertexNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">mingfx::Mesh</a>
+</li>
+<li>Clamp()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">mingfx::GfxMath</a>
+</li>
+<li>ClosestPoint()
+: <a class="el" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">mingfx::Point3</a>
+</li>
+<li>ClosestPointOnPlane()
+: <a class="el" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">mingfx::Point3</a>
+</li>
+<li>Cofactor()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">mingfx::Matrix4</a>
+</li>
+<li>Color()
+: <a class="el" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">mingfx::Color</a>
+</li>
+<li>color
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">mingfx::TextShader::TextFormat</a>
+</li>
+<li>ColumnToPoint3()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">mingfx::Matrix4</a>
+</li>
+<li>ColumnToVector3()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">mingfx::Matrix4</a>
+</li>
+<li>Conjugate()
+: <a class="el" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">mingfx::Quaternion</a>
+</li>
+<li>CraftCam()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">mingfx::CraftCam</a>
+</li>
+<li>CreateFromListOfBoxes()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">mingfx::BVH</a>
+</li>
+<li>CreateFromMesh()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">mingfx::BVH</a>
+</li>
+<li>Cross()
+: <a class="el" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_d"></a>- d -</h3><ul>
+<li>default_shader()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">mingfx::QuickShapes</a>
+</li>
+<li>DefaultShader()
+: <a class="el" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">mingfx::DefaultShader</a>
+</li>
+<li>Determinant()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">mingfx::Matrix4</a>
+</li>
+<li>diffuse_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>diffuse_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>Dimensions()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">mingfx::AABB</a>
+</li>
+<li>direction()
+: <a class="el" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">mingfx::Ray</a>
+</li>
+<li>DistanceToPlane()
+: <a class="el" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">mingfx::Point3</a>
+</li>
+<li>Dot()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">mingfx::Vector3</a>
+</li>
+<li>Draw()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">mingfx::Mesh</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">mingfx::UniCam</a>
+</li>
+<li>Draw3D()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">mingfx::TextShader</a>
+</li>
+<li>DrawArrow()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">mingfx::QuickShapes</a>
+</li>
+<li>DrawAxes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">mingfx::QuickShapes</a>
+</li>
+<li>DrawBrush()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">mingfx::QuickShapes</a>
+</li>
+<li>DrawCone()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">mingfx::QuickShapes</a>
+</li>
+<li>DrawCube()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">mingfx::QuickShapes</a>
+</li>
+<li>DrawCylinder()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">mingfx::QuickShapes</a>
+</li>
+<li>DrawFullscreenTexture()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">mingfx::QuickShapes</a>
+</li>
+<li>DrawLines()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">mingfx::QuickShapes</a>
+</li>
+<li>DrawLineSegment()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">mingfx::QuickShapes</a>
+</li>
+<li>DrawSphere()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">mingfx::QuickShapes</a>
+</li>
+<li>DrawSquare()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">mingfx::QuickShapes</a>
+</li>
+<li>DrawUsingNanoVG()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp</a>
+</li>
+<li>DrawUsingOpenGL()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_e"></a>- e -</h3><ul>
+<li>extra
+: <a class="el" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">stbrp_context</a>
+</li>
+<li>eye()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">mingfx::UniCam</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Enumerations</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>HorizAlign
+: <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">mingfx::TextShader</a>
+</li>
+<li>LinesType
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">mingfx::QuickShapes</a>
+</li>
+<li>VertAlign
+: <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">mingfx::TextShader</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_f"></a>- f -</h3><ul>
+<li>FastIntersectMesh()
+: <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">mingfx::Ray</a>
+</li>
+<li>FileExists()
+: <a class="el" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">mingfx::Platform</a>
+</li>
+<li>filter_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">mingfx::Texture2D</a>
+</li>
+<li>FindFile()
+: <a class="el" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">mingfx::Platform</a>
+</li>
+<li>FindMinGfxDataFile()
+: <a class="el" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">mingfx::Platform</a>
+</li>
+<li>FindMinGfxShaderFile()
+: <a class="el" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">mingfx::Platform</a>
+</li>
+<li>framebuffer_height()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">mingfx::GraphicsApp</a>
+</li>
+<li>framebuffer_width()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">mingfx::GraphicsApp</a>
+</li>
+<li>free_head
+: <a class="el" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">stbrp_context</a>
+</li>
+<li>FromAxisAngle()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">mingfx::Quaternion</a>
+</li>
+<li>FromEulerAnglesZYX()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">mingfx::Quaternion</a>
+</li>
+<li>FromRowMajorElements()
+: <a class="el" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">mingfx::Matrix4</a>
+</li>
+<li>Frustum()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_a"></a>- a -</h3><ul>
+<li>AABB()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb">mingfx::AABB</a>
+</li>
+<li>AddFragmentShaderFromFile()
+: <a class="el" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">mingfx::ShaderProgram</a>
+</li>
+<li>AddFragmentShaderFromSource()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">mingfx::ShaderProgram</a>
+</li>
+<li>AddLight()
+: <a class="el" href="classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c">mingfx::DefaultShader</a>
+</li>
+<li>AddTriangle()
+: <a class="el" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">mingfx::Mesh</a>
+</li>
+<li>AddVertexShaderFromFile()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">mingfx::ShaderProgram</a>
+</li>
+<li>AddVertexShaderFromSource()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">mingfx::ShaderProgram</a>
+</li>
+<li>AdvanceAnimation()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">mingfx::UniCam</a>
+</li>
+<li>Align()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">mingfx::Matrix4</a>
+</li>
+<li>aspect_ratio()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_b"></a>- b -</h3><ul>
+<li>BindTexture()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">mingfx::ShaderProgram</a>
+</li>
+<li>BuildBVH()
+: <a class="el" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">mingfx::Mesh</a>
+</li>
+<li>BVH()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75">mingfx::BVH</a>
+</li>
+<li>bvh_ptr()
+: <a class="el" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">mingfx::Mesh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_c"></a>- c -</h3><ul>
+<li>CalcPerFaceNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">mingfx::Mesh</a>
+</li>
+<li>CalcPerVertexNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">mingfx::Mesh</a>
+</li>
+<li>Clamp()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">mingfx::GfxMath</a>
+</li>
+<li>ClosestPoint()
+: <a class="el" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">mingfx::Point3</a>
+</li>
+<li>ClosestPointOnPlane()
+: <a class="el" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">mingfx::Point3</a>
+</li>
+<li>Cofactor()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">mingfx::Matrix4</a>
+</li>
+<li>Color()
+: <a class="el" href="classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d">mingfx::Color</a>
+</li>
+<li>ColumnToPoint3()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">mingfx::Matrix4</a>
+</li>
+<li>ColumnToVector3()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">mingfx::Matrix4</a>
+</li>
+<li>Conjugate()
+: <a class="el" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">mingfx::Quaternion</a>
+</li>
+<li>CraftCam()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171">mingfx::CraftCam</a>
+</li>
+<li>CreateFromListOfBoxes()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942">mingfx::BVH</a>
+</li>
+<li>CreateFromMesh()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71">mingfx::BVH</a>
+</li>
+<li>Cross()
+: <a class="el" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_d"></a>- d -</h3><ul>
+<li>default_shader()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">mingfx::QuickShapes</a>
+</li>
+<li>DefaultShader()
+: <a class="el" href="classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428">mingfx::DefaultShader</a>
+</li>
+<li>Determinant()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">mingfx::Matrix4</a>
+</li>
+<li>Dimensions()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec">mingfx::AABB</a>
+</li>
+<li>direction()
+: <a class="el" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">mingfx::Ray</a>
+</li>
+<li>DistanceToPlane()
+: <a class="el" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">mingfx::Point3</a>
+</li>
+<li>Dot()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">mingfx::Vector3</a>
+</li>
+<li>Draw()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">mingfx::Mesh</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">mingfx::UniCam</a>
+</li>
+<li>Draw3D()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">mingfx::TextShader</a>
+</li>
+<li>DrawArrow()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">mingfx::QuickShapes</a>
+</li>
+<li>DrawAxes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">mingfx::QuickShapes</a>
+</li>
+<li>DrawBrush()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">mingfx::QuickShapes</a>
+</li>
+<li>DrawCone()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">mingfx::QuickShapes</a>
+</li>
+<li>DrawCube()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">mingfx::QuickShapes</a>
+</li>
+<li>DrawCylinder()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">mingfx::QuickShapes</a>
+</li>
+<li>DrawFullscreenTexture()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">mingfx::QuickShapes</a>
+</li>
+<li>DrawLines()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">mingfx::QuickShapes</a>
+</li>
+<li>DrawLineSegment()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">mingfx::QuickShapes</a>
+</li>
+<li>DrawSphere()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">mingfx::QuickShapes</a>
+</li>
+<li>DrawSquare()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">mingfx::QuickShapes</a>
+</li>
+<li>DrawUsingNanoVG()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp</a>
+</li>
+<li>DrawUsingOpenGL()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_e"></a>- e -</h3><ul>
+<li>eye()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">mingfx::UniCam</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_f"></a>- f -</h3><ul>
+<li>FastIntersectMesh()
+: <a class="el" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">mingfx::Ray</a>
+</li>
+<li>FileExists()
+: <a class="el" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">mingfx::Platform</a>
+</li>
+<li>filter_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">mingfx::Texture2D</a>
+</li>
+<li>FindFile()
+: <a class="el" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">mingfx::Platform</a>
+</li>
+<li>FindMinGfxDataFile()
+: <a class="el" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">mingfx::Platform</a>
+</li>
+<li>FindMinGfxShaderFile()
+: <a class="el" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">mingfx::Platform</a>
+</li>
+<li>framebuffer_height()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">mingfx::GraphicsApp</a>
+</li>
+<li>framebuffer_width()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">mingfx::GraphicsApp</a>
+</li>
+<li>FromAxisAngle()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">mingfx::Quaternion</a>
+</li>
+<li>FromEulerAnglesZYX()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">mingfx::Quaternion</a>
+</li>
+<li>FromRowMajorElements()
+: <a class="el" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">mingfx::Matrix4</a>
+</li>
+<li>Frustum()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_g"></a>- g -</h3><ul>
+<li>GraphicsApp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_h"></a>- h -</h3><ul>
+<li>height()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">mingfx::Texture2D</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_i"></a>- i -</h3><ul>
+<li>iLerp()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">mingfx::GfxMath</a>
+</li>
+<li>Init()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">mingfx::TextShader</a>
+</li>
+<li>InitFromBytes()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">mingfx::Texture2D</a>
+</li>
+<li>InitFromFile()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">mingfx::Texture2D</a>
+</li>
+<li>InitFromFloats()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">mingfx::Texture2D</a>
+</li>
+<li>InitGraphicsContext()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">mingfx::GraphicsApp</a>
+</li>
+<li>initialized()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">mingfx::ShaderProgram</a>
+, <a class="el" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">mingfx::Texture2D</a>
+</li>
+<li>InitNanoGUI()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp</a>
+</li>
+<li>InitOpenGL()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp</a>
+</li>
+<li>IntersectAABB()
+: <a class="el" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">mingfx::Ray</a>
+</li>
+<li>IntersectAndReturnUserData()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">mingfx::BVH</a>
+</li>
+<li>IntersectMesh()
+: <a class="el" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">mingfx::Ray</a>
+</li>
+<li>IntersectPlane()
+: <a class="el" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">mingfx::Ray</a>
+</li>
+<li>IntersectQuad()
+: <a class="el" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">mingfx::Ray</a>
+</li>
+<li>IntersectSphere()
+: <a class="el" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">mingfx::Ray</a>
+</li>
+<li>IntersectTriangle()
+: <a class="el" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">mingfx::Ray</a>
+</li>
+<li>Inverse()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">mingfx::Matrix4</a>
+</li>
+<li>IsKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">mingfx::GraphicsApp</a>
+</li>
+<li>IsLeftMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">mingfx::GraphicsApp</a>
+</li>
+<li>IsMiddleMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">mingfx::GraphicsApp</a>
+</li>
+<li>IsRightMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_l"></a>- l -</h3><ul>
+<li>Length()
+: <a class="el" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">mingfx::Vector3</a>
+</li>
+<li>Lerp()
+: <a class="el" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">mingfx::GfxMath</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">mingfx::Vector3</a>
+</li>
+<li>light()
+: <a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">mingfx::DefaultShader</a>
+</li>
+<li>LightProperties()
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>LinkProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">mingfx::ShaderProgram</a>
+</li>
+<li>LoadFromOBJ()
+: <a class="el" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">mingfx::Mesh</a>
+</li>
+<li>look()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">mingfx::UniCam</a>
+</li>
+<li>look_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">mingfx::CraftCam</a>
+</li>
+<li>LookAt()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_m"></a>- m -</h3><ul>
+<li>material()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">mingfx::QuickShapes</a>
+</li>
+<li>MaterialProperties()
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>Matrix4()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">mingfx::Matrix4</a>
+</li>
+<li>max()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">mingfx::AABB</a>
+</li>
+<li>Mesh()
+: <a class="el" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">mingfx::Mesh</a>
+</li>
+<li>min()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_n"></a>- n -</h3><ul>
+<li>native_font_size()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">mingfx::TextShader</a>
+</li>
+<li>Normalize()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">mingfx::Vector3</a>
+</li>
+<li>NormalizedDeviceCoordsToPixels()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">mingfx::GraphicsApp</a>
+</li>
+<li>num_lights()
+: <a class="el" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">mingfx::DefaultShader</a>
+</li>
+<li>num_triangles()
+: <a class="el" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">mingfx::Mesh</a>
+</li>
+<li>num_vertices()
+: <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">mingfx::Mesh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_o"></a>- o -</h3><ul>
+<li>OnButtonDown()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">mingfx::UniCam</a>
+</li>
+<li>OnButtonUp()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">mingfx::UniCam</a>
+</li>
+<li>OnDrag()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">mingfx::UniCam</a>
+</li>
+<li>One()
+: <a class="el" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">mingfx::Vector3</a>
+</li>
+<li>OnKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">mingfx::GraphicsApp</a>
+</li>
+<li>OnKeyRepeat()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">mingfx::GraphicsApp</a>
+</li>
+<li>OnKeyUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">mingfx::GraphicsApp</a>
+</li>
+<li>OnMouseMove()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyRepeat()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">mingfx::GraphicsApp</a>
+</li>
+<li>OnWindowResize()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">mingfx::GraphicsApp</a>
+</li>
+<li>opengl_id()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">mingfx::Texture2D</a>
+</li>
+<li>operator!=()
+: <a class="el" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">mingfx::Vector3</a>
+</li>
+<li>operator()()
+: <a class="el" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">mingfx::Matrix4</a>
+</li>
+<li>operator=()
+: <a class="el" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">mingfx::Vector3</a>
+</li>
+<li>operator==()
+: <a class="el" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">mingfx::Vector3</a>
+</li>
+<li>operator[]()
+: <a class="el" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">mingfx::Vector3</a>
+</li>
+<li>Origin()
+: <a class="el" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">mingfx::Point3</a>
+</li>
+<li>origin()
+: <a class="el" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">mingfx::Ray</a>
+</li>
+<li>Orthonormal()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_p"></a>- p -</h3><ul>
+<li>Perspective()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4</a>
+</li>
+<li>Pixel()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">mingfx::Texture2D</a>
+</li>
+<li>PixelsToNormalizedDeviceCoords()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">mingfx::GraphicsApp</a>
+</li>
+<li>Point2()
+: <a class="el" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">mingfx::Point2</a>
+</li>
+<li>Point3()
+: <a class="el" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">mingfx::Point3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_q"></a>- q -</h3><ul>
+<li>Quaternion()
+: <a class="el" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">mingfx::Quaternion</a>
+</li>
+<li>QuickShapes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">mingfx::QuickShapes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_r"></a>- r -</h3><ul>
+<li>Ray()
+: <a class="el" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">mingfx::Ray</a>
+</li>
+<li>read_color_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">mingfx::Mesh</a>
+</li>
+<li>read_normal_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">mingfx::Mesh</a>
+</li>
+<li>read_tex_coords_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">mingfx::Mesh</a>
+</li>
+<li>read_triangle_indices_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">mingfx::Mesh</a>
+</li>
+<li>read_vertex_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">mingfx::Mesh</a>
+</li>
+<li>ReadZValueAtPixel()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">mingfx::GraphicsApp</a>
+</li>
+<li>ResizeWindow()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">mingfx::GraphicsApp</a>
+</li>
+<li>Rotation()
+: <a class="el" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">mingfx::Matrix4</a>
+</li>
+<li>rotation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">mingfx::CraftCam</a>
+</li>
+<li>RotationX()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">mingfx::Matrix4</a>
+</li>
+<li>RotationY()
+: <a class="el" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">mingfx::Matrix4</a>
+</li>
+<li>RotationZ()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">mingfx::Matrix4</a>
+</li>
+<li>Run()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_s"></a>- s -</h3><ul>
+<li>Scale()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">mingfx::Matrix4</a>
+</li>
+<li>screen()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp</a>
+</li>
+<li>ScreenToDepthPlane()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">mingfx::GfxMath</a>
+</li>
+<li>ScreenToNearPlane()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">mingfx::GfxMath</a>
+</li>
+<li>ScreenToWorld()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">mingfx::GfxMath</a>
+</li>
+<li>set()
+: <a class="el" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">mingfx::Ray</a>
+</li>
+<li>set_default_depth()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">mingfx::UniCam</a>
+</li>
+<li>set_filter_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">mingfx::Texture2D</a>
+</li>
+<li>set_look_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">mingfx::CraftCam</a>
+</li>
+<li>set_rotation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">mingfx::CraftCam</a>
+</li>
+<li>set_translation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">mingfx::CraftCam</a>
+</li>
+<li>set_user_data()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">mingfx::AABB</a>
+</li>
+<li>set_view_matrix()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">mingfx::UniCam</a>
+</li>
+<li>set_wrap_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">mingfx::Texture2D</a>
+</li>
+<li>SetColors()
+: <a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">mingfx::Mesh</a>
+</li>
+<li>SetIndices()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">mingfx::Mesh</a>
+</li>
+<li>SetInstanceTransforms()
+: <a class="el" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">mingfx::Mesh</a>
+</li>
+<li>SetLight()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">mingfx::DefaultShader</a>
+</li>
+<li>SetNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">mingfx::Mesh</a>
+</li>
+<li>SetTexCoords()
+: <a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">mingfx::Mesh</a>
+</li>
+<li>SetUniform()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray1()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray2()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray3()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray4()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">mingfx::ShaderProgram</a>
+</li>
+<li>SetVertices()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">mingfx::Mesh</a>
+</li>
+<li>ShaderProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">mingfx::ShaderProgram</a>
+</li>
+<li>Slerp()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">mingfx::Quaternion</a>
+</li>
+<li>StopProgram()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">mingfx::ShaderProgram</a>
+</li>
+<li>SubDeterminant()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_t"></a>- t -</h3><ul>
+<li>TextExtents()
+: <a class="el" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">mingfx::TextShader</a>
+</li>
+<li>TextFormat()
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">mingfx::TextShader::TextFormat</a>
+</li>
+<li>TextShader()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">mingfx::TextShader</a>
+</li>
+<li>Texture2D()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">mingfx::Texture2D</a>
+</li>
+<li>ToDegrees()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">mingfx::GfxMath</a>
+</li>
+<li>ToEulerAnglesZYX()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">mingfx::Quaternion</a>
+</li>
+<li>ToRadians()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath</a>
+</li>
+<li>ToUnit()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">mingfx::Vector3</a>
+</li>
+<li>ToVector()
+: <a class="el" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">mingfx::Matrix4</a>
+</li>
+<li>Translation()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4</a>
+</li>
+<li>translation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">mingfx::CraftCam</a>
+</li>
+<li>Transpose()
+: <a class="el" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_u"></a>- u -</h3><ul>
+<li>UniCam()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">mingfx::UniCam</a>
+</li>
+<li>UnitX()
+: <a class="el" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">mingfx::Vector3</a>
+</li>
+<li>UnitY()
+: <a class="el" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">mingfx::Vector3</a>
+</li>
+<li>UnitZ()
+: <a class="el" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">mingfx::Vector3</a>
+</li>
+<li>UpdateFromBytes()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">mingfx::Texture2D</a>
+</li>
+<li>UpdateFromFloats()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">mingfx::Texture2D</a>
+</li>
+<li>UpdateGPUMemory()
+: <a class="el" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">mingfx::Mesh</a>
+</li>
+<li>UpdateHeight()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">mingfx::CraftCam</a>
+</li>
+<li>UpdateSimulation()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp</a>
+</li>
+<li>UpdateTriangle()
+: <a class="el" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">mingfx::Mesh</a>
+</li>
+<li>UseProgram()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">mingfx::ShaderProgram</a>
+</li>
+<li>user_data()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_v"></a>- v -</h3><ul>
+<li>value_ptr()
+: <a class="el" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">mingfx::Vector3</a>
+</li>
+<li>Vector2()
+: <a class="el" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">mingfx::Vector2</a>
+</li>
+<li>Vector3()
+: <a class="el" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">mingfx::Vector3</a>
+</li>
+<li>view_matrix()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">mingfx::UniCam</a>
+</li>
+<li>Volume()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_w"></a>- w -</h3><ul>
+<li>w()
+: <a class="el" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">mingfx::Vector3</a>
+</li>
+<li>width()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">mingfx::Texture2D</a>
+</li>
+<li>window()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp</a>
+</li>
+<li>window_height()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">mingfx::GraphicsApp</a>
+</li>
+<li>window_width()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">mingfx::GraphicsApp</a>
+</li>
+<li>wrap_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">mingfx::Texture2D</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_x"></a>- x -</h3><ul>
+<li>x()
+: <a class="el" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_y"></a>- y -</h3><ul>
+<li>y()
+: <a class="el" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_z"></a>- z -</h3><ul>
+<li>z()
+: <a class="el" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">mingfx::Vector3</a>
+</li>
+<li>Zero()
+: <a class="el" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index__7E"></a>- ~ -</h3><ul>
+<li>~AABB()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">mingfx::AABB</a>
+</li>
+<li>~BVH()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">mingfx::BVH</a>
+</li>
+<li>~Color()
+: <a class="el" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">mingfx::Color</a>
+</li>
+<li>~CraftCam()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">mingfx::CraftCam</a>
+</li>
+<li>~DefaultShader()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">mingfx::DefaultShader</a>
+</li>
+<li>~GraphicsApp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">mingfx::GraphicsApp</a>
+</li>
+<li>~Matrix4()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">mingfx::Matrix4</a>
+</li>
+<li>~Mesh()
+: <a class="el" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">mingfx::Mesh</a>
+</li>
+<li>~Point2()
+: <a class="el" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">mingfx::Point2</a>
+</li>
+<li>~Point3()
+: <a class="el" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">mingfx::Point3</a>
+</li>
+<li>~Quaternion()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">mingfx::Quaternion</a>
+</li>
+<li>~QuickShapes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">mingfx::QuickShapes</a>
+</li>
+<li>~Ray()
+: <a class="el" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">mingfx::Ray</a>
+</li>
+<li>~ShaderProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">mingfx::ShaderProgram</a>
+</li>
+<li>~TextShader()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">mingfx::TextShader</a>
+</li>
+<li>~Texture2D()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">mingfx::Texture2D</a>
+</li>
+<li>~UniCam()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">mingfx::UniCam</a>
+</li>
+<li>~Vector2()
+: <a class="el" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">mingfx::Vector2</a>
+</li>
+<li>~Vector3()
+: <a class="el" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_g"></a>- g -</h3><ul>
+<li>GraphicsApp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_h"></a>- h -</h3><ul>
+<li>h
+: <a class="el" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">stbrp_rect</a>
+</li>
+<li>h_align
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">mingfx::TextShader::TextFormat</a>
+</li>
+<li>HALF_PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">mingfx::GfxMath</a>
+</li>
+<li>height()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">mingfx::Texture2D</a>
+, <a class="el" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">stbrp_context</a>
+</li>
+<li>heuristic
+: <a class="el" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">stbrp_context</a>
+</li>
+<li>HorizAlign
+: <a class="el" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">mingfx::TextShader</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_i"></a>- i -</h3><ul>
+<li>id
+: <a class="el" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">stbrp_rect</a>
+</li>
+<li>iLerp()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">mingfx::GfxMath</a>
+</li>
+<li>Init()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">mingfx::TextShader</a>
+</li>
+<li>init_mode
+: <a class="el" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">stbrp_context</a>
+</li>
+<li>InitFromBytes()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">mingfx::Texture2D</a>
+</li>
+<li>InitFromFile()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">mingfx::Texture2D</a>
+</li>
+<li>InitFromFloats()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">mingfx::Texture2D</a>
+</li>
+<li>InitGraphicsContext()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">mingfx::GraphicsApp</a>
+</li>
+<li>initialized()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">mingfx::ShaderProgram</a>
+, <a class="el" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">mingfx::Texture2D</a>
+</li>
+<li>InitNanoGUI()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp</a>
+</li>
+<li>InitOpenGL()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp</a>
+</li>
+<li>IntersectAABB()
+: <a class="el" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">mingfx::Ray</a>
+</li>
+<li>IntersectAndReturnUserData()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56">mingfx::BVH</a>
+</li>
+<li>IntersectMesh()
+: <a class="el" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">mingfx::Ray</a>
+</li>
+<li>IntersectPlane()
+: <a class="el" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">mingfx::Ray</a>
+</li>
+<li>IntersectQuad()
+: <a class="el" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">mingfx::Ray</a>
+</li>
+<li>IntersectSphere()
+: <a class="el" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">mingfx::Ray</a>
+</li>
+<li>IntersectTriangle()
+: <a class="el" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">mingfx::Ray</a>
+</li>
+<li>Inverse()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">mingfx::Matrix4</a>
+</li>
+<li>IsKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">mingfx::GraphicsApp</a>
+</li>
+<li>IsLeftMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">mingfx::GraphicsApp</a>
+</li>
+<li>IsMiddleMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">mingfx::GraphicsApp</a>
+</li>
+<li>IsRightMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_l"></a>- l -</h3><ul>
+<li>Length()
+: <a class="el" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">mingfx::Vector3</a>
+</li>
+<li>Lerp()
+: <a class="el" href="classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">mingfx::GfxMath</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">mingfx::Vector3</a>
+</li>
+<li>light()
+: <a class="el" href="classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316">mingfx::DefaultShader</a>
+</li>
+<li>LightProperties()
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>LinesType
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">mingfx::QuickShapes</a>
+</li>
+<li>LinkProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">mingfx::ShaderProgram</a>
+</li>
+<li>LoadFromOBJ()
+: <a class="el" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">mingfx::Mesh</a>
+</li>
+<li>look()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">mingfx::UniCam</a>
+</li>
+<li>look_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb">mingfx::CraftCam</a>
+</li>
+<li>LookAt()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_m"></a>- m -</h3><ul>
+<li>material()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">mingfx::QuickShapes</a>
+</li>
+<li>MaterialProperties()
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>Matrix4()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">mingfx::Matrix4</a>
+</li>
+<li>max()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4">mingfx::AABB</a>
+</li>
+<li>MAX_LIGHTS
+: <a class="el" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">mingfx::DefaultShader</a>
+</li>
+<li>Mesh()
+: <a class="el" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">mingfx::Mesh</a>
+</li>
+<li>min()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_n"></a>- n -</h3><ul>
+<li>native_font_size()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">mingfx::TextShader</a>
+</li>
+<li>next
+: <a class="el" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">stbrp_node</a>
+</li>
+<li>Normalize()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">mingfx::Vector3</a>
+</li>
+<li>NormalizedDeviceCoordsToPixels()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">mingfx::GraphicsApp</a>
+</li>
+<li>num_lights()
+: <a class="el" href="classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2">mingfx::DefaultShader</a>
+</li>
+<li>num_nodes
+: <a class="el" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">stbrp_context</a>
+</li>
+<li>num_triangles()
+: <a class="el" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">mingfx::Mesh</a>
+</li>
+<li>num_vertices()
+: <a class="el" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">mingfx::Mesh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_o"></a>- o -</h3><ul>
+<li>OnButtonDown()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">mingfx::UniCam</a>
+</li>
+<li>OnButtonUp()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">mingfx::UniCam</a>
+</li>
+<li>OnDrag()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">mingfx::UniCam</a>
+</li>
+<li>One()
+: <a class="el" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">mingfx::Vector3</a>
+</li>
+<li>OnKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">mingfx::GraphicsApp</a>
+</li>
+<li>OnKeyRepeat()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">mingfx::GraphicsApp</a>
+</li>
+<li>OnKeyUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">mingfx::GraphicsApp</a>
+</li>
+<li>OnLeftMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">mingfx::GraphicsApp</a>
+</li>
+<li>OnMiddleMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">mingfx::GraphicsApp</a>
+</li>
+<li>OnMouseMove()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseDrag()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">mingfx::GraphicsApp</a>
+</li>
+<li>OnRightMouseUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyDown()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyRepeat()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">mingfx::GraphicsApp</a>
+</li>
+<li>OnSpecialKeyUp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">mingfx::GraphicsApp</a>
+</li>
+<li>OnWindowResize()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">mingfx::GraphicsApp</a>
+</li>
+<li>opengl_id()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">mingfx::Texture2D</a>
+</li>
+<li>operator!=()
+: <a class="el" href="classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">mingfx::Vector3</a>
+</li>
+<li>operator()()
+: <a class="el" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">mingfx::Matrix4</a>
+</li>
+<li>operator+
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">mingfx::AABB</a>
+</li>
+<li>operator=()
+: <a class="el" href="classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">mingfx::Vector3</a>
+</li>
+<li>operator==()
+: <a class="el" href="classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">mingfx::Ray</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">mingfx::Vector3</a>
+</li>
+<li>operator[]()
+: <a class="el" href="classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">mingfx::Vector3</a>
+</li>
+<li>Origin()
+: <a class="el" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">mingfx::Point3</a>
+</li>
+<li>origin()
+: <a class="el" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">mingfx::Ray</a>
+</li>
+<li>Orthonormal()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">mingfx::Matrix4</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_p"></a>- p -</h3><ul>
+<li>Perspective()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4</a>
+</li>
+<li>PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">mingfx::GfxMath</a>
+</li>
+<li>Pixel()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">mingfx::Texture2D</a>
+</li>
+<li>PixelsToNormalizedDeviceCoords()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">mingfx::GraphicsApp</a>
+</li>
+<li>Point2()
+: <a class="el" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">mingfx::Point2</a>
+</li>
+<li>Point3()
+: <a class="el" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">mingfx::Point3</a>
+</li>
+<li>position
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">mingfx::DefaultShader::LightProperties</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_q"></a>- q -</h3><ul>
+<li>Quaternion()
+: <a class="el" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">mingfx::Quaternion</a>
+</li>
+<li>QuickShapes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">mingfx::QuickShapes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_r"></a>- r -</h3><ul>
+<li>Ray()
+: <a class="el" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">mingfx::Ray</a>
+</li>
+<li>read_color_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">mingfx::Mesh</a>
+</li>
+<li>read_normal_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">mingfx::Mesh</a>
+</li>
+<li>read_tex_coords_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">mingfx::Mesh</a>
+</li>
+<li>read_triangle_indices_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">mingfx::Mesh</a>
+</li>
+<li>read_vertex_data()
+: <a class="el" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">mingfx::Mesh</a>
+</li>
+<li>ReadZValueAtPixel()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">mingfx::GraphicsApp</a>
+</li>
+<li>ResizeWindow()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">mingfx::GraphicsApp</a>
+</li>
+<li>Rotation()
+: <a class="el" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">mingfx::Matrix4</a>
+</li>
+<li>rotation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac">mingfx::CraftCam</a>
+</li>
+<li>RotationX()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">mingfx::Matrix4</a>
+</li>
+<li>RotationY()
+: <a class="el" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">mingfx::Matrix4</a>
+</li>
+<li>RotationZ()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">mingfx::Matrix4</a>
+</li>
+<li>Run()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">mingfx::GraphicsApp</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Related Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>operator+
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_s"></a>- s -</h3><ul>
+<li>Scale()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">mingfx::Matrix4</a>
+</li>
+<li>screen()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp</a>
+</li>
+<li>ScreenToDepthPlane()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">mingfx::GfxMath</a>
+</li>
+<li>ScreenToNearPlane()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">mingfx::GfxMath</a>
+</li>
+<li>ScreenToWorld()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">mingfx::GfxMath</a>
+</li>
+<li>set()
+: <a class="el" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">mingfx::Ray</a>
+</li>
+<li>set_default_depth()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">mingfx::UniCam</a>
+</li>
+<li>set_filter_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">mingfx::Texture2D</a>
+</li>
+<li>set_look_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44">mingfx::CraftCam</a>
+</li>
+<li>set_rotation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831">mingfx::CraftCam</a>
+</li>
+<li>set_translation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7">mingfx::CraftCam</a>
+</li>
+<li>set_user_data()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b">mingfx::AABB</a>
+</li>
+<li>set_view_matrix()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">mingfx::UniCam</a>
+</li>
+<li>set_wrap_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">mingfx::Texture2D</a>
+</li>
+<li>SetColors()
+: <a class="el" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">mingfx::Mesh</a>
+</li>
+<li>SetIndices()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">mingfx::Mesh</a>
+</li>
+<li>SetInstanceTransforms()
+: <a class="el" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">mingfx::Mesh</a>
+</li>
+<li>SetLight()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6">mingfx::DefaultShader</a>
+</li>
+<li>SetNormals()
+: <a class="el" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">mingfx::Mesh</a>
+</li>
+<li>SetTexCoords()
+: <a class="el" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">mingfx::Mesh</a>
+</li>
+<li>SetUniform()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray1()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray2()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray3()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">mingfx::ShaderProgram</a>
+</li>
+<li>SetUniformArray4()
+: <a class="el" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">mingfx::ShaderProgram</a>
+</li>
+<li>SetVertices()
+: <a class="el" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">mingfx::Mesh</a>
+</li>
+<li>ShaderProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">mingfx::ShaderProgram</a>
+</li>
+<li>shinniness
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>size
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">mingfx::TextShader::TextFormat</a>
+</li>
+<li>Slerp()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">mingfx::Quaternion</a>
+</li>
+<li>specular_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>specular_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>StopProgram()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">mingfx::ShaderProgram</a>
+</li>
+<li>SubDeterminant()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">mingfx::Matrix4</a>
+</li>
+<li>surface_texture
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_t"></a>- t -</h3><ul>
+<li>TextExtents()
+: <a class="el" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">mingfx::TextShader</a>
+</li>
+<li>TextFormat()
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">mingfx::TextShader::TextFormat</a>
+</li>
+<li>TextShader()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">mingfx::TextShader</a>
+</li>
+<li>Texture2D()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">mingfx::Texture2D</a>
+</li>
+<li>ToDegrees()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">mingfx::GfxMath</a>
+</li>
+<li>ToEulerAnglesZYX()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">mingfx::Quaternion</a>
+</li>
+<li>ToRadians()
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath</a>
+</li>
+<li>ToUnit()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">mingfx::Vector3</a>
+</li>
+<li>ToVector()
+: <a class="el" href="classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">mingfx::Matrix4</a>
+</li>
+<li>Translation()
+: <a class="el" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4</a>
+</li>
+<li>translation_scale()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2">mingfx::CraftCam</a>
+</li>
+<li>Transpose()
+: <a class="el" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">mingfx::Matrix4</a>
+</li>
+<li>TWO_PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">mingfx::GfxMath</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_u"></a>- u -</h3><ul>
+<li>UniCam()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">mingfx::UniCam</a>
+</li>
+<li>UnitX()
+: <a class="el" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">mingfx::Vector3</a>
+</li>
+<li>UnitY()
+: <a class="el" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">mingfx::Vector3</a>
+</li>
+<li>UnitZ()
+: <a class="el" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">mingfx::Vector3</a>
+</li>
+<li>UpdateFromBytes()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">mingfx::Texture2D</a>
+</li>
+<li>UpdateFromFloats()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">mingfx::Texture2D</a>
+</li>
+<li>UpdateGPUMemory()
+: <a class="el" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">mingfx::Mesh</a>
+</li>
+<li>UpdateHeight()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b">mingfx::CraftCam</a>
+</li>
+<li>UpdateSimulation()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp</a>
+</li>
+<li>UpdateTriangle()
+: <a class="el" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">mingfx::Mesh</a>
+</li>
+<li>UseProgram()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0">mingfx::DefaultShader</a>
+, <a class="el" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">mingfx::ShaderProgram</a>
+</li>
+<li>user_data()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_v"></a>- v -</h3><ul>
+<li>v_align
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">mingfx::TextShader::TextFormat</a>
+</li>
+<li>value_ptr()
+: <a class="el" href="classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0">mingfx::Color</a>
+, <a class="el" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">mingfx::Matrix4</a>
+, <a class="el" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">mingfx::Vector3</a>
+</li>
+<li>Vector2()
+: <a class="el" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">mingfx::Vector2</a>
+</li>
+<li>Vector3()
+: <a class="el" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">mingfx::Vector3</a>
+</li>
+<li>VertAlign
+: <a class="el" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">mingfx::TextShader</a>
+</li>
+<li>view_matrix()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36">mingfx::CraftCam</a>
+, <a class="el" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">mingfx::UniCam</a>
+</li>
+<li>Volume()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9">mingfx::AABB</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_a"></a>- a -</h3><ul>
+<li>active_head
+: <a class="el" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">stbrp_context</a>
+</li>
+<li>align
+: <a class="el" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">stbrp_context</a>
+</li>
+<li>ambient_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>ambient_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+</ul>
+
+
+<h3><a id="index_c"></a>- c -</h3><ul>
+<li>color
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">mingfx::TextShader::TextFormat</a>
+</li>
+</ul>
+
+
+<h3><a id="index_d"></a>- d -</h3><ul>
+<li>diffuse_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>diffuse_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+</ul>
+
+
+<h3><a id="index_e"></a>- e -</h3><ul>
+<li>extra
+: <a class="el" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_f"></a>- f -</h3><ul>
+<li>free_head
+: <a class="el" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_h"></a>- h -</h3><ul>
+<li>h
+: <a class="el" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">stbrp_rect</a>
+</li>
+<li>h_align
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">mingfx::TextShader::TextFormat</a>
+</li>
+<li>HALF_PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">mingfx::GfxMath</a>
+</li>
+<li>height
+: <a class="el" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">stbrp_context</a>
+</li>
+<li>heuristic
+: <a class="el" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_i"></a>- i -</h3><ul>
+<li>id
+: <a class="el" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">stbrp_rect</a>
+</li>
+<li>init_mode
+: <a class="el" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_m"></a>- m -</h3><ul>
+<li>MAX_LIGHTS
+: <a class="el" href="classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24">mingfx::DefaultShader</a>
+</li>
+</ul>
+
+
+<h3><a id="index_n"></a>- n -</h3><ul>
+<li>next
+: <a class="el" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">stbrp_node</a>
+</li>
+<li>num_nodes
+: <a class="el" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_p"></a>- p -</h3><ul>
+<li>PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">mingfx::GfxMath</a>
+</li>
+<li>position
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e">mingfx::DefaultShader::LightProperties</a>
+</li>
+</ul>
+
+
+<h3><a id="index_s"></a>- s -</h3><ul>
+<li>shinniness
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>size
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">mingfx::TextShader::TextFormat</a>
+</li>
+<li>specular_intensity
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4">mingfx::DefaultShader::LightProperties</a>
+</li>
+<li>specular_reflectance
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+<li>surface_texture
+: <a class="el" href="classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e">mingfx::DefaultShader::MaterialProperties</a>
+</li>
+</ul>
+
+
+<h3><a id="index_t"></a>- t -</h3><ul>
+<li>TWO_PI
+: <a class="el" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">mingfx::GfxMath</a>
+</li>
+</ul>
+
+
+<h3><a id="index_v"></a>- v -</h3><ul>
+<li>v_align
+: <a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">mingfx::TextShader::TextFormat</a>
+</li>
+</ul>
+
+
+<h3><a id="index_w"></a>- w -</h3><ul>
+<li>w
+: <a class="el" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">stbrp_rect</a>
+</li>
+<li>was_packed
+: <a class="el" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">stbrp_rect</a>
+</li>
+<li>width
+: <a class="el" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">stbrp_context</a>
+</li>
+</ul>
+
+
+<h3><a id="index_x"></a>- x -</h3><ul>
+<li>x
+: <a class="el" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">stbrp_node</a>
+, <a class="el" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">stbrp_rect</a>
+</li>
+</ul>
+
+
+<h3><a id="index_y"></a>- y -</h3><ul>
+<li>y
+: <a class="el" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">stbrp_node</a>
+, <a class="el" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">stbrp_rect</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_w"></a>- w -</h3><ul>
+<li>w()
+: <a class="el" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">mingfx::Vector3</a>
+, <a class="el" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">stbrp_rect</a>
+</li>
+<li>was_packed
+: <a class="el" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">stbrp_rect</a>
+</li>
+<li>width()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">mingfx::Texture2D</a>
+, <a class="el" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">stbrp_context</a>
+</li>
+<li>window()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp</a>
+</li>
+<li>window_height()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">mingfx::GraphicsApp</a>
+</li>
+<li>window_width()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">mingfx::GraphicsApp</a>
+</li>
+<li>wrap_mode()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">mingfx::Texture2D</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_x"></a>- x -</h3><ul>
+<li>x()
+: <a class="el" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">mingfx::Vector3</a>
+, <a class="el" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">stbrp_node</a>
+, <a class="el" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">stbrp_rect</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_y"></a>- y -</h3><ul>
+<li>y()
+: <a class="el" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">mingfx::Vector3</a>
+, <a class="el" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">stbrp_node</a>
+, <a class="el" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">stbrp_rect</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_z"></a>- z -</h3><ul>
+<li>z()
+: <a class="el" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">mingfx::Quaternion</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">mingfx::Vector3</a>
+</li>
+<li>Zero()
+: <a class="el" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">mingfx::Point2</a>
+, <a class="el" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">mingfx::Point3</a>
+, <a class="el" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">mingfx::Vector2</a>
+, <a class="el" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index__7E"></a>- ~ -</h3><ul>
+<li>~AABB()
+: <a class="el" href="classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5">mingfx::AABB</a>
+</li>
+<li>~BVH()
+: <a class="el" href="classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269">mingfx::BVH</a>
+</li>
+<li>~Color()
+: <a class="el" href="classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378">mingfx::Color</a>
+</li>
+<li>~CraftCam()
+: <a class="el" href="classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff">mingfx::CraftCam</a>
+</li>
+<li>~DefaultShader()
+: <a class="el" href="classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba">mingfx::DefaultShader</a>
+</li>
+<li>~GraphicsApp()
+: <a class="el" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">mingfx::GraphicsApp</a>
+</li>
+<li>~Matrix4()
+: <a class="el" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">mingfx::Matrix4</a>
+</li>
+<li>~Mesh()
+: <a class="el" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">mingfx::Mesh</a>
+</li>
+<li>~Point2()
+: <a class="el" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">mingfx::Point2</a>
+</li>
+<li>~Point3()
+: <a class="el" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">mingfx::Point3</a>
+</li>
+<li>~Quaternion()
+: <a class="el" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">mingfx::Quaternion</a>
+</li>
+<li>~QuickShapes()
+: <a class="el" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">mingfx::QuickShapes</a>
+</li>
+<li>~Ray()
+: <a class="el" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">mingfx::Ray</a>
+</li>
+<li>~ShaderProgram()
+: <a class="el" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">mingfx::ShaderProgram</a>
+</li>
+<li>~TextShader()
+: <a class="el" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">mingfx::TextShader</a>
+</li>
+<li>~Texture2D()
+: <a class="el" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">mingfx::Texture2D</a>
+</li>
+<li>~UniCam()
+: <a class="el" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">mingfx::UniCam</a>
+</li>
+<li>~Vector2()
+: <a class="el" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">mingfx::Vector2</a>
+</li>
+<li>~Vector3()
+: <a class="el" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">mingfx::Vector3</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/gfxmath.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">gfxmath.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+</div>
+<p><a href="gfxmath_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class holds a variety of static math functions that are useful to have defined with creating graphics programs. <a href="classmingfx_1_1_gfx_math.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/gfxmath.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">gfxmath.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="gfxmath_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_GFXMATH_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_GFXMATH_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_gfx_math.html">GfxMath</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850"> 32</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">Clamp</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b);</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637"> 34</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">ToRadians</a>(<span class="keywordtype">float</span> degrees);</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3"> 36</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">ToDegrees</a>(<span class="keywordtype">float</span> radians);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190"> 38</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190">ToRadians</a>(<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> degrees);</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8"> 40</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8">ToDegrees</a>(<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> radians);</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647"> 42</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">Lerp</a>(<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d"> 44</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">iLerp</a>(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0"> 55</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">ScreenToNearPlane</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67"> 60</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">ScreenToDepthPlane</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt, <span class="keywordtype">float</span> planeDepth);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273"> 69</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">ScreenToWorld</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedScreenPt, <span class="keywordtype">float</span> normalizedZ);</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4"> 72</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">PI</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69"> 73</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">TWO_PI</a>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0"> 74</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">HALF_PI</a>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html">mingfx::GfxMath</a></div><div class="ttdoc">This class holds a variety of static math functions that are useful to have defined with creating gra...</div><div class="ttdef"><b>Definition:</b> <a href="gfxmath_8h_source.html#l00028">gfxmath.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a0e5c7562116babf11c61f4c7f20f8b69"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69">mingfx::GfxMath::TWO_PI</a></div><div class="ttdeci">static const float TWO_PI</div><div class="ttdef"><b>Definition:</b> <a href="gfxmath_8h_source.html#l00073">gfxmath.h:73</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a1336de2695bc3bb750b23fb0ea211637"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637">mingfx::GfxMath::ToRadians</a></div><div class="ttdeci">static float ToRadians(float degrees)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a2086a2f885f887fb53da8a5adb5860f0"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0">mingfx::GfxMath::ScreenToNearPlane</a></div><div class="ttdeci">static Point3 ScreenToNearPlane(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt)</div><div class="ttdoc">Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a24048d7b688ae46317c3e8de8a701273"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273">mingfx::GfxMath::ScreenToWorld</a></div><div class="ttdeci">static Point3 ScreenToWorld(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt, float normalizedZ)</div><div class="ttdoc">Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a38927f1f8ea4625d909e64efa93c5190"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190">mingfx::GfxMath::ToRadians</a></div><div class="ttdeci">static Vector3 ToRadians(Vector3 degrees)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_a39a2b5973249fb3aefc210b18b0fdff3"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3">mingfx::GfxMath::ToDegrees</a></div><div class="ttdeci">static float ToDegrees(float radians)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_aa5411a7d8bfc8e47d596362a328dbde8"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8">mingfx::GfxMath::ToDegrees</a></div><div class="ttdeci">static Vector3 ToDegrees(Vector3 radians)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_aaa14e60a5f7c158db443f8b6d87958b4"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4">mingfx::GfxMath::PI</a></div><div class="ttdeci">static const float PI</div><div class="ttdef"><b>Definition:</b> <a href="gfxmath_8h_source.html#l00072">gfxmath.h:72</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_aaa6af7c0de01fdad46d48d43efb6aa67"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67">mingfx::GfxMath::ScreenToDepthPlane</a></div><div class="ttdeci">static Point3 ScreenToDepthPlane(const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projMatrix, const Point2 &amp;normalizedScreenPt, float planeDepth)</div><div class="ttdoc">Similar to filmplane2D_to_nearplane3D() but here rather than using the nearplane, you specify the dep...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_ab5ba8ba54257d86dcf95bd2bbeb534c0"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0">mingfx::GfxMath::HALF_PI</a></div><div class="ttdeci">static const float HALF_PI</div><div class="ttdef"><b>Definition:</b> <a href="gfxmath_8h_source.html#l00074">gfxmath.h:74</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_ace452fb6b86eb638897b474e9dd51647"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647">mingfx::GfxMath::Lerp</a></div><div class="ttdeci">static float Lerp(float a, float b, float alpha)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_af227209ec043b375497556ee2dcdf850"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850">mingfx::GfxMath::Clamp</a></div><div class="ttdeci">static float Clamp(float x, float a, float b)</div><div class="ttdoc">Returns a if x is less than a and b if x is greater than b.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_gfx_math_html_af255bde64498e9b55be466abeea97f4d"><div class="ttname"><a href="classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d">mingfx::GfxMath::iLerp</a></div><div class="ttdeci">static int iLerp(int a, int b, float alpha)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<li>MINGFX_DATA_DIR_BUILD
+: <a class="el" href="mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03">mingfx_config.h</a>
+</li>
+<li>MINGFX_DATA_DIR_INSTALL
+: <a class="el" href="mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398">mingfx_config.h</a>
+</li>
+<li>MINGFX_MATH_EPSILON
+: <a class="el" href="point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea">point2.h</a>
+, <a class="el" href="point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea">point3.h</a>
+</li>
+<li>MINGFX_SHADERS_DIR_BUILD
+: <a class="el" href="mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f">mingfx_config.h</a>
+</li>
+<li>MINGFX_SHADERS_DIR_INSTALL
+: <a class="el" href="mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4">mingfx_config.h</a>
+</li>
+<li>STB_RECT_PACK_VERSION
+: <a class="el" href="stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce">stb_rect_pack.h</a>
+</li>
+<li>stbrp_context
+: <a class="el" href="stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f">stb_rect_pack.h</a>
+</li>
+<li>stbrp_coord
+: <a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stb_rect_pack.h</a>
+</li>
+<li>STBRP_DEF
+: <a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">stb_rect_pack.h</a>
+</li>
+<li>STBRP_HEURISTIC_Skyline_BF_sortHeight
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">stb_rect_pack.h</a>
+</li>
+<li>STBRP_HEURISTIC_Skyline_BL_sortHeight
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">stb_rect_pack.h</a>
+</li>
+<li>STBRP_HEURISTIC_Skyline_default
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">stb_rect_pack.h</a>
+</li>
+<li>stbrp_init_target()
+: <a class="el" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stb_rect_pack.h</a>
+</li>
+<li>stbrp_node
+: <a class="el" href="stb__rect__pack_8h.html#ae8f871c209d2e6218baf9c0e2a209ea1">stb_rect_pack.h</a>
+</li>
+<li>stbrp_pack_rects()
+: <a class="el" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stb_rect_pack.h</a>
+</li>
+<li>stbrp_rect
+: <a class="el" href="stb__rect__pack_8h.html#a7c4a99b31ea2207a0b2bbcbdab8f3840">stb_rect_pack.h</a>
+</li>
+<li>stbrp_setup_allow_out_of_mem()
+: <a class="el" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stb_rect_pack.h</a>
+</li>
+<li>stbrp_setup_heuristic()
+: <a class="el" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stb_rect_pack.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>MINGFX_DATA_DIR_BUILD
+: <a class="el" href="mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03">mingfx_config.h</a>
+</li>
+<li>MINGFX_DATA_DIR_INSTALL
+: <a class="el" href="mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398">mingfx_config.h</a>
+</li>
+<li>MINGFX_MATH_EPSILON
+: <a class="el" href="point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea">point2.h</a>
+, <a class="el" href="point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea">point3.h</a>
+</li>
+<li>MINGFX_SHADERS_DIR_BUILD
+: <a class="el" href="mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f">mingfx_config.h</a>
+</li>
+<li>MINGFX_SHADERS_DIR_INSTALL
+: <a class="el" href="mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4">mingfx_config.h</a>
+</li>
+<li>STB_RECT_PACK_VERSION
+: <a class="el" href="stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce">stb_rect_pack.h</a>
+</li>
+<li>STBRP_DEF
+: <a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">stb_rect_pack.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>STBRP_HEURISTIC_Skyline_BF_sortHeight
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">stb_rect_pack.h</a>
+</li>
+<li>STBRP_HEURISTIC_Skyline_BL_sortHeight
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">stb_rect_pack.h</a>
+</li>
+<li>STBRP_HEURISTIC_Skyline_default
+: <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">stb_rect_pack.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>stbrp_init_target()
+: <a class="el" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stb_rect_pack.h</a>
+</li>
+<li>stbrp_pack_rects()
+: <a class="el" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stb_rect_pack.h</a>
+</li>
+<li>stbrp_setup_allow_out_of_mem()
+: <a class="el" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stb_rect_pack.h</a>
+</li>
+<li>stbrp_setup_heuristic()
+: <a class="el" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stb_rect_pack.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>stbrp_context
+: <a class="el" href="stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f">stb_rect_pack.h</a>
+</li>
+<li>stbrp_coord
+: <a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stb_rect_pack.h</a>
+</li>
+<li>stbrp_node
+: <a class="el" href="stb__rect__pack_8h.html#ae8f871c209d2e6218baf9c0e2a209ea1">stb_rect_pack.h</a>
+</li>
+<li>stbrp_rect
+: <a class="el" href="stb__rect__pack_8h.html#a7c4a99b31ea2207a0b2bbcbdab8f3840">stb_rect_pack.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/graphics_app.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">graphics_app.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;nanogui/nanogui.h&gt;</code><br />
+<code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector2_8h_source.html">vector2.h</a>&quot;</code><br />
+</div>
+<p><a href="graphics__app_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the main application base class for the MinGfx Toolkit. <a href="classmingfx_1_1_graphics_app.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/graphics_app.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">graphics_app.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="graphics__app_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2017, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ... </span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SRC_GRAPHICS_APP_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define SRC_GRAPHICS_APP_H_</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// disable warnings for this 3rd party code</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#pragma warning ( push, 0 )</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;nanogui/nanogui.h&gt;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#pragma warning ( pop )</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a> {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b"> 144</a></span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> std::string &amp;caption);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb"> 148</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">~GraphicsApp</a>();</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Callback methods -- override these and fill in to respond to user</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// input events.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
+<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f"> 165</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17"> 174</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b"> 187</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613"> 196</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48"> 200</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6"> 203</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08"> 206</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c"> 210</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7"> 213</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
+<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3"> 216</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01"> 225</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0"> 233</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
+<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c"> 241</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952"> 247</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22"> 251</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14"> 255</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a"> 261</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">OnWindowResize</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height) {}</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9"> 271</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">Run</a>();</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a"> 284</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>() {}</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
+<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3"> 297</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>() {}</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa"> 306</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a>(<span class="keywordtype">double</span> dt) {}</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
+<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0"> 311</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a>(NVGcontext *ctx) {}</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca"> 317</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>() {}</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac"> 322</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">IsKeyDown</a>(<span class="keywordtype">int</span> key);</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7"> 325</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">IsLeftMouseDown</a>();</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434"> 328</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">IsMiddleMouseDown</a>();</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d"> 331</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">IsRightMouseDown</a>();</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
+<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0"> 334</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">window_width</a>();</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016"> 337</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">window_height</a>();</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696"> 343</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">framebuffer_width</a>();</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32"> 349</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">framebuffer_height</a>();</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; </div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23"> 352</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a>();</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; </div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
+<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a"> 359</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels);</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248"> 365</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInNDC);</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
+<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1"> 372</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;vectorInPixels);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
+<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93"> 378</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;pointInNDC);</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646"> 382</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">ReadZValueAtPixel</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> whichBuffer = GL_BACK);</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
+<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16"> 385</a></span>&#160; <span class="keyword">virtual</span> nanogui::Screen* <a class="code" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>();</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94"> 388</a></span>&#160; <span class="keyword">virtual</span> GLFWwindow* <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>();</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
+<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5"> 393</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">ResizeWindow</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height);</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1"> 403</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">InitGraphicsContext</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordtype">bool</span> cursor_pos_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">bool</span> mouse_button_glfw_cb(<span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> modifiers);</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">bool</span> key_glfw_cb(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">bool</span> char_glfw_cb(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint);</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordtype">bool</span> drop_glfw_cb(<span class="keywordtype">int</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span> **filenames);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordtype">bool</span> scroll_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordtype">bool</span> resize_glfw_cb(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; </div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mouse_move(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(pos, delta);</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_down(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(pos);</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(pos);</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(pos);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(pos);</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(pos);</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(pos);</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_down(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(c, modifiers);</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_repeat(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(c, modifiers);</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_up(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(c, modifiers);</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_down(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_repeat(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_up(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">bool</span> graphicsInitialized_;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">int</span> width_;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">int</span> height_;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> std::string caption_;</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; nanogui::Screen *screen_;</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; GLFWwindow* window_;</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">double</span> lastDrawT_;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; Point2 lastMouse_;</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordtype">bool</span> leftDown_;</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">bool</span> middleDown_;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">bool</span> rightDown_;</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;};</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></div><div class="ttdoc">This is the main application base class for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00135">graphics_app.h:135</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a002560456139e537877d079978db4b01"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">mingfx::GraphicsApp::OnKeyDown</a></div><div class="ttdeci">virtual void OnKeyDown(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard down event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00225">graphics_app.h:225</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a00ad5039af2f428a08fe45751a9731c7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">mingfx::GraphicsApp::OnRightMouseDrag</a></div><div class="ttdeci">virtual void OnRightMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00213">graphics_app.h:213</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a04beb462aa04371dc86d807838f999e1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">mingfx::GraphicsApp::InitGraphicsContext</a></div><div class="ttdeci">virtual void InitGraphicsContext()</div><div class="ttdoc">Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) unt...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0db71b2465e12a8aef4eefbe8b9fcee5"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">mingfx::GraphicsApp::ResizeWindow</a></div><div class="ttdeci">virtual void ResizeWindow(int new_width, int new_height)</div><div class="ttdoc">Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0deb6da45fc0d3980e44556a861c7a14"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">mingfx::GraphicsApp::OnSpecialKeyUp</a></div><div class="ttdeci">virtual void OnSpecialKeyUp(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00255">graphics_app.h:255</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1c682fa2dd0bce855e1e32ffeac532b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">mingfx::GraphicsApp::window_width</a></div><div class="ttdeci">virtual int window_width()</div><div class="ttdoc">Returns the current width of the client area of the window in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1d5831953b37fae615fbd1bf527214b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">mingfx::GraphicsApp::OnKeyRepeat</a></div><div class="ttdeci">virtual void OnKeyRepeat(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard repeat event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00233">graphics_app.h:233</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a23a780feda9b52eea7319a53b204ce8f"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp::OnMouseMove</a></div><div class="ttdeci">virtual void OnMouseMove(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse has moved in the past frame and no mouse buttons are currently pressed,...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00165">graphics_app.h:165</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a378b8a102775eeb01a6da9dd68482d08"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">mingfx::GraphicsApp::OnMiddleMouseUp</a></div><div class="ttdeci">virtual void OnMiddleMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00206">graphics_app.h:206</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a45596da36aa3905e7c752826a7fd9f93"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Vector2 NormalizedDeviceCoordsToPixels(const Vector2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a471951dbf45ffa88027cb92707443646"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">mingfx::GraphicsApp::ReadZValueAtPixel</a></div><div class="ttdeci">virtual float ReadZValueAtPixel(const Point2 &amp;pointInPixels, unsigned int whichBuffer=GL_BACK)</div><div class="ttdoc">Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4aa30e3d33731178a9162454a81be08d"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">mingfx::GraphicsApp::IsRightMouseDown</a></div><div class="ttdeci">virtual bool IsRightMouseDown()</div><div class="ttdoc">True if the right mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4e8ac965474de9046448b8811bf25dd1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Vector2 PixelsToNormalizedDeviceCoords(const Vector2 &amp;vectorInPixels)</div><div class="ttdoc">Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a536dbadf0b8a11ef59d7e855ca43f613"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">mingfx::GraphicsApp::OnLeftMouseUp</a></div><div class="ttdeci">virtual void OnLeftMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00196">graphics_app.h:196</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a56d350a8b030998709a51630753d509b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">mingfx::GraphicsApp::OnLeftMouseDrag</a></div><div class="ttdeci">virtual void OnLeftMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00187">graphics_app.h:187</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a588315d5c45490b440a764af2bc5bd48"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">mingfx::GraphicsApp::OnMiddleMouseDown</a></div><div class="ttdeci">virtual void OnMiddleMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00200">graphics_app.h:200</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5a858fd10651f7617491f37b49dbf8ca"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp::DrawUsingOpenGL</a></div><div class="ttdeci">virtual void DrawUsingOpenGL()</div><div class="ttdoc">Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00317">graphics_app.h:317</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5b78d79192180a6ef5271d2a2b2d1cc7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">mingfx::GraphicsApp::IsLeftMouseDown</a></div><div class="ttdeci">virtual bool IsLeftMouseDown()</div><div class="ttdoc">True if the left mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5ee9ae3d14e76c949979a8008687d6c9"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">mingfx::GraphicsApp::Run</a></div><div class="ttdeci">virtual void Run()</div><div class="ttdoc">After creating a new GraphicsApp, call this to start the app's mainloop.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a60688614e5dfeaabf57f8825cdaa08ac"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">mingfx::GraphicsApp::IsKeyDown</a></div><div class="ttdeci">virtual bool IsKeyDown(int key)</div><div class="ttdoc">True if the specified is is currently held down. Uses the GLFW key codes found here: http://www....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a6141ec6adc29572ee99ca26cf90e6248"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Point2 NormalizedDeviceCoordsToPixels(const Point2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a688f12675da58210e8ec2ffcda4923d0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp::DrawUsingNanoVG</a></div><div class="ttdeci">virtual void DrawUsingNanoVG(NVGcontext *ctx)</div><div class="ttdoc">Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00311">graphics_app.h:311</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8362762489e287edfa59617a6602db22"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">mingfx::GraphicsApp::OnSpecialKeyRepeat</a></div><div class="ttdeci">virtual void OnSpecialKeyRepeat(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00251">graphics_app.h:251</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8376ef8eb0840b229a2301f995db3f6c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">mingfx::GraphicsApp::OnKeyUp</a></div><div class="ttdeci">virtual void OnKeyUp(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard up event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00241">graphics_app.h:241</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a903f94b82cc10f32039ff3f2ba368a9c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">mingfx::GraphicsApp::OnRightMouseDown</a></div><div class="ttdeci">virtual void OnRightMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00210">graphics_app.h:210</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a941f7598400073bfa93aa194a3773434"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">mingfx::GraphicsApp::IsMiddleMouseDown</a></div><div class="ttdeci">virtual bool IsMiddleMouseDown()</div><div class="ttdoc">True if the middle mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a94b19404e61411ef64c0ddde8ad6c07a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Point2 PixelsToNormalizedDeviceCoords(const Point2 &amp;pointInPixels)</div><div class="ttdoc">Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a96196b37f8b488b64072ec74b5d2b0b3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp::InitOpenGL</a></div><div class="ttdeci">virtual void InitOpenGL()</div><div class="ttdoc">Override this to initialize the OpenGL context with textures, vertex buffers, etc.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00297">graphics_app.h:297</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a9e2b4cd7eeabe1ace9d5e9220349fbaa"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp::UpdateSimulation</a></div><div class="ttdeci">virtual void UpdateSimulation(double dt)</div><div class="ttdoc">Called once per frame.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00306">graphics_app.h:306</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_aab7925c6b844e6bef428feacf4aa9afb"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">mingfx::GraphicsApp::~GraphicsApp</a></div><div class="ttdeci">virtual ~GraphicsApp()</div><div class="ttdoc">The destructor will shutdown the graphics system and window.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abcf1935e92550bcda311cac62f312952"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">mingfx::GraphicsApp::OnSpecialKeyDown</a></div><div class="ttdeci">virtual void OnSpecialKeyDown(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00247">graphics_app.h:247</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abd0ee14f7e12146000cdb3532d54ba94"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp::window</a></div><div class="ttdeci">virtual GLFWwindow * window()</div><div class="ttdoc">Access to the underlying GLFWwindow object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abf0b48c7d8e5325ab038fddbe1c38b5b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp::GraphicsApp</a></div><div class="ttdeci">GraphicsApp(int width, int height, const std::string &amp;caption)</div><div class="ttdoc">Constructs a new app but does not yet run it.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac682691ee96ea32037abafd74d144a23"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp::aspect_ratio</a></div><div class="ttdeci">virtual float aspect_ratio()</div><div class="ttdoc">Returns width/height for the current shape of the window.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac7628fece754c0ac4875791e19712dc6"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">mingfx::GraphicsApp::OnMiddleMouseDrag</a></div><div class="ttdeci">virtual void OnMiddleMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00203">graphics_app.h:203</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad596e69d030e7689ad91eaaec6975696"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">mingfx::GraphicsApp::framebuffer_width</a></div><div class="ttdeci">virtual int framebuffer_width()</div><div class="ttdoc">Returns the current width of the framebuffer in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7a641f7ccf174cd0a059347b623e016"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">mingfx::GraphicsApp::window_height</a></div><div class="ttdeci">virtual int window_height()</div><div class="ttdoc">Returns the current height of the client area of the window in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7c33791c44afc87ce789874f3002ca3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">mingfx::GraphicsApp::OnRightMouseUp</a></div><div class="ttdeci">virtual void OnRightMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00216">graphics_app.h:216</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adafdc4631db256fefce3c4ffdfd5086a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">mingfx::GraphicsApp::OnWindowResize</a></div><div class="ttdeci">virtual void OnWindowResize(int new_width, int new_height)</div><div class="ttdoc">Override this to respond when the graphics window and/or framebuffer are resized, either by the user ...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00261">graphics_app.h:261</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adc68196c3f03bd0608c41f6e4d7dad16"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp::screen</a></div><div class="ttdeci">virtual nanogui::Screen * screen()</div><div class="ttdoc">Access to the underlying NanoGUI Screen object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adfe77d841f43961b299ea6159477968a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp::InitNanoGUI</a></div><div class="ttdeci">virtual void InitNanoGUI()</div><div class="ttdoc">Called at the beginning of the Run() method.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00284">graphics_app.h:284</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ae12d9b192a2167a71e0c103405addb17"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">mingfx::GraphicsApp::OnLeftMouseDown</a></div><div class="ttdeci">virtual void OnLeftMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00174">graphics_app.h:174</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_af58153eb104f53216a3e67de2a472f32"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">mingfx::GraphicsApp::framebuffer_height</a></div><div class="ttdeci">virtual int framebuffer_height()</div><div class="ttdoc">Returns the current height of the framebuffer in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: MinGfx Toolkit Documentation</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="PageDoc"><div class="header">
+ <div class="headertitle">
+<div class="title">MinGfx Toolkit Documentation </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a class="anchor" id="mainpage"></a></p>
+<h1><a class="anchor" id="autotoc_md11"></a>
+Getting Started</h1>
+<ol type="1">
+<li><a class="el" href="installation.html">libMinGfx Installation Guide</a></li>
+<li><a class="el" href="installation.html#example">Create Your Own Graphics Program by Copying an Example</a></li>
+<li><a class="el" href="api.html">Bookmark the API - The MinGfx Programming Reference Organized by Topic</a></li>
+</ol>
+<h1><a class="anchor" id="autotoc_md12"></a>
+Programming Guide</h1>
+<ul>
+<li><a class="el" href="api.html">MinGfx Programming Reference</a></li>
+<li>Adding NanoGUI Elements (buttons, sliders, other GUI widgets)<ul>
+<li><a href="https://nanogui.readthedocs.io/en/latest/">NanoGUI Documentation</a></li>
+<li><a href="https://github.com/wjakob/nanogui">NanoGUI GitHub Repo</a></li>
+</ul>
+</li>
+<li>Drawing Using NanoVG (for 2D vector graphics)<ul>
+<li><a href="https://github.com/memononen/NanoVG">NanoVG Documentation</a></li>
+<li><a href="https://github.com/memononen/nanovg/blob/master/src/nanovg.h">nanovg.h &ndash; the best place to see all the possible commands</a></li>
+</ul>
+</li>
+<li>Drawing Using OpenGL (for 3D graphics)<ul>
+<li><a href="https://learnopengl.com/Introduction">learnopengl.com</a></li>
+<li><a href="https://www.google.com/search?q=opengl+3.3+guide">Google for OpenGL 3.3 Guide</a></li>
+</ul>
+</li>
+</ul>
+<h1><a class="anchor" id="autotoc_md13"></a>
+Overview</h1>
+<p>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.</p>
+<p>The library is maintained by Prof. Daniel Keefe (<a href="#" onclick="location.href='mai'+'lto:'+'dfk'+'@u'+'mn.'+'ed'+'u'; return false;">dfk@u<span style="display: none;">.nosp@m.</span>mn.e<span style="display: none;">.nosp@m.</span>du</a>) 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. </p>
+</div></div><!-- PageDoc -->
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Installation Guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="PageDoc"><div class="header">
+ <div class="headertitle">
+<div class="title">Installation Guide </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a class="anchor" id="md_doc_installation"></a></p>
+<h1><a class="anchor" id="install-prereqs"></a>
+Prereqs</h1>
+<p>MinGfx is built using the cross-platform CMake tool. Before building MinGfx, you will need to install CMake version 3.9 or higher (<a href="https://cmake.org/">https://cmake.org/</a>). On Mac, you will need to have Xcode installed as well as the <a href="https://www.embarcadero.com/starthere/xe5/mobdevsetup/ios/en/installing_the_commandline_tools.html">optional Xcode command line tools</a>.</p>
+<p>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.</p>
+<h1><a class="anchor" id="cmake-background"></a>
+Background for CMake Beginners</h1>
+<p>If you are new to CMake, this is the minimum background you should have before building MinGfx.</p>
+<p>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). <br />
+</p>
+<p>There are three versions of the cmake application that are provided with the install from Kitware. You can use any of these with MinGfx:</p><ol type="1">
+<li><em>cmake</em> is the command line version where all build options must be specified on the command line.</li>
+<li><em>ccmake</em> 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.</li>
+<li><em>cmake-gui</em> 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.</li>
+</ol>
+<p>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 <em>cmake-gui</em> 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 &ndash; the common idiom for cmake builds: </p><div class="fragment"><div class="line">// from within the root of the project&#39;s source directory</div>
+<div class="line">mkdir build</div>
+<div class="line">cd build</div>
+<div class="line">cmake-gui ..</div>
+</div><!-- fragment --><p>If you are using <em>cmake</em> 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 <em>cmake</em>, you can end up with a long string of arguments in order to setup the build you want. With <em>cmake-gui</em>, you set all of these build options within the user interface instead, and this is how we will proceed in the instructions that follow.</p>
+<h1><a class="anchor" id="build-tree"></a>
+Setup a New Graphics Build Tree</h1>
+<p>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.</p>
+<h2><a class="anchor" id="autotoc_md2"></a>
+1. Create a Linux-Style Directory Tree</h2>
+<p>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/.</p>
+<div class="fragment"><div class="line">mkdir -p /Users/keefe/courses/csci4611/sw</div>
+<div class="line">cd /Users/courses/csci4611/sw</div>
+<div class="line">mkdir lib</div>
+<div class="line">mkdir include</div>
+<div class="line">mkdir bin</div>
+<div class="line">mkdir dev</div>
+</div><!-- fragment --><p>IMPORTANT: On Windows, you will need to add the <code>bin</code> 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 <a href="https://www.java.com/en/download/help/path.xml">how to add a directory to the PATH environment variable on Windows</a>.</p>
+<h2><a class="anchor" id="autotoc_md3"></a>
+2. Download the MinGfx Project</h2>
+<p>To download use: </p><div class="fragment"><div class="line">cd dev</div>
+<div class="line">git clone http://github.com/ivlab/MinGfx</div>
+</div><!-- fragment --><h2><a class="anchor" id="autotoc_md4"></a>
+3. Create an Initial CMake Build Configuration</h2>
+<div class="fragment"><div class="line">cd MinGfx</div>
+<div class="line">mkdir build</div>
+<div class="line">cd build</div>
+<div class="line">cmake-gui ..</div>
+</div><!-- fragment --><p>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.</p>
+<p>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, <em>cmake-gui</em> will display any new configuration options highlighted in <em>red</em>. So, do not be alarmed when the whole options window turns red during this first configure operation &ndash; that is normal behavior since at this point, all of the options are new.</p>
+<p>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.</p>
+<h2><a class="anchor" id="autotoc_md5"></a>
+4. Set the CMAKE_INSTALL_PREFIX Variable to the Root of Your Directory Tree</h2>
+<p>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.</p>
+<p>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 &ndash; cmake knows that you have already had a chance to see them once.</p>
+<h2><a class="anchor" id="autotoc_md6"></a>
+5. If Needed, Set AUTOBUILD_NANOGUI to ON and Build Dependencies</h2>
+<p>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. </p><div class="fragment"><div class="line">Searching for NanoGUI library...</div>
+<div class="line">Could NOT find NANOGUI (missing: NANOGUI_LIBRARIES)</div>
+<div class="line">CMake Error at cmake/UseNanoGUI.cmake:96 (message):</div>
+<div class="line">The NanoGUI library was not found on the system. You can: (1) install</div>
+<div class="line">NanoGUI yourself, (2) point cmake to an already-installed version of</div>
+<div class="line">NanoGUI by adding the installation prefix of NanoGUI to the</div>
+<div class="line">CMAKE_PREFIX_PATH environment variable, or (3) set AUTOBUILD_NANOGUI to ON</div>
+<div class="line">and run cmake configure again. AUTOBUILD_NANOGUI will: 1. download</div>
+<div class="line">NanoGUI, 2. build NanoGUI, and 3. install NanoGUI to the</div>
+<div class="line">CMAKE_INSTALL_PREFIX (currently set to</div>
+<div class="line">/Users/keefe/courses/tmp/MinGfx/build/install). If you want to use the</div>
+<div class="line">AUTOBUILD feature, adjust CMAKE_INSTALL_PREFIX as desired now, set</div>
+<div class="line">AUTOBUILD_NANOGUI to ON, and then run cmake configure again.</div>
+<div class="line">Call Stack (most recent call first):</div>
+<div class="line">src/CMakeLists.txt:80 (UseNanoGUI)</div>
+<div class="line">CMakeLists.txt:186 (include)</div>
+</div><!-- fragment --><p> 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.</p>
+<p>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. <br />
+</p>
+<p>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 &ndash; perhaps there is something we haven't planned for in the particular setup of your computer.</p>
+<h2><a class="anchor" id="autotoc_md7"></a>
+6. Generate the Build System / Project Files</h2>
+<p>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. <br />
+</p>
+<h2><a class="anchor" id="autotoc_md8"></a>
+7. Build MinGfx with the Specified Options</h2>
+<p>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. <br />
+</p>
+<p>For Xcode: <code>click the Triangle button to build the ALL_BUILD target</code></p>
+<p>For Visual Studio: In the Solution Explorer Window <code>right click on ALL_BUILD</code> and select <code>Build</code></p>
+<p>For Unix Makefiles: run <code>make all</code>.</p>
+<h2><a class="anchor" id="autotoc_md9"></a>
+8. Install the Library to your Directory Tree</h2>
+<p>For Xcode: <code>click on ALL_BUILD to reveal a dropdown list and select install</code> then <code>click the Triangle button</code></p>
+<p>For Visual Studio: In the Solution Explorer Window <code>right click on INSTALL</code> and select <code>Build</code>.</p>
+<p>For Unix Makefiles: run <code>make install</code>.</p>
+<p>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/.</p>
+<h2><a class="anchor" id="autotoc_md10"></a>
+9. Run a Test Program</h2>
+<p>For Xcode: <code>click on ALL_BUILD to reveal a dropdown list and select mingfx-test-gui-plus-opengl</code> then <code>click the Triangle button</code></p>
+<p>For Visual Studio: In the Solution Explorer Window <code>right click on mingfx-test-gui-plus-opengl</code> then selece <code>Set as StartUp Project</code>. Now, <code>click the green triangle button to run the program</code>. IMPORTANT NOTE: When the program runs it will need to find some .dlls that were installed to your <code>bin</code> directory in Step 8. So, the bin directory <em>must be in your windows PATH</em>. If you skipped this part of Step 1, go back and add <code>bin</code> to your PATH environment variable now. Then, you may need to restart Visual Studio for it to recognize the new setting.</p>
+<p>For Unix Makefiles: from within the build directory run: <code>tests/mingfx-gui-plus-opengl</code></p>
+<h1><a class="anchor" id="example"></a>
+Create Your Own Graphics Program</h1>
+<p><em>Prereq:</em> Before getting started, make sure you have installed MinGfx, going all the way through the 9th step above.</p>
+<p>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.</p>
+<div class="fragment"><div class="line">cd /Users/courses/csci4611/sw/dev (or wherever you put your dev directory)</div>
+<div class="line">cp -r MinGfx/example/ mingfx-example</div>
+</div><!-- fragment --><p>Now, before we build the example, we need to make sure it knows where to find MinGfx. <br />
+ </p><div class="fragment"><div class="line">cd mingfx-example</div>
+<div class="line">open up the CMakeLists.txt file in your favorite text editor</div>
+</div><!-- fragment --><p>Near the top of the file, find the following lines </p><div class="fragment"><div class="line"># !!!!!!!!!!!!! EDIT THE FOLLOWING LINE AS NEEDED !!!!!!!!!!!!! </div>
+<div class="line">list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../build/install ../../..)</div>
+</div><!-- fragment --><p> and add a path to the end of the list to point to the ROOT of your directory tree, for example: </p><div class="fragment"><div class="line"># !!!!!!!!!!!!! EDIT THE FOLLOWING LINE AS NEEDED !!!!!!!!!!!!! </div>
+<div class="line">list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../build/install ../../.. /Users/keefe/courses/cs4611/sw)</div>
+</div><!-- fragment --><p>Now, we're ready to build this example using the same cmake idiom as before: </p><div class="fragment"><div class="line">mkdir build</div>
+<div class="line">cd build</div>
+<div class="line">cmake-gui ..</div>
+</div><!-- fragment --><p> Then, click <em>Configure</em>. If you want to install this example program, you may now edit the CMAKE_INSTALL_PREFIX as before and rerun <em>Configure</em>. It should not be necessary to change any of the other cmake variables for this example program.</p>
+<p>Next, click <em>Generate</em> to produce project files for your IDE or makefiles. <br />
+</p>
+<p>Next, build the example program within your IDE or by running <code>make</code>.</p>
+<p>Finally, you can run your first example graphics program with the command: </p><div class="fragment"><div class="line">./mingfx-example</div>
+</div><!-- fragment --><p>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 <em>Configure</em> and <em>Generate</em> steps again. <br />
+</p>
+<p>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-&gt;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. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: doc/installation.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">doc/installation.md File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+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="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",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="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";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<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{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<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\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<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\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<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_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;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",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<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\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<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},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<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").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="<form></form><form></form>",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<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;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:"<div>",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("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),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.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"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("<div class='ui-wrapper' style='overflow: hidden;'></div>").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("<div>"),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.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.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("<div style='overflow:hidden;'></div>"),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<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-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<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{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.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ * jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){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=$("<span/>").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=$('<div class="sm-jquery-disable-overlay"/>').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",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[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.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: doc/mainpage.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">doc/mainpage.md File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/matrix4.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">matrix4.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="ray_8h_source.html">ray.h</a>&quot;</code><br />
+</div>
+<p><a href="matrix4_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL. <a href="classmingfx_1_1_matrix4.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ae5708e414f585dde2a5418ddae259a57"><td class="memItemLeft" align="right" valign="top">Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx::operator*</a> (const Matrix4 &amp;m, const float &amp;s)</td></tr>
+<tr class="memdesc:ae5708e414f585dde2a5418ddae259a57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and scalar, returns the new matrix. <a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">More...</a><br /></td></tr>
+<tr class="separator:ae5708e414f585dde2a5418ddae259a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a061ff38340cf1aad4612790b0a600aeb"><td class="memItemLeft" align="right" valign="top">Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb">mingfx::operator*</a> (const float &amp;s, const Matrix4 &amp;m)</td></tr>
+<tr class="memdesc:a061ff38340cf1aad4612790b0a600aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and scalar, returns the new matrix. <a href="namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb">More...</a><br /></td></tr>
+<tr class="separator:a061ff38340cf1aad4612790b0a600aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="memItemLeft" align="right" valign="top">Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80">mingfx::operator*</a> (const Matrix4 &amp;m, const Point3 &amp;p)</td></tr>
+<tr class="memdesc:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and point, returns the new point. <a href="namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80">More...</a><br /></td></tr>
+<tr class="separator:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb2cfd42e696494e4797d8f7e11f6d77"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77">mingfx::operator*</a> (const Matrix4 &amp;m, const Vector3 &amp;v)</td></tr>
+<tr class="memdesc:abb2cfd42e696494e4797d8f7e11f6d77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and vector, returns the new vector. <a href="namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77">More...</a><br /></td></tr>
+<tr class="separator:abb2cfd42e696494e4797d8f7e11f6d77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadc0e86a31d54469e730669067b102c2"><td class="memItemLeft" align="right" valign="top">Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aadc0e86a31d54469e730669067b102c2">mingfx::operator*</a> (const Matrix4 &amp;m1, const Matrix4 &amp;m2)</td></tr>
+<tr class="memdesc:aadc0e86a31d54469e730669067b102c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply two matrices, returns the result. <a href="namespacemingfx.html#aadc0e86a31d54469e730669067b102c2">More...</a><br /></td></tr>
+<tr class="separator:aadc0e86a31d54469e730669067b102c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1af1c07624961984759120b7af7f9ce4"><td class="memItemLeft" align="right" valign="top">Ray&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4">mingfx::operator*</a> (const Matrix4 &amp;m, const Ray &amp;r)</td></tr>
+<tr class="memdesc:a1af1c07624961984759120b7af7f9ce4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and the point and vector portions of the ray, returns the new ray. <a href="namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4">More...</a><br /></td></tr>
+<tr class="separator:a1af1c07624961984759120b7af7f9ce4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1584104dea1f0a5636c868b67ddf6b10"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Matrix4 &amp;m)</td></tr>
+<tr class="separator:a1584104dea1f0a5636c868b67ddf6b10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05fc1c0b2b6011283c019242d6a2de74"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Matrix4 &amp;m)</td></tr>
+<tr class="separator:a05fc1c0b2b6011283c019242d6a2de74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/matrix4.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">matrix4.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="matrix4_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2017, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_MATRIX4_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_MATRIX4_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ray_8h.html">ray.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> {</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>: </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22"> 54</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">Matrix4</a>();</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d"> 58</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d">Matrix4</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* a);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138"> 62</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138">Matrix4</a>(<span class="keyword">const</span> std::vector&lt;float&gt; &amp;a);</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87"> 65</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87">Matrix4</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m2);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933"> 68</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">~Matrix4</a>();</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73"> 71</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m2) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b"> 74</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m2) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770"> 77</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; <a class="code" href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m2);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c"> 82</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127"> 86</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656"> 90</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9"> 94</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> row, <span class="keyword">const</span> <span class="keywordtype">int</span> col) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096"> 98</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> row, <span class="keyword">const</span> <span class="keywordtype">int</span> col);</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3"> 105</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">ColumnToVector3</a>(<span class="keywordtype">int</span> c) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd"> 109</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">ColumnToPoint3</a>(<span class="keywordtype">int</span> c) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db"> 111</a></span>&#160; std::vector&lt;float&gt; <a class="code" href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">ToVector</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// --- Static Constructors for Special Matrices ---</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b"> 122</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">FromRowMajorElements</a>(</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> r1c1, <span class="keyword">const</span> <span class="keywordtype">float</span> r1c2, <span class="keyword">const</span> <span class="keywordtype">float</span> r1c3, <span class="keyword">const</span> <span class="keywordtype">float</span> r1c4,</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> r2c1, <span class="keyword">const</span> <span class="keywordtype">float</span> r2c2, <span class="keyword">const</span> <span class="keywordtype">float</span> r2c3, <span class="keyword">const</span> <span class="keywordtype">float</span> r2c4,</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> r3c1, <span class="keyword">const</span> <span class="keywordtype">float</span> r3c2, <span class="keyword">const</span> <span class="keywordtype">float</span> r3c3, <span class="keyword">const</span> <span class="keywordtype">float</span> r3c4,</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> r4c1, <span class="keyword">const</span> <span class="keywordtype">float</span> r4c2, <span class="keyword">const</span> <span class="keywordtype">float</span> r4c3, <span class="keyword">const</span> <span class="keywordtype">float</span> r4c4</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; );</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// --- Model Transformations ---</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e"> 132</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">Scale</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84"> 135</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">Translation</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08"> 138</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">RotationX</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> radians);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6"> 141</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">RotationY</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> radians);</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93"> 144</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">RotationZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> radians);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0"> 147</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">Rotation</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v, <span class="keyword">const</span> <span class="keywordtype">float</span> a);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d"> 173</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">Align</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;a_p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a_v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a_v2,</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;b_p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b_v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b_v2);</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// --- View Matrices ---</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de"> 183</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">LookAt</a>(<a class="code" href="classmingfx_1_1_point3.html">Point3</a> eye, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> target, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> up);</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// --- Projection Matrices ---</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e"> 189</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">Perspective</a>(<span class="keywordtype">float</span> fov_y_in_degrees, <span class="keywordtype">float</span> aspect_ratio, <span class="keywordtype">float</span> near_plane_dist, <span class="keywordtype">float</span> far_plane_dist);</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722"> 192</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">Frustum</a>(<span class="keywordtype">float</span> left, <span class="keywordtype">float</span> right, <span class="keywordtype">float</span> bottom, <span class="keywordtype">float</span> top, <span class="keywordtype">float</span> near_plane_dist, <span class="keywordtype">float</span> far_plane_dist);</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// --- Inverse, Transposeand Other General Matrix Functions ---</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5"> 198</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">Inverse</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250"> 204</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">Orthonormal</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850"> 207</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">Transpose</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481"> 211</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">SubDeterminant</a>(<span class="keywordtype">int</span> exclude_row, <span class="keywordtype">int</span> exclude_col) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
+<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91"> 214</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">Cofactor</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c"> 217</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">Determinant</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">float</span> m[16];</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;};</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// ---------- Operator Overloads for Working with Points, Vectors, &amp; Matrices ---------- </span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// --- Matrix multiplication for Points, Vectors, &amp; Matrices ---</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57"> 233</a></span>&#160;<a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m, <span class="keyword">const</span> <span class="keywordtype">float</span>&amp; s);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb"> 236</a></span>&#160;<a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>&amp; s, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m);</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
+<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80"> 239</a></span>&#160;<a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p);</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77"> 242</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
+<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aadc0e86a31d54469e730669067b102c2"> 245</a></span>&#160;<a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m2);</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
+<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4"> 250</a></span>&#160;<a class="code" href="classmingfx_1_1_ray.html">Ray</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a>&amp; m, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_ray.html">Ray</a>&amp; r);</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">// --- Stream operators ---</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10"> 254</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m);</div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74"> 255</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m);</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0127ebae92b50e4f10ebee8565b0248c"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c">mingfx::Matrix4::Determinant</a></div><div class="ttdeci">float Determinant() const</div><div class="ttdoc">Returns the determinant of the 4x4 matrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0232a58d20b1da5374cf8c72fb113a4e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e">mingfx::Matrix4::Scale</a></div><div class="ttdeci">static Matrix4 Scale(const Vector3 &amp;v)</div><div class="ttdoc">Returns the scale matrix described by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a09a366a3ef940ff355f8d5c521baa57d"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d">mingfx::Matrix4::Matrix4</a></div><div class="ttdeci">Matrix4(const float *a)</div><div class="ttdoc">Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0abaeb690794c4a55e74c9b5fd82d138"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138">mingfx::Matrix4::Matrix4</a></div><div class="ttdeci">Matrix4(const std::vector&lt; float &gt; &amp;a)</div><div class="ttdoc">Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0d88ba8e15325d135157d115f2412e91"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91">mingfx::Matrix4::Cofactor</a></div><div class="ttdeci">Matrix4 Cofactor() const</div><div class="ttdoc">Returns the cofactor matrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a0e34aee86758a0397074590b87712c5e"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e">mingfx::Matrix4::Perspective</a></div><div class="ttdeci">static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a perspective projection matrix equivalent to the one gluPerspective creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a2b7b30f23f08d70e83c7b7e01945dd3c"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c">mingfx::Matrix4::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a pointer to the raw data array used to store the matrix. This is a 1D array of 16-elements s...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a3d9898bfac2510a695df6b033054e481"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481">mingfx::Matrix4::SubDeterminant</a></div><div class="ttdeci">float SubDeterminant(int exclude_row, int exclude_col) const</div><div class="ttdoc">Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4543695a6dfc996d0312b70c2eaa00de"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de">mingfx::Matrix4::LookAt</a></div><div class="ttdeci">static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)</div><div class="ttdoc">Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a470bba77b8e3c47de7adaa18046e6096"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096">mingfx::Matrix4::operator()</a></div><div class="ttdeci">float &amp; operator()(const int row, const int col)</div><div class="ttdoc">Access an individual element of the array using the syntax: Matrix4 mat; mat(1,2) = 1....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a48615deb30590055c0aa9f207eee7f08"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08">mingfx::Matrix4::RotationX</a></div><div class="ttdeci">static Matrix4 RotationX(const float radians)</div><div class="ttdoc">Returns the rotation matrix about the x axis by the specified angle.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4bcf311614006c551f57d2b0dcd32d87"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87">mingfx::Matrix4::Matrix4</a></div><div class="ttdeci">Matrix4(const Matrix4 &amp;m2)</div><div class="ttdoc">Copy constructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4bf1dced8875fdc5827b5b8869e9de93"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93">mingfx::Matrix4::RotationZ</a></div><div class="ttdeci">static Matrix4 RotationZ(const float radians)</div><div class="ttdoc">Returns the rotation matrix about the z axis by the specified angle.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a4e9433f0482b5e9688c12398900608db"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db">mingfx::Matrix4::ToVector</a></div><div class="ttdeci">std::vector&lt; float &gt; ToVector() const</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a50990f00b756d640670a0b02129afd22"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22">mingfx::Matrix4::Matrix4</a></div><div class="ttdeci">Matrix4()</div><div class="ttdoc">The default constructor creates an identity matrix:</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a7396dbff36cb732e1bd878020f52bbc3"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3">mingfx::Matrix4::ColumnToVector3</a></div><div class="ttdeci">Vector3 ColumnToVector3(int c) const</div><div class="ttdoc">Returns the c-th column of the matrix as a Vector type, e.g.,: Vector3 xAxis = mat....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a8853a6b3fd0d08f1def5c9921bd47933"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933">mingfx::Matrix4::~Matrix4</a></div><div class="ttdeci">virtual ~Matrix4()</div><div class="ttdoc">Destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a8e2f7b50cd2c8853e007829df9863722"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722">mingfx::Matrix4::Frustum</a></div><div class="ttdeci">static Matrix4 Frustum(float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)</div><div class="ttdoc">Returns a projection matrix equivalent the one glFrustum creates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a9ad5c85784e84fa0a941361eaaae0250"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250">mingfx::Matrix4::Orthonormal</a></div><div class="ttdeci">Matrix4 Orthonormal() const</div><div class="ttdoc">Returns an orthonormal version of the matrix, i.e., guarantees that the rotational component of the m...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a9ad8a8bc180ce213956d6d7d3fa19770"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770">mingfx::Matrix4::operator=</a></div><div class="ttdeci">Matrix4 &amp; operator=(const Matrix4 &amp;m2)</div><div class="ttdoc">Matrix assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_a9ec2ee167a450cd7b992384e4cc5bb73"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73">mingfx::Matrix4::operator==</a></div><div class="ttdeci">bool operator==(const Matrix4 &amp;m2) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_aa324d0cec02c452fb938af28725d5df9"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9">mingfx::Matrix4::operator()</a></div><div class="ttdeci">float operator()(const int row, const int col) const</div><div class="ttdoc">Access an individual element of the array using the syntax: Matrix4 mat; float row1col2 = mat(1,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ab186b0ae1ae669346c0718c2489cd71b"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b">mingfx::Matrix4::operator!=</a></div><div class="ttdeci">bool operator!=(const Matrix4 &amp;m2) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ab3f360906e15730eee621826b5f0bbc5"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5">mingfx::Matrix4::Inverse</a></div><div class="ttdeci">Matrix4 Inverse() const</div><div class="ttdoc">Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the ident...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_acd64f0db45e255d61dde4f6fa10a4127"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127">mingfx::Matrix4::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-ele...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_acf4abaf4a45826f14b435edf80a8d0e0"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0">mingfx::Matrix4::Rotation</a></div><div class="ttdeci">static Matrix4 Rotation(const Point3 &amp;p, const Vector3 &amp;v, const float a)</div><div class="ttdoc">Returns the rotation matrix around the vector v placed at point p, rotate by angle a.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_add98bfa1cf6a10dbae0e8ae8defe728b"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b">mingfx::Matrix4::FromRowMajorElements</a></div><div class="ttdeci">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)</div><div class="ttdoc">Returns a matrix constructed from individual elements passed in row major order so that the matrix lo...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae61cdabb318a03cd4dae8a1c8ecafa4d"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d">mingfx::Matrix4::Align</a></div><div class="ttdeci">static Matrix4 Align(const Point3 &amp;a_p, const Vector3 &amp;a_v1, const Vector3 &amp;a_v2, const Point3 &amp;b_p, const Vector3 &amp;b_v1, const Vector3 &amp;b_v2)</div><div class="ttdoc">Creates a transformation matrix that maps a coordinate space, a, defined one point,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae82bab81df82dc03f5eb11e74ba1dd84"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84">mingfx::Matrix4::Translation</a></div><div class="ttdeci">static Matrix4 Translation(const Vector3 &amp;v)</div><div class="ttdoc">Returns the translation matrix described by the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_ae991be2b3bca290b44e676a9f8dc13bd"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd">mingfx::Matrix4::ColumnToPoint3</a></div><div class="ttdeci">Point3 ColumnToPoint3(int c) const</div><div class="ttdoc">Returns the c-th column of the matrix as a Vector type, e.g.,: Point3 pos = mat.getColumnAsPoint3(3);...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_aef94f0e9d298a7ba57e0119ef09b71b6"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6">mingfx::Matrix4::RotationY</a></div><div class="ttdeci">static Matrix4 RotationY(const float radians)</div><div class="ttdoc">Returns the rotation matrix about the y axis by the specified angle.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_af9b02807d81eac55d66238f246c53656"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656">mingfx::Matrix4::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-ele...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html_afd1030205567d23d4a2d1240d8214850"><div class="ttname"><a href="classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850">mingfx::Matrix4::Transpose</a></div><div class="ttdeci">Matrix4 Transpose() const</div><div class="ttdoc">Returns the transpose of the matrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html"><div class="ttname"><a href="classmingfx_1_1_ray.html">mingfx::Ray</a></div><div class="ttdoc">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...</div><div class="ttdef"><b>Definition:</b> <a href="ray_8h_source.html#l00054">ray.h:54</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_ae5708e414f585dde2a5418ddae259a57"><div class="ttname"><a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx::operator*</a></div><div class="ttdeci">Matrix4 operator*(const Matrix4 &amp;m, const float &amp;s)</div><div class="ttdoc">Multiply matrix and scalar, returns the new matrix.</div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="aray_8h_html"><div class="ttname"><a href="ray_8h.html">ray.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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+='<ul>';
+ for (var i in data.children) {
+ result+='<li><a href="'+relPath+data.children[i].url+'">'+
+ data.children[i].text+'</a>'+
+ makeTree(data.children[i],relPath)+'</li>';
+ }
+ result+='</ul>';
+ }
+ 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('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.svg" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
+ } else {
+ $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.svg" alt=""/></a></span></div></li>');
+ }
+ }
+ $('#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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mesh.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">mesh.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="bvh_8h_source.html">bvh.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="opengl__headers_8h_source.html">opengl_headers.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+</div>
+<p><a href="mesh_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A triangle mesh data structure that can be rendered with a <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> like <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a>. <a href="classmingfx_1_1_mesh.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mesh.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mesh.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="mesh_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_MESH_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_MESH_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bvh_8h.html">bvh.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="opengl__headers_8h.html">opengl_headers.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">class </span>Matrix4;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html"> 127</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> {</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9"> 130</a></span>&#160; <a class="code" href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">Mesh</a>();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1"> 133</a></span>&#160; <a class="code" href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1">Mesh</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;other);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327"> 135</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">~Mesh</a>();</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f"> 142</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">LoadFromOBJ</a>(<span class="keyword">const</span> std::string &amp;filename);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// ---- TRIANGLE LIST MODE ----</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// No indices are stored, each set of 3 vertices forms a triangle, and if the</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// triangles share vertices, those vertices need to be repeated.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a"> 155</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">AddTriangle</a>(<a class="code" href="classmingfx_1_1_point3.html">Point3</a> v1, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> v2, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> v3);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044"> 159</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">UpdateTriangle</a>(<span class="keywordtype">int</span> triangle_id, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> v1, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> v2, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> v3);</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903"> 163</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">SetNormals</a>(<span class="keywordtype">int</span> triangle_id, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> n1, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> n2, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> n3);</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f"> 167</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">SetColors</a>(<span class="keywordtype">int</span> triangle_id, <a class="code" href="classmingfx_1_1_color.html">Color</a> c1, <a class="code" href="classmingfx_1_1_color.html">Color</a> c2, <a class="code" href="classmingfx_1_1_color.html">Color</a> c3);</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3"> 172</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">SetTexCoords</a>(<span class="keywordtype">int</span> triangle_id, <span class="keywordtype">int</span> texture_unit, <a class="code" href="classmingfx_1_1_point2.html">Point2</a> uv1, <a class="code" href="classmingfx_1_1_point2.html">Point2</a> uv2, <a class="code" href="classmingfx_1_1_point2.html">Point2</a> uv3);</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// ---- INDEXED TRIANGLES MODE ----</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Vertices are stored in an array and indices are stored in a separate array</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// each set of 3 indices into the vertex array defines one triangle. Here,</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// you cannot add one triangle at a time to the mesh. Instead you must set</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// the arrays of indices, vertices, and other attributes for the mesh at</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// once.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6"> 184</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">SetVertices</a>(<span class="keyword">const</span> std::vector&lt;Point3&gt; &amp;verts);</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d"> 187</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d">SetNormals</a>(<span class="keyword">const</span> std::vector&lt;Vector3&gt; &amp;norms);</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae"> 190</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae">SetColors</a>(<span class="keyword">const</span> std::vector&lt;Color&gt; &amp;colors);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1"> 193</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1">SetTexCoords</a>(<span class="keywordtype">int</span> texture_unit, <span class="keyword">const</span> std::vector&lt;Point2&gt; &amp;tex_coords);</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581"> 198</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">SetIndices</a>(<span class="keyword">const</span> std::vector&lt;unsigned int&gt; index_array);</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
+<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87"> 201</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">SetInstanceTransforms</a>(<span class="keyword">const</span> std::vector&lt;Matrix4&gt; &amp;xforms);</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// ---- These functions can be used instead of the above if you are working with</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// regular C-style arrays and floats rather than the higher level types like</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Point3 and Vector3. ----</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49"> 211</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49">SetVertices</a>(<span class="keywordtype">float</span> *verts_array, <span class="keywordtype">int</span> num_verts);</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6"> 217</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6">SetNormals</a>(<span class="keywordtype">float</span> *norms_array, <span class="keywordtype">int</span> num_norms);</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae"> 223</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae">SetColors</a>(<span class="keywordtype">float</span> *colors_array, <span class="keywordtype">int</span> num_colors);</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9"> 229</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9">SetTexCoords</a>(<span class="keywordtype">int</span> texture_unit, <span class="keywordtype">float</span> *tex_coords_array, <span class="keywordtype">int</span> num_tex_coords);</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
+<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c"> 235</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c">SetIndices</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *index_array, <span class="keywordtype">int</span> num_indices);</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
+<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e"> 246</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">UpdateGPUMemory</a>();</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c"> 252</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">Draw</a>();</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7"> 262</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">CalcPerFaceNormals</a>();</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c"> 270</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">CalcPerVertexNormals</a>();</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1"> 276</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">BuildBVH</a>();</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; </div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4"> 282</a></span>&#160; <a class="code" href="classmingfx_1_1_b_v_h.html">BVH</a>* <a class="code" href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">bvh_ptr</a>();</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Access to properties indexed by vertex number</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
+<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d"> 287</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">num_vertices</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
+<div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863"> 291</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">read_vertex_data</a>(<span class="keywordtype">int</span> vertex_id) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
+<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65"> 295</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">read_normal_data</a>(<span class="keywordtype">int</span> vertex_id) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3"> 299</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">read_color_data</a>(<span class="keywordtype">int</span> vertex_id) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
+<div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31"> 303</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">read_tex_coords_data</a>(<span class="keywordtype">int</span> texture_unit, <span class="keywordtype">int</span> vertex_id) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; </div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// Access to triangles</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
+<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f"> 309</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">num_triangles</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// of unsigned ints. Use the SetIndices() function to set (or edit) the indices for the mesh.</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a"> 313</a></span>&#160; std::vector&lt;unsigned int&gt; <a class="code" href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">read_triangle_indices_data</a>(<span class="keywordtype">int</span> triangle_id) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; std::vector&lt;float&gt; verts_;</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; std::vector&lt;float&gt; norms_;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; std::vector&lt;float&gt; colors_;</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; std::vector&lt; std::vector&lt;float&gt; &gt; tex_coords_;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; std::vector&lt;unsigned int&gt; indices_;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; std::vector&lt;float&gt; instance_xforms_;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">bool</span> gpu_dirty_;</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; GLuint vertex_buffer_;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; GLuint vertex_array_;</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; GLuint element_buffer_;</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordtype">bool</span> bvh_dirty_;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classmingfx_1_1_b_v_h.html">BVH</a> bvh_;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;};</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; </div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; </div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="abvh_8h_html"><div class="ttname"><a href="bvh_8h.html">bvh.h</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_b_v_h_html"><div class="ttname"><a href="classmingfx_1_1_b_v_h.html">mingfx::BVH</a></div><div class="ttdoc">A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...</div><div class="ttdef"><b>Definition:</b> <a href="bvh_8h_source.html#l00040">bvh.h:40</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a033076b9bf1714c9b9e0eeef11ebcd49"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49">mingfx::Mesh::SetVertices</a></div><div class="ttdeci">void SetVertices(float *verts_array, int num_verts)</div><div class="ttdoc">Sets the vertex array for the mesh directly. Vertices are stored as (x,y,z), (x,y,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a0f59e19b74f4f9dc2ad580756f8b319f"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f">mingfx::Mesh::SetColors</a></div><div class="ttdeci">void SetColors(int triangle_id, Color c1, Color c2, Color c3)</div><div class="ttdoc">Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a15d79cbc48a6ef72ef1208d734cc2f8a"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a">mingfx::Mesh::read_triangle_indices_data</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; read_triangle_indices_data(int triangle_id) const</div><div class="ttdoc">Read only access to the indices that make up a particular triangle. Data are returned as a 3-element ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a17cb896939007357014c74a1ece6f1f3"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3">mingfx::Mesh::SetTexCoords</a></div><div class="ttdeci">void SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)</div><div class="ttdoc">Sets the texture coordinates for the three vertices of a triangle that has already been added to the ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a1a5cea9cfdf4c672ba0c781ee54718f7"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7">mingfx::Mesh::CalcPerFaceNormals</a></div><div class="ttdeci">void CalcPerFaceNormals()</div><div class="ttdoc">This (re)calculates the normals for the mesh and stores them with the mesh data structure.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a1dd243b53826765ba468f505645102a6"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6">mingfx::Mesh::SetVertices</a></div><div class="ttdeci">void SetVertices(const std::vector&lt; Point3 &gt; &amp;verts)</div><div class="ttdoc">Sets the vertex array for the mesh directly.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a1f94c9ca7867b65e04f7e02813a06581"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581">mingfx::Mesh::SetIndices</a></div><div class="ttdeci">void SetIndices(const std::vector&lt; unsigned int &gt; index_array)</div><div class="ttdoc">Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indi...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a29eeb2e778704350789033ec4940d55a"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a">mingfx::Mesh::AddTriangle</a></div><div class="ttdeci">int AddTriangle(Point3 v1, Point3 v2, Point3 v3)</div><div class="ttdoc">Adds a triangle to the mesh datastructure and returns a triangle ID.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a3e0ac86714f6b7c3f62761ef3952a044"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044">mingfx::Mesh::UpdateTriangle</a></div><div class="ttdeci">void UpdateTriangle(int triangle_id, Point3 v1, Point3 v2, Point3 v3)</div><div class="ttdoc">Updates the vertex positions for a triangle that has already been added to the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a439361e454ca63c35f564aed5cd0de65"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65">mingfx::Mesh::read_normal_data</a></div><div class="ttdeci">Vector3 read_normal_data(int vertex_id) const</div><div class="ttdoc">Read only access to per-vertex normal data. Data are returned as a Vector3. Indexed by vertex number....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a43d5a5cc3ef742a8c2b5e3f1b4da0903"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903">mingfx::Mesh::SetNormals</a></div><div class="ttdeci">void SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)</div><div class="ttdoc">Sets the normals for the three vertices of a triangle that has already been added to the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a51aaa8d6a80af46f22ea9dfecd2f0b31"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31">mingfx::Mesh::read_tex_coords_data</a></div><div class="ttdeci">Point2 read_tex_coords_data(int texture_unit, int vertex_id) const</div><div class="ttdoc">Read only access to per-vertex texture coordinates data. Data are returned as a Point2....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a69613870d54989f4226e50caf4ca9fb9"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9">mingfx::Mesh::Mesh</a></div><div class="ttdeci">Mesh()</div><div class="ttdoc">Creates an empty mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a6ab1128fab6f969564d3a1329baeade6"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6">mingfx::Mesh::SetNormals</a></div><div class="ttdeci">void SetNormals(float *norms_array, int num_norms)</div><div class="ttdoc">Sets the normal array for the mesh directly. Normals are stored as (x,y,z), (x,y,z),...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a7175238f5874929e2258458b98421d87"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87">mingfx::Mesh::SetInstanceTransforms</a></div><div class="ttdeci">void SetInstanceTransforms(const std::vector&lt; Matrix4 &gt; &amp;xforms)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a75075d472938fd760477be42585aff5c"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c">mingfx::Mesh::Draw</a></div><div class="ttdeci">void Draw()</div><div class="ttdoc">This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-i...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a76b4977f0a7f156aa8a0027f10dcbdc1"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1">mingfx::Mesh::Mesh</a></div><div class="ttdeci">Mesh(const Mesh &amp;other)</div><div class="ttdoc">Copies all data and sets GPU dirty bit for the new mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a84711746b8d37c8d9b12ae748a4c5b8c"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c">mingfx::Mesh::SetIndices</a></div><div class="ttdeci">void SetIndices(unsigned int *index_array, int num_indices)</div><div class="ttdoc">Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indi...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a8d05faf18ef8d170fc3c2a343075823f"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f">mingfx::Mesh::LoadFromOBJ</a></div><div class="ttdeci">void LoadFromOBJ(const std::string &amp;filename)</div><div class="ttdoc">This reads a mesh stored in the common Wavefront Obj file format.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a8d96c1b5985cd836f2aa2b2994af64c1"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1">mingfx::Mesh::BuildBVH</a></div><div class="ttdeci">void BuildBVH()</div><div class="ttdoc">This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with Ray::Fa...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_a978b1341d5613d399a68e40c61c57ba4"><div class="ttname"><a href="classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4">mingfx::Mesh::bvh_ptr</a></div><div class="ttdeci">BVH * bvh_ptr()</div><div class="ttdoc">Returns a pointer to the underlying BVH data structure.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ab3f3779506e15e3888ccbb8b9b572b8f"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f">mingfx::Mesh::num_triangles</a></div><div class="ttdeci">int num_triangles() const</div><div class="ttdoc">The total number of triangles in the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ab8f6856429466f1b4600a6ec27b84d0d"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d">mingfx::Mesh::num_vertices</a></div><div class="ttdeci">int num_vertices() const</div><div class="ttdoc">The total number of vertices in the mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ab9b05a77591a9adad12032d513256dae"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae">mingfx::Mesh::SetColors</a></div><div class="ttdeci">void SetColors(const std::vector&lt; Color &gt; &amp;colors)</div><div class="ttdoc">Sets the per-vertex colors array for the mesh directly.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_aba2dfd0ade2d8a728897d411ef3fdaf1"><div class="ttname"><a href="classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1">mingfx::Mesh::SetTexCoords</a></div><div class="ttdeci">void SetTexCoords(int texture_unit, const std::vector&lt; Point2 &gt; &amp;tex_coords)</div><div class="ttdoc">Sets a texture coordinates array for the mesh directly.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ac5fc517fd8ea4cea8459d3f4d5d6ced3"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3">mingfx::Mesh::read_color_data</a></div><div class="ttdeci">Color read_color_data(int vertex_id) const</div><div class="ttdoc">Read only access to per-vertex color data. Data are returned as a Color. Indexed by vertex number....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ac74345bf4b2994de4ee1c509bcc6840e"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e">mingfx::Mesh::UpdateGPUMemory</a></div><div class="ttdeci">void UpdateGPUMemory()</div><div class="ttdoc">This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ac9cd4e8d67bb70295a48fcbc72ae32f9"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9">mingfx::Mesh::SetTexCoords</a></div><div class="ttdeci">void SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords)</div><div class="ttdoc">Sets a texture coordinates array for the mesh directly. Tex coords are stored as (u,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_acc7df547b0a2175287cc9f509c04e93c"><div class="ttname"><a href="classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c">mingfx::Mesh::CalcPerVertexNormals</a></div><div class="ttdeci">void CalcPerVertexNormals()</div><div class="ttdoc">This (re)calculates the normals for the mesh and stores them with the mesh data structure.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ace7b23730dbcb581c4886cf2b9998327"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327">mingfx::Mesh::~Mesh</a></div><div class="ttdeci">virtual ~Mesh()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ad28dbd5b0ab77bec28f30f618dd9e57d"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d">mingfx::Mesh::SetNormals</a></div><div class="ttdeci">void SetNormals(const std::vector&lt; Vector3 &gt; &amp;norms)</div><div class="ttdoc">Sets the normal array for the mesh directly.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_ada9371e85aa0b61df79b26fc880b1863"><div class="ttname"><a href="classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863">mingfx::Mesh::read_vertex_data</a></div><div class="ttdeci">Point3 read_vertex_data(int vertex_id) const</div><div class="ttdoc">Read only access to the vertex position data. Data are returned as a Point3. Indexed by vertex number...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html_aed172bdd77858f3b59978cb8527e19ae"><div class="ttname"><a href="classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae">mingfx::Mesh::SetColors</a></div><div class="ttdeci">void SetColors(float *colors_array, int num_colors)</div><div class="ttdoc">Sets the per-vertex colors array for the mesh directly. Colors are stored as (r,g,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="aopengl__headers_8h_html"><div class="ttname"><a href="opengl__headers_8h.html">opengl_headers.h</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mingfx.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Includes the entire MinGfx library and calls using namespace mingfx. </p>
+
+<p class="definition">Definition in file <a class="el" href="mingfx_8h_source.html">mingfx.h</a>.</p>
+</div><div class="textblock"><code>#include &quot;<a class="el" href="aabb_8h_source.html">aabb.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="bvh_8h_source.html">bvh.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="craft__cam_8h_source.html">craft_cam.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="default__shader_8h_source.html">default_shader.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="gfxmath_8h_source.html">gfxmath.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="graphics__app_8h_source.html">graphics_app.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mesh_8h_source.html">mesh.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mingfx__config_8h_source.html">mingfx_config.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="opengl__headers_8h_source.html">opengl_headers.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="platform_8h_source.html">platform.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="quaternion_8h_source.html">quaternion.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="ray_8h_source.html">ray.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="text__shader_8h_source.html">text_shader.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="unicam_8h_source.html">unicam.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector2_8h_source.html">vector2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+</div>
+<p><a href="mingfx_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mingfx.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="mingfx_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef SRC_MINGFX_H_</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define SRC_MINGFX_H_</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="aabb_8h.html">aabb.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bvh_8h.html">bvh.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="craft__cam_8h.html">craft_cam.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="default__shader_8h.html">default_shader.h</a>&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="gfxmath_8h.html">gfxmath.h</a>&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="graphics__app_8h.html">graphics_app.h</a>&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mesh_8h.html">mesh.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mingfx__config_8h.html">mingfx_config.h</a>&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="opengl__headers_8h.html">opengl_headers.h</a>&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="platform_8h.html">platform.h</a>&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="quaternion_8h.html">quaternion.h</a>&quot;</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="quick__shapes_8h.html">quick_shapes.h</a>&quot;</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ray_8h.html">ray.h</a>&quot;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shader__program_8h.html">shader_program.h</a>&quot;</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="text__shader_8h.html">text_shader.h</a>&quot;</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture2d_8h.html">texture2d.h</a>&quot;</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="unicam_8h.html">unicam.h</a>&quot;</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">//using namespace mingfx;</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aaabb_8h_html"><div class="ttname"><a href="aabb_8h.html">aabb.h</a></div></div>
+<div class="ttc" id="abvh_8h_html"><div class="ttname"><a href="bvh_8h.html">bvh.h</a></div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="acraft__cam_8h_html"><div class="ttname"><a href="craft__cam_8h.html">craft_cam.h</a></div></div>
+<div class="ttc" id="adefault__shader_8h_html"><div class="ttname"><a href="default__shader_8h.html">default_shader.h</a></div></div>
+<div class="ttc" id="agfxmath_8h_html"><div class="ttname"><a href="gfxmath_8h.html">gfxmath.h</a></div></div>
+<div class="ttc" id="agraphics__app_8h_html"><div class="ttname"><a href="graphics__app_8h.html">graphics_app.h</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="amesh_8h_html"><div class="ttname"><a href="mesh_8h.html">mesh.h</a></div></div>
+<div class="ttc" id="amingfx__config_8h_html"><div class="ttname"><a href="mingfx__config_8h.html">mingfx_config.h</a></div></div>
+<div class="ttc" id="aopengl__headers_8h_html"><div class="ttname"><a href="opengl__headers_8h.html">opengl_headers.h</a></div></div>
+<div class="ttc" id="aplatform_8h_html"><div class="ttname"><a href="platform_8h.html">platform.h</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="aquaternion_8h_html"><div class="ttname"><a href="quaternion_8h.html">quaternion.h</a></div></div>
+<div class="ttc" id="aquick__shapes_8h_html"><div class="ttname"><a href="quick__shapes_8h.html">quick_shapes.h</a></div></div>
+<div class="ttc" id="aray_8h_html"><div class="ttname"><a href="ray_8h.html">ray.h</a></div></div>
+<div class="ttc" id="ashader__program_8h_html"><div class="ttname"><a href="shader__program_8h.html">shader_program.h</a></div></div>
+<div class="ttc" id="atext__shader_8h_html"><div class="ttname"><a href="text__shader_8h.html">text_shader.h</a></div></div>
+<div class="ttc" id="atexture2d_8h_html"><div class="ttname"><a href="texture2d_8h.html">texture2d.h</a></div></div>
+<div class="ttc" id="aunicam_8h_html"><div class="ttname"><a href="unicam_8h.html">unicam.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mingfx_config.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx_config.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="mingfx__config_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a9ab97d1e09bf7a864495329de5dc7e03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03">MINGFX_DATA_DIR_BUILD</a>&#160;&#160;&#160;&quot;Y:/courses/4611/instructor-repo/dev/MinGfx/data&quot;</td></tr>
+<tr class="separator:a9ab97d1e09bf7a864495329de5dc7e03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e44357d7f17eb50f842d9e39e55e398"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398">MINGFX_DATA_DIR_INSTALL</a>&#160;&#160;&#160;&quot;C:/csci-4611/share/MinGfx-1.0/data&quot;</td></tr>
+<tr class="separator:a1e44357d7f17eb50f842d9e39e55e398"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1908456b5481e0dbbe2b8252fa71d23f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f">MINGFX_SHADERS_DIR_BUILD</a>&#160;&#160;&#160;&quot;Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders&quot;</td></tr>
+<tr class="separator:a1908456b5481e0dbbe2b8252fa71d23f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab431df904057e50ac94550595473f5f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4">MINGFX_SHADERS_DIR_INSTALL</a>&#160;&#160;&#160;&quot;C:/csci-4611/share/MinGfx-1.0/shaders&quot;</td></tr>
+<tr class="separator:ab431df904057e50ac94550595473f5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a9ab97d1e09bf7a864495329de5dc7e03"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ab97d1e09bf7a864495329de5dc7e03">&#9670;&nbsp;</a></span>MINGFX_DATA_DIR_BUILD</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_DATA_DIR_BUILD&#160;&#160;&#160;&quot;Y:/courses/4611/instructor-repo/dev/MinGfx/data&quot;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="mingfx__config_8h_source.html#l00020">20</a> of file <a class="el" href="mingfx__config_8h_source.html">mingfx_config.h</a>.</p>
+
+</div>
+</div>
+<a id="a1e44357d7f17eb50f842d9e39e55e398"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e44357d7f17eb50f842d9e39e55e398">&#9670;&nbsp;</a></span>MINGFX_DATA_DIR_INSTALL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_DATA_DIR_INSTALL&#160;&#160;&#160;&quot;C:/csci-4611/share/MinGfx-1.0/data&quot;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="mingfx__config_8h_source.html#l00021">21</a> of file <a class="el" href="mingfx__config_8h_source.html">mingfx_config.h</a>.</p>
+
+</div>
+</div>
+<a id="a1908456b5481e0dbbe2b8252fa71d23f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1908456b5481e0dbbe2b8252fa71d23f">&#9670;&nbsp;</a></span>MINGFX_SHADERS_DIR_BUILD</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_SHADERS_DIR_BUILD&#160;&#160;&#160;&quot;Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders&quot;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="mingfx__config_8h_source.html#l00023">23</a> of file <a class="el" href="mingfx__config_8h_source.html">mingfx_config.h</a>.</p>
+
+</div>
+</div>
+<a id="ab431df904057e50ac94550595473f5f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab431df904057e50ac94550595473f5f4">&#9670;&nbsp;</a></span>MINGFX_SHADERS_DIR_INSTALL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_SHADERS_DIR_INSTALL&#160;&#160;&#160;&quot;C:/csci-4611/share/MinGfx-1.0/shaders&quot;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="mingfx__config_8h_source.html#l00024">24</a> of file <a class="el" href="mingfx__config_8h_source.html">mingfx_config.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/mingfx_config.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">mingfx_config.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="mingfx__config_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// The file config.h.in is processed by cmake to produce config.h. This</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// replaces strings of the form &quot;at&quot;CMAKE_VARIABLE_NAME&quot;at&quot; with the value</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// of the corresponding cmake variable, allowing us to pass directory paths</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// and other information configured with cmake into our C++ code.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03"> 20</a></span>&#160;<span class="preprocessor">#define MINGFX_DATA_DIR_BUILD &quot;Y:/courses/4611/instructor-repo/dev/MinGfx/data&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398"> 21</a></span>&#160;<span class="preprocessor">#define MINGFX_DATA_DIR_INSTALL &quot;C:/csci-4611/share/MinGfx-1.0/data&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f"> 23</a></span>&#160;<span class="preprocessor">#define MINGFX_SHADERS_DIR_BUILD &quot;Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4"> 24</a></span>&#160;<span class="preprocessor">#define MINGFX_SHADERS_DIR_INSTALL &quot;C:/csci-4611/share/MinGfx-1.0/shaders&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div>
+
+<h3><a id="index_o"></a>- o -</h3><ul>
+<li>operator*()
+: <a class="el" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx</a>
+</li>
+<li>operator+()
+: <a class="el" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx</a>
+</li>
+<li>operator-()
+: <a class="el" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx</a>
+</li>
+<li>operator/()
+: <a class="el" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx</a>
+</li>
+<li>operator&lt;&lt;()
+: <a class="el" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx</a>
+</li>
+<li>operator&gt;&gt;()
+: <a class="el" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a id="index_o"></a>- o -</h3><ul>
+<li>operator*()
+: <a class="el" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx</a>
+</li>
+<li>operator+()
+: <a class="el" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx</a>
+</li>
+<li>operator-()
+: <a class="el" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx</a>
+</li>
+<li>operator/()
+: <a class="el" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx</a>
+</li>
+<li>operator&lt;&lt;()
+: <a class="el" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx</a>
+</li>
+<li>operator&gt;&gt;()
+: <a class="el" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Namespace for the MinGfx Toolkit. </p>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D axis-aligned bounding box defined by two corners (min and max). <a href="classmingfx_1_1_a_a_b_b.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_b_v_h.html">BVH</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Bounding Volume Hierarchy (<a class="el" href="classmingfx_1_1_b_v_h.html" title="A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...">BVH</a>) 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. <a href="classmingfx_1_1_b_v_h.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_color.html">Color</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL. <a href="classmingfx_1_1_color.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_craft_cam.html">CraftCam</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This implements a user interface for controlling the camera with the mouse. <a href="classmingfx_1_1_craft_cam.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_default_shader.html">DefaultShader</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple GLSL shader for textured per-fragment Phong shading with multiple light sources. <a href="classmingfx_1_1_default_shader.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_gfx_math.html">GfxMath</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class holds a variety of static math functions that are useful to have defined with creating graphics programs. <a href="classmingfx_1_1_gfx_math.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the main application base class for the MinGfx Toolkit. <a href="classmingfx_1_1_graphics_app.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL. <a href="classmingfx_1_1_matrix4.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_mesh.html">Mesh</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A triangle mesh data structure that can be rendered with a <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> like <a class="el" href="classmingfx_1_1_default_shader.html" title="A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.">DefaultShader</a>. <a href="classmingfx_1_1_mesh.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html">Platform</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides access to the underlying file system and other platform-specific routines. <a href="classmingfx_1_1_platform.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html">Point2</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input. <a href="classmingfx_1_1_point2.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html">Point3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations. <a href="classmingfx_1_1_point3.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A quaternion to represent rotations in 3D space. <a href="classmingfx_1_1_quaternion.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class provides a quick way to draw shapes for use in debugging or simple scenes. <a href="classmingfx_1_1_quick_shapes.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html">Ray</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector). <a href="classmingfx_1_1_ray.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper around GLSL shader programs. <a href="classmingfx_1_1_shader_program.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html">TextShader</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper around a 2D texture that supports loading images from files or setting texture color data directly. <a href="classmingfx_1_1_texture2_d.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html">UniCam</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This implements a user interface for controlling the camera with the mouse. <a href="classmingfx_1_1_uni_cam.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors. <a href="classmingfx_1_1_vector2.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations. <a href="classmingfx_1_1_vector3.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a3c3b45ed6edf3fe76f98a7fd165dca03"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a> (const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;A, const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;B)</td></tr>
+<tr class="separator:a3c3b45ed6edf3fe76f98a7fd165dca03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6bc967741341f4f318a505d884192906"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;c)</td></tr>
+<tr class="separator:a6bc967741341f4f318a505d884192906"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6eb31e6e81c6e29144799be4c9db404d"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;c)</td></tr>
+<tr class="separator:a6eb31e6e81c6e29144799be4c9db404d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae5708e414f585dde2a5418ddae259a57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m, const float &amp;s)</td></tr>
+<tr class="memdesc:ae5708e414f585dde2a5418ddae259a57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and scalar, returns the new matrix. <a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">More...</a><br /></td></tr>
+<tr class="separator:ae5708e414f585dde2a5418ddae259a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a061ff38340cf1aad4612790b0a600aeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb">operator*</a> (const float &amp;s, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m)</td></tr>
+<tr class="memdesc:a061ff38340cf1aad4612790b0a600aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and scalar, returns the new matrix. <a href="namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb">More...</a><br /></td></tr>
+<tr class="separator:a061ff38340cf1aad4612790b0a600aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80">operator*</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and point, returns the new point. <a href="namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80">More...</a><br /></td></tr>
+<tr class="separator:a5b8dabff5d6c9ddcef5e15b0ef807c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb2cfd42e696494e4797d8f7e11f6d77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77">operator*</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:abb2cfd42e696494e4797d8f7e11f6d77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and vector, returns the new vector. <a href="namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77">More...</a><br /></td></tr>
+<tr class="separator:abb2cfd42e696494e4797d8f7e11f6d77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadc0e86a31d54469e730669067b102c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aadc0e86a31d54469e730669067b102c2">operator*</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m1, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m2)</td></tr>
+<tr class="memdesc:aadc0e86a31d54469e730669067b102c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply two matrices, returns the result. <a href="namespacemingfx.html#aadc0e86a31d54469e730669067b102c2">More...</a><br /></td></tr>
+<tr class="separator:aadc0e86a31d54469e730669067b102c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1af1c07624961984759120b7af7f9ce4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_ray.html">Ray</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4">operator*</a> (const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m, const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;r)</td></tr>
+<tr class="memdesc:a1af1c07624961984759120b7af7f9ce4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply matrix and the point and vector portions of the ray, returns the new ray. <a href="namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4">More...</a><br /></td></tr>
+<tr class="separator:a1af1c07624961984759120b7af7f9ce4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1584104dea1f0a5636c868b67ddf6b10"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m)</td></tr>
+<tr class="separator:a1584104dea1f0a5636c868b67ddf6b10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05fc1c0b2b6011283c019242d6a2de74"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m)</td></tr>
+<tr class="separator:a05fc1c0b2b6011283c019242d6a2de74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a58ddc500b8c3e12f8af4515f258540cb"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="separator:a58ddc500b8c3e12f8af4515f258540cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256924759a6718882a2b40e17d3e523d"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a256924759a6718882a2b40e17d3e523d">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="separator:a256924759a6718882a2b40e17d3e523d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53ce6bc4f4abdd3797d7af47adecbaf6"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="separator:a53ce6bc4f4abdd3797d7af47adecbaf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad95e9b494b9761895d57e2b698b69afd"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="separator:ad95e9b494b9761895d57e2b698b69afd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a456bccfb238b9644cf21669cf35b8c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a0a456bccfb238b9644cf21669cf35b8c">operator*</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q1, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q2)</td></tr>
+<tr class="separator:a0a456bccfb238b9644cf21669cf35b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a444ae88d836b913ac8307fbf4357f7ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">operator/</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q, const float s)</td></tr>
+<tr class="separator:a444ae88d836b913ac8307fbf4357f7ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a55f694123e83d1649c112e806359d4b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a55f694123e83d1649c112e806359d4b6">operator*</a> (const float s, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q)</td></tr>
+<tr class="separator:a55f694123e83d1649c112e806359d4b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb96b0188d1ceda03ed8d297817502c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9">operator*</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q, const float s)</td></tr>
+<tr class="separator:adb96b0188d1ceda03ed8d297817502c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f5a225a54f07164d5172a3721a3aee6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q)</td></tr>
+<tr class="separator:a2f5a225a54f07164d5172a3721a3aee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad49375487853a642b3f372c95cff1a96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad49375487853a642b3f372c95cff1a96">operator+</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q1, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q2)</td></tr>
+<tr class="separator:ad49375487853a642b3f372c95cff1a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a61f2d974c78e8884bb64c2759e455101"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101">operator-</a> (const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q1, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q2)</td></tr>
+<tr class="separator:a61f2d974c78e8884bb64c2759e455101"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4b78a682ff8d1ec298e0df7f742658d"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q)</td></tr>
+<tr class="separator:ac4b78a682ff8d1ec298e0df7f742658d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a59fb7a99df5c572849e31065884b2235"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a59fb7a99df5c572849e31065884b2235">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q)</td></tr>
+<tr class="separator:a59fb7a99df5c572849e31065884b2235"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7c839e598b7be6c1b407330dfacc980"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;r)</td></tr>
+<tr class="separator:ad7c839e598b7be6c1b407330dfacc980"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0412270963460363fa015b9b4785cc59"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a0412270963460363fa015b9b4785cc59">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;r)</td></tr>
+<tr class="separator:a0412270963460363fa015b9b4785cc59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd">operator/</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v, const float s)</td></tr>
+<tr class="memdesc:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Divide the vector by the scalar s. <a href="namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd">More...</a><br /></td></tr>
+<tr class="separator:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8bc25e621d21323fdd96f2c4a4141432"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432">operator*</a> (const float s, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:a8bc25e621d21323fdd96f2c4a4141432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432">More...</a><br /></td></tr>
+<tr class="separator:a8bc25e621d21323fdd96f2c4a4141432"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8358de6421374fb037e8c51e8f2d5878"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878">operator*</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v, const float s)</td></tr>
+<tr class="memdesc:a8358de6421374fb037e8c51e8f2d5878"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878">More...</a><br /></td></tr>
+<tr class="separator:a8358de6421374fb037e8c51e8f2d5878"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5daeaa383c40eed6f41b2c1b7930499f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f">operator-</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:a5daeaa383c40eed6f41b2c1b7930499f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negate the vector. <a href="namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f">More...</a><br /></td></tr>
+<tr class="separator:a5daeaa383c40eed6f41b2c1b7930499f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac71c01d7c300671cb343a24b68a875bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf">operator+</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="memdesc:ac71c01d7c300671cb343a24b68a875bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a point, returns a point. <a href="namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf">More...</a><br /></td></tr>
+<tr class="separator:ac71c01d7c300671cb343a24b68a875bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2083f9992ba509a275db11522f16a2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e">operator+</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:ab2083f9992ba509a275db11522f16a2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a point and a vector, returns a point. <a href="namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e">More...</a><br /></td></tr>
+<tr class="separator:ab2083f9992ba509a275db11522f16a2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acdffada748181cc17ec93784f858ff9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#acdffada748181cc17ec93784f858ff9f">operator+</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v2)</td></tr>
+<tr class="memdesc:acdffada748181cc17ec93784f858ff9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a vector, returns a vector. <a href="namespacemingfx.html#acdffada748181cc17ec93784f858ff9f">More...</a><br /></td></tr>
+<tr class="separator:acdffada748181cc17ec93784f858ff9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point2.html">Point2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2">operator-</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts a vector from a point, returns a point. <a href="namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2">More...</a><br /></td></tr>
+<tr class="separator:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a128585c0b87e03beda4a660d4e58789b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b">operator-</a> (const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v2)</td></tr>
+<tr class="memdesc:a128585c0b87e03beda4a660d4e58789b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts v2 from v1, returns a vector. <a href="namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b">More...</a><br /></td></tr>
+<tr class="separator:a128585c0b87e03beda4a660d4e58789b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad370bce0bb5b88beb974aad1d44890e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8">operator-</a> (const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p1, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p2)</td></tr>
+<tr class="memdesc:ad370bce0bb5b88beb974aad1d44890e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the vector spanning p1 and p2. <a href="namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8">More...</a><br /></td></tr>
+<tr class="separator:ad370bce0bb5b88beb974aad1d44890e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acbe43aa24ecedf663c65becf2be282c7"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="separator:acbe43aa24ecedf663c65becf2be282c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3f12496d7a5028b71882373d6fa7203"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="separator:ab3f12496d7a5028b71882373d6fa7203"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa19b1dea0b7aa468950e56044fda328a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a">operator/</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v, const float s)</td></tr>
+<tr class="memdesc:aa19b1dea0b7aa468950e56044fda328a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Divide the vector by the scalar s. <a href="namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a">More...</a><br /></td></tr>
+<tr class="separator:aa19b1dea0b7aa468950e56044fda328a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e3941689c65388690916d00e0d423d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a7e3941689c65388690916d00e0d423d4">operator*</a> (const float s, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:a7e3941689c65388690916d00e0d423d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a7e3941689c65388690916d00e0d423d4">More...</a><br /></td></tr>
+<tr class="separator:a7e3941689c65388690916d00e0d423d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5">operator*</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v, const float s)</td></tr>
+<tr class="memdesc:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5">More...</a><br /></td></tr>
+<tr class="separator:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd07add6169773bae12d40201f8af7db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#afd07add6169773bae12d40201f8af7db">operator-</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:afd07add6169773bae12d40201f8af7db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negate the vector. <a href="namespacemingfx.html#afd07add6169773bae12d40201f8af7db">More...</a><br /></td></tr>
+<tr class="separator:afd07add6169773bae12d40201f8af7db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b4428d2cf65ba5226ef4036352d311e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e">operator+</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:a4b4428d2cf65ba5226ef4036352d311e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a point, returns a point. <a href="namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e">More...</a><br /></td></tr>
+<tr class="separator:a4b4428d2cf65ba5226ef4036352d311e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadea317107a50ec6847ce01927b61c82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aadea317107a50ec6847ce01927b61c82">operator+</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:aadea317107a50ec6847ce01927b61c82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a point and a vector, returns a point. <a href="namespacemingfx.html#aadea317107a50ec6847ce01927b61c82">More...</a><br /></td></tr>
+<tr class="separator:aadea317107a50ec6847ce01927b61c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b">operator+</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2)</td></tr>
+<tr class="memdesc:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a vector, returns a vector. <a href="namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b">More...</a><br /></td></tr>
+<tr class="separator:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a579b90d99a1d6f794ca44017ded3a8db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_point3.html">Point3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db">operator-</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:a579b90d99a1d6f794ca44017ded3a8db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts a vector from a point, returns a point. <a href="namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db">More...</a><br /></td></tr>
+<tr class="separator:a579b90d99a1d6f794ca44017ded3a8db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3">operator-</a> (const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2)</td></tr>
+<tr class="memdesc:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts v2 from v1, returns a vector. <a href="namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3">More...</a><br /></td></tr>
+<tr class="separator:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77d92da8f1a866306518422cd9d2f0af"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af">operator-</a> (const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p1, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p2)</td></tr>
+<tr class="memdesc:a77d92da8f1a866306518422cd9d2f0af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the vector spanning p1 and p2. <a href="namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af">More...</a><br /></td></tr>
+<tr class="separator:a77d92da8f1a866306518422cd9d2f0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3425c24faf923364cd3a764d50601c52"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a3425c24faf923364cd3a764d50601c52">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="separator:a3425c24faf923364cd3a764d50601c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cc2f52569661416cb2ca67c516b7c93"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="separator:a8cc2f52569661416cb2ca67c516b7c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a061ff38340cf1aad4612790b0a600aeb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a061ff38340cf1aad4612790b0a600aeb">&#9670;&nbsp;</a></span>operator*() <span class="overload">[1/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const float &amp;&#160;</td>
+ <td class="paramname"><em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply matrix and scalar, returns the new matrix. </p>
+
+</div>
+</div>
+<a id="a55f694123e83d1649c112e806359d4b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a55f694123e83d1649c112e806359d4b6">&#9670;&nbsp;</a></span>operator*() <span class="overload">[2/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a8bc25e621d21323fdd96f2c4a4141432"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8bc25e621d21323fdd96f2c4a4141432">&#9670;&nbsp;</a></span>operator*() <span class="overload">[3/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="a7e3941689c65388690916d00e0d423d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e3941689c65388690916d00e0d423d4">&#9670;&nbsp;</a></span>operator*() <span class="overload">[4/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="ae5708e414f585dde2a5418ddae259a57"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae5708e414f585dde2a5418ddae259a57">&#9670;&nbsp;</a></span>operator*() <span class="overload">[5/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float &amp;&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply matrix and scalar, returns the new matrix. </p>
+
+</div>
+</div>
+<a id="a5b8dabff5d6c9ddcef5e15b0ef807c80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b8dabff5d6c9ddcef5e15b0ef807c80">&#9670;&nbsp;</a></span>operator*() <span class="overload">[6/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply matrix and point, returns the new point. </p>
+
+</div>
+</div>
+<a id="a1af1c07624961984759120b7af7f9ce4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1af1c07624961984759120b7af7f9ce4">&#9670;&nbsp;</a></span>operator*() <span class="overload">[7/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_ray.html">Ray</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply matrix and the point and vector portions of the ray, returns the new ray. </p>
+
+</div>
+</div>
+<a id="abb2cfd42e696494e4797d8f7e11f6d77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb2cfd42e696494e4797d8f7e11f6d77">&#9670;&nbsp;</a></span>operator*() <span class="overload">[8/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply matrix and vector, returns the new vector. </p>
+
+</div>
+</div>
+<a id="aadc0e86a31d54469e730669067b102c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aadc0e86a31d54469e730669067b102c2">&#9670;&nbsp;</a></span>operator*() <span class="overload">[9/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply two matrices, returns the result. </p>
+
+</div>
+</div>
+<a id="adb96b0188d1ceda03ed8d297817502c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb96b0188d1ceda03ed8d297817502c9">&#9670;&nbsp;</a></span>operator*() <span class="overload">[10/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a0a456bccfb238b9644cf21669cf35b8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0a456bccfb238b9644cf21669cf35b8c">&#9670;&nbsp;</a></span>operator*() <span class="overload">[11/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a8358de6421374fb037e8c51e8f2d5878"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8358de6421374fb037e8c51e8f2d5878">&#9670;&nbsp;</a></span>operator*() <span class="overload">[12/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="aa8a18cb8506dee589eaf6883a32e6fb5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa8a18cb8506dee589eaf6883a32e6fb5">&#9670;&nbsp;</a></span>operator*() <span class="overload">[13/13]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Multiply the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="a3c3b45ed6edf3fe76f98a7fd165dca03"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c3b45ed6edf3fe76f98a7fd165dca03">&#9670;&nbsp;</a></span>operator+() <span class="overload">[1/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;&#160;</td>
+ <td class="paramname"><em>A</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;&#160;</td>
+ <td class="paramname"><em>B</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ab2083f9992ba509a275db11522f16a2e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab2083f9992ba509a275db11522f16a2e">&#9670;&nbsp;</a></span>operator+() <span class="overload">[2/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a point and a vector, returns a point. </p>
+
+</div>
+</div>
+<a id="aadea317107a50ec6847ce01927b61c82"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aadea317107a50ec6847ce01927b61c82">&#9670;&nbsp;</a></span>operator+() <span class="overload">[3/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a point and a vector, returns a point. </p>
+
+</div>
+</div>
+<a id="ad49375487853a642b3f372c95cff1a96"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad49375487853a642b3f372c95cff1a96">&#9670;&nbsp;</a></span>operator+() <span class="overload">[4/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac71c01d7c300671cb343a24b68a875bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac71c01d7c300671cb343a24b68a875bf">&#9670;&nbsp;</a></span>operator+() <span class="overload">[5/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a vector and a point, returns a point. </p>
+
+</div>
+</div>
+<a id="acdffada748181cc17ec93784f858ff9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acdffada748181cc17ec93784f858ff9f">&#9670;&nbsp;</a></span>operator+() <span class="overload">[6/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a vector and a vector, returns a vector. </p>
+
+</div>
+</div>
+<a id="a4b4428d2cf65ba5226ef4036352d311e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4b4428d2cf65ba5226ef4036352d311e">&#9670;&nbsp;</a></span>operator+() <span class="overload">[7/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a vector and a point, returns a point. </p>
+
+</div>
+</div>
+<a id="aeeeb04b70f8e8becbcda7a3dc7024c1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeeeb04b70f8e8becbcda7a3dc7024c1b">&#9670;&nbsp;</a></span>operator+() <span class="overload">[8/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Adds a vector and a vector, returns a vector. </p>
+
+</div>
+</div>
+<a id="ae81fac825c0f6eca59cc1a1cc06d63f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae81fac825c0f6eca59cc1a1cc06d63f2">&#9670;&nbsp;</a></span>operator-() <span class="overload">[1/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Subtracts a vector from a point, returns a point. </p>
+
+</div>
+</div>
+<a id="ad370bce0bb5b88beb974aad1d44890e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad370bce0bb5b88beb974aad1d44890e8">&#9670;&nbsp;</a></span>operator-() <span class="overload">[2/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the vector spanning p1 and p2. </p>
+
+</div>
+</div>
+<a id="a579b90d99a1d6f794ca44017ded3a8db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a579b90d99a1d6f794ca44017ded3a8db">&#9670;&nbsp;</a></span>operator-() <span class="overload">[3/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Subtracts a vector from a point, returns a point. </p>
+
+</div>
+</div>
+<a id="a77d92da8f1a866306518422cd9d2f0af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77d92da8f1a866306518422cd9d2f0af">&#9670;&nbsp;</a></span>operator-() <span class="overload">[4/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the vector spanning p1 and p2. </p>
+
+</div>
+</div>
+<a id="a2f5a225a54f07164d5172a3721a3aee6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2f5a225a54f07164d5172a3721a3aee6">&#9670;&nbsp;</a></span>operator-() <span class="overload">[5/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a61f2d974c78e8884bb64c2759e455101"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a61f2d974c78e8884bb64c2759e455101">&#9670;&nbsp;</a></span>operator-() <span class="overload">[6/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5daeaa383c40eed6f41b2c1b7930499f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5daeaa383c40eed6f41b2c1b7930499f">&#9670;&nbsp;</a></span>operator-() <span class="overload">[7/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Negate the vector. </p>
+
+</div>
+</div>
+<a id="a128585c0b87e03beda4a660d4e58789b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a128585c0b87e03beda4a660d4e58789b">&#9670;&nbsp;</a></span>operator-() <span class="overload">[8/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Subtracts v2 from v1, returns a vector. </p>
+
+</div>
+</div>
+<a id="afd07add6169773bae12d40201f8af7db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afd07add6169773bae12d40201f8af7db">&#9670;&nbsp;</a></span>operator-() <span class="overload">[9/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Negate the vector. </p>
+
+</div>
+</div>
+<a id="aecdf7f36c4feb04034f1d07c49d5c0e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aecdf7f36c4feb04034f1d07c49d5c0e3">&#9670;&nbsp;</a></span>operator-() <span class="overload">[10/10]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v2</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Subtracts v2 from v1, returns a vector. </p>
+
+</div>
+</div>
+<a id="a444ae88d836b913ac8307fbf4357f7ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a444ae88d836b913ac8307fbf4357f7ed">&#9670;&nbsp;</a></span>operator/() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> mingfx::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd">&#9670;&nbsp;</a></span>operator/() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> mingfx::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Divide the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="aa19b1dea0b7aa468950e56044fda328a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa19b1dea0b7aa468950e56044fda328a">&#9670;&nbsp;</a></span>operator/() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> mingfx::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Divide the vector by the scalar s. </p>
+
+</div>
+</div>
+<a id="a6bc967741341f4f318a505d884192906"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6bc967741341f4f318a505d884192906">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[1/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1584104dea1f0a5636c868b67ddf6b10"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1584104dea1f0a5636c868b67ddf6b10">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[2/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a58ddc500b8c3e12f8af4515f258540cb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58ddc500b8c3e12f8af4515f258540cb">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[3/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a53ce6bc4f4abdd3797d7af47adecbaf6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a53ce6bc4f4abdd3797d7af47adecbaf6">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[4/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac4b78a682ff8d1ec298e0df7f742658d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4b78a682ff8d1ec298e0df7f742658d">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[5/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ad7c839e598b7be6c1b407330dfacc980"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7c839e598b7be6c1b407330dfacc980">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[6/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="acbe43aa24ecedf663c65becf2be282c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acbe43aa24ecedf663c65becf2be282c7">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[7/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3425c24faf923364cd3a764d50601c52"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3425c24faf923364cd3a764d50601c52">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[8/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; mingfx::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a6eb31e6e81c6e29144799be4c9db404d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6eb31e6e81c6e29144799be4c9db404d">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[1/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a05fc1c0b2b6011283c019242d6a2de74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a05fc1c0b2b6011283c019242d6a2de74">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[2/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a256924759a6718882a2b40e17d3e523d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a256924759a6718882a2b40e17d3e523d">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[3/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ad95e9b494b9761895d57e2b698b69afd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad95e9b494b9761895d57e2b698b69afd">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[4/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a59fb7a99df5c572849e31065884b2235"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a59fb7a99df5c572849e31065884b2235">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[5/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a0412270963460363fa015b9b4785cc59"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0412270963460363fa015b9b4785cc59">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[6/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_ray.html">Ray</a> &amp;&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ab3f12496d7a5028b71882373d6fa7203"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3f12496d7a5028b71882373d6fa7203">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[7/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a8cc2f52569661416cb2ca67c516b7c93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8cc2f52569661416cb2ca67c516b7c93">&#9670;&nbsp;</a></span>operator&gt;&gt;() <span class="overload">[8/8]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; mingfx::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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
--- /dev/null
+++ b/dev/MinGfx/docs/html/nav_f.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/nav_g.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/nav_h.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/open.png b/dev/MinGfx/docs/html/open.png
new file mode 100644
index 0000000..fd4dbc6
--- /dev/null
+++ b/dev/MinGfx/docs/html/open.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/opengl_headers.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">opengl_headers.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;nanogui/opengl.h&gt;</code><br />
+</div>
+<p><a href="opengl__headers_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/opengl_headers.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">opengl_headers.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="opengl__headers_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// We often use the code that is commented out below to load opengl headers in a cross-platform way,</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// but since nanogui uses glad internally, we will just use their approach to load opengl headers</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// so that everything is consistent.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// disable warnings for this 3rd party code</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#pragma warning ( push, 0 )</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;nanogui/opengl.h&gt;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#pragma warning ( pop )</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*** Our typical (non-nanogui) appraoch:</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// GLEW is needed on Windows and Linux</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">#ifdef _WIN32</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">#include &quot;GL/glew.h&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">#include &quot;GL/wglew.h&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">#elif (!defined(__APPLE__))</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">#include &quot;GL/glxew.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">#endif</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// OpenGL Headers</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">#if defined(WIN32)</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">#define NOMINMAX</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">#include &lt;windows.h&gt;</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">#include &lt;GL/gl.h&gt;</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">#elif defined(__APPLE__)</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">#define GL_GLEXT_PROTOTYPES</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">#include &lt;OpenGL/gl3.h&gt;</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">#include &lt;OpenGL/glext.h&gt;</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">#else</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">#define GL_GLEXT_PROTOTYPES</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">#include &lt;GL/gl.h&gt;</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">#endif</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">***/</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Related Pages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Related Pages</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="api.html" target="_self">API - MinGfx Programming Reference Organized by Topic</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="installation.html" target="_self">Installation Guide</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/platform.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">platform.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;string&gt;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+</div>
+<p><a href="platform_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_platform.html">mingfx::Platform</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides access to the underlying file system and other platform-specific routines. <a href="classmingfx_1_1_platform.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/platform.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">platform.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="platform_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_PLATFORM_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_PLATFORM_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html"> 26</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_platform.html">Platform</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92"> 30</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">FileExists</a>(<span class="keyword">const</span> std::string &amp;filename);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">/* Looks for a file named basename in each of the paths specified. If found,</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> the full path to the file is returned. If not found, then basename is returned.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> Example:</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> ~~~</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> std::vector&lt;std::string&gt; search_path;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> search_path.push_back(&quot;.&quot;);</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> search_path.push_back(&quot;./data&quot;);</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> search_path.push_back(&quot;./shaders&quot;);</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> search_path.push_back(&quot;/usr/local/share/blah/blah/data&quot;);</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> std::string file = Platform::findFile(&quot;mydata.csv&quot;, search_path);</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> ~~~</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1"> 45</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">FindFile</a>(<span class="keyword">const</span> std::string &amp;basename, <span class="keyword">const</span> std::vector&lt;std::string&gt; &amp;searchpath);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">/* Looks for a file named basename in each of the paths specified in a semi-colon</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> separated list. If found, the full path to the file is returned. If not found, </span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> then basename is returned. Example:</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> ~~~</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> std::string search_path = &quot;.;./data;./shaders;/usr/local/share/blah/blah/data&quot;;</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> std::string file = Platform::findFile(&quot;mydata.csv&quot;, search_path);</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> ~~~</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2"> 55</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2">FindFile</a>(<span class="keyword">const</span> std::string &amp;basename, <span class="keyword">const</span> std::string &amp;searchpath);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b"> 65</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">FindMinGfxDataFile</a>(<span class="keyword">const</span> std::string &amp;basename);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169"> 75</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">FindMinGfxShaderFile</a>(<span class="keyword">const</span> std::string &amp;basename);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;};</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html"><div class="ttname"><a href="classmingfx_1_1_platform.html">mingfx::Platform</a></div><div class="ttdoc">Provides access to the underlying file system and other platform-specific routines.</div><div class="ttdef"><b>Definition:</b> <a href="platform_8h_source.html#l00026">platform.h:26</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a03ade910313dd9580c9e37a7b63f87b2"><div class="ttname"><a href="classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2">mingfx::Platform::FindFile</a></div><div class="ttdeci">static std::string FindFile(const std::string &amp;basename, const std::string &amp;searchpath)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a045007efda73123a7f4019837d83bc92"><div class="ttname"><a href="classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92">mingfx::Platform::FileExists</a></div><div class="ttdeci">static bool FileExists(const std::string &amp;filename)</div><div class="ttdoc">True if filename is found and can be opened for reading on the system.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a2c36ca57a246efa218a49a942c8c4a3b"><div class="ttname"><a href="classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b">mingfx::Platform::FindMinGfxDataFile</a></div><div class="ttdeci">static std::string FindMinGfxDataFile(const std::string &amp;basename)</div><div class="ttdoc">Searches for a data file that ships with MinGfx.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_a32a392f4bac832c95fabc2d10bd03ad1"><div class="ttname"><a href="classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1">mingfx::Platform::FindFile</a></div><div class="ttdeci">static std::string FindFile(const std::string &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_platform_html_af12cd63e1ede33529d8c282d7d916169"><div class="ttname"><a href="classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169">mingfx::Platform::FindMinGfxShaderFile</a></div><div class="ttdeci">static std::string FindMinGfxShaderFile(const std::string &amp;basename)</div><div class="ttdoc">Searches for a shader file that ships with MinGfx.</div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/point2.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">point2.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+</div>
+<p><a href="point2_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point2.html">mingfx::Point2</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input. <a href="classmingfx_1_1_point2.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a432350d21fbc10d5e65eeeb6859511ea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea">MINGFX_MATH_EPSILON</a>&#160;&#160;&#160;1e-8</td></tr>
+<tr class="memdesc:a432350d21fbc10d5e65eeeb6859511ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Epsilon value used for == and != comparisons within MinGfx. <a href="point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea">More...</a><br /></td></tr>
+<tr class="separator:a432350d21fbc10d5e65eeeb6859511ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a58ddc500b8c3e12f8af4515f258540cb"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Point2 &amp;p)</td></tr>
+<tr class="separator:a58ddc500b8c3e12f8af4515f258540cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256924759a6718882a2b40e17d3e523d"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a256924759a6718882a2b40e17d3e523d">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Point2 &amp;p)</td></tr>
+<tr class="separator:a256924759a6718882a2b40e17d3e523d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a432350d21fbc10d5e65eeeb6859511ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a432350d21fbc10d5e65eeeb6859511ea">&#9670;&nbsp;</a></span>MINGFX_MATH_EPSILON</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_MATH_EPSILON&#160;&#160;&#160;1e-8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Epsilon value used for == and != comparisons within MinGfx. </p>
+
+<p class="definition">Definition at line <a class="el" href="point2_8h_source.html#l00022">22</a> of file <a class="el" href="point2_8h_source.html">point2.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/point2.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">point2.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="point2_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_POINT2_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_POINT2_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea"> 22</a></span>&#160;<span class="preprocessor">#define MINGFX_MATH_EPSILON 1e-8</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_point2.html">Point2</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1"> 31</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">Point2</a>();</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483"> 35</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483">Point2</a>(<span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">x</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">y</a>);</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f"> 38</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f">Point2</a>(<span class="keywordtype">float</span> *p);</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0"> 41</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0">Point2</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p);</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a"> 44</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">~Point2</a>();</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa"> 47</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84"> 50</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902"> 53</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; <a class="code" href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542"> 56</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3"> 65</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa"> 69</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p[0]; }</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8"> 73</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">y</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p[1]; }</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8"> 76</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">w</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 1.0; }</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc"> 80</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6"> 85</a></span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;b, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630"> 89</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; <a class="code" href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">Origin</a>();</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f"> 92</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; <a class="code" href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">Zero</a>();</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8"> 95</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; <a class="code" href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">One</a>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e"> 99</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">float</span> p[2];</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;};</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb"> 106</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;p);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a256924759a6718882a2b40e17d3e523d"> 107</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;p);</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;} <span class="comment">// namespace</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a027b2412f1c36242ccb06cf37c7e29bc"><div class="ttname"><a href="classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc">mingfx::Point2::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a24d7a5121fceba01b46f3ba0f6525630"><div class="ttname"><a href="classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630">mingfx::Point2::Origin</a></div><div class="ttdeci">static const Point2 &amp; Origin()</div><div class="ttdoc">(0,0) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a2e5869d810b52be4ba43c8a4f4e117a1"><div class="ttname"><a href="classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1">mingfx::Point2::Point2</a></div><div class="ttdeci">Point2()</div><div class="ttdoc">Default point at the origin.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a38149d8797bf7406fc34cab0ea5a3ac8"><div class="ttname"><a href="classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8">mingfx::Point2::One</a></div><div class="ttdeci">static const Point2 &amp; One()</div><div class="ttdoc">(1,1) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a4ba487a2038ebc78b461b66f1987053f"><div class="ttname"><a href="classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f">mingfx::Point2::Point2</a></div><div class="ttdeci">Point2(float *p)</div><div class="ttdoc">Constructs a point given a pointer to x,y data.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a4f97a7a75276a147ac06fc4dec810ec8"><div class="ttname"><a href="classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8">mingfx::Point2::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00073">point2.h:73</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a50f09df619fd226e6dc3ccff452abab3"><div class="ttname"><a href="classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3">mingfx::Point2::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coor...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a5b99fcf93a0c6d2b247290f5564f8a84"><div class="ttname"><a href="classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84">mingfx::Point2::operator!=</a></div><div class="ttdeci">bool operator!=(const Point2 &amp;p) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a60a2b348deab631b51caca3eb715461f"><div class="ttname"><a href="classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f">mingfx::Point2::Zero</a></div><div class="ttdeci">static const Point2 &amp; Zero()</div><div class="ttdoc">(0,0) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a680648ae01c549c48f7a3d5d75d8791e"><div class="ttname"><a href="classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e">mingfx::Point2::Lerp</a></div><div class="ttdeci">static Point2 Lerp(const Point2 &amp;a, const Point2 &amp;b, float alpha)</div><div class="ttdoc">Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a716fcff21456f29561ec27118a646483"><div class="ttname"><a href="classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483">mingfx::Point2::Point2</a></div><div class="ttdeci">Point2(float x, float y)</div><div class="ttdoc">Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in comput...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a7e5b2dcd7e079bdd00354e7ccf9c5c2a"><div class="ttname"><a href="classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a">mingfx::Point2::~Point2</a></div><div class="ttdeci">virtual ~Point2()</div><div class="ttdoc">Point destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a900567ad5e3c0e6de217b52167c49fd6"><div class="ttname"><a href="classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6">mingfx::Point2::Lerp</a></div><div class="ttdeci">Point2 Lerp(const Point2 &amp;b, float alpha) const</div><div class="ttdoc">Linear interpolation between this point and another. Alpha=0.0 returns this point,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a92447f64ca82f67e855da0c42db12ffa"><div class="ttname"><a href="classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa">mingfx::Point2::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00069">point2.h:69</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_a97464af92444984e275dca38a3f4eef0"><div class="ttname"><a href="classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0">mingfx::Point2::Point2</a></div><div class="ttdeci">Point2(const Point2 &amp;p)</div><div class="ttdoc">Copy constructor for point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_ab00e35eccdc4b7deae8172f5954a86e8"><div class="ttname"><a href="classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8">mingfx::Point2::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">In homogeneous coordinates, the w coordinate for all points is 1.0.</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00076">point2.h:76</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_ae8729260293b993bbf3cb31c0a33edfa"><div class="ttname"><a href="classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa">mingfx::Point2::operator==</a></div><div class="ttdeci">bool operator==(const Point2 &amp;p) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_af4c0cc334dfbfe8e8068156e6da16542"><div class="ttname"><a href="classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542">mingfx::Point2::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Read only access to the ith coordinate of the point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html_afc68153cce7dc528e95cf5ad81c63902"><div class="ttname"><a href="classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902">mingfx::Point2::operator=</a></div><div class="ttdeci">Point2 &amp; operator=(const Point2 &amp;p)</div><div class="ttdoc">Assignment operator.</div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/point3.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">point3.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+</div>
+<p><a href="point3_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_point3.html">mingfx::Point3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations. <a href="classmingfx_1_1_point3.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a432350d21fbc10d5e65eeeb6859511ea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea">MINGFX_MATH_EPSILON</a>&#160;&#160;&#160;1e-8</td></tr>
+<tr class="memdesc:a432350d21fbc10d5e65eeeb6859511ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Epsilon value used for == and != comparisons within MinGfx. <a href="point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea">More...</a><br /></td></tr>
+<tr class="separator:a432350d21fbc10d5e65eeeb6859511ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a53ce6bc4f4abdd3797d7af47adecbaf6"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Point3 &amp;p)</td></tr>
+<tr class="separator:a53ce6bc4f4abdd3797d7af47adecbaf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad95e9b494b9761895d57e2b698b69afd"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Point3 &amp;p)</td></tr>
+<tr class="separator:ad95e9b494b9761895d57e2b698b69afd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a432350d21fbc10d5e65eeeb6859511ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a432350d21fbc10d5e65eeeb6859511ea">&#9670;&nbsp;</a></span>MINGFX_MATH_EPSILON</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define MINGFX_MATH_EPSILON&#160;&#160;&#160;1e-8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Epsilon value used for == and != comparisons within MinGfx. </p>
+
+<p class="definition">Definition at line <a class="el" href="point3_8h_source.html#l00023">23</a> of file <a class="el" href="point3_8h_source.html">point3.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/point3.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">point3.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="point3_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_POINT3_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_POINT3_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea"> 23</a></span>&#160;<span class="preprocessor">#define MINGFX_MATH_EPSILON 1e-8</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// forward declaration</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>Vector3;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html"> 52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_point3.html">Point3</a> {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">public</span>: </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664"> 55</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">Point3</a>();</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953"> 59</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953">Point3</a>(<span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">x</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">y</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">z</a>);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756"> 62</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756">Point3</a>(<span class="keywordtype">float</span> *p);</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97"> 65</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97">Point3</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a"> 68</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">~Point3</a>();</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699"> 71</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e"> 74</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d"> 77</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; <a class="code" href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566"> 80</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e"> 89</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5"> 93</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p[0]; }</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545"> 97</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">y</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p[1]; }</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6"> 101</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">z</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p[2]; }</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e"> 104</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">w</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 1.0; }</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c"> 107</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b"> 113</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002"> 117</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">DistanceToPlane</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;plane_origin, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;plane_normal);</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743"> 121</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">ClosestPointOnPlane</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;plane_origin, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;plane_normal);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c"> 124</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">ClosestPoint</a>(<span class="keyword">const</span> std::vector&lt;Point3&gt; &amp;point_list);</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930"> 129</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; <a class="code" href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">Origin</a>();</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed"> 132</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; <a class="code" href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">Zero</a>();</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece"> 135</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; <a class="code" href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">One</a>();</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74"> 139</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">float</span> p[3];</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;};</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6"> 148</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd"> 149</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p);</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;} <span class="comment">// namespace</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a062caf579ef643b25129cc35b3dbe756"><div class="ttname"><a href="classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756">mingfx::Point3::Point3</a></div><div class="ttdeci">Point3(float *p)</div><div class="ttdoc">Constructs a point given a pointer to x,y,z data.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a0757315cd84f91879021d7afe18e0545"><div class="ttname"><a href="classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545">mingfx::Point3::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00097">point3.h:97</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a206691c31872e537eefbf897603dba74"><div class="ttname"><a href="classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74">mingfx::Point3::Lerp</a></div><div class="ttdeci">static Point3 Lerp(const Point3 &amp;a, const Point3 &amp;b, float alpha)</div><div class="ttdoc">Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a228a1f3754b8ee82b9bb148ce183fc5b"><div class="ttname"><a href="classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b">mingfx::Point3::Lerp</a></div><div class="ttdeci">Point3 Lerp(const Point3 &amp;b, float alpha) const</div><div class="ttdoc">Linear interpolation between this point and another. Alpha=0.0 returns this point,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a23534a1ce3d4466c303b9205bd21cd97"><div class="ttname"><a href="classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97">mingfx::Point3::Point3</a></div><div class="ttdeci">Point3(const Point3 &amp;p)</div><div class="ttdoc">Copy constructor for point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a29d113f0fa37fa04a642817c680fe953"><div class="ttname"><a href="classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953">mingfx::Point3::Point3</a></div><div class="ttdeci">Point3(float x, float y, float z)</div><div class="ttdoc">Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in comp...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a2cfcbefe652720779e0d7beff1c86ece"><div class="ttname"><a href="classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece">mingfx::Point3::One</a></div><div class="ttdeci">static const Point3 &amp; One()</div><div class="ttdoc">(1,1,1) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a3a586db5b58d5f1fdaddb1e33e84d566"><div class="ttname"><a href="classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566">mingfx::Point3::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Read only access to the ith coordinate of the point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a790468d68b6d957b22959f9078f85c3e"><div class="ttname"><a href="classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e">mingfx::Point3::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coor...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a8e54b18bfaa39f4b7048b85c9ca43c3d"><div class="ttname"><a href="classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d">mingfx::Point3::operator=</a></div><div class="ttdeci">Point3 &amp; operator=(const Point3 &amp;p)</div><div class="ttdoc">Assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a9983b62979f9ac5a11efea08d9d283ed"><div class="ttname"><a href="classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed">mingfx::Point3::Zero</a></div><div class="ttdeci">static const Point3 &amp; Zero()</div><div class="ttdoc">(0,0,0) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_a9dd5396f53b7006ec4cb63abffd90a7c"><div class="ttname"><a href="classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c">mingfx::Point3::ClosestPoint</a></div><div class="ttdeci">Point3 ClosestPoint(const std::vector&lt; Point3 &gt; &amp;point_list)</div><div class="ttdoc">Given a list of points, returns the closest in the last to the current point.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_aa55aef76986cc7424c2a535d6fd1ab7a"><div class="ttname"><a href="classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a">mingfx::Point3::~Point3</a></div><div class="ttdeci">virtual ~Point3()</div><div class="ttdoc">Point destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ab22d5cc4631f26274ada550c90d39699"><div class="ttname"><a href="classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699">mingfx::Point3::operator==</a></div><div class="ttdeci">bool operator==(const Point3 &amp;p) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_abbf85b5749b37869f4c1b98443ebbd9e"><div class="ttname"><a href="classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e">mingfx::Point3::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">In homogeneous coordinates, the w coordinate for all points is 1.0.</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00104">point3.h:104</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ac409e3213620b80c868245c1f6a6eea5"><div class="ttname"><a href="classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5">mingfx::Point3::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00093">point3.h:93</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ac463e3a3ec3edd02c86505ea6400d8e6"><div class="ttname"><a href="classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6">mingfx::Point3::z</a></div><div class="ttdeci">float z() const</div><div class="ttdoc">Read only access to the z coordinate. Can also use my_point[2]. Use the my_point[2] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00101">point3.h:101</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_acccf9d3fca27174c18ada3b33209c71e"><div class="ttname"><a href="classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e">mingfx::Point3::operator!=</a></div><div class="ttdeci">bool operator!=(const Point3 &amp;p) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ae31d5f91a03fabdf72b2fa54e177b743"><div class="ttname"><a href="classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743">mingfx::Point3::ClosestPointOnPlane</a></div><div class="ttdeci">Point3 ClosestPointOnPlane(const Point3 &amp;plane_origin, const Vector3 &amp;plane_normal)</div><div class="ttdoc">Returns the perpendicular projection of this point onto a plane defined by a point and a normal.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_ae8ab322852c24c6e03bed03cac443664"><div class="ttname"><a href="classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664">mingfx::Point3::Point3</a></div><div class="ttdeci">Point3()</div><div class="ttdoc">Default point at the origin.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_aecb7c3137356cd4470851c54a47c7930"><div class="ttname"><a href="classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930">mingfx::Point3::Origin</a></div><div class="ttdeci">static const Point3 &amp; Origin()</div><div class="ttdoc">(0,0,0) - a shortcut for a special point that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_af0557bdc07452cf335e2b7e04fc0aa3c"><div class="ttname"><a href="classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c">mingfx::Point3::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html_af554773b2d7f4492a0727e8e42efe002"><div class="ttname"><a href="classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002">mingfx::Point3::DistanceToPlane</a></div><div class="ttdeci">float DistanceToPlane(const Point3 &amp;plane_origin, const Vector3 &amp;plane_normal)</div><div class="ttdoc">Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/quaternion.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">quaternion.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+</div>
+<p><a href="quaternion_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A quaternion to represent rotations in 3D space. <a href="classmingfx_1_1_quaternion.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a0a456bccfb238b9644cf21669cf35b8c"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a0a456bccfb238b9644cf21669cf35b8c">mingfx::operator*</a> (const Quaternion &amp;q1, const Quaternion &amp;q2)</td></tr>
+<tr class="separator:a0a456bccfb238b9644cf21669cf35b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a444ae88d836b913ac8307fbf4357f7ed"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx::operator/</a> (const Quaternion &amp;q, const float s)</td></tr>
+<tr class="separator:a444ae88d836b913ac8307fbf4357f7ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a55f694123e83d1649c112e806359d4b6"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a55f694123e83d1649c112e806359d4b6">mingfx::operator*</a> (const float s, const Quaternion &amp;q)</td></tr>
+<tr class="separator:a55f694123e83d1649c112e806359d4b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb96b0188d1ceda03ed8d297817502c9"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9">mingfx::operator*</a> (const Quaternion &amp;q, const float s)</td></tr>
+<tr class="separator:adb96b0188d1ceda03ed8d297817502c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f5a225a54f07164d5172a3721a3aee6"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx::operator-</a> (const Quaternion &amp;q)</td></tr>
+<tr class="separator:a2f5a225a54f07164d5172a3721a3aee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad49375487853a642b3f372c95cff1a96"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad49375487853a642b3f372c95cff1a96">mingfx::operator+</a> (const Quaternion &amp;q1, const Quaternion &amp;q2)</td></tr>
+<tr class="separator:ad49375487853a642b3f372c95cff1a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a61f2d974c78e8884bb64c2759e455101"><td class="memItemLeft" align="right" valign="top">Quaternion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101">mingfx::operator-</a> (const Quaternion &amp;q1, const Quaternion &amp;q2)</td></tr>
+<tr class="separator:a61f2d974c78e8884bb64c2759e455101"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4b78a682ff8d1ec298e0df7f742658d"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Quaternion &amp;q)</td></tr>
+<tr class="separator:ac4b78a682ff8d1ec298e0df7f742658d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a59fb7a99df5c572849e31065884b2235"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a59fb7a99df5c572849e31065884b2235">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Quaternion &amp;q)</td></tr>
+<tr class="separator:a59fb7a99df5c572849e31065884b2235"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/quaternion.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">quaternion.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="quaternion_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_QUATERNION_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_QUATERNION_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165"> 44</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">Quaternion</a>();</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97"> 47</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">Quaternion</a>(<span class="keywordtype">float</span> qx, <span class="keywordtype">float</span> qy, <span class="keywordtype">float</span> qz, <span class="keywordtype">float</span> qw);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6"> 51</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6">Quaternion</a>(<span class="keywordtype">float</span> *ptr);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243"> 54</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243">Quaternion</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; other);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc"> 56</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">~Quaternion</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403"> 59</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e"> 62</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd"> 65</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; <a class="code" href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8"> 68</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1"> 71</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae"> 74</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q[0]; }</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b"> 77</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">y</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q[1]; }</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f"> 80</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">z</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q[2]; }</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7"> 83</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">w</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q[3]; }</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9"> 86</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f"> 89</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">Dot</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a"> 92</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">Length</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2"> 95</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">Normalize</a>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03"> 99</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">ToUnit</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584"> 102</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">Conjugate</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007"> 105</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">ToEulerAnglesZYX</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22"> 109</a></span>&#160; <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">Slerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;other, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// the specified axis.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c"> 113</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">FromAxisAngle</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;axis, <span class="keywordtype">float</span> angle);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18"> 116</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">FromEulerAnglesZYX</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;angles);</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133"> 120</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133">Slerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">float</span> q[4];</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;};</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a0a456bccfb238b9644cf21669cf35b8c"> 127</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q2);</div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed"> 128</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a55f694123e83d1649c112e806359d4b6"> 129</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> s, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q);</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9"> 130</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6"> 131</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ad49375487853a642b3f372c95cff1a96"> 132</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q2);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101"> 133</a></span>&#160;<a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a>&amp; q2);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d"> 135</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a59fb7a99df5c572849e31065884b2235"> 136</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_quaternion.html">Quaternion</a> &amp;q);</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html"><div class="ttname"><a href="classmingfx_1_1_quaternion.html">mingfx::Quaternion</a></div><div class="ttdoc">A quaternion to represent rotations in 3D space.</div><div class="ttdef"><b>Definition:</b> <a href="quaternion_8h_source.html#l00041">quaternion.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a0290914928a2618f7faaa40989113d22"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22">mingfx::Quaternion::Slerp</a></div><div class="ttdeci">Quaternion Slerp(const Quaternion &amp;other, float alpha) const</div><div class="ttdoc">Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the r...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a033f05ed7e7215a5c3c4cd26548c8007"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007">mingfx::Quaternion::ToEulerAnglesZYX</a></div><div class="ttdeci">Vector3 ToEulerAnglesZYX() const</div><div class="ttdoc">Converts the rotation specified by the quaternion into Euler angles.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a05def5c8eb729037b3d9522711a5c2a2"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2">mingfx::Quaternion::Normalize</a></div><div class="ttdeci">void Normalize()</div><div class="ttdoc">Normalizes the quat by making it unit length.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a07bb09eb7d0b368ef5e8d9da02fbdad6"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6">mingfx::Quaternion::Quaternion</a></div><div class="ttdeci">Quaternion(float *ptr)</div><div class="ttdoc">Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a0be885a1b3f2d54675c6866ec3578243"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243">mingfx::Quaternion::Quaternion</a></div><div class="ttdeci">Quaternion(const Quaternion &amp;other)</div><div class="ttdoc">Copy constructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a1f9ddd82678ccf51a462e4e03a02c7cc"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc">mingfx::Quaternion::~Quaternion</a></div><div class="ttdeci">virtual ~Quaternion()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a31d37561099fab3d75a74455c5f43133"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133">mingfx::Quaternion::Slerp</a></div><div class="ttdeci">static Quaternion Slerp(const Quaternion &amp;a, const Quaternion &amp;b, float alpha)</div><div class="ttdoc">Uses spherical interpolation to interpoloate between the rotations specified by two quaternions.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a3572b35419c51332204adb5bf35f0b03"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03">mingfx::Quaternion::ToUnit</a></div><div class="ttdeci">Quaternion ToUnit() const</div><div class="ttdoc">Returns a normalized (i.e., unit length) version of the quaternion without modifying the original.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a40e6587cc0511572297c5507634db7e1"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1">mingfx::Quaternion::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Writable access the ith coordinate of the quaternion (qx, qy, qz, qw).</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a548d09ecd25788241d734240c0dd7ea8"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8">mingfx::Quaternion::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw).</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a5bacec2f9a3cbbcf24572f9c8eeb480c"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c">mingfx::Quaternion::FromAxisAngle</a></div><div class="ttdeci">static Quaternion FromAxisAngle(const Vector3 &amp;axis, float angle)</div><div class="ttdoc">Creates a new quaternion that describes a rotation by angle radians about.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a5c6cbe4fc70e8e4ec23142d0a5a2ba97"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97">mingfx::Quaternion::Quaternion</a></div><div class="ttdeci">Quaternion(float qx, float qy, float qz, float qw)</div><div class="ttdoc">Creates a quat from the 4 parameters.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a75ec001cbbf08cf5c4e1f8978082a55f"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f">mingfx::Quaternion::z</a></div><div class="ttdeci">float z() const</div><div class="ttdoc">Read only access to the z coordinate of the imaginary part of the quaternion.</div><div class="ttdef"><b>Definition:</b> <a href="quaternion_8h_source.html#l00080">quaternion.h:80</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a85464500e1d3c8ba10f1968426dc24ae"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae">mingfx::Quaternion::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate of the imaginary part of the quaternion.</div><div class="ttdef"><b>Definition:</b> <a href="quaternion_8h_source.html#l00074">quaternion.h:74</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a8aa53f71892f02c981d98d100a8b57c7"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7">mingfx::Quaternion::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">Read only access to the w, real part, of the quaternion.</div><div class="ttdef"><b>Definition:</b> <a href="quaternion_8h_source.html#l00083">quaternion.h:83</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a90a9b715d06c75ba60eb1164dc6e9c6f"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f">mingfx::Quaternion::Dot</a></div><div class="ttdeci">float Dot(const Quaternion &amp;q) const</div><div class="ttdoc">Returns the dot product of this quaternion with another.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_a9548599ea5c527f9f67d2ea6710e3d18"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18">mingfx::Quaternion::FromEulerAnglesZYX</a></div><div class="ttdeci">static Quaternion FromEulerAnglesZYX(const Vector3 &amp;angles)</div><div class="ttdoc">Creates a new quaternion from a rotation defined in Euler angles.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_aa89165641485cf9337cd6279df40a403"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403">mingfx::Quaternion::operator==</a></div><div class="ttdeci">bool operator==(const Quaternion &amp;q) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_ab0e3e20f78e537de0187def78d808584"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584">mingfx::Quaternion::Conjugate</a></div><div class="ttdeci">Quaternion Conjugate() const</div><div class="ttdoc">Returns the conjugate of the quaternion.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_abca597e756f257dc33838734ae19baf9"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9">mingfx::Quaternion::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_ac5f82b7ed1d620c3c15f57aca028fcdd"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd">mingfx::Quaternion::operator=</a></div><div class="ttdeci">Quaternion &amp; operator=(const Quaternion &amp;q)</div><div class="ttdoc">Assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_ad58ac80804ec63af354912a71361f165"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165">mingfx::Quaternion::Quaternion</a></div><div class="ttdeci">Quaternion()</div><div class="ttdoc">Creates a quat with the identity rotation.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_ad72c021d2d1fa543c96ac4a8b360dd2e"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e">mingfx::Quaternion::operator!=</a></div><div class="ttdeci">bool operator!=(const Quaternion &amp;q) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_adb294449db2a80bd11426148592d9e0b"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b">mingfx::Quaternion::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate of the imaginary part of the quaternion.</div><div class="ttdef"><b>Definition:</b> <a href="quaternion_8h_source.html#l00077">quaternion.h:77</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quaternion_html_af6527ae19f31be2b265b8b8c4b34b77a"><div class="ttname"><a href="classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a">mingfx::Quaternion::Length</a></div><div class="ttdeci">float Length() const</div><div class="ttdoc">Returns the length of the quaternion.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a2f5a225a54f07164d5172a3721a3aee6"><div class="ttname"><a href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx::operator-</a></div><div class="ttdeci">Quaternion operator-(const Quaternion &amp;q)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a3c3b45ed6edf3fe76f98a7fd165dca03"><div class="ttname"><a href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx::operator+</a></div><div class="ttdeci">AABB operator+(const AABB &amp;A, const AABB &amp;B)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a444ae88d836b913ac8307fbf4357f7ed"><div class="ttname"><a href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx::operator/</a></div><div class="ttdeci">Quaternion operator/(const Quaternion &amp;q, const float s)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_ae5708e414f585dde2a5418ddae259a57"><div class="ttname"><a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx::operator*</a></div><div class="ttdeci">Matrix4 operator*(const Matrix4 &amp;m, const float &amp;s)</div><div class="ttdoc">Multiply matrix and scalar, returns the new matrix.</div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/quick_shapes.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">quick_shapes.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="default__shader_8h_source.html">default_shader.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mesh_8h_source.html">mesh.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+</div>
+<p><a href="quick__shapes_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class provides a quick way to draw shapes for use in debugging or simple scenes. <a href="classmingfx_1_1_quick_shapes.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/quick_shapes.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">quick_shapes.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="quick__shapes_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2017, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_QUICK_SHAPES_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_QUICK_SHAPES_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="default__shader_8h.html">default_shader.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mesh_8h.html">mesh.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shader__program_8h.html">shader_program.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture2d_8h.html">texture2d.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html"> 69</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a> {</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2"> 72</a></span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">QuickShapes</a>();</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046"> 73</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">~QuickShapes</a>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// -------- 3D PRIMITIVES --------</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af"> 81</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">DrawCube</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844"> 90</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">DrawCylinder</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424"> 99</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">DrawCone</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744"> 107</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">DrawSphere</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30"> 116</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">DrawBrush</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// -------- 3D COMPOSITE SHAPES --------</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e"> 126</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">DrawLineSegment</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color,</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p1,</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p2,</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">float</span> radius);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603"> 134</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a> {</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727">LINES</a>,</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814">LINE_STRIP</a>,</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">LINE_LOOP</a></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; };</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf"> 156</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">DrawLines</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color,</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> std::vector&lt;Point3&gt; &amp;points,</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">LinesType</a> linesType,</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">float</span> radius);</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; </div>
+<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb"> 168</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">DrawArrow</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix,</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color,</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> p, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> dir, <span class="keywordtype">float</span> radius);</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8"> 178</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">DrawAxes</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix,</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// -------- 2D PRIMITIVES --------</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3"> 189</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">DrawSquare</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc"> 198</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc">DrawSquare</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;modelMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;viewMatrix,</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color,</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;texture);</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
+<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868"> 205</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">DrawFullscreenTexture</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;texture);</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b"> 211</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader.html">DefaultShader</a>* <a class="code" href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">default_shader</a>();</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272"> 217</a></span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a>* <a class="code" href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">material</a>();</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">void</span> DrawWithFullscreen(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;color, <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> *mesh, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex);</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> cubeMesh_;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">void</span> initCube();</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> squareMesh_;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">void</span> initSquare();</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> fullMesh_;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">void</span> initFull();</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> cylMesh_;</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">void</span> initCyl();</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> coneMesh_;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">void</span> initCone();</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> sphereMesh_;</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordtype">void</span> initSph();</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> brushMesh_;</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">void</span> initBrush();</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classmingfx_1_1_default_shader.html">DefaultShader</a> defaultShader_;</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classmingfx_1_1_default_shader_1_1_material_properties.html">DefaultShader::MaterialProperties</a> defaultMaterial_;</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> emptyTex_;</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> fullscreenShader_;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;};</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_1_1_material_properties_html"><div class="ttname"><a href="classmingfx_1_1_default_shader_1_1_material_properties.html">mingfx::DefaultShader::MaterialProperties</a></div><div class="ttdoc">Small data structure to hold properties of the material to be lit.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00070">default_shader.h:70</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_default_shader_html"><div class="ttname"><a href="classmingfx_1_1_default_shader.html">mingfx::DefaultShader</a></div><div class="ttdoc">A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.</div><div class="ttdef"><b>Definition:</b> <a href="default__shader_8h_source.html#l00062">default_shader.h:62</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></div><div class="ttdoc">This class provides a quick way to draw shapes for use in debugging or simple scenes.</div><div class="ttdef"><b>Definition:</b> <a href="quick__shapes_8h_source.html#l00069">quick_shapes.h:69</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a0feae19a04d9f315a39e2bdbf659bd7e"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e">mingfx::QuickShapes::DrawLineSegment</a></div><div class="ttdeci">void DrawLineSegment(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Point3 &amp;p1, const Point3 &amp;p2, float radius)</div><div class="ttdoc">Draws a cylinder between the two points.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a1880f6dd3e794cd9f6e5d9138f93a424"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424">mingfx::QuickShapes::DrawCone</a></div><div class="ttdeci">void DrawCone(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws a cone with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provid...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a3a75dde188ec076ea46a6319ed1ca046"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046">mingfx::QuickShapes::~QuickShapes</a></div><div class="ttdeci">virtual ~QuickShapes()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a4350ea23b8b9e0e8119310423d641ab3"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3">mingfx::QuickShapes::DrawSquare</a></div><div class="ttdeci">void DrawSquare(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a5764a0953013ece013bf3e2a72e4afa2"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2">mingfx::QuickShapes::QuickShapes</a></div><div class="ttdeci">QuickShapes()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a637876fdc13e84282922350b53dab5f8"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8">mingfx::QuickShapes::DrawAxes</a></div><div class="ttdeci">void DrawAxes(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix)</div><div class="ttdoc">Draws a right handed set of axes at the coordinate frame specified by the modelMatrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a69c442154f800c6bb3f6ffa8395e2844"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844">mingfx::QuickShapes::DrawCylinder</a></div><div class="ttdeci">void DrawCylinder(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws a cylinder with radius 1 and height y=-1 to 1 given the model, view, and projection matrices pr...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_a7187f72fa8e12b38dcd0ce424fc85fbc"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc">mingfx::QuickShapes::DrawSquare</a></div><div class="ttdeci">void DrawSquare(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Texture2D &amp;texture)</div><div class="ttdoc">Draws a square, which you can deform into some other shape by adjusting the model matrix,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aa5f4f64e3708630a6d58f6b4ca7d2744"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744">mingfx::QuickShapes::DrawSphere</a></div><div class="ttdeci">void DrawSphere(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the su...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aa7564a49dc2ff8efd93dec13186cb75b"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b">mingfx::QuickShapes::default_shader</a></div><div class="ttdeci">DefaultShader * default_shader()</div><div class="ttdoc">Returns a pointer to the default shader used internally by the Draw class so that you may change the ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aaea35a34a9495a9ab25cd9aa32a91603"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603">mingfx::QuickShapes::LinesType</a></div><div class="ttdeci">LinesType</div><div class="ttdef"><b>Definition:</b> <a href="quick__shapes_8h_source.html#l00134">quick_shapes.h:134</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134">mingfx::QuickShapes::LinesType::LINE_LOOP</a></div><div class="ttdeci">@ LINE_LOOP</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727">mingfx::QuickShapes::LinesType::LINES</a></div><div class="ttdeci">@ LINES</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814">mingfx::QuickShapes::LinesType::LINE_STRIP</a></div><div class="ttdeci">@ LINE_STRIP</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_ab24811cfd980b3f2ec4ebccf6c0e8b30"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30">mingfx::QuickShapes::DrawBrush</a></div><div class="ttdeci">void DrawBrush(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws the classic 3D paintbrush cursor from the 2001 Keefe et al.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_abec2513648c1238f36c41cf3c85dd868"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868">mingfx::QuickShapes::DrawFullscreenTexture</a></div><div class="ttdeci">void DrawFullscreenTexture(const Color &amp;color, const Texture2D &amp;texture)</div><div class="ttdoc">Draws a background texture across the whole screen.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_ac8b702a25296cfea15eef1e185333272"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272">mingfx::QuickShapes::material</a></div><div class="ttdeci">DefaultShader::MaterialProperties * material()</div><div class="ttdoc">Returns a pointer to the default material properties for the shapes so that you may adjust the reflec...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_adad98f87a40650ff7c605a94b6d937af"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af">mingfx::QuickShapes::DrawCube</a></div><div class="ttdeci">void DrawCube(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)</div><div class="ttdoc">Draws a cube with extents -1 to 1 given the model, view, and projection matrices provided and using t...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_aebe27814a826558ac0475fef3d4481eb"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb">mingfx::QuickShapes::DrawArrow</a></div><div class="ttdeci">void DrawArrow(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, Point3 p, Vector3 dir, float radius)</div><div class="ttdoc">Draws an arrow originating at point p and extending in the direction and length specified by dir.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html_af59ae8d8c5bd0447f3bb7f56112400bf"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf">mingfx::QuickShapes::DrawLines</a></div><div class="ttdeci">void DrawLines(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const std::vector&lt; Point3 &gt; &amp;points, LinesType linesType, float radius)</div><div class="ttdoc">Draws a series of line segments.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html"><div class="ttname"><a href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></div><div class="ttdoc">A wrapper around GLSL shader programs.</div><div class="ttdef"><b>Definition:</b> <a href="shader__program_8h_source.html#l00066">shader_program.h:66</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></div><div class="ttdoc">A wrapper around a 2D texture that supports loading images from files or setting texture color data d...</div><div class="ttdef"><b>Definition:</b> <a href="texture2d_8h_source.html#l00042">texture2d.h:42</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="adefault__shader_8h_html"><div class="ttname"><a href="default__shader_8h.html">default_shader.h</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="amesh_8h_html"><div class="ttname"><a href="mesh_8h.html">mesh.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="ashader__program_8h_html"><div class="ttname"><a href="shader__program_8h.html">shader_program.h</a></div></div>
+<div class="ttc" id="atexture2d_8h_html"><div class="ttname"><a href="texture2d_8h.html">texture2d.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/ray.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">ray.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="aabb_8h_source.html">aabb.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mesh_8h_source.html">mesh.h</a>&quot;</code><br />
+</div>
+<p><a href="ray_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_ray.html">mingfx::Ray</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector). <a href="classmingfx_1_1_ray.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ad7c839e598b7be6c1b407330dfacc980"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Ray &amp;r)</td></tr>
+<tr class="separator:ad7c839e598b7be6c1b407330dfacc980"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0412270963460363fa015b9b4785cc59"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a0412270963460363fa015b9b4785cc59">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Ray &amp;r)</td></tr>
+<tr class="separator:a0412270963460363fa015b9b4785cc59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/ray.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">ray.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="ray_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_RAY_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_RAY_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="aabb_8h.html">aabb.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mesh_8h.html">mesh.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html"> 54</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_ray.html">Ray</a> {</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda"> 58</a></span>&#160; <a class="code" href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">Ray</a>();</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6"> 61</a></span>&#160; <a class="code" href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6">Ray</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;<a class="code" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">origin</a>, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;<a class="code" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">direction</a>);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625"> 64</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">~Ray</a>();</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d"> 67</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_ray.html">Ray</a>&amp; other) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff"> 70</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_ray.html">Ray</a>&amp; other) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984"> 73</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">Length</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24"> 81</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">IntersectPlane</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;planePt, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;planeNormal,</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">float</span> *iTime, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734"> 90</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">IntersectTriangle</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v2, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v3,</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">float</span> *iTime, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3"> 99</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">IntersectQuad</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v2, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v3, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;v4,</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">float</span> *iTime, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff"> 106</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">IntersectSphere</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;center, <span class="keywordtype">float</span> radius,</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">float</span> *iTime, <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f"> 114</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">IntersectMesh</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> &amp;mesh, <span class="keywordtype">float</span> *iTime,</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint, <span class="keywordtype">int</span> *iTriangleID) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc"> 126</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">FastIntersectMesh</a>(<a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> *mesh, <span class="keywordtype">float</span> *iTime,</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> *iPoint, <span class="keywordtype">int</span> *iTriangleID) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7"> 142</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">IntersectAABB</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_a_a_b_b.html">AABB</a> &amp;box, <span class="keywordtype">float</span> *iTime) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"> 145</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">origin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe"> 148</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">direction</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071"> 151</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">set</a>(<a class="code" href="classmingfx_1_1_point3.html">Point3</a> newOrigin, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> newDir);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> p_;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> d_;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;};</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">// --- Stream operators ---</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980"> 161</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_ray.html">Ray</a> &amp;r);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a0412270963460363fa015b9b4785cc59"> 162</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_ray.html">Ray</a> &amp;r);</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; </div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aaabb_8h_html"><div class="ttname"><a href="aabb_8h.html">aabb.h</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_a_a_b_b_html"><div class="ttname"><a href="classmingfx_1_1_a_a_b_b.html">mingfx::AABB</a></div><div class="ttdoc">A 3D axis-aligned bounding box defined by two corners (min and max).</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00031">aabb.h:31</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html"><div class="ttname"><a href="classmingfx_1_1_ray.html">mingfx::Ray</a></div><div class="ttdoc">Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...</div><div class="ttdef"><b>Definition:</b> <a href="ray_8h_source.html#l00054">ray.h:54</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a1a6130616c4e4eebe9d09181b0f8b734"><div class="ttname"><a href="classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734">mingfx::Ray::IntersectTriangle</a></div><div class="ttdeci">bool IntersectTriangle(const Point3 &amp;v1, const Point3 &amp;v2, const Point3 &amp;v3, float *iTime, Point3 *iPoint) const</div><div class="ttdoc">Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe"><div class="ttname"><a href="classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe">mingfx::Ray::origin</a></div><div class="ttdeci">Point3 origin() const</div><div class="ttdoc">Returns the origin.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a37689523a0b73d3d3288ce60bdcb7ae3"><div class="ttname"><a href="classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3">mingfx::Ray::IntersectQuad</a></div><div class="ttdeci">bool IntersectQuad(const Point3 &amp;v1, const Point3 &amp;v2, const Point3 &amp;v3, const Point3 &amp;v4, float *iTime, Point3 *iPoint) const</div><div class="ttdoc">Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a3c926e2da6dfd1b0a435577617eae984"><div class="ttname"><a href="classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984">mingfx::Ray::Length</a></div><div class="ttdeci">float Length() const</div><div class="ttdoc">Returns the length of the direction vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a57d3ee10518ed361ae02d9cbdef842b7"><div class="ttname"><a href="classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7">mingfx::Ray::IntersectAABB</a></div><div class="ttdeci">bool IntersectAABB(const AABB &amp;box, float *iTime) const</div><div class="ttdoc">Checks to see if the ray intersects an AABB (Axis-Aligned Bounding Box).</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a75593293307b4eead15a876bf3597071"><div class="ttname"><a href="classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071">mingfx::Ray::set</a></div><div class="ttdeci">void set(Point3 newOrigin, Vector3 newDir)</div><div class="ttdoc">Sets a new origin and direction.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a79caa1df0839d13339575d3d5527ae6f"><div class="ttname"><a href="classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f">mingfx::Ray::IntersectMesh</a></div><div class="ttdeci">bool IntersectMesh(const Mesh &amp;mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const</div><div class="ttdoc">Checks to see if the ray intersects a triangle mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a7b7826730a410c10be00122c99fe6dbe"><div class="ttname"><a href="classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe">mingfx::Ray::direction</a></div><div class="ttdeci">Vector3 direction() const</div><div class="ttdoc">Returns the direction.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a8707604031eb9437c449345d85d69d24"><div class="ttname"><a href="classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24">mingfx::Ray::IntersectPlane</a></div><div class="ttdeci">bool IntersectPlane(const Point3 &amp;planePt, const Vector3 &amp;planeNormal, float *iTime, Point3 *iPoint) const</div><div class="ttdoc">Checks to see if the ray intersects a plane defined by a point and a normal.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a87b07c4f7c9f33189efade7e519b5d9d"><div class="ttname"><a href="classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d">mingfx::Ray::operator==</a></div><div class="ttdeci">bool operator==(const Ray &amp;other) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_a970c7dbc19167be625967fabfb39b4ff"><div class="ttname"><a href="classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff">mingfx::Ray::IntersectSphere</a></div><div class="ttdeci">bool IntersectSphere(const Point3 &amp;center, float radius, float *iTime, Point3 *iPoint) const</div><div class="ttdoc">Checks to see if the ray intersects a sphere defined by a center point and a radius.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_ab38cdd0793b3acfe55fa9ebca5ddebf6"><div class="ttname"><a href="classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6">mingfx::Ray::Ray</a></div><div class="ttdeci">Ray(const Point3 &amp;origin, const Vector3 &amp;direction)</div><div class="ttdoc">Creates a ray from a 3D origin and direction.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_ab62fa6ea1c20870f67c58401aefe3eff"><div class="ttname"><a href="classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff">mingfx::Ray::operator!=</a></div><div class="ttdeci">bool operator!=(const Ray &amp;other) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_ac20909f30c07d5375598876c6d294625"><div class="ttname"><a href="classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625">mingfx::Ray::~Ray</a></div><div class="ttdeci">virtual ~Ray()</div><div class="ttdoc">Ray destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_ac90097090f0f8f49db13f6f232712afc"><div class="ttname"><a href="classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc">mingfx::Ray::FastIntersectMesh</a></div><div class="ttdeci">bool FastIntersectMesh(Mesh *mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const</div><div class="ttdoc">Checks to see if the ray intersects a triangle mesh.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_ray_html_aee3fe586869e00ae657a74bb4bbbbfda"><div class="ttname"><a href="classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda">mingfx::Ray::Ray</a></div><div class="ttdeci">Ray()</div><div class="ttdoc">Defaults to a ray at the origin and pointing in the -Z direction.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="amesh_8h_html"><div class="ttname"><a href="mesh_8h.html">mesh.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;a)'],['../classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf',1,'mingfx::AABB::AABB(const Point3 &amp;a, const Point3 &amp;b, const Point3 &amp;c)'],['../classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8',1,'mingfx::AABB::AABB(const Vector3 &amp;extents)'],['../classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1',1,'mingfx::AABB::AABB(const Point3 &amp;center, const Vector3 &amp;extents)'],['../classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09',1,'mingfx::AABB::AABB(const Mesh &amp;mesh)'],['../classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9',1,'mingfx::AABB::AABB(const Mesh &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;name, const Texture2D &amp;tex)'],['../classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96',1,'mingfx::ShaderProgram::BindTexture(const std::string &amp;name, const Texture2D &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_10.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; Color &gt; &amp;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&lt; unsigned int &gt; 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&lt; Vector3 &gt; &amp;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&lt; Point2 &gt; &amp;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 &amp;name, const Vector3 &amp;v)'],['../classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Matrix4 &amp;m)'],['../classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Color &amp;c)'],['../classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, int i)'],['../classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, unsigned int ui)'],['../classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, float f)'],['../classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Point2 &amp;p)'],['../classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Vector2 &amp;v)'],['../classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Point3 &amp;p)']]],
+ ['setuniformarray1_246',['SetUniformArray1',['../classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray2_247',['SetUniformArray2',['../classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray3_248',['SetUniformArray3',['../classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray4_249',['SetUniformArray4',['../classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, float *f, int count)']]],
+ ['setvertices_250',['SetVertices',['../classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6',1,'mingfx::Mesh::SetVertices(const std::vector&lt; Point3 &gt; &amp;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 &amp;other, float alpha) const'],['../classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133',1,'mingfx::Quaternion::Slerp(const Quaternion &amp;a, const Quaternion &amp;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():&#160;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():&#160;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():&#160;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_11.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_12.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_13.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_14.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_15.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_16.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_17.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_18.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; float &gt; &amp;vals)'],['../classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a',1,'mingfx::Color::Color(const Color &amp;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 &amp;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 &amp;v) const'],['../classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485',1,'mingfx::Vector3::Cross(const Vector3 &amp;v1, const Vector3 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;v) const'],['../classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd',1,'mingfx::Vector2::Dot(const Vector2 &amp;v1, const Vector2 &amp;v2)'],['../classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88',1,'mingfx::Vector3::Dot(const Vector3 &amp;v) const'],['../classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507',1,'mingfx::Vector3::Dot(const Vector3 &amp;v1, const Vector3 &amp;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 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)'],['../classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Texture2D &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)'],['../classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2',1,'mingfx::Platform::FindFile(const std::string &amp;basename, const std::string &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;b, float alpha) const'],['../classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363',1,'mingfx::Color::Lerp(const Color &amp;a, const Color &amp;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 &amp;b, float alpha) const'],['../classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e',1,'mingfx::Point2::Lerp(const Point2 &amp;a, const Point2 &amp;b, float alpha)'],['../classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b',1,'mingfx::Point3::Lerp(const Point3 &amp;b, float alpha) const'],['../classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74',1,'mingfx::Point3::Lerp(const Point3 &amp;a, const Point3 &amp;b, float alpha)'],['../classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17',1,'mingfx::Vector2::Lerp(const Vector2 &amp;b, float alpha) const'],['../classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561',1,'mingfx::Vector2::Lerp(const Vector2 &amp;a, const Vector2 &amp;b, float alpha)'],['../classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6',1,'mingfx::Vector3::Lerp(const Vector3 &amp;b, float alpha) const'],['../classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f',1,'mingfx::Vector3::Lerp(const Vector3 &amp;a, const Vector3 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; float &gt; &amp;a)'],['../classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87',1,'mingfx::Matrix4::Matrix4(const Matrix4 &amp;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 &amp;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():&#160;point2.h'],['../point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON():&#160;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;v)'],['../classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca',1,'mingfx::Vector3::Normalize()'],['../classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d',1,'mingfx::Vector3::Normalize(const Vector3 &amp;v)']]],
+ ['normalizeddevicecoordstopixels_153',['NormalizedDeviceCoordsToPixels',['../classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Point2 &amp;pointInNDC)'],['../classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Vector2 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4',1,'mingfx::operator*(const Matrix4 &amp;m, const Ray &amp;r)'],['../namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9',1,'mingfx::operator*(const Quaternion &amp;q, const float s)'],['../namespacemingfx.html#a55f694123e83d1649c112e806359d4b6',1,'mingfx::operator*(const float s, const Quaternion &amp;q)'],['../namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5',1,'mingfx::operator*(const Vector3 &amp;v, const float s)'],['../namespacemingfx.html#a7e3941689c65388690916d00e0d423d4',1,'mingfx::operator*(const float s, const Vector3 &amp;v)'],['../namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878',1,'mingfx::operator*(const Vector2 &amp;v, const float s)'],['../namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432',1,'mingfx::operator*(const float s, const Vector2 &amp;v)'],['../namespacemingfx.html#aadc0e86a31d54469e730669067b102c2',1,'mingfx::operator*(const Matrix4 &amp;m1, const Matrix4 &amp;m2)'],['../namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77',1,'mingfx::operator*(const Matrix4 &amp;m, const Vector3 &amp;v)'],['../namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80',1,'mingfx::operator*(const Matrix4 &amp;m, const Point3 &amp;p)'],['../namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb',1,'mingfx::operator*(const float &amp;s, const Matrix4 &amp;m)'],['../namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57',1,'mingfx::operator*(const Matrix4 &amp;m, const float &amp;s)']]],
+ ['operator_2b_184',['operator+',['../namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e',1,'mingfx::operator+(const Point2 &amp;p, const Vector2 &amp;v)'],['../namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf',1,'mingfx::operator+(const Vector2 &amp;v, const Point2 &amp;p)'],['../namespacemingfx.html#ad49375487853a642b3f372c95cff1a96',1,'mingfx::operator+(const Quaternion &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03',1,'mingfx::operator+(const AABB &amp;A, const AABB &amp;B)'],['../classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231',1,'mingfx::AABB::operator+()'],['../namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b',1,'mingfx::operator+(const Vector3 &amp;v1, const Vector3 &amp;v2)'],['../namespacemingfx.html#aadea317107a50ec6847ce01927b61c82',1,'mingfx::operator+(const Point3 &amp;p, const Vector3 &amp;v)'],['../namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e',1,'mingfx::operator+(const Vector3 &amp;v, const Point3 &amp;p)'],['../namespacemingfx.html#acdffada748181cc17ec93784f858ff9f',1,'mingfx::operator+(const Vector2 &amp;v1, const Vector2 &amp;v2)']]],
+ ['operator_2d_185',['operator-',['../namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6',1,'mingfx::operator-(const Quaternion &amp;q)'],['../namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101',1,'mingfx::operator-(const Quaternion &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f',1,'mingfx::operator-(const Vector2 &amp;v)'],['../namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2',1,'mingfx::operator-(const Point2 &amp;p, const Vector2 &amp;v)'],['../namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b',1,'mingfx::operator-(const Vector2 &amp;v1, const Vector2 &amp;v2)'],['../namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8',1,'mingfx::operator-(const Point2 &amp;p1, const Point2 &amp;p2)'],['../namespacemingfx.html#afd07add6169773bae12d40201f8af7db',1,'mingfx::operator-(const Vector3 &amp;v)'],['../namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db',1,'mingfx::operator-(const Point3 &amp;p, const Vector3 &amp;v)'],['../namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3',1,'mingfx::operator-(const Vector3 &amp;v1, const Vector3 &amp;v2)'],['../namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af',1,'mingfx::operator-(const Point3 &amp;p1, const Point3 &amp;p2)']]],
+ ['operator_2f_186',['operator/',['../namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed',1,'mingfx::operator/(const Quaternion &amp;q, const float s)'],['../namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd',1,'mingfx::operator/(const Vector2 &amp;v, const float s)'],['../namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a',1,'mingfx::operator/(const Vector3 &amp;v, const float s)']]],
+ ['operator_3c_3c_187',['operator&lt;&lt;',['../namespacemingfx.html#a6bc967741341f4f318a505d884192906',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)'],['../namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Matrix4 &amp;m)'],['../namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Point2 &amp;p)'],['../namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Point3 &amp;p)'],['../namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Quaternion &amp;q)'],['../namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Ray &amp;r)'],['../namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Vector2 &amp;v)'],['../namespacemingfx.html#a3425c24faf923364cd3a764d50601c52',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Vector3 &amp;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&gt;&gt;',['../namespacemingfx.html#a256924759a6718882a2b40e17d3e523d',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Point2 &amp;p)'],['../namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Point3 &amp;p)'],['../namespacemingfx.html#a59fb7a99df5c572849e31065884b2235',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Quaternion &amp;q)'],['../namespacemingfx.html#a0412270963460363fa015b9b4785cc59',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Ray &amp;r)'],['../namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Vector2 &amp;v)'],['../namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Vector3 &amp;v)'],['../namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Color &amp;c)'],['../namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Matrix4 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;pointInPixels)'],['../classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Vector2 &amp;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 &amp;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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;origin, const Vector3 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 11 11"
+ height="11"
+ width="11"
+ id="svg2"
+ version="1.1">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <path
+ id="path12"
+ d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+ style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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():&#160;point2.h'],['../point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON():&#160;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;a)'],['../classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf',1,'mingfx::AABB::AABB(const Point3 &amp;a, const Point3 &amp;b, const Point3 &amp;c)'],['../classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8',1,'mingfx::AABB::AABB(const Vector3 &amp;extents)'],['../classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1',1,'mingfx::AABB::AABB(const Point3 &amp;center, const Vector3 &amp;extents)'],['../classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09',1,'mingfx::AABB::AABB(const Mesh &amp;mesh)'],['../classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9',1,'mingfx::AABB::AABB(const Mesh &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;name, const Texture2D &amp;tex)'],['../classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96',1,'mingfx::ShaderProgram::BindTexture(const std::string &amp;name, const Texture2D &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_10.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; Color &gt; &amp;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&lt; unsigned int &gt; 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&lt; Vector3 &gt; &amp;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&lt; Point2 &gt; &amp;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 &amp;name, const Point2 &amp;p)'],['../classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Vector2 &amp;v)'],['../classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Point3 &amp;p)'],['../classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Vector3 &amp;v)'],['../classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Matrix4 &amp;m)'],['../classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, const Color &amp;c)'],['../classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, int i)'],['../classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, unsigned int ui)'],['../classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c',1,'mingfx::ShaderProgram::SetUniform(const std::string &amp;name, float f)']]],
+ ['setuniformarray1_587',['SetUniformArray1',['../classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray2_588',['SetUniformArray2',['../classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray3_589',['SetUniformArray3',['../classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &amp;name, float *f, int count)']]],
+ ['setuniformarray4_590',['SetUniformArray4',['../classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &amp;name, float *f, int count)']]],
+ ['setvertices_591',['SetVertices',['../classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6',1,'mingfx::Mesh::SetVertices(const std::vector&lt; Point3 &gt; &amp;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 &amp;other, float alpha) const'],['../classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133',1,'mingfx::Quaternion::Slerp(const Quaternion &amp;a, const Quaternion &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_11.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_12.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_13.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_14.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_15.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_16.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_17.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_18.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; float &gt; &amp;vals)'],['../classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a',1,'mingfx::Color::Color(const Color &amp;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 &amp;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 &amp;v) const'],['../classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485',1,'mingfx::Vector3::Cross(const Vector3 &amp;v1, const Vector3 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;v) const'],['../classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd',1,'mingfx::Vector2::Dot(const Vector2 &amp;v1, const Vector2 &amp;v2)'],['../classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88',1,'mingfx::Vector3::Dot(const Vector3 &amp;v) const'],['../classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507',1,'mingfx::Vector3::Dot(const Vector3 &amp;v1, const Vector3 &amp;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 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color)'],['../classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &amp;modelMatrix, const Matrix4 &amp;viewMatrix, const Matrix4 &amp;projectionMatrix, const Color &amp;color, const Texture2D &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;basename, const std::vector&lt; std::string &gt; &amp;searchpath)'],['../classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2',1,'mingfx::Platform::FindFile(const std::string &amp;basename, const std::string &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;b, float alpha) const'],['../classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363',1,'mingfx::Color::Lerp(const Color &amp;a, const Color &amp;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 &amp;b, float alpha) const'],['../classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e',1,'mingfx::Point2::Lerp(const Point2 &amp;a, const Point2 &amp;b, float alpha)'],['../classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b',1,'mingfx::Point3::Lerp(const Point3 &amp;b, float alpha) const'],['../classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74',1,'mingfx::Point3::Lerp(const Point3 &amp;a, const Point3 &amp;b, float alpha)'],['../classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17',1,'mingfx::Vector2::Lerp(const Vector2 &amp;b, float alpha) const'],['../classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561',1,'mingfx::Vector2::Lerp(const Vector2 &amp;a, const Vector2 &amp;b, float alpha)'],['../classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6',1,'mingfx::Vector3::Lerp(const Vector3 &amp;b, float alpha) const'],['../classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f',1,'mingfx::Vector3::Lerp(const Vector3 &amp;a, const Vector3 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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&lt; float &gt; &amp;a)'],['../classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87',1,'mingfx::Matrix4::Matrix4(const Matrix4 &amp;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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;v)'],['../classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca',1,'mingfx::Vector3::Normalize()'],['../classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d',1,'mingfx::Vector3::Normalize(const Vector3 &amp;v)']]],
+ ['normalizeddevicecoordstopixels_505',['NormalizedDeviceCoordsToPixels',['../classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Point2 &amp;pointInNDC)'],['../classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Vector2 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;pos, const Vector2 &amp;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 &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a55f694123e83d1649c112e806359d4b6',1,'mingfx::operator*(const float s, const Quaternion &amp;q)'],['../namespacemingfx.html#aadc0e86a31d54469e730669067b102c2',1,'mingfx::operator*(const Matrix4 &amp;m1, const Matrix4 &amp;m2)'],['../namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5',1,'mingfx::operator*(const Vector3 &amp;v, const float s)'],['../namespacemingfx.html#a7e3941689c65388690916d00e0d423d4',1,'mingfx::operator*(const float s, const Vector3 &amp;v)'],['../namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878',1,'mingfx::operator*(const Vector2 &amp;v, const float s)'],['../namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432',1,'mingfx::operator*(const float s, const Vector2 &amp;v)'],['../namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9',1,'mingfx::operator*(const Quaternion &amp;q, const float s)'],['../namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4',1,'mingfx::operator*(const Matrix4 &amp;m, const Ray &amp;r)'],['../namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77',1,'mingfx::operator*(const Matrix4 &amp;m, const Vector3 &amp;v)'],['../namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80',1,'mingfx::operator*(const Matrix4 &amp;m, const Point3 &amp;p)'],['../namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb',1,'mingfx::operator*(const float &amp;s, const Matrix4 &amp;m)'],['../namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57',1,'mingfx::operator*(const Matrix4 &amp;m, const float &amp;s)']]],
+ ['operator_2b_534',['operator+',['../namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b',1,'mingfx::operator+(const Vector3 &amp;v1, const Vector3 &amp;v2)'],['../namespacemingfx.html#aadea317107a50ec6847ce01927b61c82',1,'mingfx::operator+(const Point3 &amp;p, const Vector3 &amp;v)'],['../namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e',1,'mingfx::operator+(const Vector3 &amp;v, const Point3 &amp;p)'],['../namespacemingfx.html#acdffada748181cc17ec93784f858ff9f',1,'mingfx::operator+(const Vector2 &amp;v1, const Vector2 &amp;v2)'],['../namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e',1,'mingfx::operator+(const Point2 &amp;p, const Vector2 &amp;v)'],['../namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf',1,'mingfx::operator+(const Vector2 &amp;v, const Point2 &amp;p)'],['../namespacemingfx.html#ad49375487853a642b3f372c95cff1a96',1,'mingfx::operator+(const Quaternion &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03',1,'mingfx::operator+(const AABB &amp;A, const AABB &amp;B)']]],
+ ['operator_2d_535',['operator-',['../namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101',1,'mingfx::operator-(const Quaternion &amp;q1, const Quaternion &amp;q2)'],['../namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6',1,'mingfx::operator-(const Quaternion &amp;q)'],['../namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f',1,'mingfx::operator-(const Vector2 &amp;v)'],['../namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2',1,'mingfx::operator-(const Point2 &amp;p, const Vector2 &amp;v)'],['../namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b',1,'mingfx::operator-(const Vector2 &amp;v1, const Vector2 &amp;v2)'],['../namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8',1,'mingfx::operator-(const Point2 &amp;p1, const Point2 &amp;p2)'],['../namespacemingfx.html#afd07add6169773bae12d40201f8af7db',1,'mingfx::operator-(const Vector3 &amp;v)'],['../namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db',1,'mingfx::operator-(const Point3 &amp;p, const Vector3 &amp;v)'],['../namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3',1,'mingfx::operator-(const Vector3 &amp;v1, const Vector3 &amp;v2)'],['../namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af',1,'mingfx::operator-(const Point3 &amp;p1, const Point3 &amp;p2)']]],
+ ['operator_2f_536',['operator/',['../namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed',1,'mingfx::operator/(const Quaternion &amp;q, const float s)'],['../namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd',1,'mingfx::operator/(const Vector2 &amp;v, const float s)'],['../namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a',1,'mingfx::operator/(const Vector3 &amp;v, const float s)']]],
+ ['operator_3c_3c_537',['operator&lt;&lt;',['../namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Matrix4 &amp;m)'],['../namespacemingfx.html#a6bc967741341f4f318a505d884192906',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)'],['../namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Point2 &amp;p)'],['../namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Point3 &amp;p)'],['../namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Quaternion &amp;q)'],['../namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Ray &amp;r)'],['../namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Vector2 &amp;v)'],['../namespacemingfx.html#a3425c24faf923364cd3a764d50601c52',1,'mingfx::operator&lt;&lt;(std::ostream &amp;os, const Vector3 &amp;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&gt;&gt;',['../namespacemingfx.html#a256924759a6718882a2b40e17d3e523d',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Point2 &amp;p)'],['../namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Point3 &amp;p)'],['../namespacemingfx.html#a59fb7a99df5c572849e31065884b2235',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Quaternion &amp;q)'],['../namespacemingfx.html#a0412270963460363fa015b9b4785cc59',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Ray &amp;r)'],['../namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Vector2 &amp;v)'],['../namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Vector3 &amp;v)'],['../namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Color &amp;c)'],['../namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74',1,'mingfx::operator&gt;&gt;(std::istream &amp;is, Matrix4 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;pointInPixels)'],['../classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Vector2 &amp;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 &amp;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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 &amp;origin, const Vector3 &amp;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 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="svg2"
+ width="20"
+ height="19"
+ viewBox="0 0 20 19"
+ sodipodi:docname="mag_sel.svg"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="2096"
+ id="namedview4"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="32"
+ inkscape:cx="5.9792688"
+ inkscape:cy="1.1436277"
+ inkscape:window-x="1920"
+ inkscape:window-y="27"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <circle
+ style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4611"
+ cx="5.5"
+ cy="8.5"
+ r="3.5" />
+ <path
+ style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 11,7 13.5,10 16,7 Z"
+ id="path4609"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 8.1085854,11.109059 2.7823556,2.782356"
+ id="path4630"
+ inkscape:connector-curvature="0" />
+</svg>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="namespaces_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="related_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 <li> 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<search.length;i++)
+ {
+ var c = search.charAt(i);
+ var cn = c.charCodeAt(0);
+ if (c.match(/[a-z0-9\u0080-\uFFFF]/))
+ {
+ result+=c;
+ }
+ else if (cn<16)
+ {
+ result+="_0"+cn.toString(16);
+ }
+ else
+ {
+ result+="_"+cn.toString(16);
+ }
+ }
+ return result;
+}
+
+function getXPos(item)
+{
+ var x = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ x += item.offsetLeft;
+ item = item.offsetParent;
+ }
+ }
+ return x;
+}
+
+function getYPos(item)
+{
+ var y = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ y += item.offsetTop;
+ item = item.offsetParent;
+ }
+ }
+ return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+ Parameters:
+ name - The name of the global variable that will be
+ storing this instance. Is needed to be able to set timeouts.
+ resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label, extension)
+{
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
+ if (!extension || extension == "") { extension = ".html"; }
+
+ // ---------- Instance variables
+ this.name = name;
+ this.resultsPath = resultsPath;
+ this.keyTimeout = 0;
+ this.keyTimeoutLength = 500;
+ this.closeSelectionTimeout = 300;
+ this.lastSearchValue = "";
+ this.lastResultsPage = "";
+ this.hideTimeout = 0;
+ this.searchIndex = 0;
+ this.searchActive = false;
+ this.insideFrame = inFrame;
+ this.searchLabel = label;
+ this.extension = extension;
+
+ // ----------- DOM Elements
+
+ this.DOMSearchField = function()
+ { return document.getElementById("MSearchField"); }
+
+ this.DOMSearchSelect = function()
+ { return document.getElementById("MSearchSelect"); }
+
+ this.DOMSearchSelectWindow = function()
+ { return document.getElementById("MSearchSelectWindow"); }
+
+ this.DOMPopupSearchResults = function()
+ { return document.getElementById("MSearchResults"); }
+
+ this.DOMPopupSearchResultsWindow = function()
+ { return document.getElementById("MSearchResultsWindow"); }
+
+ this.DOMSearchClose = function()
+ { return document.getElementById("MSearchClose"); }
+
+ this.DOMSearchBox = function()
+ { return document.getElementById("MSearchBox"); }
+
+ // ------------ Event Handlers
+
+ // Called when focus is added or removed from the search field.
+ this.OnSearchFieldFocus = function(isActive)
+ {
+ this.Activate(isActive);
+ }
+
+ this.OnSearchSelectShow = function()
+ {
+ var searchSelectWindow = this.DOMSearchSelectWindow();
+ var searchField = this.DOMSearchSelect();
+
+ if (this.insideFrame)
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ left += searchField.offsetWidth + 6;
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ left -= searchSelectWindow.offsetWidth;
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+ else
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+
+ // stop selection hide timer
+ if (this.hideTimeout)
+ {
+ clearTimeout(this.hideTimeout);
+ this.hideTimeout=0;
+ }
+ return false; // to avoid "image drag" default event
+ }
+
+ this.OnSearchSelectHide = function()
+ {
+ this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+ this.closeSelectionTimeout);
+ }
+
+ // Called when the content of the search field is changed.
+ this.OnSearchFieldChange = function(evt)
+ {
+ if (this.keyTimeout) // kill running timer
+ {
+ clearTimeout(this.keyTimeout);
+ this.keyTimeout = 0;
+ }
+
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 || e.keyCode==13)
+ {
+ if (e.shiftKey==1)
+ {
+ this.OnSearchSelectShow();
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ child.focus();
+ return;
+ }
+ }
+ return;
+ }
+ else
+ {
+ window.frames.MSearchResults.postMessage("take_focus", "*");
+ }
+ }
+ else if (e.keyCode==27) // Escape out of the search field
+ {
+ this.DOMSearchField().blur();
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ this.Activate(false);
+ return;
+ }
+
+ // strip whitespaces
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+ if (searchValue != this.lastSearchValue) // search value has changed
+ {
+ if (searchValue != "") // non-empty search
+ {
+ // set timer for search update
+ this.keyTimeout = setTimeout(this.name + '.Search()',
+ this.keyTimeoutLength);
+ }
+ else // empty search field
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ }
+ }
+ }
+
+ this.SelectItemCount = function(id)
+ {
+ var count=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ count++;
+ }
+ }
+ return count;
+ }
+
+ this.SelectItemSet = function(id)
+ {
+ var i,j=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ var node = child.firstChild;
+ if (j==id)
+ {
+ node.innerHTML='&#8226;';
+ }
+ else
+ {
+ node.innerHTML='&#160;';
+ }
+ j++;
+ }
+ }
+ }
+
+ // Called when an search filter selection is made.
+ // set item with index id as the active item
+ this.OnSelectItem = function(id)
+ {
+ this.searchIndex = id;
+ this.SelectItemSet(id);
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+ if (searchValue!="" && this.searchActive) // something was found -> do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+ {
+ this.searchIndex++;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==38 && this.searchIndex>0) // 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 <Search()>.
+ 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<searchData.length; e++)
+ {
+ var id = searchData[e][0];
+ var srResult = document.createElement('div');
+ srResult.setAttribute('id','SR_'+id);
+ setClassAttr(srResult,'SRResult');
+ var srEntry = document.createElement('div');
+ setClassAttr(srEntry,'SREntry');
+ var srLink = document.createElement('a');
+ srLink.setAttribute('id','Item'+e);
+ setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+ setClassAttr(srLink,'SRSymbol');
+ srLink.innerHTML = searchData[e][1][0];
+ srEntry.appendChild(srLink);
+ if (searchData[e][1].length==2) // single result
+ {
+ srLink.setAttribute('href',searchData[e][1][1][0]);
+ if (searchData[e][1][1][1])
+ {
+ srLink.setAttribute('target','_parent');
+ }
+ var srScope = document.createElement('span');
+ setClassAttr(srScope,'SRScope');
+ srScope.innerHTML = searchData[e][1][1][2];
+ srEntry.appendChild(srScope);
+ }
+ else // multiple results
+ {
+ srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+ var srChildren = document.createElement('div');
+ setClassAttr(srChildren,'SRChildren');
+ for (var c=0; c<searchData[e][1].length-1; c++)
+ {
+ var srChild = document.createElement('a');
+ srChild.setAttribute('id','Item'+e+'_c'+c);
+ setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+ setClassAttr(srChild,'SRScope');
+ srChild.setAttribute('href',searchData[e][1][c+1][0]);
+ if (searchData[e][1][c+1][1])
+ {
+ srChild.setAttribute('target','_parent');
+ }
+ srChild.innerHTML = searchData[e][1][c+1][2];
+ srChildren.appendChild(srChild);
+ }
+ srEntry.appendChild(srChildren);
+ }
+ srResult.appendChild(srEntry);
+ results.appendChild(srResult);
+ }
+}
+
+function init_search()
+{
+ var results = document.getElementById("MSearchSelectWindow");
+ for (var key in indexSectionLabels)
+ {
+ var link = document.createElement('a');
+ link.setAttribute('class','SelectItem');
+ link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+ link.href='javascript:void(0)';
+ link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+ results.appendChild(link);
+ }
+ searchBox.OnSelectItem(0);
+}
+/* @license-end */
diff --git a/dev/MinGfx/docs/html/search/search_l.png b/dev/MinGfx/docs/html/search/search_l.png
new file mode 100644
index 0000000..fd5f7da
--- /dev/null
+++ b/dev/MinGfx/docs/html/search/search_l.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/search/search_m.png b/dev/MinGfx/docs/html/search/search_m.png
new file mode 100644
index 0000000..b429a16
--- /dev/null
+++ b/dev/MinGfx/docs/html/search/search_m.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/search/search_r.png b/dev/MinGfx/docs/html/search/search_r.png
new file mode 100644
index 0000000..1af5d21
--- /dev/null
+++ b/dev/MinGfx/docs/html/search/search_r.png
Binary files differ
diff --git a/dev/MinGfx/docs/html/search/searchdata.js b/dev/MinGfx/docs/html/search/searchdata.js
new file mode 100644
index 0000000..f582820
--- /dev/null
+++ b/dev/MinGfx/docs/html/search/searchdata.js
@@ -0,0 +1,48 @@
+var indexSectionsWithContent =
+{
+ 0: "abcdefghilmnopqrstuvwxyz~",
+ 1: "abcdglmpqrstuv",
+ 2: "m",
+ 3: "abcdgimopqrstuv",
+ 4: "abcdefghilmnopqrstuvwxyz~",
+ 5: "acdefhimnpstvwxy",
+ 6: "s",
+ 7: "hlv",
+ 8: "hlsv",
+ 9: "o",
+ 10: "ms",
+ 11: "aim"
+};
+
+var indexSectionNames =
+{
+ 0: "all",
+ 1: "classes",
+ 2: "namespaces",
+ 3: "files",
+ 4: "functions",
+ 5: "variables",
+ 6: "typedefs",
+ 7: "enums",
+ 8: "enumvalues",
+ 9: "related",
+ 10: "defines",
+ 11: "pages"
+};
+
+var indexSectionLabels =
+{
+ 0: "All",
+ 1: "Classes",
+ 2: "Namespaces",
+ 3: "Files",
+ 4: "Functions",
+ 5: "Variables",
+ 6: "Typedefs",
+ 7: "Enumerations",
+ 8: "Enumerator",
+ 9: "Friends",
+ 10: "Macros",
+ 11: "Pages"
+};
+
diff --git a/dev/MinGfx/docs/html/search/typedefs_0.html b/dev/MinGfx/docs/html/search/typedefs_0.html
new file mode 100644
index 0000000..a4684c4
--- /dev/null
+++ b/dev/MinGfx/docs/html/search/typedefs_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/shader_program.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">shader_program.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="opengl__headers_8h_source.html">opengl_headers.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector2_8h_source.html">vector2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+<code>#include &lt;string&gt;</code><br />
+<code>#include &lt;map&gt;</code><br />
+</div>
+<p><a href="shader__program_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper around GLSL shader programs. <a href="classmingfx_1_1_shader_program.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/shader_program.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">shader_program.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="shader__program_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_SHADERPROGRAM_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_SHADERPROGRAM_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="opengl__headers_8h.html">opengl_headers.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture2d_8h.html">texture2d.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html"> 66</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> {</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700"> 69</a></span>&#160; <a class="code" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a>();</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4"> 71</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">~ShaderProgram</a>();</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// ---- These should be called during startup (e.g., in InitOpenGL()) ----</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5"> 80</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">AddVertexShaderFromFile</a>(<span class="keyword">const</span> std::string &amp;file);</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d"> 84</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">AddVertexShaderFromSource</a>(<span class="keyword">const</span> std::string &amp;code);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0"> 90</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">AddFragmentShaderFromFile</a>(<span class="keyword">const</span> std::string &amp;file);</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c"> 94</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">AddFragmentShaderFromSource</a>(<span class="keyword">const</span> std::string &amp;code);</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794"> 99</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">LinkProgram</a>();</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// ---- These should be called during rendering (e.g., in DrawUsingOpenGL()) ----</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e"> 110</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">UseProgram</a>();</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Set Uniform Variables in the Shader</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// MinGfx types</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a"> 118</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;p);</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25"> 122</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487"> 126</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a> &amp;p);</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5"> 130</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0"> 134</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60"> 138</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_color.html">Color</a> &amp;c);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// built-in types</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e"> 145</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840"> 149</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ui);</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c"> 153</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">SetUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> f);</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// built-in types (arrays)</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b"> 160</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">SetUniformArray1</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> *i, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de"> 164</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">SetUniformArray1</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *ui, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
+<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19"> 168</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">SetUniformArray1</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> *f, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623"> 173</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">SetUniformArray2</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> *i, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c"> 177</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">SetUniformArray2</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *ui, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
+<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657"> 181</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">SetUniformArray2</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> *f, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511"> 186</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">SetUniformArray3</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> *i, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa"> 190</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">SetUniformArray3</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *ui, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d"> 194</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">SetUniformArray3</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> *f, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba"> 199</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">SetUniformArray4</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> *i, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695"> 203</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">SetUniformArray4</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *ui, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1"> 207</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">SetUniformArray4</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> *f, <span class="keywordtype">int</span> count);</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// Set Textures (Sampler Variables in the Shader)</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2"> 215</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">BindTexture</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex);</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96"> 219</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">BindTexture</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex, <span class="keywordtype">int</span> texUnit);</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da"> 223</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">StopProgram</a>();</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
+<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe"> 226</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">initialized</a>();</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; GLuint vertexShader_;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; GLuint fragmentShader_;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; GLuint program_;</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; std::map&lt;std::string, int&gt; texBindings_;</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;};</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html"><div class="ttname"><a href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></div><div class="ttdoc">A wrapper around GLSL shader programs.</div><div class="ttdef"><b>Definition:</b> <a href="shader__program_8h_source.html#l00066">shader_program.h:66</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a0b3e6285354e007bf79a9ac1587f86f5"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Vector3 &amp;v)</div><div class="ttdoc">Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader varia...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a0c3d86656c464223dc615cbec0943700"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">mingfx::ShaderProgram::ShaderProgram</a></div><div class="ttdeci">ShaderProgram()</div><div class="ttdoc">Creates an empty ShaderProgram object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a2854ad947f74432edc0b730462b7f695"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">mingfx::ShaderProgram::SetUniformArray4</a></div><div class="ttdeci">void SetUniformArray4(const std::string &amp;name, unsigned int *ui, int count)</div><div class="ttdoc">Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the sh...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a2e4d6db720bf22038270cf8c51cdf7da"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">mingfx::ShaderProgram::StopProgram</a></div><div class="ttdeci">void StopProgram()</div><div class="ttdoc">Call this after rendering geometry to deactivate the shader.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a2eddd93e446ad2079d1c57676655ffbe"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">mingfx::ShaderProgram::initialized</a></div><div class="ttdeci">bool initialized()</div><div class="ttdoc">Returns true if the shader program has been successfully compiled and linked.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a461ba9368ad89fe1e9749b14b099027a"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Point2 &amp;p)</div><div class="ttdoc">Passes the x,y values of point p to the shader program and stores the result in the shader variable n...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a4e5a2659f66f29433b15748f36c61ea2"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">mingfx::ShaderProgram::BindTexture</a></div><div class="ttdeci">void BindTexture(const std::string &amp;name, const Texture2D &amp;tex)</div><div class="ttdoc">Binds a Texture2D to a sampler2D in the shader program. This version automatically selects an availab...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a51cd1c1d194b2f5c07e81d4f579f2f2b"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">mingfx::ShaderProgram::SetUniformArray1</a></div><div class="ttdeci">void SetUniformArray1(const std::string &amp;name, int *i, int count)</div><div class="ttdoc">Passes an array of count ints to the shader program and stores the result in the shader variable name...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a5c7891252d6b6c40982b56543820cd19"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">mingfx::ShaderProgram::SetUniformArray1</a></div><div class="ttdeci">void SetUniformArray1(const std::string &amp;name, float *f, int count)</div><div class="ttdoc">Passes an array of count floats to the shader program and stores the result in the shader variable na...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a63ac061271fad9338e922389d4a179e5"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">mingfx::ShaderProgram::AddVertexShaderFromFile</a></div><div class="ttdeci">bool AddVertexShaderFromFile(const std::string &amp;file)</div><div class="ttdoc">Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL())....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a680fa87cb30343bb56abc48a090e823c"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, float f)</div><div class="ttdoc">Passes the float to the shader program and stores the result in the shader variable named name,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a6fdca4b0ccaa8a0b2c8c68fd7645727c"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">mingfx::ShaderProgram::SetUniformArray2</a></div><div class="ttdeci">void SetUniformArray2(const std::string &amp;name, unsigned int *ui, int count)</div><div class="ttdoc">Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the sh...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a707d2cb51a54151959c6570d6bfc7840"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, unsigned int ui)</div><div class="ttdoc">Passes the unsigned int to the shader program and stores the result in the shader variable named name...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a766988eac957e9d810fdf2cbd2eafae0"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Matrix4 &amp;m)</div><div class="ttdoc">Passes the column-major 16 float values of matrix m to the shader program and stores the result in th...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a7a3063ec42798c076e1ab0c0e6411e9c"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">mingfx::ShaderProgram::AddFragmentShaderFromSource</a></div><div class="ttdeci">bool AddFragmentShaderFromSource(const std::string &amp;code)</div><div class="ttdoc">This loads and compiles a shader from a string. An error will be printed to stderr if there are any c...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a8c31de93b17f050baecb5323a69bdbfa"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">mingfx::ShaderProgram::SetUniformArray3</a></div><div class="ttdeci">void SetUniformArray3(const std::string &amp;name, unsigned int *ui, int count)</div><div class="ttdoc">Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the sh...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a93914cad6d8e751218c88010c51cf657"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">mingfx::ShaderProgram::SetUniformArray2</a></div><div class="ttdeci">void SetUniformArray2(const std::string &amp;name, float *f, int count)</div><div class="ttdoc">Passes an array of count 2D float arrays to the shader program and stores the result in the shader va...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a96da0dede354f2511084eeb25428edb4"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">mingfx::ShaderProgram::~ShaderProgram</a></div><div class="ttdeci">virtual ~ShaderProgram()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a9710cf4c72a7321b9a1ff1b86ae42da1"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">mingfx::ShaderProgram::SetUniformArray4</a></div><div class="ttdeci">void SetUniformArray4(const std::string &amp;name, float *f, int count)</div><div class="ttdoc">Passes an array of count 4D float arrays to the shader program and stores the result in the shader va...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a9bab504c74a1c4258258b91afe9a9623"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">mingfx::ShaderProgram::SetUniformArray2</a></div><div class="ttdeci">void SetUniformArray2(const std::string &amp;name, int *i, int count)</div><div class="ttdoc">Passes an array of count 2D int arrays to the shader program and stores the result in the shader vari...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a9ec2b53ba4bea7e48ef459530b8c6d60"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Color &amp;c)</div><div class="ttdoc">Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variab...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ab06ef4682f801fca080a8f67dc6345ba"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">mingfx::ShaderProgram::SetUniformArray4</a></div><div class="ttdeci">void SetUniformArray4(const std::string &amp;name, int *i, int count)</div><div class="ttdoc">Passes an array of count 4D int arrays to the shader program and stores the result in the shader vari...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ab547dadc25582bec157b39de29d1419e"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, int i)</div><div class="ttdoc">Passes the int to the shader program and stores the result in the shader variable named name,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ab5fed4904a59c6e83ebb43aebf4c043d"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">mingfx::ShaderProgram::AddVertexShaderFromSource</a></div><div class="ttdeci">bool AddVertexShaderFromSource(const std::string &amp;code)</div><div class="ttdoc">This loads and compiles a shader from a string. An error will be printed to stderr if there are any c...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_abba87d2b0baca89232dbd1d6331875de"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">mingfx::ShaderProgram::SetUniformArray1</a></div><div class="ttdeci">void SetUniformArray1(const std::string &amp;name, unsigned int *ui, int count)</div><div class="ttdoc">Passes an array of count unsigned ints to the shader program and stores the result in the shader vari...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ac582a2aa74a83095e0b8e359ce432511"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">mingfx::ShaderProgram::SetUniformArray3</a></div><div class="ttdeci">void SetUniformArray3(const std::string &amp;name, int *i, int count)</div><div class="ttdoc">Passes an array of count 3D int arrays to the shader program and stores the result in the shader vari...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ac59b3d0542ce45631876615eabf66487"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Point3 &amp;p)</div><div class="ttdoc">Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variab...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_acd94fc12beb85fe57aa80d3b825018b0"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">mingfx::ShaderProgram::AddFragmentShaderFromFile</a></div><div class="ttdeci">bool AddFragmentShaderFromFile(const std::string &amp;file)</div><div class="ttdoc">Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL())....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_ad14c3a9a4ee1eef39f933bc46260c794"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">mingfx::ShaderProgram::LinkProgram</a></div><div class="ttdeci">bool LinkProgram()</div><div class="ttdoc">Call this after adding vertex and fragment shaders in order to link them together to create the full ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_aef58537d81bdb9d88a5f1c56a2b98b25"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">mingfx::ShaderProgram::SetUniform</a></div><div class="ttdeci">void SetUniform(const std::string &amp;name, const Vector2 &amp;v)</div><div class="ttdoc">Passes the x,y values of vector v to the shader program and stores the result in the shader variable ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_af1c968f1c79f70e183c9d1239d3d205e"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">mingfx::ShaderProgram::UseProgram</a></div><div class="ttdeci">void UseProgram()</div><div class="ttdoc">Call this first to make the shader program active, then call SetUniform() to pass data from your C++ ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_af81d97c2843278eb40cdcdf8e5d54a96"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">mingfx::ShaderProgram::BindTexture</a></div><div class="ttdeci">void BindTexture(const std::string &amp;name, const Texture2D &amp;tex, int texUnit)</div><div class="ttdoc">Binds a Texture2D to a sampler2D in the shader program. This version allows you to specify the textur...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_afc84377716296a57299ebbc01884b65d"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">mingfx::ShaderProgram::SetUniformArray3</a></div><div class="ttdeci">void SetUniformArray3(const std::string &amp;name, float *f, int count)</div><div class="ttdoc">Passes an array of count 3D float arrays to the shader program and stores the result in the shader va...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></div><div class="ttdoc">A wrapper around a 2D texture that supports loading images from files or setting texture color data d...</div><div class="ttdef"><b>Definition:</b> <a href="texture2d_8h_source.html#l00042">texture2d.h:42</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="aopengl__headers_8h_html"><div class="ttname"><a href="opengl__headers_8h.html">opengl_headers.h</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="atexture2d_8h_html"><div class="ttname"><a href="texture2d_8h.html">texture2d.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dev/MinGfx/docs/html/splitbar.png b/dev/MinGfx/docs/html/splitbar.png
new file mode 100644
index 0000000..fbb5e55
--- /dev/null
+++ b/dev/MinGfx/docs/html/splitbar.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/stb_rect_pack.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">stb_rect_pack.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="stb__rect__pack_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__node.html">stbrp_node</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html">stbrp_context</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:af2f15dfcc6ad60b1df4f5902e2cc25ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce">STB_RECT_PACK_VERSION</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:af2f15dfcc6ad60b1df4f5902e2cc25ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b73f2d2521fb81afc056a823e3ca753"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a>&#160;&#160;&#160;extern</td></tr>
+<tr class="separator:a0b73f2d2521fb81afc056a823e3ca753"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a0455046a8d5457bbc4f3f3ec995c338f"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structstbrp__context.html">stbrp_context</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f">stbrp_context</a></td></tr>
+<tr class="separator:a0455046a8d5457bbc4f3f3ec995c338f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8f871c209d2e6218baf9c0e2a209ea1"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structstbrp__node.html">stbrp_node</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#ae8f871c209d2e6218baf9c0e2a209ea1">stbrp_node</a></td></tr>
+<tr class="separator:ae8f871c209d2e6218baf9c0e2a209ea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c4a99b31ea2207a0b2bbcbdab8f3840"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structstbrp__rect.html">stbrp_rect</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a7c4a99b31ea2207a0b2bbcbdab8f3840">stbrp_rect</a></td></tr>
+<tr class="separator:a7c4a99b31ea2207a0b2bbcbdab8f3840"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac2c2491b95dea6a298b7423dc762dfd9"><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a></td></tr>
+<tr class="separator:ac2c2491b95dea6a298b7423dc762dfd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a06fc87d81c62e9abb8790b6e5713c55b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">STBRP_HEURISTIC_Skyline_default</a> =0
+, <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">STBRP_HEURISTIC_Skyline_BL_sortHeight</a> = STBRP_HEURISTIC_Skyline_default
+, <a class="el" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">STBRP_HEURISTIC_Skyline_BF_sortHeight</a>
+ }</td></tr>
+<tr class="separator:a06fc87d81c62e9abb8790b6e5713c55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:af038ae1b98573f24736c9a3eed0478ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stbrp_pack_rects</a> (<a class="el" href="structstbrp__context.html">stbrp_context</a> *context, <a class="el" href="structstbrp__rect.html">stbrp_rect</a> *rects, int num_rects)</td></tr>
+<tr class="separator:af038ae1b98573f24736c9a3eed0478ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b32f5ad458f614f5d419ef26cef5b3c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stbrp_init_target</a> (<a class="el" href="structstbrp__context.html">stbrp_context</a> *context, int width, int height, <a class="el" href="structstbrp__node.html">stbrp_node</a> *nodes, int num_nodes)</td></tr>
+<tr class="separator:a8b32f5ad458f614f5d419ef26cef5b3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1babd70b223e571305fd9753a83a4fda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stbrp_setup_allow_out_of_mem</a> (<a class="el" href="structstbrp__context.html">stbrp_context</a> *context, int allow_out_of_mem)</td></tr>
+<tr class="separator:a1babd70b223e571305fd9753a83a4fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a8223866c146933da3e152066bf61a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stbrp_setup_heuristic</a> (<a class="el" href="structstbrp__context.html">stbrp_context</a> *context, int heuristic)</td></tr>
+<tr class="separator:a5a8223866c146933da3e152066bf61a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="af2f15dfcc6ad60b1df4f5902e2cc25ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af2f15dfcc6ad60b1df4f5902e2cc25ce">&#9670;&nbsp;</a></span>STB_RECT_PACK_VERSION</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define STB_RECT_PACK_VERSION&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00059">59</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a0b73f2d2521fb81afc056a823e3ca753"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b73f2d2521fb81afc056a823e3ca753">&#9670;&nbsp;</a></span>STBRP_DEF</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define STBRP_DEF&#160;&#160;&#160;extern</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00064">64</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="a0455046a8d5457bbc4f3f3ec995c338f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0455046a8d5457bbc4f3f3ec995c338f">&#9670;&nbsp;</a></span>stbrp_context</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structstbrp__context.html">stbrp_context</a> <a class="el" href="structstbrp__context.html">stbrp_context</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00001">1</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="ac2c2491b95dea6a298b7423dc762dfd9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac2c2491b95dea6a298b7423dc762dfd9">&#9670;&nbsp;</a></span>stbrp_coord</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned short <a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00078">78</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="ae8f871c209d2e6218baf9c0e2a209ea1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8f871c209d2e6218baf9c0e2a209ea1">&#9670;&nbsp;</a></span>stbrp_node</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structstbrp__node.html">stbrp_node</a> <a class="el" href="structstbrp__node.html">stbrp_node</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00001">1</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a7c4a99b31ea2207a0b2bbcbdab8f3840"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7c4a99b31ea2207a0b2bbcbdab8f3840">&#9670;&nbsp;</a></span>stbrp_rect</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structstbrp__rect.html">stbrp_rect</a> <a class="el" href="structstbrp__rect.html">stbrp_rect</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00001">1</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a06fc87d81c62e9abb8790b6e5713c55b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a06fc87d81c62e9abb8790b6e5713c55b">&#9670;&nbsp;</a></span>anonymous enum</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">anonymous enum</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525"></a>STBRP_HEURISTIC_Skyline_default&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a"></a>STBRP_HEURISTIC_Skyline_BL_sortHeight&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c"></a>STBRP_HEURISTIC_Skyline_BF_sortHeight&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00153">153</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a8b32f5ad458f614f5d419ef26cef5b3c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b32f5ad458f614f5d419ef26cef5b3c">&#9670;&nbsp;</a></span>stbrp_init_target()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void stbrp_init_target </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbrp__context.html">stbrp_context</a> *&#160;</td>
+ <td class="paramname"><em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structstbrp__node.html">stbrp_node</a> *&#160;</td>
+ <td class="paramname"><em>nodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_nodes</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="af038ae1b98573f24736c9a3eed0478ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af038ae1b98573f24736c9a3eed0478ba">&#9670;&nbsp;</a></span>stbrp_pack_rects()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> int stbrp_pack_rects </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbrp__context.html">stbrp_context</a> *&#160;</td>
+ <td class="paramname"><em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structstbrp__rect.html">stbrp_rect</a> *&#160;</td>
+ <td class="paramname"><em>rects</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>num_rects</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1babd70b223e571305fd9753a83a4fda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1babd70b223e571305fd9753a83a4fda">&#9670;&nbsp;</a></span>stbrp_setup_allow_out_of_mem()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void stbrp_setup_allow_out_of_mem </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbrp__context.html">stbrp_context</a> *&#160;</td>
+ <td class="paramname"><em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>allow_out_of_mem</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5a8223866c146933da3e152066bf61a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a8223866c146933da3e152066bf61a1">&#9670;&nbsp;</a></span>stbrp_setup_heuristic()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> void stbrp_setup_heuristic </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbrp__context.html">stbrp_context</a> *&#160;</td>
+ <td class="paramname"><em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>heuristic</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/stb_rect_pack.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">stb_rect_pack.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="stb__rect__pack_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f"> 1</a></span>&#160;<span class="comment">// stb_rect_pack.h - v0.11 - public domain - rectangle packing</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Sean Barrett 2014</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Useful for e.g. packing rectangular textures into an atlas.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Does not do rotation.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// Not necessarily the awesomest packing method, but better than</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// the totally naive one in stb_truetype (which is primarily what</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// this is meant to replace).</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// Has only had a few tests run, may have issues.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// More docs to come.</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// No memory allocations; uses qsort() and assert() from stdlib.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Can override those by defining STBRP_SORT and STBRP_ASSERT.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// This library currently uses the Skyline Bottom-Left algorithm.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// Please note: better rectangle packers are welcome! Please</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// implement them to the same API, but with a different init</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// function.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// Credits</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Library</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// Sean Barrett</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// Minor features</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// Martins Mozeiko</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// github:IntellectualKitty</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// </span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// Bugfixes / warning fixes</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// Jeremy Jaussaud</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">// Version history:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// 0.11 (2017-03-03) return packing success/fail result</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// 0.10 (2016-10-25) remove cast-away-const to avoid warnings</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// 0.09 (2016-08-27) fix compiler warnings</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// 0.05: added STBRP_ASSERT to allow replacing assert</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// 0.04: fixed minor bug in STBRP_LARGE_RECTS support</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// 0.01: initial release</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// LICENSE</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// See end of file for license information.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// INCLUDE SECTION</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifndef STB_INCLUDE_STB_RECT_PACK_H</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#define STB_INCLUDE_STB_RECT_PACK_H</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce"> 59</a></span>&#160;<span class="preprocessor">#define STB_RECT_PACK_VERSION 1</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef STBRP_STATIC</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#define STBRP_DEF static</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753"> 64</a></span>&#160;<span class="preprocessor">#define STBRP_DEF extern</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstbrp__context.html">stbrp_context</a> <a class="code" href="structstbrp__context.html">stbrp_context</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstbrp__node.html">stbrp_node</a> <a class="code" href="structstbrp__node.html">stbrp_node</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstbrp__rect.html">stbrp_rect</a> <a class="code" href="structstbrp__rect.html">stbrp_rect</a>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#ifdef STBRP_LARGE_RECTS</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9"> 78</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba"> 81</a></span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stbrp_pack_rects</a> (<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *rects, <span class="keywordtype">int</span> num_rects);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// Assign packed locations to rectangles. The rectangles are of type</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// &#39;stbrp_rect&#39; defined below, stored in the array &#39;rects&#39;, and there</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">// are &#39;num_rects&#39; many of them.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">// Rectangles which are successfully packed have the &#39;was_packed&#39; flag</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">// set to a non-zero value and &#39;x&#39; and &#39;y&#39; store the minimum location</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">// on each axis (i.e. bottom-left in cartesian coordinates, top-left</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// if you imagine y increasing downwards). Rectangles which do not fit</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// have the &#39;was_packed&#39; flag set to 0.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// You should not try to access the &#39;rects&#39; array from another thread</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">// while this function is running, as the function temporarily reorders</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">// the array while it executes.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">// To pack into another rectangle, you need to call stbrp_init_target</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// again. To continue packing into the same rectangle, you can call</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// this function again. Calling this multiple times with multiple rect</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// arrays will probably produce worse packing results than calling it</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">// a single time with the full rectangle array, but the option is</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">// available.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">// The function returns 1 if all of the rectangles were successfully</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">// packed and 0 otherwise.</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structstbrp__rect.html"> 106</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structstbrp__rect.html">stbrp_rect</a></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// reserved for your use:</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a"> 109</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">id</a>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// input:</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398"> 112</a></span>&#160; <a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> <a class="code" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a>, <a class="code" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a>;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// output:</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18"> 115</a></span>&#160; <a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> <a class="code" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a>, <a class="code" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a>;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49"> 116</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a>; <span class="comment">// non-zero if valid packing</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}; <span class="comment">// 16 bytes, nominally</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c"> 121</a></span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stbrp_init_target</a> (<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="structstbrp__node.html">stbrp_node</a> *nodes, <span class="keywordtype">int</span> num_nodes);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">// Initialize a rectangle packer to:</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// pack a rectangle that is &#39;width&#39; by &#39;height&#39; in dimensions</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">// using temporary storage provided by the array &#39;nodes&#39;, which is &#39;num_nodes&#39; long</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">// You must call this function every time you start packing into a new target.</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">// There is no &quot;shutdown&quot; function. The &#39;nodes&#39; memory must stay valid for</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">// the following stbrp_pack_rects() call (or calls), but can be freed after</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// the call (or calls) finish.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// Note: to guarantee best results, either:</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">// 1. make sure &#39;num_nodes&#39; &gt;= &#39;width&#39;</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// or 2. call stbrp_allow_out_of_mem() defined below with &#39;allow_out_of_mem = 1&#39;</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">// If you don&#39;t do either of the above things, widths will be quantized to multiples</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">// of small integers to guarantee the algorithm doesn&#39;t run out of temporary storage.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// If you do #2, then the non-quantized algorithm will be used, but the algorithm</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">// may run out of temporary storage and be unable to pack some rectangles.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda"> 142</a></span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stbrp_setup_allow_out_of_mem</a> (<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> allow_out_of_mem);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">// Optionally call this function after init but before doing any packing to</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">// change the handling of the out-of-temp-memory scenario, described above.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">// If you call init again, this will be reset to the default (false).</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1"> 148</a></span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stbrp_setup_heuristic</a> (<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> heuristic);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// Optionally select which packing heuristic the library should use. Different</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">// heuristics will produce better/worse results for different data sets.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// If you call init again, this will be reset to the default.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">enum</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;{</div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525"> 155</a></span>&#160; <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">STBRP_HEURISTIC_Skyline_default</a>=0,</div>
+<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a"> 156</a></span>&#160; <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">STBRP_HEURISTIC_Skyline_BL_sortHeight</a> = <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">STBRP_HEURISTIC_Skyline_default</a>,</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">STBRP_HEURISTIC_Skyline_BF_sortHeight</a></div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c"> 158</a></span>&#160;};</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// the details of the following structures don&#39;t matter to you, but they must</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// be visible so you can handle the memory allocations for them</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="structstbrp__node.html"> 166</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structstbrp__node.html">stbrp_node</a></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div>
+<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea"> 168</a></span>&#160; <a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> <a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>,<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a>;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4"> 169</a></span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;};</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="structstbrp__context.html"> 172</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structstbrp__context.html">stbrp_context</a></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2"> 174</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7"> 175</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">height</a>;</div>
+<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481"> 176</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d"> 177</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">init_mode</a>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a"> 178</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58"> 179</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a>;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120"> 180</a></span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839"> 181</a></span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a>;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624"> 182</a></span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> <a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[2]; <span class="comment">// we allocate two extra nodes so optimal user-node-count is &#39;width&#39; not &#39;width+2&#39;</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;};</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">// IMPLEMENTATION SECTION</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#ifdef STB_RECT_PACK_IMPLEMENTATION</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#ifndef STBRP_SORT</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#define STBRP_SORT qsort</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#ifndef STBRP_ASSERT</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor">#define STBRP_ASSERT assert</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor">#define STBRP__NOTUSED(v) (void)(v)</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor">#define STBRP__NOTUSED(v) (void)sizeof(v)</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword">enum</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; STBRP__INIT_skyline = 1</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;};</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stbrp_setup_heuristic</a>(<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> heuristic)</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">switch</span> (context-&gt;<a class="code" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">init_mode</a>) {</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> STBRP__INIT_skyline:</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; STBRP_ASSERT(heuristic == <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">STBRP_HEURISTIC_Skyline_BL_sortHeight</a> || heuristic == <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">STBRP_HEURISTIC_Skyline_BF_sortHeight</a>);</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a> = heuristic;</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; STBRP_ASSERT(0);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stbrp_setup_allow_out_of_mem</a>(<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> allow_out_of_mem)</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (allow_out_of_mem)</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// if it&#39;s ok to run out of memory, then don&#39;t bother aligning them;</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// this gives better packing, but may fail due to OOM (even though</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// the rectangles easily fit). @TODO a smarter approach would be to only</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// quantize once we&#39;ve hit OOM, then we could get rid of this parameter.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a> = 1;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// if it&#39;s not ok to run out of memory, then quantize the widths</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// so that num_nodes is always enough nodes.</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// I.e. num_nodes * align &gt;= width</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// align &gt;= width / num_nodes</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// align = ceil(width/num_nodes)</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; </div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a> = (context-&gt;<a class="code" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a> + context-&gt;<a class="code" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a>-1) / context-&gt;<a class="code" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a>;</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stbrp_init_target</a>(<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="structstbrp__node.html">stbrp_node</a> *nodes, <span class="keywordtype">int</span> num_nodes)</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor">#ifndef STBRP_LARGE_RECTS</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; STBRP_ASSERT(width &lt;= 0xffff &amp;&amp; height &lt;= 0xffff);</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num_nodes-1; ++i)</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; nodes[i].next = &amp;nodes[i+1];</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; nodes[i].<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = NULL;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">init_mode</a> = STBRP__INIT_skyline;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a> = <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">STBRP_HEURISTIC_Skyline_default</a>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a> = &amp;nodes[0];</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a> = &amp;context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[0];</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a> = width;</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">height</a> = height;</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a> = num_nodes;</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stbrp_setup_allow_out_of_mem</a>(context, 0);</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// node 0 is the full width, node 1 is the sentinel (lets us not store width explicitly)</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[0].<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> = 0;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[0].<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> = 0;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[0].<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = &amp;context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[1];</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[1].<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) width;</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor">#ifdef STBRP_LARGE_RECTS</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[1].<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> = (1&lt;&lt;30);</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[1].<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> = 65535;</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a>[1].<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = NULL;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">// find minimum y position if it starts at x1</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbrp__skyline_find_min_y(<a class="code" href="structstbrp__context.html">stbrp_context</a> *c, <a class="code" href="structstbrp__node.html">stbrp_node</a> *first, <span class="keywordtype">int</span> x0, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> *pwaste)</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *node = first;</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">int</span> x1 = x0 + width;</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordtype">int</span> min_y, visited_width, waste_area;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; STBRP__NOTUSED(c);</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; STBRP_ASSERT(first-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= x0);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"> #if 0</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// skip in case we&#39;re past the node</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">while</span> (node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= x0)</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; ++node;</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor"> #else</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; STBRP_ASSERT(node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &gt; x0); <span class="comment">// we ended up handling this in the caller for efficiency</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; STBRP_ASSERT(node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= x0);</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; </div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; min_y = 0;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; waste_area = 0;</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; visited_width = 0;</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">while</span> (node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; x1) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> &gt; min_y) {</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// raise min_y higher.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// we&#39;ve accounted for all waste up to min_y,</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// but we&#39;ll now add more waste for everything we&#39;ve visted</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; waste_area += visited_width * (node-&gt;<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> - min_y);</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; min_y = node-&gt;<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a>;</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// the first time through, visited_width might be reduced</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; x0)</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; visited_width += node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> - x0;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; visited_width += node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> - node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>;</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// add waste area</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">int</span> under_width = node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> - node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (under_width + visited_width &gt; width)</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; under_width = width - visited_width;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; waste_area += under_width * (min_y - node-&gt;<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a>);</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; visited_width += under_width;</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; node = node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; *pwaste = waste_area;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> min_y;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;{</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">int</span> x,y;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> **prev_link;</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;} stbrp__findresult;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword">static</span> stbrp__findresult stbrp__skyline_find_best_pos(<a class="code" href="structstbrp__context.html">stbrp_context</a> *c, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;{</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">int</span> best_waste = (1&lt;&lt;30), best_x, best_y = (1 &lt;&lt; 30);</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; stbrp__findresult fr;</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> **prev, *node, *tail, **best = NULL;</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">// align to multiple of c-&gt;align</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; width = (width + c-&gt;<a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a> - 1);</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; width -= width % c-&gt;<a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; STBRP_ASSERT(width % c-&gt;<a class="code" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a> == 0);</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; node = c-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; prev = &amp;c-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">while</span> (node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> + width &lt;= c-&gt;width) {</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">int</span> y,waste;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; y = stbrp__skyline_find_min_y(c, node, node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>, width, &amp;waste);</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (c-&gt;<a class="code" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a> == <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">STBRP_HEURISTIC_Skyline_BL_sortHeight</a>) { <span class="comment">// actually just want to test BL</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// bottom left</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span> (y &lt; best_y) {</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; best_y = y;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; best = prev;</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// best-fit</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (y + height &lt;= c-&gt;height) {</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// can only use it if it first vertically</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (y &lt; best_y || (y == best_y &amp;&amp; waste &lt; best_waste)) {</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; best_y = y;</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; best_waste = waste;</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; best = prev;</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; prev = &amp;node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; node = node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; </div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; best_x = (best == NULL) ? 0 : (*best)-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>;</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="comment">// if doing best-fit (BF), we also have to try aligning right edge to each node position</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// e.g, if fitting</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// ____________________</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// |____________________|</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">// into</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="comment">// | |</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// | ____________|</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// |____________|</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// then right-aligned reduces waste, but bottom-left BL is always chooses left-aligned</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// This makes BF take about 2x the time</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; if (c-&gt;<a class="code" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a> == <a class="code" href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">STBRP_HEURISTIC_Skyline_BF_sortHeight</a>) {</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; tail = c-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; node = c-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; prev = &amp;c-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">// find first node that&#39;s admissible</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">while</span> (tail-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; width)</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; tail = tail-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">while</span> (tail) {</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">int</span> xpos = tail-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> - width;</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">int</span> y,waste;</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; STBRP_ASSERT(xpos &gt;= 0);</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// find the left position that matches this</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">while</span> (node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= xpos) {</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; prev = &amp;node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; node = node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; STBRP_ASSERT(node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &gt; xpos &amp;&amp; node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= xpos);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; y = stbrp__skyline_find_min_y(c, node, xpos, width, &amp;waste);</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (y + height &lt; c-&gt;height) {</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (y &lt;= best_y) {</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (y &lt; best_y || waste &lt; best_waste || (waste==best_waste &amp;&amp; xpos &lt; best_x)) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; best_x = xpos;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; STBRP_ASSERT(y &lt;= best_y);</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; best_y = y;</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; best_waste = waste;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; best = prev;</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; tail = tail-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; } </div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; fr.prev_link = best;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; fr.<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> = best_x;</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; fr.y = best_y;</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> fr;</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;}</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="keyword">static</span> stbrp__findresult stbrp__skyline_pack_rectangle(<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// find best position according to heuristic</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height);</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *node, *cur;</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; </div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// bail if:</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// 1. it failed</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// 2. the best node doesn&#39;t fit (we don&#39;t always check this)</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">// 3. we&#39;re out of memory</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (res.prev_link == NULL || res.y + height &gt; context-&gt;<a class="code" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">height</a> || context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a> == NULL) {</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; res.prev_link = NULL;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// on success, create new node</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; node = context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a>;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; node-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) res.x;</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; node-&gt;<a class="code" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a> = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) (res.y + height);</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a> = node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; </div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// insert the new node into the right starting point, and</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// let &#39;cur&#39; point to the remaining nodes needing to be</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// stiched back in</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; cur = *res.prev_link;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (cur-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; res.x) {</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">// preserve the existing one, so start testing with the next one</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *next = cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = node;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; cur = next;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; *res.prev_link = node;</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// from here, traverse cur and free the nodes, until we get to one</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// that shouldn&#39;t be freed</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">while</span> (cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> &amp;&amp; cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt;= res.x + width) {</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *next = cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="comment">// move the current node to the free list</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a>;</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a> = cur;</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; cur = next;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// stitch the list back in</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; node-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> = cur;</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (cur-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; res.x + width)</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; cur-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) (res.x + width);</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; </div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; cur = context-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span> (cur-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; context-&gt;<a class="code" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a>) {</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; STBRP_ASSERT(cur-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a> &lt; cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>-&gt;<a class="code" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a>);</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; cur = cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; STBRP_ASSERT(cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a> == NULL);</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; </div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="structstbrp__node.html">stbrp_node</a> *L1 = NULL, *L2 = NULL;</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">int</span> count=0;</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; cur = context-&gt;<a class="code" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a>;</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">while</span> (cur) {</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; L1 = cur;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; cur = cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; ++count;</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; cur = context-&gt;<a class="code" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">while</span> (cur) {</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; L2 = cur;</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; cur = cur-&gt;<a class="code" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a>;</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ++count;</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; STBRP_ASSERT(count == context-&gt;<a class="code" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a>+2);</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; </div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> rect_height_compare(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b)</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *p = (<span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *) a;</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *q = (<span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *) b;</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a> &gt; q-&gt;<a class="code" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a>)</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a> &lt; q-&gt;<a class="code" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a>)</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> (p-&gt;<a class="code" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a> &gt; q-&gt;<a class="code" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a>) ? -1 : (p-&gt;<a class="code" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a> &lt; q-&gt;<a class="code" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a>);</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; </div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> rect_original_order(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b)</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;{</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *p = (<span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *) a;</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *q = (<span class="keyword">const</span> <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *) b;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> (p-&gt;<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a> &lt; q-&gt;<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a>) ? -1 : (p-&gt;<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a> &gt; q-&gt;<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a>);</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; </div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor">#ifdef STBRP_LARGE_RECTS</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor">#define STBRP__MAXVAL 0xffffffff</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor">#define STBRP__MAXVAL 0xffff</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; </div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<a class="code" href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stbrp_pack_rects</a>(<a class="code" href="structstbrp__context.html">stbrp_context</a> *context, <a class="code" href="structstbrp__rect.html">stbrp_rect</a> *rects, <span class="keywordtype">int</span> num_rects)</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;{</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordtype">int</span> i, all_rects_packed = 1;</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">// we use the &#39;was_packed&#39; field internally to allow sorting/unsorting</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num_rects; ++i) {</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; rects[i].<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a> = i;</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor"> #ifndef STBRP_LARGE_RECTS</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; STBRP_ASSERT(rects[i].w &lt;= 0xffff &amp;&amp; rects[i].h &lt;= 0xffff);</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; </div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="comment">// sort according to heuristic</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; STBRP_SORT(rects, num_rects, <span class="keyword">sizeof</span>(rects[0]), rect_height_compare);</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num_rects; ++i) {</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (rects[i].w == 0 || rects[i].h == 0) {</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; rects[i].<a class="code" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a> = rects[i].<a class="code" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a> = 0; <span class="comment">// empty rect needs no space</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (fr.prev_link) {</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; rects[i].<a class="code" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a> = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) fr.x;</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; rects[i].y = (<a class="code" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>) fr.y;</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; rects[i].<a class="code" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a> = rects[i].<a class="code" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a> = STBRP__MAXVAL;</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">// unsort</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; STBRP_SORT(rects, num_rects, <span class="keyword">sizeof</span>(rects[0]), rect_original_order);</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; </div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// set was_packed flags and all_rects_packed status</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num_rects; ++i) {</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; rects[i].<a class="code" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a> = !(rects[i].<a class="code" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a> == STBRP__MAXVAL &amp;&amp; rects[i].<a class="code" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a> == STBRP__MAXVAL);</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span> (!rects[i].was_packed)</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; all_rects_packed = 0;</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; </div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// return the all_rects_packed status</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> all_rects_packed;</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment">This software is available under 2 licenses -- choose whichever you prefer.</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment">ALTERNATIVE A - MIT License</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment">Copyright (c) 2017 Sean Barrett</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment">Permission is hereby granted, free of charge, to any person obtaining a copy of </span></div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment">this software and associated documentation files (the &quot;Software&quot;), to deal in </span></div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment">the Software without restriction, including without limitation the rights to </span></div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment">use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies </span></div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment">of the Software, and to permit persons to whom the Software is furnished to do </span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment">so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment">The above copyright notice and this permission notice shall be included in all </span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment">copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR </span></div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, </span></div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE </span></div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER </span></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, </span></div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE </span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment">SOFTWARE.</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment">ALTERNATIVE B - Public Domain (www.unlicense.org)</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment">This is free and unencumbered software released into the public domain.</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment">Anyone is free to copy, modify, publish, use, compile, sell, or distribute this </span></div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment">software, either in source code form or as a compiled binary, for any purpose, </span></div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment">commercial or non-commercial, and by any means.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment">In jurisdictions that recognize copyright laws, the author or authors of this </span></div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment">software dedicate any and all copyright interest in the software to the public </span></div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment">domain. We make this dedication for the benefit of the public at large and to </span></div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment">the detriment of our heirs and successors. We intend this dedication to be an </span></div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment">overt act of relinquishment in perpetuity of all present and future rights to </span></div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment">this software under copyright law.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR </span></div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, </span></div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE </span></div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment">AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN </span></div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment">ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION </span></div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment">WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment">*/</span></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c"><div class="ttname"><a href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c">STBRP_HEURISTIC_Skyline_BF_sortHeight</a></div><div class="ttdeci">@ STBRP_HEURISTIC_Skyline_BF_sortHeight</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00158">stb_rect_pack.h:157</a></div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a"><div class="ttname"><a href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a">STBRP_HEURISTIC_Skyline_BL_sortHeight</a></div><div class="ttdeci">@ STBRP_HEURISTIC_Skyline_BL_sortHeight</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00156">stb_rect_pack.h:156</a></div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525"><div class="ttname"><a href="stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525">STBRP_HEURISTIC_Skyline_default</a></div><div class="ttdeci">@ STBRP_HEURISTIC_Skyline_default</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00155">stb_rect_pack.h:155</a></div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a0b73f2d2521fb81afc056a823e3ca753"><div class="ttname"><a href="stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753">STBRP_DEF</a></div><div class="ttdeci">#define STBRP_DEF</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00064">stb_rect_pack.h:64</a></div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a1babd70b223e571305fd9753a83a4fda"><div class="ttname"><a href="stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda">stbrp_setup_allow_out_of_mem</a></div><div class="ttdeci">STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)</div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a5a8223866c146933da3e152066bf61a1"><div class="ttname"><a href="stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1">stbrp_setup_heuristic</a></div><div class="ttdeci">STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)</div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_a8b32f5ad458f614f5d419ef26cef5b3c"><div class="ttname"><a href="stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c">stbrp_init_target</a></div><div class="ttdeci">STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)</div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_ac2c2491b95dea6a298b7423dc762dfd9"><div class="ttname"><a href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a></div><div class="ttdeci">unsigned short stbrp_coord</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00078">stb_rect_pack.h:78</a></div></div>
+<div class="ttc" id="astb__rect__pack_8h_html_af038ae1b98573f24736c9a3eed0478ba"><div class="ttname"><a href="stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba">stbrp_pack_rects</a></div><div class="ttdeci">STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)</div></div>
+<div class="ttc" id="astructstbrp__context_html"><div class="ttname"><a href="structstbrp__context.html">stbrp_context</a></div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00172">stb_rect_pack.h:173</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a007509feee322404083034e4c2d3dc5d"><div class="ttname"><a href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">stbrp_context::init_mode</a></div><div class="ttdeci">int init_mode</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00177">stb_rect_pack.h:177</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a0b80e1fbdac125427526f3500d4e7624"><div class="ttname"><a href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">stbrp_context::extra</a></div><div class="ttdeci">stbrp_node extra[2]</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00182">stb_rect_pack.h:182</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a13277239636803aff28f00b0a0376120"><div class="ttname"><a href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">stbrp_context::active_head</a></div><div class="ttdeci">stbrp_node * active_head</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00180">stb_rect_pack.h:180</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a1336ae32373663847866cc65904c2839"><div class="ttname"><a href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">stbrp_context::free_head</a></div><div class="ttdeci">stbrp_node * free_head</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00181">stb_rect_pack.h:181</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a4b61a7f94e50a54c075e2a8f99f6503a"><div class="ttname"><a href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">stbrp_context::heuristic</a></div><div class="ttdeci">int heuristic</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00178">stb_rect_pack.h:178</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_a70cfcb2044ce8397cc440d28b30c09b2"><div class="ttname"><a href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">stbrp_context::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00174">stb_rect_pack.h:174</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_ae36053e2001a725aec2b5756dc990481"><div class="ttname"><a href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">stbrp_context::align</a></div><div class="ttdeci">int align</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00176">stb_rect_pack.h:176</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_af3715a6f3faecfb4fac8f6ccbb71f9c7"><div class="ttname"><a href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">stbrp_context::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00175">stb_rect_pack.h:175</a></div></div>
+<div class="ttc" id="astructstbrp__context_html_afa8105d4ef6d3e0ae5aaf8e1ed4b2c58"><div class="ttname"><a href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">stbrp_context::num_nodes</a></div><div class="ttdeci">int num_nodes</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00179">stb_rect_pack.h:179</a></div></div>
+<div class="ttc" id="astructstbrp__node_html"><div class="ttname"><a href="structstbrp__node.html">stbrp_node</a></div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00166">stb_rect_pack.h:167</a></div></div>
+<div class="ttc" id="astructstbrp__node_html_a45ab31a88025db27d08040d715b129ea"><div class="ttname"><a href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">stbrp_node::x</a></div><div class="ttdeci">stbrp_coord x</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00168">stb_rect_pack.h:168</a></div></div>
+<div class="ttc" id="astructstbrp__node_html_a933cb2dd6cddc4fcaf10e3b40634bed4"><div class="ttname"><a href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">stbrp_node::next</a></div><div class="ttdeci">stbrp_node * next</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00169">stb_rect_pack.h:169</a></div></div>
+<div class="ttc" id="astructstbrp__node_html_ad0415cb102a4f37aa45073653307e67e"><div class="ttname"><a href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">stbrp_node::y</a></div><div class="ttdeci">stbrp_coord y</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00168">stb_rect_pack.h:168</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html"><div class="ttname"><a href="structstbrp__rect.html">stbrp_rect</a></div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00106">stb_rect_pack.h:107</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_a248d43f1eb979c1e7b92ba6df431dec5"><div class="ttname"><a href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">stbrp_rect::w</a></div><div class="ttdeci">stbrp_coord w</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00112">stb_rect_pack.h:112</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_a4cc623a3e29f0bc0d3375f6645c84d18"><div class="ttname"><a href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">stbrp_rect::x</a></div><div class="ttdeci">stbrp_coord x</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00115">stb_rect_pack.h:115</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_a74ba347755ce17f2f8a2ea66c612af49"><div class="ttname"><a href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">stbrp_rect::was_packed</a></div><div class="ttdeci">int was_packed</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00116">stb_rect_pack.h:116</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_a92da8626bc99df041c0c3bfd01c25f7a"><div class="ttname"><a href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">stbrp_rect::id</a></div><div class="ttdeci">int id</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00109">stb_rect_pack.h:109</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_ae3034c1fbf86043b568f5a4dddf946fa"><div class="ttname"><a href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">stbrp_rect::y</a></div><div class="ttdeci">stbrp_coord y</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00115">stb_rect_pack.h:115</a></div></div>
+<div class="ttc" id="astructstbrp__rect_html_af68de2dadc7972b7c089d5e0c0558398"><div class="ttname"><a href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">stbrp_rect::h</a></div><div class="ttdeci">stbrp_coord h</div><div class="ttdef"><b>Definition:</b> <a href="stb__rect__pack_8h_source.html#l00112">stb_rect_pack.h:112</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">stbrp_context Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structstbrp__context.html">stbrp_context</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">height</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">init_mode</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a></td><td class="entry"><a class="el" href="structstbrp__context.html">stbrp_context</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: stbrp_context Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structstbrp__context-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">stbrp_context Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00172">172</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a70cfcb2044ce8397cc440d28b30c09b2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2">width</a></td></tr>
+<tr class="separator:a70cfcb2044ce8397cc440d28b30c09b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3715a6f3faecfb4fac8f6ccbb71f9c7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7">height</a></td></tr>
+<tr class="separator:af3715a6f3faecfb4fac8f6ccbb71f9c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae36053e2001a725aec2b5756dc990481"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#ae36053e2001a725aec2b5756dc990481">align</a></td></tr>
+<tr class="separator:ae36053e2001a725aec2b5756dc990481"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a007509feee322404083034e4c2d3dc5d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a007509feee322404083034e4c2d3dc5d">init_mode</a></td></tr>
+<tr class="separator:a007509feee322404083034e4c2d3dc5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b61a7f94e50a54c075e2a8f99f6503a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a">heuristic</a></td></tr>
+<tr class="separator:a4b61a7f94e50a54c075e2a8f99f6503a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afa8105d4ef6d3e0ae5aaf8e1ed4b2c58"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">num_nodes</a></td></tr>
+<tr class="separator:afa8105d4ef6d3e0ae5aaf8e1ed4b2c58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a13277239636803aff28f00b0a0376120"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstbrp__node.html">stbrp_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a13277239636803aff28f00b0a0376120">active_head</a></td></tr>
+<tr class="separator:a13277239636803aff28f00b0a0376120"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1336ae32373663847866cc65904c2839"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstbrp__node.html">stbrp_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a1336ae32373663847866cc65904c2839">free_head</a></td></tr>
+<tr class="separator:a1336ae32373663847866cc65904c2839"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b80e1fbdac125427526f3500d4e7624"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstbrp__node.html">stbrp_node</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624">extra</a> [2]</td></tr>
+<tr class="separator:a0b80e1fbdac125427526f3500d4e7624"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a13277239636803aff28f00b0a0376120"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a13277239636803aff28f00b0a0376120">&#9670;&nbsp;</a></span>active_head</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structstbrp__node.html">stbrp_node</a>* stbrp_context::active_head</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00180">180</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="ae36053e2001a725aec2b5756dc990481"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae36053e2001a725aec2b5756dc990481">&#9670;&nbsp;</a></span>align</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::align</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00176">176</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a0b80e1fbdac125427526f3500d4e7624"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b80e1fbdac125427526f3500d4e7624">&#9670;&nbsp;</a></span>extra</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structstbrp__node.html">stbrp_node</a> stbrp_context::extra[2]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00182">182</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a1336ae32373663847866cc65904c2839"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1336ae32373663847866cc65904c2839">&#9670;&nbsp;</a></span>free_head</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structstbrp__node.html">stbrp_node</a>* stbrp_context::free_head</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00181">181</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="af3715a6f3faecfb4fac8f6ccbb71f9c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af3715a6f3faecfb4fac8f6ccbb71f9c7">&#9670;&nbsp;</a></span>height</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::height</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00175">175</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a4b61a7f94e50a54c075e2a8f99f6503a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4b61a7f94e50a54c075e2a8f99f6503a">&#9670;&nbsp;</a></span>heuristic</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::heuristic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00178">178</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a007509feee322404083034e4c2d3dc5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a007509feee322404083034e4c2d3dc5d">&#9670;&nbsp;</a></span>init_mode</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::init_mode</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00177">177</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="afa8105d4ef6d3e0ae5aaf8e1ed4b2c58"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58">&#9670;&nbsp;</a></span>num_nodes</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::num_nodes</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00179">179</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a70cfcb2044ce8397cc440d28b30c09b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a70cfcb2044ce8397cc440d28b30c09b2">&#9670;&nbsp;</a></span>width</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_context::width</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00174">174</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">stbrp_node Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structstbrp__node.html">stbrp_node</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a></td><td class="entry"><a class="el" href="structstbrp__node.html">stbrp_node</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a></td><td class="entry"><a class="el" href="structstbrp__node.html">stbrp_node</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a></td><td class="entry"><a class="el" href="structstbrp__node.html">stbrp_node</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: stbrp_node Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structstbrp__node-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">stbrp_node Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00166">166</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a45ab31a88025db27d08040d715b129ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__node.html#a45ab31a88025db27d08040d715b129ea">x</a></td></tr>
+<tr class="separator:a45ab31a88025db27d08040d715b129ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0415cb102a4f37aa45073653307e67e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e">y</a></td></tr>
+<tr class="separator:ad0415cb102a4f37aa45073653307e67e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a933cb2dd6cddc4fcaf10e3b40634bed4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstbrp__node.html">stbrp_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4">next</a></td></tr>
+<tr class="separator:a933cb2dd6cddc4fcaf10e3b40634bed4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a933cb2dd6cddc4fcaf10e3b40634bed4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a933cb2dd6cddc4fcaf10e3b40634bed4">&#9670;&nbsp;</a></span>next</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structstbrp__node.html">stbrp_node</a>* stbrp_node::next</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00169">169</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a45ab31a88025db27d08040d715b129ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45ab31a88025db27d08040d715b129ea">&#9670;&nbsp;</a></span>x</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_node::x</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00168">168</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="ad0415cb102a4f37aa45073653307e67e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad0415cb102a4f37aa45073653307e67e">&#9670;&nbsp;</a></span>y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_node::y</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00168">168</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">stbrp_rect Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structstbrp__rect.html">stbrp_rect</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">id</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a></td><td class="entry"><a class="el" href="structstbrp__rect.html">stbrp_rect</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: stbrp_rect Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structstbrp__rect-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">stbrp_rect Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00106">106</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a92da8626bc99df041c0c3bfd01c25f7a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a">id</a></td></tr>
+<tr class="separator:a92da8626bc99df041c0c3bfd01c25f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a248d43f1eb979c1e7b92ba6df431dec5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5">w</a></td></tr>
+<tr class="separator:a248d43f1eb979c1e7b92ba6df431dec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af68de2dadc7972b7c089d5e0c0558398"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398">h</a></td></tr>
+<tr class="separator:af68de2dadc7972b7c089d5e0c0558398"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4cc623a3e29f0bc0d3375f6645c84d18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18">x</a></td></tr>
+<tr class="separator:a4cc623a3e29f0bc0d3375f6645c84d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3034c1fbf86043b568f5a4dddf946fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa">y</a></td></tr>
+<tr class="separator:ae3034c1fbf86043b568f5a4dddf946fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a74ba347755ce17f2f8a2ea66c612af49"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49">was_packed</a></td></tr>
+<tr class="separator:a74ba347755ce17f2f8a2ea66c612af49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="af68de2dadc7972b7c089d5e0c0558398"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af68de2dadc7972b7c089d5e0c0558398">&#9670;&nbsp;</a></span>h</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_rect::h</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00112">112</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a92da8626bc99df041c0c3bfd01c25f7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92da8626bc99df041c0c3bfd01c25f7a">&#9670;&nbsp;</a></span>id</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_rect::id</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00109">109</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a248d43f1eb979c1e7b92ba6df431dec5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a248d43f1eb979c1e7b92ba6df431dec5">&#9670;&nbsp;</a></span>w</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_rect::w</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00112">112</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a74ba347755ce17f2f8a2ea66c612af49"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a74ba347755ce17f2f8a2ea66c612af49">&#9670;&nbsp;</a></span>was_packed</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int stbrp_rect::was_packed</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00116">116</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="a4cc623a3e29f0bc0d3375f6645c84d18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4cc623a3e29f0bc0d3375f6645c84d18">&#9670;&nbsp;</a></span>x</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_rect::x</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00115">115</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<a id="ae3034c1fbf86043b568f5a4dddf946fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3034c1fbf86043b568f5a4dddf946fa">&#9670;&nbsp;</a></span>y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9">stbrp_coord</a> stbrp_rect::y</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="stb__rect__pack_8h_source.html#l00115">115</a> of file <a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="stb__rect__pack_8h_source.html">stb_rect_pack.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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
--- /dev/null
+++ b/dev/MinGfx/docs/html/sync_off.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/sync_on.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/tab_a.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/tab_b.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/tab_h.png
Binary files 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
--- /dev/null
+++ b/dev/MinGfx/docs/html/tab_s.png
Binary files 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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/text_shader.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">text_shader.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;string&gt;</code><br />
+<code>#include &lt;map&gt;</code><br />
+<code>#include &quot;<a class="el" href="matrix4_8h_source.html">matrix4.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="mesh_8h_source.html">mesh.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="texture2d_8h_source.html">texture2d.h</a>&quot;</code><br />
+<code>#include &lt;stb_truetype.h&gt;</code><br />
+</div>
+<p><a href="text__shader_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/text_shader.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">text_shader.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="text__shader_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_TEXT_SHADER_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_TEXT_SHADER_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix4_8h.html">matrix4.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="mesh_8h.html">mesh.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shader__program_8h.html">shader_program.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture2d_8h.html">texture2d.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// disable warnings for this 3rd party code</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#pragma warning ( push, 0 )</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;stb_truetype.h&gt;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#pragma warning ( pop )</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html"> 36</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_text_shader.html">TextShader</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67"> 38</a></span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">TextShader</a>();</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb"> 39</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">~TextShader</a>();</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3"> 45</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">Init</a>(<span class="keyword">const</span> std::string &amp;font_file, <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">native_font_size</a>);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c"> 47</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92">HORIZ_ALIGN_LEFT</a>,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4">HORIZ_ALIGN_CENTER</a>,</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b">HORIZ_ALIGN_RIGHT</a></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; };</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a"> 53</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a> {</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04">VERT_ALIGN_TOP</a>,</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af">VERT_ALIGN_CENTER</a>,</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb">VERT_ALIGN_BASELINE</a>,</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28">VERT_ALIGN_BOTTOM</a></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; };</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html"> 60</a></span>&#160; <span class="keyword">class </span><a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a> {</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// constructor sets defaults</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb"> 63</a></span>&#160; <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">TextFormat</a>() :</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">size</a>(0.1f),</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">color</a>(1,1,1,1),</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">h_align</a>(<a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a>::HORIZ_ALIGN_CENTER),</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">v_align</a>(<a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a>::VERT_ALIGN_BASELINE) {}</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0"> 69</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">size</a>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7"> 70</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">color</a>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066"> 71</a></span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">HorizAlign</a> <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">h_align</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7"> 72</a></span>&#160; <a class="code" href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">VertAlign</a> <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">v_align</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">//void Draw2D(const Point2 &amp;pos,</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// const std::string &amp;text, TextFormat format, bool cache=false);</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359"> 80</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">Draw3D</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;model, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;view, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projection,</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> std::string &amp;text, <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a> format, <span class="keywordtype">bool</span> cache=<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28"> 84</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">TextExtents</a>(<span class="keyword">const</span> std::string &amp;text, <a class="code" href="classmingfx_1_1_text_shader_1_1_text_format.html">TextFormat</a> format, <span class="keywordtype">bool</span> cache=<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d"> 86</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">native_font_size</a>();</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> atlas_;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">float</span> native_font_size_;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; stbtt_packedchar chardata_[128];</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">struct </span>MeshData {</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classmingfx_1_1_mesh.html">Mesh</a> mesh;</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> min;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> max;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; };</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> SetTextMesh(<span class="keyword">const</span> std::string &amp;text, MeshData *md);</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; std::map&lt;std::string, MeshData&gt; cache_;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; MeshData tmp_md_;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classmingfx_1_1_shader_program.html">ShaderProgram</a> shader_;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;};</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_mesh_html"><div class="ttname"><a href="classmingfx_1_1_mesh.html">mingfx::Mesh</a></div><div class="ttdoc">A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.</div><div class="ttdef"><b>Definition:</b> <a href="mesh_8h_source.html#l00127">mesh.h:127</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html"><div class="ttname"><a href="classmingfx_1_1_shader_program.html">mingfx::ShaderProgram</a></div><div class="ttdoc">A wrapper around GLSL shader programs.</div><div class="ttdef"><b>Definition:</b> <a href="shader__program_8h_source.html#l00066">shader_program.h:66</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html">mingfx::TextShader::TextFormat</a></div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00060">text_shader.h:60</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html_a2b7d7e2e540c881952b97b8948b49fcb"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb">mingfx::TextShader::TextFormat::TextFormat</a></div><div class="ttdeci">TextFormat()</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00063">text_shader.h:63</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html_a8455382a6829022020eb307ae9168bd7"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7">mingfx::TextShader::TextFormat::v_align</a></div><div class="ttdeci">VertAlign v_align</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00072">text_shader.h:72</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html_acde55d28b0446e788e6c68b85df83066"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066">mingfx::TextShader::TextFormat::h_align</a></div><div class="ttdeci">HorizAlign h_align</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00071">text_shader.h:71</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html_aeecda817624276f0cfb812ddcdbbc2f0"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0">mingfx::TextShader::TextFormat::size</a></div><div class="ttdeci">float size</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00069">text_shader.h:69</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_1_1_text_format_html_af0483874ac3fcea58b6ff99ef6644ff7"><div class="ttname"><a href="classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7">mingfx::TextShader::TextFormat::color</a></div><div class="ttdeci">Color color</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00070">text_shader.h:70</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html"><div class="ttname"><a href="classmingfx_1_1_text_shader.html">mingfx::TextShader</a></div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00036">text_shader.h:36</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a0ec5a6ba22abb3f86c611107925fca67"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67">mingfx::TextShader::TextShader</a></div><div class="ttdeci">TextShader()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a2caaaf2decfac523b476951474e9a359"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359">mingfx::TextShader::Draw3D</a></div><div class="ttdeci">void Draw3D(const Matrix4 &amp;model, const Matrix4 &amp;view, const Matrix4 &amp;projection, const std::string &amp;text, TextFormat format, bool cache=false)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a457f7a42eceb957cdb103664dd864feb"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb">mingfx::TextShader::~TextShader</a></div><div class="ttdeci">virtual ~TextShader()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a707b2b36547db78d19139575003c8a0d"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d">mingfx::TextShader::native_font_size</a></div><div class="ttdeci">float native_font_size()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a7624918a2d157cf2880fc8858c00db2a"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a">mingfx::TextShader::VertAlign</a></div><div class="ttdeci">VertAlign</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00053">text_shader.h:53</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb">mingfx::TextShader::VertAlign::VERT_ALIGN_BASELINE</a></div><div class="ttdeci">@ VERT_ALIGN_BASELINE</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28">mingfx::TextShader::VertAlign::VERT_ALIGN_BOTTOM</a></div><div class="ttdeci">@ VERT_ALIGN_BOTTOM</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04">mingfx::TextShader::VertAlign::VERT_ALIGN_TOP</a></div><div class="ttdeci">@ VERT_ALIGN_TOP</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af">mingfx::TextShader::VertAlign::VERT_ALIGN_CENTER</a></div><div class="ttdeci">@ VERT_ALIGN_CENTER</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_ac4e9a150311fe6d74e9f6214ebeb6b28"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28">mingfx::TextShader::TextExtents</a></div><div class="ttdeci">Vector2 TextExtents(const std::string &amp;text, TextFormat format, bool cache=false)</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_ad60a8b572adc30dad47e2d163dc603a3"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3">mingfx::TextShader::Init</a></div><div class="ttdeci">bool Init(const std::string &amp;font_file, int native_font_size)</div><div class="ttdoc">Call this from within the InitOpenGL() function since it will initialize not just the Font's internal...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_af464d970e6475a2176f21c3f4b24c63c"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c">mingfx::TextShader::HorizAlign</a></div><div class="ttdeci">HorizAlign</div><div class="ttdef"><b>Definition:</b> <a href="text__shader_8h_source.html#l00047">text_shader.h:47</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4">mingfx::TextShader::HorizAlign::HORIZ_ALIGN_CENTER</a></div><div class="ttdeci">@ HORIZ_ALIGN_CENTER</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b">mingfx::TextShader::HorizAlign::HORIZ_ALIGN_RIGHT</a></div><div class="ttdeci">@ HORIZ_ALIGN_RIGHT</div></div>
+<div class="ttc" id="aclassmingfx_1_1_text_shader_html_af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92"><div class="ttname"><a href="classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92">mingfx::TextShader::HorizAlign::HORIZ_ALIGN_LEFT</a></div><div class="ttdeci">@ HORIZ_ALIGN_LEFT</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></div><div class="ttdoc">A wrapper around a 2D texture that supports loading images from files or setting texture color data d...</div><div class="ttdef"><b>Definition:</b> <a href="texture2d_8h_source.html#l00042">texture2d.h:42</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="amatrix4_8h_html"><div class="ttname"><a href="matrix4_8h.html">matrix4.h</a></div></div>
+<div class="ttc" id="amesh_8h_html"><div class="ttname"><a href="mesh_8h.html">mesh.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="ashader__program_8h_html"><div class="ttname"><a href="shader__program_8h.html">shader_program.h</a></div></div>
+<div class="ttc" id="atexture2d_8h_html"><div class="ttname"><a href="texture2d_8h.html">texture2d.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/texture2d.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">texture2d.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="opengl__headers_8h_source.html">opengl_headers.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="color_8h_source.html">color.h</a>&quot;</code><br />
+<code>#include &lt;string&gt;</code><br />
+</div>
+<p><a href="texture2d_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper around a 2D texture that supports loading images from files or setting texture color data directly. <a href="classmingfx_1_1_texture2_d.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/texture2d.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">texture2d.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="texture2d_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_TEXTURE2D_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_TEXTURE2D_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="opengl__headers_8h.html">opengl_headers.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_texture2_d.html">Texture2D</a> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d"> 47</a></span>&#160; <a class="code" href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">Texture2D</a>(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9"> 48</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">~Texture2D</a>();</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc"> 55</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">InitFromFile</a>(<span class="keyword">const</span> std::string &amp;filename);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944"> 66</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">InitFromBytes</a>(<span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>, <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * data);</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8"> 77</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">InitFromFloats</a>(<span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>, <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>, <span class="keyword">const</span> <span class="keywordtype">float</span> * data);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c"> 83</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">UpdateFromBytes</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * data);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693"> 88</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">UpdateFromFloats</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> * data);</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87"> 92</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">initialized</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869"> 95</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">width</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88"> 98</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">height</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504"> 101</a></span>&#160; GLuint <a class="code" href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">opengl_id</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea"> 104</a></span>&#160; GLenum <a class="code" href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">wrap_mode</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b"> 107</a></span>&#160; GLenum <a class="code" href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">filter_mode</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f"> 110</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">set_wrap_mode</a>(GLenum wrapMode);</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013"> 113</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">set_filter_mode</a>(GLenum filterMode);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b"> 117</a></span>&#160; <a class="code" href="classmingfx_1_1_color.html">Color</a> <a class="code" href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">Pixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> InitOpenGL();</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; GLenum dataType_; <span class="comment">// GL_UNSIGNED_BYTE or GL_FLOAT</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * data_ubyte_;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * data_float_;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">int</span> width_;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">int</span> height_;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> handleMemInternally_;</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; GLuint texID_;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; GLenum wrapMode_;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; GLenum filterMode_;</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;};</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_color_html"><div class="ttname"><a href="classmingfx_1_1_color.html">mingfx::Color</a></div><div class="ttdoc">Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...</div><div class="ttdef"><b>Definition:</b> <a href="color_8h_source.html#l00041">color.h:41</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html">mingfx::Texture2D</a></div><div class="ttdoc">A wrapper around a 2D texture that supports loading images from files or setting texture color data d...</div><div class="ttdef"><b>Definition:</b> <a href="texture2d_8h_source.html#l00042">texture2d.h:42</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a0783ad70829ef353aa92344d320b107c"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c">mingfx::Texture2D::UpdateFromBytes</a></div><div class="ttdeci">bool UpdateFromBytes(const unsigned char *data)</div><div class="ttdoc">This function may be called to re-read the texture data from an array formated the same as in InitFro...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a15d5c319cf7e012e703668f4d4e7be87"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87">mingfx::Texture2D::initialized</a></div><div class="ttdeci">bool initialized() const</div><div class="ttdoc">Returns true if the texture data has been successfully transferred to OpenGL.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a1c8827426f43343c0ad171e181a741ea"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea">mingfx::Texture2D::wrap_mode</a></div><div class="ttdeci">GLenum wrap_mode() const</div><div class="ttdoc">Returns an enumerated constant for the OpenGL wrap mode used by the texture.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a1e843f3d8904f9c7a99f7614f87de73b"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b">mingfx::Texture2D::Pixel</a></div><div class="ttdeci">Color Pixel(int x, int y) const</div><div class="ttdoc">Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a3c396193b466053f23803894039d8d88"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88">mingfx::Texture2D::height</a></div><div class="ttdeci">int height() const</div><div class="ttdoc">Returns the height in pixels of the texture.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a401629d948aa144be81b94fe21938869"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869">mingfx::Texture2D::width</a></div><div class="ttdeci">int width() const</div><div class="ttdoc">Returns the width in pixels of the texture.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a4a3b2b550fefdf79f0fb392b04e7b013"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013">mingfx::Texture2D::set_filter_mode</a></div><div class="ttdeci">void set_filter_mode(GLenum filterMode)</div><div class="ttdoc">Uses the OpenGL texture filter mode arguments.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_a8eded044ccdf9bd3e1e5bcfe74526bdc"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc">mingfx::Texture2D::InitFromFile</a></div><div class="ttdeci">bool InitFromFile(const std::string &amp;filename)</div><div class="ttdoc">Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aa15b86ec3b7312842c220b081c39980d"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d">mingfx::Texture2D::Texture2D</a></div><div class="ttdeci">Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)</div><div class="ttdoc">Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aa5cbe3396e4560ec0746e91dbc55bc9f"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f">mingfx::Texture2D::set_wrap_mode</a></div><div class="ttdeci">void set_wrap_mode(GLenum wrapMode)</div><div class="ttdoc">Uses the OpenGL texture wrap mode arguments.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aab734dbbcf6211507ab65d5bb94a4ef9"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9">mingfx::Texture2D::~Texture2D</a></div><div class="ttdeci">virtual ~Texture2D()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aba57b01065096fe9f6483e8f68622944"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944">mingfx::Texture2D::InitFromBytes</a></div><div class="ttdeci">bool InitFromBytes(int width, int height, const unsigned char *data)</div><div class="ttdoc">Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_ad4e0faadfe016e6ee501e66fc0244504"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504">mingfx::Texture2D::opengl_id</a></div><div class="ttdeci">GLuint opengl_id() const</div><div class="ttdoc">Returns the unsigned int used as the texture handle by OpenGL.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_ad7640f0cbda6398a6bb80202b80dd693"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693">mingfx::Texture2D::UpdateFromFloats</a></div><div class="ttdeci">bool UpdateFromFloats(const float *data)</div><div class="ttdoc">This function may be called to re-read the texture data from an array formated the same as in InitFro...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_aee8a0aad1795680cb840ffcf544ed7b8"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8">mingfx::Texture2D::InitFromFloats</a></div><div class="ttdeci">bool InitFromFloats(int width, int height, const float *data)</div><div class="ttdoc">Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_texture2_d_html_af0052203fcfd9bbb903a40d14700b13b"><div class="ttname"><a href="classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b">mingfx::Texture2D::filter_mode</a></div><div class="ttdeci">GLenum filter_mode() const</div><div class="ttdoc">Returns an enumerated constant for the OpenGL filter mode used by the texture.</div></div>
+<div class="ttc" id="acolor_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="aopengl__headers_8h_html"><div class="ttname"><a href="opengl__headers_8h.html">opengl_headers.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/unicam.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">unicam.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="quick__shapes_8h_source.html">quick_shapes.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector2_8h_source.html">vector2.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="vector3_8h_source.html">vector3.h</a>&quot;</code><br />
+</div>
+<p><a href="unicam_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This implements a user interface for controlling the camera with the mouse. <a href="classmingfx_1_1_uni_cam.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/unicam.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">unicam.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="unicam_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_UNICAM_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_UNICAM_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="quick__shapes_8h.html">quick_shapes.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector3_8h.html">vector3.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html"> 105</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_uni_cam.html">UniCam</a> {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">public</span>: </div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e"> 109</a></span>&#160; <a class="code" href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">UniCam</a>();</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07"> 112</a></span>&#160; <a class="code" href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07">UniCam</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;initialViewMatrix);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e"> 114</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">~UniCam</a>();</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// To make the interaction work, the following set of functions need to be</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// called from your GraphicsApp or whatever main application class you use</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// to receive user input events and a draw callback.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f"> 132</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">OnButtonDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos, <span class="keywordtype">float</span> mouseZ);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe"> 142</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">OnDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a"> 152</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">OnButtonUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;normalizedMousePos);</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c"> 159</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">AdvanceAnimation</a>(<span class="keywordtype">double</span> dt);</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d"> 166</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">Draw</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;projectionMatrix);</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3"> 178</a></span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> <a class="code" href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">view_matrix</a>();</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2"> 183</a></span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">eye</a>();</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40"> 187</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">look</a>();</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// -------------</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b"> 194</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">set_view_matrix</a>(<a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> viewMatrix);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
+<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068"> 202</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">set_default_depth</a>(<span class="keywordtype">float</span> d);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">void</span> recalc_angular_vel();</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">enum class</span> UniCamState {</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; START,</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; PAN_DOLLY_ROT_DECISION,</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; PAN_DOLLY_DECISION,</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; ROT_WAIT_FOR_SECOND_CLICK,</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; PAN,</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; DOLLY,</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; ROT,</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; SPINNING</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; };</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; UniCamState state_;</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> mouseLast_;</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">double</span> elapsedTime_;</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classmingfx_1_1_point2.html">Point2</a> initialClickPos_;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">bool</span> hitGeometry_;</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> hitPoint_;</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">bool</span> rotInitialized_;</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> rotLastIPoint_;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">float</span> boundingSphereRad_;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classmingfx_1_1_point3.html">Point3</a> boundingSphereCtr_;</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">double</span> rotLastTime_;</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::vector&lt;std::pair&lt;double, double&gt;&gt; rotAngularVelBuffer_;</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">double</span> rotAngularVel_;</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> rotAxis_;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">bool</span> dollyInitialized_;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">float</span> dollyFactor_;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordtype">float</span> defaultDepth_;</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">bool</span> showIcon_;</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classmingfx_1_1_quick_shapes.html">QuickShapes</a> quickShapes_;</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> V_;</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> Vstart_;</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// saved from the last draw call in order to unproject the mouse pos</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classmingfx_1_1_matrix4.html">Matrix4</a> Pdraw_;</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;};</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
+<div class="ttc" id="aclassmingfx_1_1_matrix4_html"><div class="ttname"><a href="classmingfx_1_1_matrix4.html">mingfx::Matrix4</a></div><div class="ttdoc">A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...</div><div class="ttdef"><b>Definition:</b> <a href="matrix4_8h_source.html#l00050">matrix4.h:50</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_quick_shapes_html"><div class="ttname"><a href="classmingfx_1_1_quick_shapes.html">mingfx::QuickShapes</a></div><div class="ttdoc">This class provides a quick way to draw shapes for use in debugging or simple scenes.</div><div class="ttdef"><b>Definition:</b> <a href="quick__shapes_8h_source.html#l00069">quick_shapes.h:69</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html">mingfx::UniCam</a></div><div class="ttdoc">This implements a user interface for controlling the camera with the mouse.</div><div class="ttdef"><b>Definition:</b> <a href="unicam_8h_source.html#l00105">unicam.h:105</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a2a9431dc3943c8dc485994d88ce2a58a"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a">mingfx::UniCam::OnButtonUp</a></div><div class="ttdeci">void OnButtonUp(const Point2 &amp;normalizedMousePos)</div><div class="ttdoc">Attach this to the corresponding button up event, for example, call this from within GraphicsApp::OnR...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a33f1b41fcf53ea78ca2b3640902c5bbe"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe">mingfx::UniCam::OnDrag</a></div><div class="ttdeci">void OnDrag(const Point2 &amp;normalizedMousePos)</div><div class="ttdoc">Attach this to the corresponding mouse move event, for example, call this from within GraphicsApp::On...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a65d5735b4b3a8e38f2b30df4133cadd2"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2">mingfx::UniCam::eye</a></div><div class="ttdeci">Point3 eye()</div><div class="ttdoc">Returns the &quot;eye&quot; point (i.e., focal point) of the camera in world space coordinates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a6b17bab82595ca468a3c638512011e5b"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b">mingfx::UniCam::set_view_matrix</a></div><div class="ttdeci">void set_view_matrix(Matrix4 viewMatrix)</div><div class="ttdoc">This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a6e7771961011f573b2e2249f602b2d2e"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e">mingfx::UniCam::UniCam</a></div><div class="ttdeci">UniCam()</div><div class="ttdoc">Creates a UniCam object with an initial view matrix = identity.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a71e0351ac19a18b9c02215a60dc51068"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068">mingfx::UniCam::set_default_depth</a></div><div class="ttdeci">void set_default_depth(float d)</div><div class="ttdoc">This sets the depth of the center of rotation for the case when the user's click does not intersect a...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a8363576bf0f85c74d80ced697bd73d40"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40">mingfx::UniCam::look</a></div><div class="ttdeci">Vector3 look()</div><div class="ttdoc">Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_a85afba6e8792636f3c6ba2433db1c52f"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f">mingfx::UniCam::OnButtonDown</a></div><div class="ttdeci">void OnButtonDown(const Point2 &amp;normalizedMousePos, float mouseZ)</div><div class="ttdoc">Attach this to whatever mouse button you wish, for example, call this from within GraphicsApp::OnRigh...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_aab253d966af52ac277ac51194745085c"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c">mingfx::UniCam::AdvanceAnimation</a></div><div class="ttdeci">void AdvanceAnimation(double dt)</div><div class="ttdoc">Attach this to a callback that can be used to control animation. Within GraphicsApp::UpdateSimulation...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_ae45f3c80c205a539baeb4f1b8787777d"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d">mingfx::UniCam::Draw</a></div><div class="ttdeci">void Draw(const Matrix4 &amp;projectionMatrix)</div><div class="ttdoc">Finally, attach this to your draw callback routine. Within GraphicsApp::DrawUsingOpenGL(),...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_af507e639c4bceb4c79e21a6f80c48d07"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07">mingfx::UniCam::UniCam</a></div><div class="ttdeci">UniCam(const Matrix4 &amp;initialViewMatrix)</div><div class="ttdoc">Creates a UniCam object with the supplied initial view matrix.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_af7e7276f9390ec57ca577092c99d6ca3"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3">mingfx::UniCam::view_matrix</a></div><div class="ttdeci">Matrix4 view_matrix()</div><div class="ttdoc">Access the camera view matrix created by the UniCam interactions via this method and use it to draw t...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_uni_cam_html_af98022627bcb52dbf54779cfaeb6ff7e"><div class="ttname"><a href="classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e">mingfx::UniCam::~UniCam</a></div><div class="ttdeci">virtual ~UniCam()</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+<div class="ttc" id="aquick__shapes_8h_html"><div class="ttname"><a href="quick__shapes_8h.html">quick_shapes.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+<div class="ttc" id="avector3_8h_html"><div class="ttname"><a href="vector3_8h.html">vector3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/vector2.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">vector2.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="point2_8h_source.html">point2.h</a>&quot;</code><br />
+</div>
+<p><a href="vector2_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors. <a href="classmingfx_1_1_vector2.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd">mingfx::operator/</a> (const Vector2 &amp;v, const float s)</td></tr>
+<tr class="memdesc:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Divide the vector by the scalar s. <a href="namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd">More...</a><br /></td></tr>
+<tr class="separator:a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8bc25e621d21323fdd96f2c4a4141432"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432">mingfx::operator*</a> (const float s, const Vector2 &amp;v)</td></tr>
+<tr class="memdesc:a8bc25e621d21323fdd96f2c4a4141432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432">More...</a><br /></td></tr>
+<tr class="separator:a8bc25e621d21323fdd96f2c4a4141432"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8358de6421374fb037e8c51e8f2d5878"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878">mingfx::operator*</a> (const Vector2 &amp;v, const float s)</td></tr>
+<tr class="memdesc:a8358de6421374fb037e8c51e8f2d5878"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878">More...</a><br /></td></tr>
+<tr class="separator:a8358de6421374fb037e8c51e8f2d5878"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5daeaa383c40eed6f41b2c1b7930499f"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f">mingfx::operator-</a> (const Vector2 &amp;v)</td></tr>
+<tr class="memdesc:a5daeaa383c40eed6f41b2c1b7930499f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negate the vector. <a href="namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f">More...</a><br /></td></tr>
+<tr class="separator:a5daeaa383c40eed6f41b2c1b7930499f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac71c01d7c300671cb343a24b68a875bf"><td class="memItemLeft" align="right" valign="top">Point2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf">mingfx::operator+</a> (const Vector2 &amp;v, const Point2 &amp;p)</td></tr>
+<tr class="memdesc:ac71c01d7c300671cb343a24b68a875bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a point, returns a point. <a href="namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf">More...</a><br /></td></tr>
+<tr class="separator:ac71c01d7c300671cb343a24b68a875bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2083f9992ba509a275db11522f16a2e"><td class="memItemLeft" align="right" valign="top">Point2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e">mingfx::operator+</a> (const Point2 &amp;p, const Vector2 &amp;v)</td></tr>
+<tr class="memdesc:ab2083f9992ba509a275db11522f16a2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a point and a vector, returns a point. <a href="namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e">More...</a><br /></td></tr>
+<tr class="separator:ab2083f9992ba509a275db11522f16a2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acdffada748181cc17ec93784f858ff9f"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#acdffada748181cc17ec93784f858ff9f">mingfx::operator+</a> (const Vector2 &amp;v1, const Vector2 &amp;v2)</td></tr>
+<tr class="memdesc:acdffada748181cc17ec93784f858ff9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a vector, returns a vector. <a href="namespacemingfx.html#acdffada748181cc17ec93784f858ff9f">More...</a><br /></td></tr>
+<tr class="separator:acdffada748181cc17ec93784f858ff9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="memItemLeft" align="right" valign="top">Point2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2">mingfx::operator-</a> (const Point2 &amp;p, const Vector2 &amp;v)</td></tr>
+<tr class="memdesc:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts a vector from a point, returns a point. <a href="namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2">More...</a><br /></td></tr>
+<tr class="separator:ae81fac825c0f6eca59cc1a1cc06d63f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a128585c0b87e03beda4a660d4e58789b"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b">mingfx::operator-</a> (const Vector2 &amp;v1, const Vector2 &amp;v2)</td></tr>
+<tr class="memdesc:a128585c0b87e03beda4a660d4e58789b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts v2 from v1, returns a vector. <a href="namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b">More...</a><br /></td></tr>
+<tr class="separator:a128585c0b87e03beda4a660d4e58789b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad370bce0bb5b88beb974aad1d44890e8"><td class="memItemLeft" align="right" valign="top">Vector2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8">mingfx::operator-</a> (const Point2 &amp;p1, const Point2 &amp;p2)</td></tr>
+<tr class="memdesc:ad370bce0bb5b88beb974aad1d44890e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the vector spanning p1 and p2. <a href="namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8">More...</a><br /></td></tr>
+<tr class="separator:ad370bce0bb5b88beb974aad1d44890e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acbe43aa24ecedf663c65becf2be282c7"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Vector2 &amp;v)</td></tr>
+<tr class="separator:acbe43aa24ecedf663c65becf2be282c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3f12496d7a5028b71882373d6fa7203"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Vector2 &amp;v)</td></tr>
+<tr class="separator:ab3f12496d7a5028b71882373d6fa7203"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/vector2.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">vector2.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="vector2_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_VECTOR2_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_VECTOR2_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f"> 32</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">Vector2</a>();</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd"> 36</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd">Vector2</a>(<span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">x</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">y</a>);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2"> 39</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2">Vector2</a>(<span class="keywordtype">float</span> *v);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8"> 42</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8">Vector2</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f"> 45</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">~Vector2</a>();</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe"> 48</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb"> 51</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769"> 54</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; <a class="code" href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000"> 57</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e"> 66</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a"> 70</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> v[0]; }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b"> 74</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">y</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> v[1]; }</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831"> 77</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">w</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0.0; }</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// --- Vector operations ---</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9"> 83</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">Dot</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9"> 86</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">Length</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0"> 89</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">Normalize</a>();</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83"> 93</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">ToUnit</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17"> 98</a></span>&#160; <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;b, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1"> 101</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2"> 106</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2">Normalize</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd"> 109</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd">Dot</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v2);</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf"> 112</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; <a class="code" href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">Zero</a>();</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd"> 115</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; <a class="code" href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">One</a>();</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb"> 118</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; <a class="code" href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">UnitX</a>();</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0"> 121</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; <a class="code" href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">UnitY</a>();</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561"> 125</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">float</span> v[2];</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;};</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// ---------- Operator Overloads for Working with Vectors ----------</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// --- Scalers ---</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd"> 138</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432"> 141</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> s, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878"> 144</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f"> 147</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// Note: no -(point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// --- Point and Vector Arithmetic ---</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf"> 155</a></span>&#160;<a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e"> 158</a></span>&#160;<a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="namespacemingfx.html#acdffada748181cc17ec93784f858ff9f"> 161</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v2);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// Note: no (point + point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2"> 166</a></span>&#160;<a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v);</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b"> 169</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a>&amp; v2);</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8"> 172</a></span>&#160;<a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a>&amp; p2);</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">// Note: no (vector - point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">// --- Stream operators ---</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// Vector2</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7"> 180</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203"> 181</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v);</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a06d6c283aba957bddc2b9849698838b2"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2">mingfx::Vector2::Normalize</a></div><div class="ttdeci">static Vector2 Normalize(const Vector2 &amp;v)</div><div class="ttdoc">Returns a new vector that is the unit version of v.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a1cf3488f1f14a9bf7f6e1278c1c63cdb"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb">mingfx::Vector2::operator!=</a></div><div class="ttdeci">bool operator!=(const Vector2 &amp;v) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a267e6749091f23263d1620f801f0a831"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831">mingfx::Vector2::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">In homogeneous coordinates, the w coordinate for all vectors is 0.0.</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00077">vector2.h:77</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a28c44a323e5bd1a251dee9e00e2e1769"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769">mingfx::Vector2::operator=</a></div><div class="ttdeci">Vector2 &amp; operator=(const Vector2 &amp;v)</div><div class="ttdoc">Vector assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a40f53939581f5d06a1b757b0398525f8"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8">mingfx::Vector2::Vector2</a></div><div class="ttdeci">Vector2(const Vector2 &amp;v)</div><div class="ttdoc">Copy constructor for vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a5813ffa3c185551eec1927e1daa4cb17"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17">mingfx::Vector2::Lerp</a></div><div class="ttdeci">Vector2 Lerp(const Vector2 &amp;b, float alpha) const</div><div class="ttdoc">Linear interpolation between this vector and another. Alpha=0.0 returns this vector,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a5b51e62f03e95d6be1262f037aecf0fd"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd">mingfx::Vector2::One</a></div><div class="ttdeci">static const Vector2 &amp; One()</div><div class="ttdoc">(1,1) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a632ddd5b06c48fa0f6f39550e91082c0"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0">mingfx::Vector2::Normalize</a></div><div class="ttdeci">void Normalize()</div><div class="ttdoc">Normalizes the vector by making it unit length.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a6e3d063a7080bfe199acc70cd5afded2"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2">mingfx::Vector2::Vector2</a></div><div class="ttdeci">Vector2(float *v)</div><div class="ttdoc">Constructs a vector given a pointer to x,y,z data.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a70f9f612a99017bf051e40ebd7fa7f83"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83">mingfx::Vector2::ToUnit</a></div><div class="ttdeci">Vector2 ToUnit() const</div><div class="ttdoc">Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this'...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a71b90903d00cdc318ea42f593db6dbb9"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9">mingfx::Vector2::Length</a></div><div class="ttdeci">float Length() const</div><div class="ttdoc">Returns the length of the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a7cb11f9fe8962ff9092fc1e5736faacf"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf">mingfx::Vector2::Zero</a></div><div class="ttdeci">static const Vector2 &amp; Zero()</div><div class="ttdoc">(0,0) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a80ef53519d50a6a6f158f66755c040d1"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1">mingfx::Vector2::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a8ef6e0525ec34aaee9cf35bab098ecdb"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb">mingfx::Vector2::UnitX</a></div><div class="ttdeci">static const Vector2 &amp; UnitX()</div><div class="ttdoc">(1,0) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a93acf7f4f150cfe53859e31d90eddd1e"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e">mingfx::Vector2::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coo...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a962433a7e3158cf6b224604a0463852f"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f">mingfx::Vector2::Vector2</a></div><div class="ttdeci">Vector2()</div><div class="ttdoc">Default constructor to create zero vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_a9e81c518908ca06c98ba099b075fe1cd"><div class="ttname"><a href="classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd">mingfx::Vector2::Dot</a></div><div class="ttdeci">static float Dot(const Vector2 &amp;v1, const Vector2 &amp;v2)</div><div class="ttdoc">Returns v1 dot v2.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ab7b3ba42a5a63c512bd7b32fd4cc0db0"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0">mingfx::Vector2::UnitY</a></div><div class="ttdeci">static const Vector2 &amp; UnitY()</div><div class="ttdoc">(0,1) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ac332b5f01b3357b85e6d279fb059d561"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561">mingfx::Vector2::Lerp</a></div><div class="ttdeci">static Vector2 Lerp(const Vector2 &amp;a, const Vector2 &amp;b, float alpha)</div><div class="ttdoc">Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ac427d5c06474777e851bed05ec5d134b"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b">mingfx::Vector2::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00074">vector2.h:74</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ac49b009c4b6052ebe71d5cf4ce241b1f"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f">mingfx::Vector2::~Vector2</a></div><div class="ttdeci">virtual ~Vector2()</div><div class="ttdoc">Vector destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_acc16337b6b06ebea2fde4c4bd1be7abd"><div class="ttname"><a href="classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd">mingfx::Vector2::Vector2</a></div><div class="ttdeci">Vector2(float x, float y)</div><div class="ttdoc">Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer gr...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ad7acc2cf4dcd2eca210899c846bb7dfe"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe">mingfx::Vector2::operator==</a></div><div class="ttdeci">bool operator==(const Vector2 &amp;v) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ae1fc0ce3ca1af3d0546af32742e13000"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000">mingfx::Vector2::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Read only access to the ith coordinate of the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ae2208539c6b29712c22f557dcfdd55d9"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9">mingfx::Vector2::Dot</a></div><div class="ttdeci">float Dot(const Vector2 &amp;v) const</div><div class="ttdoc">Returns &quot;this dot v&quot;.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html_ae84b079eb21494bc7c9a93d32a63712a"><div class="ttname"><a href="classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a">mingfx::Vector2::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00070">vector2.h:70</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a2f5a225a54f07164d5172a3721a3aee6"><div class="ttname"><a href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx::operator-</a></div><div class="ttdeci">Quaternion operator-(const Quaternion &amp;q)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a3c3b45ed6edf3fe76f98a7fd165dca03"><div class="ttname"><a href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx::operator+</a></div><div class="ttdeci">AABB operator+(const AABB &amp;A, const AABB &amp;B)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a444ae88d836b913ac8307fbf4357f7ed"><div class="ttname"><a href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx::operator/</a></div><div class="ttdeci">Quaternion operator/(const Quaternion &amp;q, const float s)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_ae5708e414f585dde2a5418ddae259a57"><div class="ttname"><a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx::operator*</a></div><div class="ttdeci">Matrix4 operator*(const Matrix4 &amp;m, const float &amp;s)</div><div class="ttdoc">Multiply matrix and scalar, returns the new matrix.</div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/vector3.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">vector3.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
+<code>#include &quot;<a class="el" href="point3_8h_source.html">point3.h</a>&quot;</code><br />
+</div>
+<p><a href="vector3_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations. <a href="classmingfx_1_1_vector3.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacemingfx"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html">mingfx</a></td></tr>
+<tr class="memdesc:namespacemingfx"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for the MinGfx Toolkit. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aa19b1dea0b7aa468950e56044fda328a"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a">mingfx::operator/</a> (const Vector3 &amp;v, const float s)</td></tr>
+<tr class="memdesc:aa19b1dea0b7aa468950e56044fda328a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Divide the vector by the scalar s. <a href="namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a">More...</a><br /></td></tr>
+<tr class="separator:aa19b1dea0b7aa468950e56044fda328a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e3941689c65388690916d00e0d423d4"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a7e3941689c65388690916d00e0d423d4">mingfx::operator*</a> (const float s, const Vector3 &amp;v)</td></tr>
+<tr class="memdesc:a7e3941689c65388690916d00e0d423d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#a7e3941689c65388690916d00e0d423d4">More...</a><br /></td></tr>
+<tr class="separator:a7e3941689c65388690916d00e0d423d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5">mingfx::operator*</a> (const Vector3 &amp;v, const float s)</td></tr>
+<tr class="memdesc:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply the vector by the scalar s. <a href="namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5">More...</a><br /></td></tr>
+<tr class="separator:aa8a18cb8506dee589eaf6883a32e6fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd07add6169773bae12d40201f8af7db"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#afd07add6169773bae12d40201f8af7db">mingfx::operator-</a> (const Vector3 &amp;v)</td></tr>
+<tr class="memdesc:afd07add6169773bae12d40201f8af7db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Negate the vector. <a href="namespacemingfx.html#afd07add6169773bae12d40201f8af7db">More...</a><br /></td></tr>
+<tr class="separator:afd07add6169773bae12d40201f8af7db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b4428d2cf65ba5226ef4036352d311e"><td class="memItemLeft" align="right" valign="top">Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e">mingfx::operator+</a> (const Vector3 &amp;v, const Point3 &amp;p)</td></tr>
+<tr class="memdesc:a4b4428d2cf65ba5226ef4036352d311e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a point, returns a point. <a href="namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e">More...</a><br /></td></tr>
+<tr class="separator:a4b4428d2cf65ba5226ef4036352d311e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadea317107a50ec6847ce01927b61c82"><td class="memItemLeft" align="right" valign="top">Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aadea317107a50ec6847ce01927b61c82">mingfx::operator+</a> (const Point3 &amp;p, const Vector3 &amp;v)</td></tr>
+<tr class="memdesc:aadea317107a50ec6847ce01927b61c82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a point and a vector, returns a point. <a href="namespacemingfx.html#aadea317107a50ec6847ce01927b61c82">More...</a><br /></td></tr>
+<tr class="separator:aadea317107a50ec6847ce01927b61c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b">mingfx::operator+</a> (const Vector3 &amp;v1, const Vector3 &amp;v2)</td></tr>
+<tr class="memdesc:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vector and a vector, returns a vector. <a href="namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b">More...</a><br /></td></tr>
+<tr class="separator:aeeeb04b70f8e8becbcda7a3dc7024c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a579b90d99a1d6f794ca44017ded3a8db"><td class="memItemLeft" align="right" valign="top">Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db">mingfx::operator-</a> (const Point3 &amp;p, const Vector3 &amp;v)</td></tr>
+<tr class="memdesc:a579b90d99a1d6f794ca44017ded3a8db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts a vector from a point, returns a point. <a href="namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db">More...</a><br /></td></tr>
+<tr class="separator:a579b90d99a1d6f794ca44017ded3a8db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3">mingfx::operator-</a> (const Vector3 &amp;v1, const Vector3 &amp;v2)</td></tr>
+<tr class="memdesc:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtracts v2 from v1, returns a vector. <a href="namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3">More...</a><br /></td></tr>
+<tr class="separator:aecdf7f36c4feb04034f1d07c49d5c0e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77d92da8f1a866306518422cd9d2f0af"><td class="memItemLeft" align="right" valign="top">Vector3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af">mingfx::operator-</a> (const Point3 &amp;p1, const Point3 &amp;p2)</td></tr>
+<tr class="memdesc:a77d92da8f1a866306518422cd9d2f0af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the vector spanning p1 and p2. <a href="namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af">More...</a><br /></td></tr>
+<tr class="separator:a77d92da8f1a866306518422cd9d2f0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3425c24faf923364cd3a764d50601c52"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a3425c24faf923364cd3a764d50601c52">mingfx::operator&lt;&lt;</a> (std::ostream &amp;os, const Vector3 &amp;v)</td></tr>
+<tr class="separator:a3425c24faf923364cd3a764d50601c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cc2f52569661416cb2ca67c516b7c93"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93">mingfx::operator&gt;&gt;</a> (std::istream &amp;is, Vector3 &amp;v)</td></tr>
+<tr class="separator:a8cc2f52569661416cb2ca67c516b7c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
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 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/vector3.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">vector3.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="vector3_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2018, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef SRC_VECTOR3_H_</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define SRC_VECTOR3_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point3_8h.html">point3.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html"> 62</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> {</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd"> 66</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">Vector3</a>();</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65"> 70</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65">Vector3</a>(<span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>, <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a>);</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1"> 73</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1">Vector3</a>(<span class="keywordtype">float</span> *v);</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd"> 76</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd">Vector3</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969"> 79</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">~Vector3</a>();</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98"> 82</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016"> 85</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608"> 88</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b"> 91</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71"> 100</a></span>&#160; <span class="keywordtype">float</span>&amp; <a class="code" href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i); </div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4"> 104</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> v[0]; }</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17"> 108</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">y</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> v[1]; }</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6"> 112</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">z</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> v[2]; }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5"> 115</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">w</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0.0; }</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// --- Vector operations ---</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88"> 127</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">Dot</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec"> 136</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">Cross</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3"> 139</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">Length</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca"> 142</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">Normalize</a>();</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71"> 146</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">ToUnit</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331"> 149</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">value_ptr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6"> 154</a></span>&#160; <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b, <span class="keywordtype">float</span> alpha) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714"> 158</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">Zero</a>();</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db"> 161</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">One</a>();</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922"> 164</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">UnitX</a>();</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df"> 167</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">UnitY</a>();</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61"> 170</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; <a class="code" href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">UnitZ</a>();</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d"> 182</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d">Normalize</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485"> 194</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485">Cross</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507"> 206</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507">Dot</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v2);</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f"> 210</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f">Lerp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;a, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;b, <span class="keywordtype">float</span> alpha);</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">float</span> v[3];</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;};</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; </div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">// ---------- Operator Overloads for Working with Vectors ----------</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// --- Scalers ---</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a"> 223</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
+<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a7e3941689c65388690916d00e0d423d4"> 226</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> s, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5"> 229</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v, <span class="keyword">const</span> <span class="keywordtype">float</span> s);</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="namespacemingfx.html#afd07add6169773bae12d40201f8af7db"> 232</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// Note: no -(point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">// --- Point and Vector Arithmetic ---</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
+<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e"> 240</a></span>&#160;<a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p);</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aadea317107a50ec6847ce01927b61c82"> 243</a></span>&#160;<a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
+<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b"> 246</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v2);</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// Note: no (point + point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db"> 251</a></span>&#160;<a class="code" href="classmingfx_1_1_point3.html">Point3</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v);</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3"> 254</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a>&amp; v2);</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af"> 257</a></span>&#160;<a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> <a class="code" href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point3.html">Point3</a>&amp; p2);</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">// Note: no (vector - point) operator, that&#39;s an undefined operation</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">// --- Stream operators ---</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">// Vector3</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a3425c24faf923364cd3a764d50601c52"> 267</a></span>&#160;std::ostream &amp; <a class="code" href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">operator&lt;&lt; </a>( std::ostream &amp;os, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93"> 268</a></span>&#160;std::istream &amp; <a class="code" href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">operator&gt;&gt; </a>( std::istream &amp;is, <a class="code" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v);</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; </div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassmingfx_1_1_point3_html"><div class="ttname"><a href="classmingfx_1_1_point3.html">mingfx::Point3</a></div><div class="ttdoc">A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="point3_8h_source.html#l00052">point3.h:52</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html"><div class="ttname"><a href="classmingfx_1_1_vector3.html">mingfx::Vector3</a></div><div class="ttdoc">A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00062">vector3.h:62</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a235fb20d4075960d2ce6198dc95ac507"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507">mingfx::Vector3::Dot</a></div><div class="ttdeci">static float Dot(const Vector3 &amp;v1, const Vector3 &amp;v2)</div><div class="ttdoc">Returns v1 dot v2.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a2556298f536ba115019982222ce6e0c5"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5">mingfx::Vector3::w</a></div><div class="ttdeci">float w() const</div><div class="ttdoc">In homogeneous coordinates, the w coordinate for all vectors is 0.0.</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00115">vector3.h:115</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a256018f34e230d542027d07d14fd6e65"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65">mingfx::Vector3::Vector3</a></div><div class="ttdeci">Vector3(float x, float y, float z)</div><div class="ttdoc">Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a31692a459a8056fe220d115eb5addc88"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88">mingfx::Vector3::Dot</a></div><div class="ttdeci">float Dot(const Vector3 &amp;v) const</div><div class="ttdoc">Returns &quot;this dot v&quot;, for example:</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a38cd4deed7d342464619b34b0ef95bec"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec">mingfx::Vector3::Cross</a></div><div class="ttdeci">Vector3 Cross(const Vector3 &amp;v) const</div><div class="ttdoc">Returns &quot;this cross v&quot;, for example:</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a3caef3c6f24b90730ef70c84ce0e0d71"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71">mingfx::Vector3::ToUnit</a></div><div class="ttdeci">Vector3 ToUnit() const</div><div class="ttdoc">Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' ...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a45d7d211135edd97ca21b047439db485"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485">mingfx::Vector3::Cross</a></div><div class="ttdeci">static Vector3 Cross(const Vector3 &amp;v1, const Vector3 &amp;v2)</div><div class="ttdoc">Returns v1 cross v2.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a489b042bedf8fa329ac05fe905ca1c6f"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f">mingfx::Vector3::Lerp</a></div><div class="ttdeci">static Vector3 Lerp(const Vector3 &amp;a, const Vector3 &amp;b, float alpha)</div><div class="ttdoc">Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a4b696b0d1143d6e30a34a2f889d2ca61"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61">mingfx::Vector3::UnitZ</a></div><div class="ttdeci">static const Vector3 &amp; UnitZ()</div><div class="ttdoc">(0,0,1) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a52bf8582baa71e7d6f80c412687d9714"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714">mingfx::Vector3::Zero</a></div><div class="ttdeci">static const Vector3 &amp; Zero()</div><div class="ttdoc">(0,0,0) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a6e0d09d774615bcfde5645c22a645969"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969">mingfx::Vector3::~Vector3</a></div><div class="ttdeci">virtual ~Vector3()</div><div class="ttdoc">Vector destructor.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a7633dc1625b1f2e6b381438e896b45a3"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3">mingfx::Vector3::Length</a></div><div class="ttdeci">float Length() const</div><div class="ttdoc">Returns the length of the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a78d1dba881575517f0427d55cc418df6"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6">mingfx::Vector3::z</a></div><div class="ttdeci">float z() const</div><div class="ttdoc">Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00112">vector3.h:112</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a7f57af8bbecbc793fa17def4521de4dd"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd">mingfx::Vector3::Vector3</a></div><div class="ttdeci">Vector3()</div><div class="ttdoc">Default constructor to create zero vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a85486d0a355417fe4b41fa64146c9e98"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98">mingfx::Vector3::operator==</a></div><div class="ttdeci">bool operator==(const Vector3 &amp;v) const</div><div class="ttdoc">Check for &quot;equality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a8d31e433d1ac04aaceea1b1dcd1643df"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df">mingfx::Vector3::UnitY</a></div><div class="ttdeci">static const Vector3 &amp; UnitY()</div><div class="ttdoc">(0,1,0) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a8dafc21c64a4964bac27519972d909b6"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6">mingfx::Vector3::Lerp</a></div><div class="ttdeci">Vector3 Lerp(const Vector3 &amp;b, float alpha) const</div><div class="ttdoc">Linear interpolation between this vector and another. Alpha=0.0 returns this vector,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a95b274c7a5ff118af20bc71682c6b1f1"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1">mingfx::Vector3::Vector3</a></div><div class="ttdeci">Vector3(float *v)</div><div class="ttdoc">Constructs a vector given a pointer to x,y,z data.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_a9b8e9ecbe10477adec527842f62d0dca"><div class="ttname"><a href="classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca">mingfx::Vector3::Normalize</a></div><div class="ttdeci">void Normalize()</div><div class="ttdoc">Normalizes the vector by making it unit length.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aa37b1fc4b1df9f72726d981c08cd0d1b"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b">mingfx::Vector3::operator[]</a></div><div class="ttdeci">float operator[](const int i) const</div><div class="ttdoc">Read only access to the ith coordinate of the vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aa5b1c05c285fad7f2709f6f351a63608"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608">mingfx::Vector3::operator=</a></div><div class="ttdeci">Vector3 &amp; operator=(const Vector3 &amp;v)</div><div class="ttdoc">Vector assignment operator.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aa7ddfd662e866c019a772ba66eae7331"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331">mingfx::Vector3::value_ptr</a></div><div class="ttdeci">const float * value_ptr() const</div><div class="ttdoc">Returns a const pointer to the raw data array.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_ab93acb916c310920b9c011159eaaa016"><div class="ttname"><a href="classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016">mingfx::Vector3::operator!=</a></div><div class="ttdeci">bool operator!=(const Vector3 &amp;v) const</div><div class="ttdoc">Check for &quot;inequality&quot;, taking floating point imprecision into account.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_abcdda4627b24af879aba38d4fc0e6f71"><div class="ttname"><a href="classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71">mingfx::Vector3::operator[]</a></div><div class="ttdeci">float &amp; operator[](const int i)</div><div class="ttdoc">Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coo...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_ac380342bfa614c9a3babe1efd14d2cf4"><div class="ttname"><a href="classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4">mingfx::Vector3::x</a></div><div class="ttdeci">float x() const</div><div class="ttdoc">Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00104">vector3.h:104</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_ae8d822fdea67f63580b4e1f78f5b8922"><div class="ttname"><a href="classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922">mingfx::Vector3::UnitX</a></div><div class="ttdeci">static const Vector3 &amp; UnitX()</div><div class="ttdoc">(1,0,0) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aeb74fbc0a970b40abb0db8f8e490ee17"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17">mingfx::Vector3::y</a></div><div class="ttdeci">float y() const</div><div class="ttdoc">Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....</div><div class="ttdef"><b>Definition:</b> <a href="vector3_8h_source.html#l00108">vector3.h:108</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_aeff0177e2111139469b60733248fad8d"><div class="ttname"><a href="classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d">mingfx::Vector3::Normalize</a></div><div class="ttdeci">static Vector3 Normalize(const Vector3 &amp;v)</div><div class="ttdoc">Returns a new vector that is the unit version of v.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_af6100965af7770f833dbf0c9f30f4fdd"><div class="ttname"><a href="classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd">mingfx::Vector3::Vector3</a></div><div class="ttdeci">Vector3(const Vector3 &amp;v)</div><div class="ttdoc">Copy constructor for vector.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector3_html_af71b12760516a9cc4837ba9e1dee28db"><div class="ttname"><a href="classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db">mingfx::Vector3::One</a></div><div class="ttdeci">static const Vector3 &amp; One()</div><div class="ttdoc">(1,1,1) - a shortcut for a special vector that is frequently needed</div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="anamespacemingfx_html_a2f5a225a54f07164d5172a3721a3aee6"><div class="ttname"><a href="namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6">mingfx::operator-</a></div><div class="ttdeci">Quaternion operator-(const Quaternion &amp;q)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a3c3b45ed6edf3fe76f98a7fd165dca03"><div class="ttname"><a href="namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03">mingfx::operator+</a></div><div class="ttdeci">AABB operator+(const AABB &amp;A, const AABB &amp;B)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a444ae88d836b913ac8307fbf4357f7ed"><div class="ttname"><a href="namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed">mingfx::operator/</a></div><div class="ttdeci">Quaternion operator/(const Quaternion &amp;q, const float s)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6bc967741341f4f318a505d884192906"><div class="ttname"><a href="namespacemingfx.html#a6bc967741341f4f318a505d884192906">mingfx::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_a6eb31e6e81c6e29144799be4c9db404d"><div class="ttname"><a href="namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d">mingfx::operator&gt;&gt;</a></div><div class="ttdeci">std::istream &amp; operator&gt;&gt;(std::istream &amp;is, Color &amp;c)</div></div>
+<div class="ttc" id="anamespacemingfx_html_ae5708e414f585dde2a5418ddae259a57"><div class="ttname"><a href="namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57">mingfx::operator*</a></div><div class="ttdeci">Matrix4 operator*(const Matrix4 &amp;m, const float &amp;s)</div><div class="ttdoc">Multiply matrix and scalar, returns the new matrix.</div></div>
+<div class="ttc" id="apoint3_8h_html"><div class="ttname"><a href="point3_8h.html">point3.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dev/MinGfx/docs/index.html b/dev/MinGfx/docs/index.html
new file mode 100644
index 0000000..7252082
--- /dev/null
+++ b/dev/MinGfx/docs/index.html
@@ -0,0 +1,2 @@
+<!-- redirect to load the index.html file generated by doxygen at html/index.html -->
+<meta http-equiv="REFRESH" content="0;URL=html/index.html">