Parcourir la source

Improve web examples -IN PROGRESS-

Ray il y a 8 ans
Parent
commit
50bc77ed96
53 fichiers modifiés avec 2585 ajouts et 341 suppressions
  1. 1 1
      docs/examples/web/audio_music_stream.c
  2. 1 1
      docs/examples/web/audio_music_stream.js
  3. 1 1
      docs/examples/web/audio_sound_loading.js
  4. 1 1
      docs/examples/web/core_3d_camera_first_person.c
  5. 0 0
      docs/examples/web/core_3d_camera_first_person.js
  6. 2 3
      docs/examples/web/core_3d_camera_free.c
  7. 15 22
      docs/examples/web/core_3d_camera_free.js
  8. 1 1
      docs/examples/web/core_3d_picking.c
  9. 1 1
      docs/examples/web/core_3d_picking.js
  10. 0 1
      docs/examples/web/core_basic_window.c
  11. 1 1
      docs/examples/web/core_world_screen.c
  12. 0 0
      docs/examples/web/core_world_screen.js
  13. 5 5
      docs/examples/web/makefile
  14. 1 1
      docs/examples/web/models_billboard.c
  15. 1 1
      docs/examples/web/models_billboard.js
  16. 1 1
      docs/examples/web/models_cubicmap.js
  17. 1 1
      docs/examples/web/models_heightmap.js
  18. 1 1
      docs/examples/web/models_obj_loading.js
  19. 182 140
      docs/examples/web/models_ray_picking.c
  20. 554 0
      docs/examples/web/models_ray_picking.data
  21. 190 1
      docs/examples/web/models_ray_picking.js
  22. BIN
      docs/examples/web/resources/fonts/KAISG.ttf
  23. 188 0
      docs/examples/web/resources/fonts/pixantiqua.fnt
  24. BIN
      docs/examples/web/resources/fonts/pixantiqua_0.png
  25. 456 0
      docs/examples/web/resources/model/lowpoly-tower.obj
  26. BIN
      docs/examples/web/resources/model/lowpoly-tower.png
  27. BIN
      docs/examples/web/resources/ps3.png
  28. BIN
      docs/examples/web/resources/xbox.png
  29. BIN
      docs/examples/web/shaders_shapes_textures.data
  30. 3 1
      docs/examples/web/shaders_shapes_textures.js
  31. 43 1
      docs/examples/web/text_bmfont_ttf.data
  32. 74 3
      docs/examples/web/text_bmfont_ttf.js
  33. 61 32
      docs/examples/web/text_bmfont_unordered.c
  34. 213 0
      docs/examples/web/text_bmfont_unordered.data
  35. 190 1
      docs/examples/web/text_bmfont_unordered.js
  36. 1 1
      docs/examples/web/text_font_select.js
  37. 1 1
      docs/examples/web/text_rbmf_fonts.js
  38. 1 1
      docs/examples/web/text_sprite_fonts.js
  39. 120 83
      docs/examples/web/text_ttf_loading.c
  40. BIN
      docs/examples/web/text_ttf_loading.data
  41. 262 20
      docs/examples/web/text_ttf_loading.js
  42. 0 0
      docs/examples/web/textures_formats_loading.js
  43. 1 1
      docs/examples/web/textures_image_drawing.js
  44. 1 1
      docs/examples/web/textures_image_loading.js
  45. 1 1
      docs/examples/web/textures_image_processing.js
  46. 1 1
      docs/examples/web/textures_logo_raylib.js
  47. 1 1
      docs/examples/web/textures_particles_trail_blending.c
  48. 1 1
      docs/examples/web/textures_particles_trail_blending.js
  49. 1 1
      docs/examples/web/textures_raw_data.js
  50. 1 1
      docs/examples/web/textures_rectangle.js
  51. 1 1
      docs/examples/web/textures_srcrec_dstrec.js
  52. 0 1
      docs/examples/web/textures_to_image.c
  53. 3 3
      docs/examples/web/textures_to_image.js

+ 1 - 1
docs/examples/web/audio_music_stream.c

@@ -4,7 +4,7 @@
 *
 *   NOTE: This example requires OpenAL Soft library installed
 *
-*   This example has been created using raylib 1.3 (www.raylib.com)
+*   This example has been created using raylib 1.7 (www.raylib.com)
 *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
 *
 *   Copyright (c) 2015 Ramon Santamaria (@raysan5)

+ 1 - 1
docs/examples/web/audio_music_stream.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'audio', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 1, "start": 0, "crunched": 0, "end": 506938, "filename": "/resources/audio/guitar_noodling.ogg"}], "remote_package_size": 506938, "package_uuid": "7234e469-90de-4413-8a21-6025f306c05f"});
+ loadPackage({"files": [{"audio": 1, "start": 0, "crunched": 0, "end": 506938, "filename": "/resources/audio/guitar_noodling.ogg"}], "remote_package_size": 506938, "package_uuid": "9de29365-b1e1-4689-9d31-b95e29ce0312"});
 
 })();
 

+ 1 - 1
docs/examples/web/audio_sound_loading.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'audio', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 1, "start": 0, "crunched": 0, "end": 6246, "filename": "/resources/audio/weird.wav"}, {"audio": 1, "start": 6246, "crunched": 0, "end": 63574, "filename": "/resources/audio/tanatana.ogg"}], "remote_package_size": 63574, "package_uuid": "ac0b8b01-6644-4217-8a43-cdb652585250"});
+ loadPackage({"files": [{"audio": 1, "start": 0, "crunched": 0, "end": 6246, "filename": "/resources/audio/weird.wav"}, {"audio": 1, "start": 6246, "crunched": 0, "end": 63574, "filename": "/resources/audio/tanatana.ogg"}], "remote_package_size": 63574, "package_uuid": "504f90a1-2c55-47ff-9400-0508e5042415"});
 
 })();
 

+ 1 - 1
docs/examples/web/core_3d_camera_first_person.c

@@ -24,7 +24,7 @@ int screenWidth = 800;
 int screenHeight = 450;
 
 // Define the camera to look into our 3d world (position, target, up vector)
-Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 60.0f };
+Camera camera = {{ 4.0f, 2.0f, 4.0f }, { 0.0f, 1.8f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 60.0f };
 
 // Generates some random columns
 float heights[MAX_COLUMNS];

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
docs/examples/web/core_3d_camera_first_person.js


+ 2 - 3
docs/examples/web/core_3d_camera_free.c

@@ -2,7 +2,7 @@
 *
 *   raylib [core] example - Initialize 3d camera free (adapted for HTML5 platform)
 *
-*   This example has been created using raylib 1.3 (www.raylib.com)
+*   This example has been created using raylib 1.7 (www.raylib.com)
 *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
 *
 *   Copyright (c) 2015 Ramon Santamaria (@raysan5)
@@ -41,8 +41,7 @@ int main()
     InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free");
 
     // Define the camera to look into our 3d world
-    Camera camera;
-    camera.position = (Vector3){ 0.0f, 10.0f, 10.0f };  // Camera position
+    camera.position = (Vector3){ 10.0f, 10.0f, 10.0f };  // Camera position
     camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };      // Camera looking at point
     camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target)
     camera.fovy = 45.0f;                                // Camera field-of-view Y

+ 15 - 22
docs/examples/web/core_3d_camera_free.js

@@ -7103,29 +7103,22 @@ function getTempRet0() {
 }
 
 function _main() {
- var $$byval_copy = 0, $$sroa$03$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx1 = 0, $$sroa$29$0$$sroa_idx10 = 0, $$sroa$3$0$$sroa_idx2 = 0, $$sroa$311$0$$sroa_idx12 = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
+ var $0 = 0, $1 = 0, $camera$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  sp = STACKTOP;
- STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
- $$byval_copy = sp + 40|0;
- $0 = sp;
- $1 = HEAP32[2]|0;
- $2 = HEAP32[3]|0;
- _InitWindow($1,$2,3396);
- HEAPF32[$0>>2] = 0.0;
- $$sroa$29$0$$sroa_idx10 = ((($0)) + 4|0);
- HEAPF32[$$sroa$29$0$$sroa_idx10>>2] = 10.0;
- $$sroa$311$0$$sroa_idx12 = ((($0)) + 8|0);
- HEAPF32[$$sroa$311$0$$sroa_idx12>>2] = 10.0;
- $$sroa$03$0$$sroa_idx = ((($0)) + 12|0);
- $$sroa$2$0$$sroa_idx1 = ((($0)) + 28|0);
- ;HEAP32[$$sroa$03$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$03$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$03$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$03$0$$sroa_idx+12>>2]=0|0;
- HEAPF32[$$sroa$2$0$$sroa_idx1>>2] = 1.0;
- $$sroa$3$0$$sroa_idx2 = ((($0)) + 32|0);
- HEAPF32[$$sroa$3$0$$sroa_idx2>>2] = 0.0;
- $3 = ((($0)) + 36|0);
- HEAPF32[$3>>2] = 45.0;
- dest=$$byval_copy; src=$0; stop=dest+40|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- _SetCameraMode($$byval_copy,1);
+ STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(48|0);
+ $camera$byval_copy = sp;
+ $0 = HEAP32[2]|0;
+ $1 = HEAP32[3]|0;
+ _InitWindow($0,$1,3396);
+ HEAPF32[3535] = 10.0;
+ HEAPF32[(14144)>>2] = 10.0;
+ HEAPF32[(14148)>>2] = 10.0;
+ ;HEAP32[(14152)>>2]=0|0;HEAP32[(14152)+4>>2]=0|0;HEAP32[(14152)+8>>2]=0|0;HEAP32[(14152)+12>>2]=0|0;
+ HEAPF32[(14168)>>2] = 1.0;
+ HEAPF32[(14172)>>2] = 0.0;
+ HEAPF32[(14176)>>2] = 45.0;
+ dest=$camera$byval_copy; src=14140; stop=dest+40|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ _SetCameraMode($camera$byval_copy,1);
  _emscripten_set_main_loop((1|0),0,1);
  _CloseWindow();
  STACKTOP = sp;return 0;

+ 1 - 1
docs/examples/web/core_3d_picking.c

@@ -45,7 +45,7 @@ int main()
     //--------------------------------------------------------------------------------------
     InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking");
 	
-    camera.position = (Vector3){ 0.0f, 10.0f, 10.0f };  // Camera position
+    camera.position = (Vector3){ 10.0f, 10.0f, 10.0f };  // Camera position
     camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };      // Camera looking at point
     camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target)
     camera.fovy = 45.0f;                                // Camera field-of-view Y

+ 1 - 1
docs/examples/web/core_3d_picking.js

@@ -7110,7 +7110,7 @@ function _main() {
  $0 = HEAP32[2]|0;
  $1 = HEAP32[3]|0;
  _InitWindow($0,$1,3548);
- HEAPF32[3541] = 0.0;
+ HEAPF32[3541] = 10.0;
  HEAPF32[(14168)>>2] = 10.0;
  HEAPF32[(14172)>>2] = 10.0;
  ;HEAP32[(14176)>>2]=0|0;HEAP32[(14176)+4>>2]=0|0;HEAP32[(14176)+8>>2]=0|0;HEAP32[(14176)+12>>2]=0|0;

+ 0 - 1
docs/examples/web/core_basic_window.c

@@ -25,7 +25,6 @@
 int screenWidth = 800;
 int screenHeight = 450;
 
-
 //----------------------------------------------------------------------------------
 // Module Functions Declaration
 //----------------------------------------------------------------------------------

+ 1 - 1
docs/examples/web/core_world_screen.c

@@ -22,7 +22,7 @@ int screenWidth = 800;
 int screenHeight = 450;
 
 // Define the camera to look into our 3d world
-Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }};
+Camera camera = {{ 8.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
 
 Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
 

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
docs/examples/web/core_world_screen.js


+ 5 - 5
docs/examples/web/makefile

@@ -415,7 +415,7 @@ text_sprite_fonts: text_sprite_fonts.c
 
 # compile [text] example - bmfonts and ttf loading
 text_bmfont_ttf: text_bmfont_ttf.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/bmfont.fnt --preload-file resources/fonts/pixantiqua.ttf
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/bmfont.fnt --preload-file resources/fonts/bmfont.png --preload-file resources/fonts/pixantiqua.ttf -s ALLOW_MEMORY_GROWTH=1
 
 # compile [text] example - raylib bitmap fonts (rBMF)
 text_rbmf_fonts: text_rbmf_fonts.c
@@ -435,11 +435,11 @@ text_writing_anim: text_writing_anim.c
 
 # compile [text] example - text ttf loading
 text_ttf_loading: text_ttf_loading.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/KAISG.ttf -s ALLOW_MEMORY_GROWTH=1
 
 # compile [text] example - text bmfont unordered
 text_bmfont_unordered: text_bmfont_unordered.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/pixantiqua.fnt --preload-file resources/fonts/pixantiqua_0.png
 
 # compile [models] example - basic geometric 3d shapes
 models_geometric_shapes: models_geometric_shapes.c
@@ -471,7 +471,7 @@ models_cubicmap: models_cubicmap.c
 
 # compile [models] example - model ray picking
 models_ray_picking: models_ray_picking.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/model/lowpoly-tower.obj --preload-file resources/model/lowpoly-tower.png
 
 # compile [shaders] example - model shader
 shaders_model_shader: shaders_model_shader.c
@@ -479,7 +479,7 @@ shaders_model_shader: shaders_model_shader.c
     
 # compile [shaders] example - shapes texture shader
 shaders_shapes_textures: shaders_shapes_textures.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/texture_formats/sonic.png --preload-file resources/shaders/glsl100/shapes_base.vs --preload-file resources/shaders/glsl100/shapes_grayscale.fs
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/texture_formats/sonic.png --preload-file resources/shaders/glsl100/base.vs --preload-file resources/shaders/glsl100/grayscale.fs
     
 # compile [shaders] example - custom uniform in shader
 shaders_custom_uniform: shaders_custom_uniform.c

+ 1 - 1
docs/examples/web/models_billboard.c

@@ -22,7 +22,7 @@ int screenWidth = 800;
 int screenHeight = 450;
 
 // Define the camera to look into our 3d world
-Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }};
+Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
 
 Texture2D bill;                                 // Our texture billboard
 Vector3 billPosition = { 0.0f, 2.0f, 0.0f };    // Position where draw billboard

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
docs/examples/web/models_billboard.js


+ 1 - 1
docs/examples/web/models_cubicmap.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 201, "filename": "/resources/cubicmap.png"}, {"audio": 0, "start": 201, "crunched": 0, "end": 37426, "filename": "/resources/cubicmap_atlas.png"}], "remote_package_size": 37426, "package_uuid": "4432e3b6-4d0c-4577-a5e5-91a7d40b7f85"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 201, "filename": "/resources/cubicmap.png"}, {"audio": 0, "start": 201, "crunched": 0, "end": 37426, "filename": "/resources/cubicmap_atlas.png"}], "remote_package_size": 37426, "package_uuid": "ba274e07-1f63-462e-ad99-f84535450721"});
 
 })();
 

+ 1 - 1
docs/examples/web/models_heightmap.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 10920, "filename": "/resources/heightmap.png"}], "remote_package_size": 10920, "package_uuid": "4847ebfd-14d6-4446-ab51-5549afa93bef"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 10920, "filename": "/resources/heightmap.png"}], "remote_package_size": 10920, "package_uuid": "d598b0f0-29de-4f06-992c-f1458b1a4812"});
 
 })();
 

+ 1 - 1
docs/examples/web/models_obj_loading.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'model', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2748249, "filename": "/resources/model/dwarf.obj"}, {"audio": 0, "start": 2748249, "crunched": 0, "end": 4022872, "filename": "/resources/model/dwarf_diffuse.png"}], "remote_package_size": 4022872, "package_uuid": "750abc5f-af45-4d90-afe8-fd10ed333f43"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2748249, "filename": "/resources/model/dwarf.obj"}, {"audio": 0, "start": 2748249, "crunched": 0, "end": 4022872, "filename": "/resources/model/dwarf_diffuse.png"}], "remote_package_size": 4022872, "package_uuid": "6faeef29-8bb8-4e0d-91a9-30ecf3f9b645"});
 
 })();
 

+ 182 - 140
docs/examples/web/models_ray_picking.c

@@ -11,12 +11,51 @@
 ********************************************************************************************/
 
 #include "raylib.h"
-#include "../src/raymath.h"
+#include "raymath.h"
 
 #include <stdio.h>
 #include <float.h>
 
+#if defined(PLATFORM_WEB)
+    #include <emscripten/emscripten.h>
+#endif
 
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+const int screenWidth = 800;
+const int screenHeight = 450;
+
+Camera camera;
+    
+Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
+Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
+
+Ray ray;        // Picking line ray
+
+Model tower;
+Texture2D texture;
+
+Vector3 towerPos = { 0.0f, 0.0f, 0.0f };
+BoundingBox towerBBox;
+bool hitMeshBBox = false;
+bool hitTriangle = false;
+
+// Test triangle
+Vector3 ta = (Vector3){ -25.0, 0.5, 0.0 };    
+Vector3 tb = (Vector3){ -4.0, 2.5, 1.0 };
+Vector3 tc = (Vector3){ -8.0, 6.5, 0.0 };
+
+Vector3 bary = { 0.0f, 0.0f, 0.0f };
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void);     // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
 int main()
 {
     // Initialization
@@ -27,171 +66,174 @@ int main()
     InitWindow(screenWidth, screenHeight, "raylib [models] example - 3d ray picking");
 
     // Define the camera to look into our 3d world
-    Camera camera;
-    camera.position = (Vector3){ 10.0f, 8.0f, 10.0f }; // Camera position
-    camera.target = (Vector3){ 0.0f, 2.3f, 0.0f };      // Camera looking at point
-    camera.up = (Vector3){ 0.0f, 1.6f, 0.0f };          // Camera up vector (rotation towards target)
-    camera.fovy = 45.0f;                                // Camera field-of-view Y
-
-    Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
-    Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
+    camera.position = (Vector3){ 10.0f, 8.0f, 10.0f };          // Camera position
+    camera.target = (Vector3){ 0.0f, 2.3f, 0.0f };              // Camera looking at point
+    camera.up = (Vector3){ 0.0f, 1.6f, 0.0f };                  // Camera up vector (rotation towards target)
+    camera.fovy = 45.0f;                                        // Camera field-of-view Y
+
+    tower = LoadModel("resources/model/lowpoly-tower.obj");     // Load OBJ model
+    texture = LoadTexture("resources/model/lowpoly-tower.png"); // Load model texture
+    tower.material.texDiffuse = texture;                        // Set model diffuse texture
     
-    Ray ray;        // Picking line ray
+    towerBBox = CalculateBoundingBox(tower.mesh);
+
+    SetCameraMode(camera, CAMERA_FREE);     // Set a free camera mode
+
+    SetTargetFPS(60);                       // Set our game to run at 60 frames-per-second
+    //--------------------------------------------------------------------------------------
     
-    Model tower = LoadModel("resources/model/lowpoly-tower.obj");           // Load OBJ model
-    Texture2D texture = LoadTexture("resources/model/lowpoly-tower.png");   // Load model texture
-    tower.material.texDiffuse = texture;                                    // Set model diffuse texture
+#if defined(PLATFORM_WEB)
+    emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+    SetTargetFPS(60);   // Set our game to run at 60 frames-per-second
+    //--------------------------------------------------------------------------------------
     
-    Vector3 towerPos = { 0.0f, 0.0f, 0.0f };                                // Set model position
-    BoundingBox towerBBox = CalculateBoundingBox( tower.mesh );    
-    bool hitMeshBBox = false;
-    bool hitTriangle = false;
+    // Main game loop
+    while (!WindowShouldClose())    // Detect window close button or ESC key
+    {
+        UpdateDrawFrame();
+    }
+#endif
 
-    // Test triangle
-    Vector3 ta = (Vector3){ -25.0, 0.5, 0.0 };    
-    Vector3 tb = (Vector3){ -4.0, 2.5, 1.0 };
-    Vector3 tc = (Vector3){ -8.0, 6.5, 0.0 };
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    UnloadModel(tower);         // Unload model from GPU
+    UnloadTexture(texture);     // Unload texture from GPU
+    
+    CloseWindow();              // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
 
-    Vector3 bary = { 0.0f, 0.0f, 0.0f }; 
+    return 0;
+}
 
-    SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+    // Update
+    //----------------------------------------------------------------------------------
+    UpdateCamera(&camera);          // Update camera
+    
+    // Display information about closest hit
+    RayHitInfo nearestHit;
+    char *hitObjectName = "None";
+    nearestHit.distance = FLT_MAX;
+    nearestHit.hit = false;
+    Color cursorColor = WHITE;
+
+    // Get ray and test against ground, triangle, and mesh
+    ray = GetMouseRay(GetMousePosition(), camera);
+    
+    // Check ray collision aginst ground plane
+    RayHitInfo groundHitInfo = GetCollisionRayGround(ray, 0.0f);
+    
+    if ((groundHitInfo.hit) && (groundHitInfo.distance < nearestHit.distance))
+    {
+        nearestHit = groundHitInfo;
+        cursorColor = GREEN;
+        hitObjectName = "Ground";
+    }
 
-    SetTargetFPS(60);                   // Set our game to run at 60 frames-per-second
-    //--------------------------------------------------------------------------------------
-    // Main game loop
-    while (!WindowShouldClose())        // Detect window close button or ESC key
+    // Check ray collision against test triangle
+    RayHitInfo triHitInfo = GetCollisionRayTriangle(ray, ta, tb, tc);
+    
+    if ((triHitInfo.hit) && (triHitInfo.distance < nearestHit.distance)) 
     {
-        // Update
-        //----------------------------------------------------------------------------------
-        UpdateCamera(&camera);          // Update camera
-        
-        // Display information about closest hit
-        RayHitInfo nearestHit;
-        char *hitObjectName = "None";
-        nearestHit.distance = FLT_MAX;
-        nearestHit.hit = false;
-        Color cursorColor = WHITE;
-
-        // Get ray and test against ground, triangle, and mesh
-        ray = GetMouseRay(GetMousePosition(), camera);
+        nearestHit = triHitInfo;
+        cursorColor = PURPLE;
+        hitObjectName = "Triangle";
+
+        bary = Barycenter(nearestHit.hitPosition, ta, tb, tc);
+        hitTriangle = true;
+    } 
+    else hitTriangle = false;
+
+    RayHitInfo meshHitInfo;
+
+    // Check ray collision against bounding box first, before trying the full ray-mesh test
+    if (CheckCollisionRayBox(ray, towerBBox)) 
+    {
+        hitMeshBBox = true;
         
-        // Check ray collision aginst ground plane
-        RayHitInfo groundHitInfo = GetCollisionRayGround(ray, 0.0f);
+        // Check ray collision against mesh
+        meshHitInfo = GetCollisionRayMesh(ray, &tower.mesh);    
         
-        if ((groundHitInfo.hit) && (groundHitInfo.distance < nearestHit.distance))
+        if ((meshHitInfo.hit) && (meshHitInfo.distance < nearestHit.distance)) 
         {
-            nearestHit = groundHitInfo;
-            cursorColor = GREEN;
-            hitObjectName = "Ground";
+            nearestHit = meshHitInfo;
+            cursorColor = ORANGE;
+            hitObjectName = "Mesh";
         }
-
-        // Check ray collision against test triangle
-        RayHitInfo triHitInfo = GetCollisionRayTriangle(ray, ta, tb, tc);
         
-        if ((triHitInfo.hit) && (triHitInfo.distance < nearestHit.distance)) 
-        {
-            nearestHit = triHitInfo;
-            cursorColor = PURPLE;
-            hitObjectName = "Triangle";
+    } hitMeshBBox = false; 
+    //----------------------------------------------------------------------------------
+    
+    // Draw
+    //----------------------------------------------------------------------------------
+    BeginDrawing();
 
-            bary = Barycenter(nearestHit.hitPosition, ta, tb, tc);
-            hitTriangle = true;
-        } 
-        else hitTriangle = false;
+        ClearBackground(RAYWHITE);
 
-        RayHitInfo meshHitInfo;
+        Begin3dMode(camera);
 
-        // Check ray collision against bounding box first, before trying the full ray-mesh test
-        if (CheckCollisionRayBox(ray, towerBBox)) 
-        {
-            hitMeshBBox = true;
+            // Draw the tower
+            DrawModel(tower, towerPos, 1.0, WHITE);
             
-            // Check ray collision against mesh
-            meshHitInfo = GetCollisionRayMesh(ray, &tower.mesh);    
-            
-            if ((meshHitInfo.hit) && (meshHitInfo.distance < nearestHit.distance)) 
-            {
-                nearestHit = meshHitInfo;
-                cursorColor = ORANGE;
-                hitObjectName = "Mesh";
-            }
-            
-        } hitMeshBBox = false; 
-        //----------------------------------------------------------------------------------
-        
-        // Draw
-        //----------------------------------------------------------------------------------
-        BeginDrawing();
-
-            ClearBackground(RAYWHITE);
+            // Draw the test triangle
+            DrawLine3D(ta, tb, PURPLE);
+            DrawLine3D(tb, tc, PURPLE);
+            DrawLine3D(tc, ta, PURPLE);
 
-            Begin3dMode(camera);
-
-                // Draw the tower
-                DrawModel(tower, towerPos, 1.0, WHITE);
-                
-                // Draw the test triangle
-                DrawLine3D(ta, tb, PURPLE);
-                DrawLine3D(tb, tc, PURPLE);
-                DrawLine3D(tc, ta, PURPLE);
-
-                // Draw the mesh bbox if we hit it
-                if (hitMeshBBox) DrawBoundingBox(towerBBox, LIME);
-
-                // If we hit something, draw the cursor at the hit point
-                if (nearestHit.hit) 
-                {
-                    DrawCube(nearestHit.hitPosition, 0.5, 0.5, 0.5, cursorColor);
-                    DrawCubeWires(nearestHit.hitPosition, 0.5, 0.5, 0.5, YELLOW);
-
-                    Vector3 normalEnd;
-                    normalEnd.x = nearestHit.hitPosition.x + nearestHit.hitNormal.x;
-                    normalEnd.y = nearestHit.hitPosition.y + nearestHit.hitNormal.y;
-                    normalEnd.z = nearestHit.hitPosition.z + nearestHit.hitNormal.z;
-                    
-                    DrawLine3D(nearestHit.hitPosition, normalEnd, YELLOW);
-                }
-
-                DrawRay(ray, MAROON);
-                
-                DrawGrid(100, 1.0f);
-
-            End3dMode();
-            
-            // Draw some debug GUI text
-            DrawText(FormatText("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK);
+            // Draw the mesh bbox if we hit it
+            if (hitMeshBBox) DrawBoundingBox(towerBBox, LIME);
 
+            // If we hit something, draw the cursor at the hit point
             if (nearestHit.hit) 
             {
-                int ypos = 70;
+                DrawCube(nearestHit.hitPosition, 0.5, 0.5, 0.5, cursorColor);
+                DrawCubeWires(nearestHit.hitPosition, 0.5, 0.5, 0.5, YELLOW);
 
-                DrawText(FormatText("Distance: %3.2f", nearestHit.distance), 10, ypos, 10, BLACK);
+                Vector3 normalEnd;
+                normalEnd.x = nearestHit.hitPosition.x + nearestHit.hitNormal.x;
+                normalEnd.y = nearestHit.hitPosition.y + nearestHit.hitNormal.y;
+                normalEnd.z = nearestHit.hitPosition.z + nearestHit.hitNormal.z;
                 
-                DrawText(FormatText("Hit Pos: %3.2f %3.2f %3.2f", 
-                                    nearestHit.hitPosition.x, 
-                                    nearestHit.hitPosition.y, 
-                                    nearestHit.hitPosition.z), 10, ypos + 15, 10, BLACK);
-                                    
-                DrawText(FormatText("Hit Norm: %3.2f %3.2f %3.2f", 
-                                    nearestHit.hitNormal.x, 
-                                    nearestHit.hitNormal.y, 
-                                    nearestHit.hitNormal.z), 10, ypos + 30, 10, BLACK);
-
-                if (hitTriangle) DrawText(FormatText("Barycenter: %3.2f %3.2f %3.2f",  bary.x, bary.y, bary.z), 10, ypos + 45, 10, BLACK);
+                DrawLine3D(nearestHit.hitPosition, normalEnd, YELLOW);
             }
 
-            DrawText("Use Mouse to Move Camera", 10, 430, 10, GRAY);
+            DrawRay(ray, MAROON);
+            
+            DrawGrid(100, 1.0f);
 
-            DrawFPS(10, 10);
+        End3dMode();
+        
+        // Draw some debug GUI text
+        DrawText(FormatText("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK);
 
-        EndDrawing();
-        //----------------------------------------------------------------------------------
-    }
+        if (nearestHit.hit) 
+        {
+            int ypos = 70;
 
-    // De-Initialization
-    //--------------------------------------------------------------------------------------
-    CloseWindow();        // Close window and OpenGL context
-    //--------------------------------------------------------------------------------------
+            DrawText(FormatText("Distance: %3.2f", nearestHit.distance), 10, ypos, 10, BLACK);
+            
+            DrawText(FormatText("Hit Pos: %3.2f %3.2f %3.2f", 
+                                nearestHit.hitPosition.x, 
+                                nearestHit.hitPosition.y, 
+                                nearestHit.hitPosition.z), 10, ypos + 15, 10, BLACK);
+                                
+            DrawText(FormatText("Hit Norm: %3.2f %3.2f %3.2f", 
+                                nearestHit.hitNormal.x, 
+                                nearestHit.hitNormal.y, 
+                                nearestHit.hitNormal.z), 10, ypos + 30, 10, BLACK);
+
+            if (hitTriangle) DrawText(FormatText("Barycenter: %3.2f %3.2f %3.2f",  bary.x, bary.y, bary.z), 10, ypos + 45, 10, BLACK);
+        }
 
-    return 0;
-}
+        DrawText("Use Mouse to Move Camera", 10, 430, 10, GRAY);
+
+        DrawFPS(10, 10);
+
+    EndDrawing();
+    //----------------------------------------------------------------------------------
+}

+ 554 - 0
docs/examples/web/models_ray_picking.data

@@ -0,0 +1,554 @@
+# Blender v2.78 (sub 0) OBJ File: 'lowpoly-tower.blend'
+# www.blender.org
+o Grid
+v -4.000000 0.000000 4.000000
+v -2.327363 0.000000 4.654725
+v 0.000000 0.000000 4.654725
+v 2.327363 0.000000 4.654725
+v 4.000000 0.000000 4.000000
+v -4.654725 0.955085 2.327363
+v -2.000000 0.815050 2.000000
+v 0.000000 0.476341 2.423448
+v 2.000000 0.476341 2.000000
+v 4.654725 0.000000 2.327363
+v -4.654725 1.649076 0.000000
+v -2.423448 1.092402 0.000000
+v 2.423448 0.198579 0.000000
+v 4.654725 0.000000 0.000000
+v -4.654725 1.649076 -2.327363
+v -2.000000 1.092402 -2.000000
+v 0.000000 0.476341 -2.423448
+v 2.000000 -0.012791 -2.000000
+v 4.654725 0.000000 -2.612731
+v -4.000000 0.955085 -4.000000
+v -2.327363 0.955085 -4.654725
+v 0.000000 0.955085 -4.654725
+v 2.327363 0.000000 -4.654725
+v 4.000000 0.000000 -4.000000
+v 2.423448 0.682825 0.000000
+v 2.000000 0.565423 -2.000000
+v -4.654725 -0.020560 2.327363
+v -4.654725 0.000000 0.000000
+v -4.654725 0.000000 -2.327363
+v -4.000000 0.000000 -4.000000
+v -2.327363 0.000000 -4.654725
+v 0.000000 -0.020560 -4.654725
+v 0.000000 0.709880 -1.230535
+v -0.000000 7.395413 0.000000
+v 0.962071 0.709880 -0.767226
+v -0.533909 0.709880 1.108674
+v -1.199683 0.709880 0.273820
+v -0.962071 0.709880 -0.767226
+v 1.506076 0.859071 1.325337
+v 1.199683 0.709880 0.273820
+v 0.533909 0.709880 1.108674
+v 0.000000 1.875340 -1.177842
+v -0.000000 2.293973 -0.649884
+v -0.000000 4.365648 -0.627970
+v 0.000000 6.167194 -0.942957
+v 0.000000 6.232434 -1.708677
+v 1.335898 6.232434 -1.065343
+v 0.737233 6.167195 -0.587924
+v 0.490966 4.365648 -0.391533
+v 0.508100 2.293973 -0.405196
+v 0.920874 1.875340 -0.734372
+v -0.741367 6.232434 1.539465
+v -0.409133 6.167195 0.849574
+v -0.272466 4.365648 0.565781
+v -0.281974 2.293973 0.585526
+v -0.511047 1.875340 1.061199
+v -1.665837 6.232434 0.380217
+v -0.919314 6.167195 0.209828
+v -0.612225 4.365648 0.139736
+v -0.633590 2.293973 0.144613
+v -1.148311 1.875340 0.262095
+v -1.335898 6.232434 -1.065343
+v -0.737233 6.167195 -0.587924
+v -0.490967 4.365648 -0.391533
+v -0.508100 2.293973 -0.405196
+v -0.920874 1.875340 -0.734372
+v 1.665837 6.232434 0.380216
+v 0.919315 6.167195 0.209828
+v 0.612225 4.365648 0.139736
+v 0.633590 2.293973 0.144613
+v 1.148311 1.875340 0.262095
+v 0.741367 6.232434 1.539465
+v 0.409133 6.167195 0.849575
+v 0.272466 4.365648 0.565781
+v 0.281974 2.293973 0.585526
+v 0.511046 1.875340 1.061199
+v 0.000000 5.012550 -0.969733
+v 0.758168 5.012550 -0.604618
+v -0.420751 5.012550 0.873699
+v -0.945419 5.012550 0.215786
+v -0.758168 5.012550 -0.604618
+v 0.945419 5.012550 0.215786
+v 0.420751 5.012550 0.873699
+vt 0.0523 0.5444
+vt 0.1817 0.4284
+vt 0.1641 0.5859
+vt 0.0177 0.4451
+vt 0.1526 0.3090
+vt 0.0189 0.1737
+vt 0.0188 0.3088
+vt 0.0561 0.0762
+vt 0.1757 0.1924
+vt 0.3024 0.4534
+vt 0.3071 0.5902
+vt 0.3413 0.2459
+vt 0.2906 0.1614
+vt 0.4116 0.1801
+vt 0.2834 0.3774
+vt 0.1526 0.0362
+vt 0.2917 0.1622
+vt 0.4446 0.5865
+vt 0.4443 0.2989
+vt 0.3711 0.3021
+vt 0.4396 0.0275
+vt 0.4094 0.1829
+vt 0.4219 0.4255
+vt 0.5474 0.5381
+vt 0.5811 0.4376
+vt 0.5715 0.1505
+vt 0.5811 0.2997
+vt 0.5272 0.0533
+vt 0.2208 0.2194
+vt 0.3456 0.3610
+vt 0.2878 0.0321
+vt 0.2321 0.3392
+vt 0.4432 0.0177
+vt 0.7347 0.7934
+vt 0.7382 0.7595
+vt 0.8982 0.7768
+vt 0.6169 0.7595
+vt 0.6139 0.7879
+vt 0.4951 0.7634
+vt 0.1551 0.6832
+vt 0.2925 0.6268
+vt 0.2925 0.6832
+vt 0.7795 0.6832
+vt 0.6421 0.6268
+vt 0.7795 0.6255
+vt 0.5046 0.7241
+vt 0.6421 0.7241
+vt 0.3986 0.6268
+vt 0.3986 0.6832
+vt 0.5046 0.6268
+vt 0.0177 0.6268
+vt 0.1551 0.6255
+vt 0.8856 0.6268
+vt 0.1899 0.9579
+vt 0.1194 0.8696
+vt 0.2324 0.8696
+vt 0.1899 0.7813
+vt 0.0943 0.7595
+vt 0.0177 0.8206
+vt 0.0177 0.9186
+vt 0.0943 0.9797
+vt 0.2793 0.2349
+vt 0.2304 0.2758
+vt 0.6597 0.0177
+vt 0.6954 0.0993
+vt 0.6367 0.0768
+vt 0.7558 0.0777
+vt 0.7238 0.0440
+vt 0.8840 0.1330
+vt 0.7385 0.1141
+vt 0.9157 0.0886
+vt 0.9781 0.1232
+vt 0.9224 0.1276
+vt 0.2677 0.8141
+vt 0.3463 0.8037
+vt 0.3086 0.8339
+vt 0.6387 0.3550
+vt 0.7130 0.3801
+vt 0.6596 0.4053
+vt 0.7245 0.3245
+vt 0.6919 0.3383
+vt 0.8655 0.3566
+vt 0.7351 0.3577
+vt 0.9770 0.3365
+vt 0.9078 0.3751
+vt 0.9174 0.3282
+vt 0.2677 0.9018
+vt 0.3086 0.8821
+vt 0.6803 0.2948
+vt 0.6251 0.3035
+vt 0.7194 0.2854
+vt 0.8764 0.2832
+vt 0.9221 0.2861
+vt 0.3363 0.9565
+vt 0.3464 0.9122
+vt 0.6751 0.2482
+vt 0.6178 0.2499
+vt 0.7179 0.2431
+vt 0.9823 0.2484
+vt 0.9247 0.2452
+vt 0.3935 0.9014
+vt 0.6755 0.1996
+vt 0.6164 0.1941
+vt 0.7201 0.1992
+vt 0.8793 0.2446
+vt 0.9823 0.2060
+vt 0.9257 0.2051
+vt 0.4598 0.8580
+vt 0.4144 0.8579
+vt 0.6819 0.1498
+vt 0.6222 0.1361
+vt 0.7266 0.1555
+vt 0.8831 0.1684
+vt 0.9252 0.1659
+vt 0.4218 0.7790
+vt 0.3934 0.8145
+vt 0.3363 0.7595
+vt 0.8815 0.2060
+vt 0.8720 0.3208
+vt 0.8825 0.1012
+vt 0.9735 0.0816
+vt 0.9718 0.3817
+vt 0.9807 0.2918
+vt 0.4218 0.9370
+vt 0.9810 0.1644
+vn 0.1035 0.8806 0.4623
+vn 0.0964 0.9481 0.3030
+vn 0.0000 0.9780 0.2088
+vn 0.0659 0.9835 0.1683
+vn 0.2325 0.9320 0.2779
+vn 0.0553 0.9960 -0.0702
+vn 0.2827 0.9564 0.0728
+vn 0.1873 0.9776 -0.0961
+vn 0.2421 0.9703 0.0000
+vn 0.0921 0.9772 -0.1913
+vn -0.0277 0.9947 -0.0993
+vn 0.2308 0.9274 -0.2944
+vn 0.2771 0.9572 -0.0837
+vn 0.3724 0.9074 0.1947
+vn 0.0777 0.9770 -0.1985
+vn -0.1094 0.9539 0.2794
+vn 0.0364 0.9844 0.1721
+vn 0.1683 0.9835 0.0659
+vn 0.0674 0.9901 0.1230
+vn 0.4338 0.8823 0.1829
+vn 0.2845 0.9565 0.0649
+vn 0.0886 0.9961 0.0000
+vn 0.2000 0.9789 0.0424
+vn 0.1417 0.9830 0.1171
+vn 0.3021 0.9524 0.0412
+vn -0.0193 0.9986 -0.0493
+vn 0.0000 0.9777 0.2098
+vn 0.0005 0.9781 -0.2083
+vn 0.1879 0.9782 -0.0887
+vn 0.2249 0.0000 0.9744
+vn 0.9783 0.0000 -0.2071
+vn 0.9783 0.0000 0.2071
+vn 0.0000 0.0000 -1.0000
+vn -1.0000 0.0000 0.0000
+vn -0.3645 0.0000 -0.9312
+vn -0.9312 0.0000 -0.3645
+vn -0.9312 0.0000 0.3645
+vn 0.2615 0.7979 -0.5431
+vn 0.5877 0.7979 -0.1341
+vn 0.4713 0.7979 0.3758
+vn -0.0000 0.7979 0.6028
+vn -0.4713 0.7979 0.3758
+vn -0.5877 0.7979 -0.1341
+vn -0.2615 0.7979 -0.5431
+vn -0.1285 0.9864 -0.1025
+vn 0.0929 0.8937 0.4389
+vn -0.4335 0.0407 -0.9002
+vn -0.2867 0.7507 -0.5952
+vn -0.4339 0.0095 -0.9009
+vn -0.4338 0.0209 -0.9008
+vn -0.0408 -0.9956 -0.0848
+vn -0.9741 0.0407 -0.2223
+vn -0.6441 0.7507 -0.1470
+vn -0.9749 0.0095 -0.2225
+vn -0.9747 0.0209 -0.2225
+vn -0.0918 -0.9956 -0.0209
+vn -0.7812 0.0407 0.6230
+vn -0.5165 0.7507 0.4119
+vn -0.7818 0.0095 0.6235
+vn -0.7817 0.0209 0.6234
+vn -0.0736 -0.9956 0.0587
+vn -0.0000 0.0407 0.9992
+vn 0.0000 0.7507 0.6607
+vn 0.0000 0.0095 1.0000
+vn -0.0000 0.0209 0.9998
+vn -0.0000 -0.9956 0.0941
+vn 0.7812 0.0407 0.6230
+vn 0.5165 0.7507 0.4119
+vn 0.7818 0.0095 0.6235
+vn 0.7817 0.0209 0.6234
+vn 0.0736 -0.9956 0.0587
+vn 0.9741 0.0407 -0.2223
+vn 0.6441 0.7507 -0.1470
+vn 0.9749 0.0095 -0.2225
+vn 0.9747 0.0209 -0.2225
+vn 0.0918 -0.9956 -0.0209
+vn 0.4335 0.0407 -0.9002
+vn 0.2867 0.7507 -0.5952
+vn 0.4339 0.0095 -0.9009
+vn 0.4338 0.0209 -0.9008
+vn 0.0408 -0.9956 -0.0848
+vn 0.3918 -0.4298 -0.8135
+vn 0.8803 -0.4298 -0.2009
+vn 0.7059 -0.4298 0.5630
+vn -0.0000 -0.4298 0.9029
+vn -0.7059 -0.4298 0.5630
+vn -0.8803 -0.4298 -0.2009
+vn -0.3918 -0.4298 -0.8135
+vn 0.0210 0.9998 -0.0048
+vn 0.0482 0.9981 -0.0385
+vn -0.0166 0.9914 -0.1301
+vn -0.0090 0.9904 -0.1379
+vn 0.2820 0.9576 0.0597
+vn -0.0000 0.9846 0.1749
+vn -0.0921 0.9772 -0.1913
+vn -0.1734 0.9794 0.1036
+s off
+f 1/1/1 7/2/1 6/3/1
+f 2/4/2 8/5/2 7/2/2
+f 4/6/3 8/5/3 3/7/3
+f 5/8/4 9/9/4 4/6/4
+f 6/3/5 12/10/5 11/11/5
+f 35/12/6 25/13/6 26/14/6
+f 7/2/7 37/15/7 12/10/7
+f 10/16/8 13/17/8 9/9/8
+f 12/10/9 15/18/9 11/11/9
+f 35/12/10 17/19/10 33/20/10
+f 13/17/11 19/21/11 18/22/11
+f 16/23/12 20/24/12 15/18/12
+f 17/19/13 21/25/13 16/23/13
+f 17/19/14 23/26/14 22/27/14
+f 26/14/15 24/28/15 23/26/15
+f 1/1/16 2/4/16 7/2/16
+f 2/4/3 3/7/3 8/5/3
+f 4/6/17 9/9/17 8/5/17
+f 5/8/18 10/16/18 9/9/18
+f 6/3/19 7/2/19 12/10/19
+f 25/13/20 39/29/20 9/9/20
+f 38/30/21 12/10/21 37/15/21
+f 10/16/22 14/31/22 13/17/22
+f 12/10/23 16/23/23 15/18/23
+f 8/5/24 36/32/24 7/2/24
+f 38/30/25 17/19/25 16/23/25
+f 13/17/22 14/31/22 19/21/22
+f 16/23/26 21/25/26 20/24/26
+f 17/19/27 22/27/27 21/25/27
+f 17/19/28 26/14/28 23/26/28
+f 26/14/29 19/33/29 24/28/29
+f 26/34/30 18/35/30 19/36/30
+f 26/34/31 13/37/31 18/35/31
+f 25/38/32 9/39/32 13/37/32
+f 22/40/33 31/41/33 21/42/33
+f 6/43/34 28/44/34 27/45/34
+f 15/46/34 28/44/34 11/47/34
+f 21/42/35 30/48/35 20/49/35
+f 20/49/36 29/50/36 15/46/36
+f 22/40/33 23/51/33 32/52/33
+f 6/43/37 27/45/37 1/53/37
+f 46/54/38 34/55/38 47/56/38
+f 47/56/39 34/55/39 67/57/39
+f 67/57/40 34/55/40 72/58/40
+f 72/58/41 34/55/41 52/59/41
+f 52/59/42 34/55/42 57/60/42
+f 57/60/43 34/55/43 62/61/43
+f 62/61/44 34/55/44 46/54/44
+f 40/62/45 41/63/45 39/29/45
+f 39/29/46 8/5/46 9/9/46
+f 38/64/47 42/65/47 33/66/47
+f 65/67/48 42/65/48 66/68/48
+f 65/67/49 44/69/49 43/70/49
+f 81/71/50 45/72/50 77/73/50
+f 62/74/51 45/75/51 63/76/51
+f 37/77/52 66/78/52 38/79/52
+f 60/80/53 66/78/53 61/81/53
+f 60/80/54 64/82/54 65/83/54
+f 58/84/55 81/85/55 80/86/55
+f 57/87/56 63/76/56 58/88/56
+f 56/89/57 37/77/57 36/90/57
+f 55/91/58 61/81/58 56/89/58
+f 54/92/59 60/80/59 55/91/59
+f 79/93/60 58/84/60 80/86/60
+f 52/94/61 58/88/61 53/95/61
+f 76/96/62 36/90/62 41/97/62
+f 75/98/63 56/89/63 76/96/63
+f 75/98/64 54/92/64 55/91/64
+f 73/99/65 79/93/65 83/100/65
+f 73/101/66 52/94/66 53/95/66
+f 71/102/67 41/97/67 40/103/67
+f 70/104/68 76/96/68 71/102/68
+f 70/104/69 74/105/69 75/98/69
+f 68/106/70 83/100/70 82/107/70
+f 67/108/71 73/101/71 68/109/71
+f 51/110/72 40/103/72 35/111/72
+f 50/112/73 71/102/73 51/110/73
+f 49/113/74 70/104/74 50/112/74
+f 78/114/75 68/106/75 82/107/75
+f 47/115/76 68/109/76 48/116/76
+f 42/65/77 35/111/77 33/66/77
+f 43/70/78 51/110/78 42/65/78
+f 44/69/79 50/112/79 43/70/79
+f 45/72/80 78/114/80 77/73/80
+f 46/117/81 48/116/81 45/75/81
+f 44/69/82 78/114/82 49/113/82
+f 49/113/83 82/107/83 69/118/83
+f 82/107/84 74/105/84 69/118/84
+f 83/100/85 54/92/85 74/105/85
+f 79/93/86 59/119/86 54/92/86
+f 80/86/87 64/82/87 59/119/87
+f 64/120/88 77/73/88 44/69/88
+f 35/12/89 40/62/89 25/13/89
+f 7/2/90 36/32/90 37/15/90
+f 35/12/91 26/14/91 17/19/91
+f 25/13/92 40/62/92 39/29/92
+f 38/30/93 16/23/93 12/10/93
+f 8/5/94 41/63/94 36/32/94
+f 38/30/95 33/20/95 17/19/95
+f 26/34/31 25/38/31 13/37/31
+f 22/40/33 32/52/33 31/41/33
+f 6/43/34 11/47/34 28/44/34
+f 15/46/34 29/50/34 28/44/34
+f 21/42/35 31/41/35 30/48/35
+f 20/49/36 30/48/36 29/50/36
+f 39/29/96 41/63/96 8/5/96
+f 38/64/47 66/68/47 42/65/47
+f 65/67/48 43/70/48 42/65/48
+f 65/67/49 64/120/49 44/69/49
+f 81/71/50 63/121/50 45/72/50
+f 62/74/51 46/117/51 45/75/51
+f 37/77/52 61/81/52 66/78/52
+f 60/80/53 65/83/53 66/78/53
+f 60/80/54 59/119/54 64/82/54
+f 58/84/55 63/122/55 81/85/55
+f 57/87/56 62/74/56 63/76/56
+f 56/89/57 61/81/57 37/77/57
+f 55/91/58 60/80/58 61/81/58
+f 54/92/59 59/119/59 60/80/59
+f 79/93/60 53/123/60 58/84/60
+f 52/94/61 57/87/61 58/88/61
+f 76/96/62 56/89/62 36/90/62
+f 75/98/63 55/91/63 56/89/63
+f 75/98/64 74/105/64 54/92/64
+f 73/99/65 53/123/65 79/93/65
+f 73/101/66 72/124/66 52/94/66
+f 71/102/67 76/96/67 41/97/67
+f 70/104/68 75/98/68 76/96/68
+f 70/104/69 69/118/69 74/105/69
+f 68/106/70 73/99/70 83/100/70
+f 67/108/71 72/124/71 73/101/71
+f 51/110/72 71/102/72 40/103/72
+f 50/112/73 70/104/73 71/102/73
+f 49/113/74 69/118/74 70/104/74
+f 78/114/75 48/125/75 68/106/75
+f 47/115/76 67/108/76 68/109/76
+f 42/65/77 51/110/77 35/111/77
+f 43/70/78 50/112/78 51/110/78
+f 44/69/79 49/113/79 50/112/79
+f 45/72/80 48/125/80 78/114/80
+f 46/117/81 47/115/81 48/116/81
+f 44/69/82 77/73/82 78/114/82
+f 49/113/83 78/114/83 82/107/83
+f 82/107/84 83/100/84 74/105/84
+f 83/100/85 79/93/85 54/92/85
+f 79/93/86 80/86/86 59/119/86
+f 80/86/87 81/85/87 64/82/87
+f 64/120/88 81/71/88 77/73/88
+‰PNG
+
+
IHDR€€Ã>aËgAMA±�üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDùC»	pHYsÒÝ~ü`ÏIDATxÚíýw|ÕÕø�¿ï�Ù]­$Iq/˜^L%„�FB³Mo	JBË“'l“„BǸH¶!�Fèƒ�cŒ«Ü­.IVï[fæ~ÿ¸3³»’lLyžäùü~çõ²µ;mïÜsîéç\±öÓ‡¥P(”R @‘ô÷K€@€!BH÷¯`óæ-ìܱó°÷:Ê@
+‰aC ‘úŽ›ÓùúÃÁ5×\û¥Æÿÿ*È/¼B4ú?žg}¥9òâßöâ¼ðoûíÿ$0�ä"\ò;›öšå\ôs›´ìóüs/?`~Á½‡A¾ø÷À¢…¹êê«ÿ­cø"$.ô?ïSot:ßúƱ)ß3.\Ÿò}û=3üÏãæ­êt¿øB\òˆEûÁå8±i9©}+å;¤…‡l!»Fþ¦M›¾”R`˜Æ×R$˜ß*$#߃d"èˆ|<"HF¾‰àEÀ%�¤²}Ló?{ÈOþ©}‹ïþü5~ü�¥ÿͱR"¥Ôàk¬ü#Aì‘@2òAs‚ÿ4è
+ù‡;ÞºB~—sq¸“ÉÈ÷9×ÿœ¼Ú“¡+‚�ÉOu4�‘¯œ#[­yØ<“÷O.z�?Ïÿ Wÿ—…ŽÈ÷à?‘þ7 KÞqÕ{ìß#»=hBHÉè™à‡Zõ‘Hä°\ü¾MfzM)Ç›ÿOÿsÆào£p¸êlã�{þoèß4HÑ1ß¹óMá½{gûŸ�”ϑڷˆÔ¾EZÎ>GHæ�žI¿ÞY‡ýñƒrðàÁCž*÷
À¡¥­”"c�&À.MP¥X´Â扅¯ñä¢×yrÑëä½o'½è<ðŸÃ	ºRøwü«‚ôY3ù$#»#Dj×%Ëþd‚¨Ú÷*%[ÿJ¿ÞYàÒ?u6!Ç¢­­½ËßÐȇÌp´ã!*ñ×;Aú „EÒ¶÷íâ˜y–á¾ä‘!߃ÿT"èø½£ÆŸ|¬+�¿«c¦4$w,ŒSZaÓw)åÛ_"@†Â¾5�e¿™Ñ=å
+èÝ+hN9^}°!ÊÑHó”¼gòÏ«*x…ŒAg»ŠƒJZýB€jE‘Fë¾wõ!×·à—E¾ÿ)â #Òïz#Ãÿü‡[»$ºBxG0ò”‰KÀNAö�q—R]]$Ÿ¬ôÌè@mM
9½z±wž~`ä'Õ�[,¹-¡v´´µ!…Ä‘ŽOyt D…^ý"ˆR6®2é¤�AýQ$Ÿ9ø;,^¡¸ú\þã`Ù²e\~ùå_xíŽÈØGÊüO—,è¼h_¹ÆHù~Á­IùþÖoOJù.ò·|¦®ÍsèÕ'D]«â@~-ÐYñK	CÆ]Jey•ÿ=§W/ªö½J¸Ÿ^­í•+>áG”lý+=ží@sS#«WLKKO,|�[®º�EïEÉ÷¤¥½T„Ö}º¿ Hï?åD2LÛ�
‰ãŽ™NÛ�5>d:„�@rõ¹©"¾¤	:{ÖU�޽ÿþ
+¥¶DZm'ÁÁ|1ä8؎²mP`;¶mƒJŒA&ÓDJ‰”R„!Àˆ³ïîrLW”Q^ÕÄ¡À#‚ŽÈïŠLÃOST7+úåt£u4—l cðÑ´îÝMûÁå)&à�q—úŸ=Ö_KBùk¯\A¸ßÙ„û�M¿ÞY>òö¯àŠÇÏfém&ݺ÷ ©9ñO-zCOÜ€ÓÈ÷ µ=BúÀ“iÛÿ1(EÛ��„û�G©¸�|¥´íÿûZQ”Z_A.·¹æ<Mtò<ßÉ`Þ~ûÒÓÓ\Ú(åh*ûR ¾Â=‡†½ë^ƒ¡3¾‘gI)¶ÕغvÃúvóOf>šŒÁG©~€êê:bÍøß#µoaE>ö¿{«4H™Š$Þ£Gw”£|… õÀjZÛ»¼áŒcÎgð�³§qáÙSùÎÙÇrþ¤1¤8ÞÕb L­{ßäÏóÿ…D{¿Ì?„ÔÈÿ&@}¹àÙáàŠã"_ÿ!.H€¦â
þ�­kWÑmø4ÿ{·áÓ�¡Rd¨”pŸs}½ ÌŒî�
PY]$ˆ Üïll.{LkóÙ99�½{
+Z÷ˆÂ§…ôS÷ŸÌ…gO…$…N ‘.;ÿÁy'�Þ¨JEiÝ÷>­{ߢmïÛ‰57qäÿ‚�À76Ñð�ÒÀ7�xâ„fñ݆O£¹$A2TJ�19@‚#˜Ý}¹ŸŒh*«ë©¬®÷�9Iѳ‡V$3�KßÑ—è.§lÛÿ1m6¢TŒ3Æ88NçÙKUð%ˆ .Gðe±üñ¹¿!_êß7I‡Ã½ú
+.î+û¾Óåñ+ú$ˆ¾£Â×Õ1±sÇ&uIžã#zÂ	3غvN˜AiUs
+)DÑ^Y’‚ìdðÄ@òyïXF¿³q€Wî0Yºt)ÿø4“–H8QPqmû>åpö©ã‘.U©W½ …@š†ôl}xåÍO½×ÒÿDÂ,DÀ]7ÿˆ#CšôêÕÓ4|ÚŽíæGpäJ ­°å€e[ÙIJ �Ó@JÃ0S”@謯ø}'bR]°–‹¾sd1Ÿ<HF¸Ç
¶®]å#ß»&søxÆŒêǦ�ôÄw5�‘ý3ýït<­­ Ü÷xþëôí¬ýl=ËVÅÉL롉@µ£œ(ÊiÓœ4Ê%wV‚“`0ˆ�š´¸– ¯oÐØ2HZ÷½‹HbwÝüÃ#š˜pZYY9	¶ÒVŽãš›_–´5à8NÂW¡Ò01¥ÄB`H#…ÜŸÖïßáûáàH‰À7Ê“9€‡t�$ëYûpêyûßW¿Sèn*Ü
+ýOüÂ
åôçõ»ºñÞ»ZÙkÝ·‚ÖÄÛèWT
+<Ö8b¼Vì•&‚XÜÂ0˜BaÛ¶Kÿ|g È|ÊiCÈL2Ç•­{_="䇂itïÑÁ�-ܙއ/	‡ºE)Ò·o^{ý�/$	©«Þ[í W|iU3Yûøÿ@#}õ;…l; Wh¸ÿð”‡N95AÝGM ¨¢%å˜a˜¬®àú+ÎOL’›�äÑ{¸ß8-Þ“‰CÓ­c;‰–íMëÞ÷ÂtikÓQÅùùõßñ8]ÿ3¥I÷nÝéÙ³G—“•ð!|9L©ÇU§³ÿ£Êák¯>vÐ¥a\ZÕL·áÓÈšØE”ñBþ¹ºü½)Ÿ³'ö¿w5�¢ŠŠ*Zè>j‚�ü‘ý3i*Üê{å'ACc=R‚ôF!³•>ð8Âýǃ˜†fõ†4&FÀè4fG)ÒûOñ¿·î_�!R;„ΑX¶…eDZ,ÛqRð�”äôîM8>ì„	<b<2"P)SïñŸ!_6ÇòˆÁQ¼úêk‡<-�NfŸ·Ú=d¯~§0…’aü€§�7Š�çžhd�ìŸéŸO–ýM…[ýãÖæf
+‘P´2žNŸQßtÿ™†ðM>!µ	¨ßMéï^_±…Mú€´ì}�–½o$½©–—Úõ¬”ƒRR$,’Ã�—ÌÒ1—ñ‹Q— ƒä{õþÓâ…ã.¨C�Ô/¦?ä»ç£ˆ¦¬r<YŸ¼âO;o”/â­šÍoúèSÙÂW~¢‘]S[›4N‡ŒAç“1è,2Ó{ÓÒÞ23úÓ^±…·VnaÕîäЮðqP¼»UˈöŠ|a2�é#¬«ÄS¥¶²µgÏQ„Ò„Ò¿ò=þ©¸ýB"PŠäÈ+€®ÃéB$!߃®ˆ@Ji Ã&áþ™‡eïÙ3~@ˆñBdOLöÄÁ)
+ wï®ÂÊ”ðÄ@ÇÏuuu¾ÐvaPUøwíØÿ1ÕEï$f[Àê=6+w)¤¡ÍÁ7Vlä_ï­!Hp‰�™ 2�ë³Õ«Ï1´¢Ã?¥Á´ =³Ÿ·àâÏOnM¦€/ú‘JWs÷þý/ ߃ŽD`¦É«3M®ø0H[EêÅã„`À(¶Ð\au~â\2q$«ËßK¸ÿp™>ðï­~€�ýP]]�ã ·}	÷±óú³Fú€ãQ¶%·WlåŸ�>À[жëHx*Aë¾÷ɬã^\àP¹„ wï¾G<¯ZS¤’À‘ƒrßG p…£Àø¦Sãƒ|^}õ5.¾ø"¤i˜˜�?ÏäýÛ‡ø%¯ð®ä¿'û“¯÷þfOœ"ï“?{0xÈ`ù×_Þ!nëj[ƒf€"Œ£[’­d�>ð$×Äa�1ð@Ѻo9B˜apÕ9]§­KCÒ«W/ä—E€Ò"Hüb™#eŽã …dÍš
¬ß°…Í›·}“1¢#B¾'ûö•(Ó0SdÓ�>P�ôouCBö{Ÿ=sÐ;ï]Û^QâßÿΓSž··¼”wÞy‡ÖÖÖ”ãÏ/sÃÎJ镬â(ógYGþ }àÉNp!Èx­ûWê¯2[‡ƒ»`Ý{ô ;+;1w¾0O\l¦OoÚÂT¼÷þ*„X–E$Á²ºIW¥<e3aîÂad2MÓµ*$ß={Ò�¼¶B/˜ŽŸ¦ïsŸuXGЗ@~2ˆÊ•!;[ƒg=VÞ‰<8qt<Ö^Q’0ý:Àkÿú'ÅÅÅ�'ÍQÌé]2}”
8 :ëGAÆÀÓ@¦és¤uŸ&šŒ�g€Hs5u¸úÜ$_~„3ÂôíݯÓï:h?‚R
+!R¼÷þªNB ¥¤¡¡¥·Ïž�­l6®^IeU”ÂÖtÿz�X¤”ôµ €âzƒ¬¬ž˜¦A0ÔA)?P!€æöå
†‘I&ÆéÓ§ø‹VÙÎWB>€ÙòÞ¿}ˆOÉîJö
+²Æ
$Ü7'j!\ßy2„Óºµ
+)¸þŠóY¶*îê’Ö½ïº'ahŒÊPJž`ëþ•îÊ׎¥…Ëã	"�ú–C!__"p€ï¯ö-„à¦ËNgóÚXS$]½M1ûÓyã¥W)h
óè‚÷9aˆƒ�±-Û¸æGÓqXð×uضE³eã8J»‡]¢8óøQ˜¦dùÇ»±,Eck›N“S�[†$É
éÕÚµŸ˜8Nj0éØiSø2 ª*÷}!étÅ
º"ˆŽÇþ2Cñ½DxùÛÚÔs'…>xÿ]òó;ë~˜O9,[eѺÿý”Óƒ¾å]ˆAZö¾î}ãÖ뾋RJ#ÿœ$äýûõ#ìlî½»beÊwÇq�R¢”âšKNbçç‰ÙÔÔ·SÞÖ;8Nc]Ÿï—8ŽBÊ„µm!ã{iñPÕ¥¢5„ãè¨f<gˆLF5–{	ZÚ"Ô´÷ wz¦!Ù×�¦ƒCîs
Ãt‰Á3ǧá¯Ã¾2t„¿žÙY›±Û¶PŽF~G"Xùþ{lÉÏïüƒBjVœÄþæ¿ô®‹|OYÔù€×|+¨‘¦´‚•âÛLbûG�9ŠÑ£GÑÖÚJcS3¹yÁ0#U4éîèÔ-`D÷6ÍÆ‡½­ÝÜÕ­¹@O»šòÖBŸU{«QÉèqªÚ¢ØÊ¡¾-ŒãØØ¶ƒãØŒÞ�h4JÏî™Äí8Óà`kj>¥5‚IÇ…B>/Hó×ÐŽ„’‰ÀC~WïŠÇÖŠL"¨>XAMÍA
+Š(,êZHЃàùeËÉt.3ÏL Ì«LÉüí ÑÄСC»ôï·µ¶bÛ6õ
�45¶ø:@,#·�B"
Áªפp.¥ñ¸E4ᤧ£…£×±ä°ö³MþuÁ{Ÿ½ï¡Pˆ�Ù¦”Á I¿ǧ¼‹örêrº@À$
+!…8t4ðKÁÅ_täðU@)…í8	-Øq8p œh¤=e õuõ”••¥‚G^j–”tòê}}”^õGm­­457�ÛD"jjê|Ðï’—åXÄb1,+ŽmÙ8v(|îeÙ6ñXŒ¸'·ˆD¢DÛcØ
+ÒÒÒHOƒús0pxFg�-E·:B"ðüGTþu@kª’ýûЉ´·u9¸¬ì,²²³:t(5µµ444RZRê#ÿËB·ŒL&NOVvöß“ž‘AzF"ç~ôè/ÿ®e¥¥´G¢Äc1ªkk©©IMŸóœˆíþÕQ¹�)罊ŽR|H�t8,xȇÿA(//Ʋb8¶ƒeYGTÙëÀ¨‘#4W(.=¢ßëÞ³;ÙYYdf¤Ó§oÒÓ3Žè¾?=öÄW~ÇŸßþ³”ç$ï»ví¦©±‘ææÊö©½“XPI)qÁ[åžpX8$#@|ºæ}�Ã0éÑ#‹=¾Ø7ž55UÔÖTaA¥ï—…úºzêêêinn¢¤´ŒáÆ&B¶f�ìììCÆð_ñG
+‡#¶mßAVÏž8€Ý»öÐØÜLKS–mû"À4
LÓÄ0ÍNp¨Œ Žâ #òÄÊÞH¹Û³×¥�‚�P'¢8p œÖÖfâñ8ÿ—à釂#!†ŽPXPD}C‘H;iá0ñx!Œ#'ð‰ +äCÐåEID!ÿ#+ý
+¾é×_¬…ýó¯t:wßìqþç9‹·ö]Ý(ø*Ä�¥¥e´4·Ð‰¹JöáQx¸´°#"€ÿKðeVùõ�¦WOíG¨iˆ¥ ÑC~MC¬Ó}Þu‡»ÿHáë@YY9ÑhÔ÷a$é§ž~Ø{¿Q%ð©§Ÿ#‹ùΕäÁÜvëO�è‡Cà¡&뫬òäÕí!¹ãJî
+ùá‹®ù"îÐqì_… †rÈsÕÕ•ô>„ë¾!ðøŸŸD†i¥ÜBåÇØº,ìøßù$¯ÞŽP”ŸHŽ9qÚ!Ÿ™ŒÐC!Øã�t¼¦#‡éxþ›àÉp("øZàñ??é¶…ûj}�<„åoàýâîG|ßó¯t‰ìdHF¼÷ì÷‹�Œ�nuù_Ä9¾È¬ü²p(Nð•8@W,7y’“‘”Œ8 yÉ÷n"õìäs_Eþ~U¢:ܳŽd‡âJ‡‚o’:Á—"€#•µÉÈ>ä%OÂáXöáîïøüÃý®g�H”§w<ß×8«ÿ2×
+Ùu’®®û¦!™¾P
+éGºzï;«öŽ�œ8�‘¿xÅv|Ž–ç�‰£ãï{1râ4â
;ôëÿõîë(ÿ»ºîpc9kDSÊØ=ÄW”nN¹¿+ÝÂÃÅ×%„dq`ÌžuÙwuÑŸ{‚µk×ùƒ™6&‡
»¾íž±R²ûð?—Ô‡è+¥¾Jg–z/髯ªHAÀ´19L“ãß0Í­<ö (%õ¡NÇë«*(©±aW�.™(’Çæ�‘åœÓÇûǽß‘eDVÔ÷†]u7yL
+r�´Þþ³½çt…ü¢ü
ŒÈŠvùNÞ8¼s×_<šÆÊ­DÉöŸŸÉs~ýÅ£ýÏk×®ãÄŽÿZDÐÖÖBFFfg�¬Ø’µäŽ+̃¯#ŸµÊ“¶®¾ƒG|º8°Áûá8‰V5R=ÇvRß/Öç=äw¥Hv5ÎäEðEÜ£ã<&s…o‚TWW&t€;w�FرcõõuÄã©}G–”Ì.5™‡R²ÎÑÔå}Þñ®®ïÉ_
'ûuÝ¡®=’gy×é˜;.œ#YH_•©‰G­«	òò§ÇžèRq;ܤH)8c˜®žxÑýG<ޝ?¿ýgßÈïtŒþoŒûëÂÿs®àÿ?9ôîÝï›Ï0ÝíâHë’ÕWÜw'/Î{ŒAƒ‡é²oÇáŠn'Þ=üƒ:Ôëýñç¿pëîðcîÿÆý)þãÀ³¾2˜†‰4î}á	¦ï,6n\OmÁÎü�n§S›’J$Ìž2–Û,áñ«/gñÆ]‰ón»ÿá3&SS´ŸÌ�1þ°æïÄ"QâÑ8Ç̘ÀÎíÛ¨/?È)œÙ)3RšŽ­Ó±¯<e$¿|öyêʪ8áìÓˆGcXѱöûwóû[ïÔ)gÿ?J_Êð³‡$-33 ˜žÆ“¿¹…ÜM;üóÓ¿wVÊõ+þþyÝÆÒÍE�{›t€YS�!wc×›EÁvc8Žß@ ®¬ªS,Ü!5ôÊSFqý½ÏéŸu³jmËÂŽ[8Ž¢ÿÑÃùÙ³¿`øð‘ü÷�®¥¹¹å&¯þ»w1ùŸ†ŽžÀC@ZZ˜áÃ�âÜ[/`ö”cX¼ig
+ò“¡¶à ‘ñüê-Ü|Æq,\¿�«¦�!wãnfOÑfNu�[�*ÑÈw«n7o\ï×ýà8HÓàŠF²ôã" kh_¤!Ù¾m›ßzÑí2̤ÉS¸ò”‘ÜóÜ«d
íK}YJ9„2Ói¨¨N¬K˜%%Eüúåçý0ꃗވRŠ––FÛþŽºŠøà­¬P(ÌðáÚì¸ôÙû�Àc×\ÉâMz¥Îš’°Ws7íеtB’3Z;^j€€§W®ã¦ÓÈݸ‹YS�añ†íÌšz½GöGNÜæêã&°pývPPSä†A–˲Éû¸)Û¡¾¬
+a”­Ëª…)õg`UÙrVý+QAð¼›X²¦(ñ¶nA…wEcE=M´·y`Ù3<xÙ
dfvG)Ekkóÿ3„p¨h Øšÿ¹Bbš&ݺõÐ
+œ€ß¯û³§Ãí–š.¿çrF ¶à9£P]p SŸ™“¾5C϶ÜxÚò60kÊÑܾèEª*X6G+{¹wi|;[¶l¦º¨‚¥s~NÞÆ=ÌšvO¼³Æ/Ä@Jvn×+Þ
ßõ¹Â'o® kX?êË*ɪ_²¾¬ŠùsoàÅÏËÁ�]%~U�m;ÒTÑ&�0¥À±m·vAñð•7éäK
+E[[ËÿiB8\>€Ù£G"uÚKõúãú2{ê8oÚÉc×\Éí–pû‚%8@Îè<~õ~š˜‚[]"˜:e*­
-~�ÿ³«6rÓÓ¹mþjŠ+‰�†æÓŽaÑçÛ‘~}¢ƒ@2sÊQ,ú\§`Í<u$yŸ”¸Èw@AÞÇEZ7N:ïÓÀsk–'*ƒ…Ð�—÷î(Á0%¶­üÞ>zë˜|ÒtWö'W”ãpùoîw¯Ä¥ÿõ{Âá@ÑÞÖêZÿwápÈåeE©ú´<ºöo˜Á€O³§ŒãÖ¹	q°ÑÍ�’Y“ÇøDP�¤œtîÝ}Iòó·ÐTY¯kýæÜÍ¢�»´n°As€Í›ÖSSP¡•=±KçÞI}«Vú®¿w~Êœ??÷r?LxŤ”ºžÏ�|òÎ*”ã LÉóÞÀïs?Ðà(Š}$7UÔŠ	ÇO¥´¬Dw¦stAGs•»CIï,ýõïñ;y¹¥Ú‘H›î÷÷N_„ü.	`Þê¿ ˜Áf0à#ù¶KAÀŸ=p�çnÚ�Â5ñ.õŸoi§¶¸Šd™l¤i•cÙÜ»Ám/hÎQSTŽF:À÷>J¯Ñý‰4¸½„KVÊ¡¾ü (½òÁÕ]\ÂÙµ{§¿³©pK¨šÔ¸mu?!„Ö?Åön9†ËÍZ6¢l›1SuW“¹×ü,ùÞ_¥±Xä?–Žù)pÙ“÷ø'Nœì¯ÄgGîæ]š\O�2Õ/à$	Å
+Ø´~‚ÊüR̽¥lîžÿþpý¹oÉë‰{îʇ¥ßÁâ
»™=íh.¿÷�€"ÞE8ù¼3ýn;wo§®ô >~ÁÙHt5®°}ûVw‰M%÷ê=‰ËFÙº'Ñ AƒÙµakBì�U;fÊx¤!QŽbîµ·v‰|¿±RÄbÑ#+ØøC~
+ˆmà®ç½ý0nüD¤”ÜxÚ±)D0eÒT¿bkÖ”±>Ø´q#¨.8€ÝeÁÜ[È[[€‚+ŽMî§{˜uâhÂÁLr7ìfóæ�ÔV°ì‘_à8ÁâM{ÀcÅõMìØ¦«‡�9fœŸþüéòU à™‡®eÉGE¦ÉÇo­ð‘~Ê…çàÄãÄcqª
+Ê)++E9ýû¶¥»ƒ¨Ð"«¿þTVUÒZÓ(ÌP�1S'h¢QŠy×ÝvHä'ÿ�Å¢ÿv"ø2ÈO!€y«ÿÂÌ´ù—LãÇOG±»dO¢y“€)S¦ú„²qãÆÕ� ,˜{3Br×ìÑ2Ö])ÁÌ0üCw¼^:÷~¾Coc;ÁʶùlµÞƒÀqãÆŽ÷ÙÌÎ]ÛýÏÂ�)^Á±cÇaÇ-¬hœX{„ƒ%(/+¥èÓ«�«Ýk‘PYQ�RŠ~ýû M“ªÊ
+ÚZ5q¬~]Gñ»›~Þ%Â}Î�´¡¶eYÿ6"ø²ÈïD€O(ÅÕ÷>™`ïá cÇ2|ïûÒ9w±xó.ÚZøð_ï‚„…snÁql–¬-ÒÍ–]™ýñ»«X6÷.­ßÉUÇŽaÑú]Zv;ºfîóOÖ€£xøúYúI©–­XóÞÊ”ž{Ž;J‰6禜r<Ñæ6â±8õû²Ÿn\Ñ»W­õ»]5ªÝ-ërzõF55RÐVßÊè‰cüVnŽãðè­w'íœî"ÝÇ}âs]}ÕÕ5Äb1úôéCŸ>�=þS�®#È[ýykµf�·f73O<Šìý|ìÖWbGc¼üè} $·-XJmaÂà/ιËõñëU’5¼/õ%zo¡¼µEÌ:ñ(¼áê=ä ÜU¿Àå¶e#
ÉÖm[|âZúq)ÊQ)صgÙƒûP·¯šçç\ÊaÉšR¶mÛBma%Žemi'�Q·¿
+'në>€‹ã(…²mª««ýδŽeQ}°ÊßàZÙ6±ö(FÀÀ±t|Á/ní€ð޽%Å%ìÚSH}m�.ï’qãÇÒ»W/úôéMNNß4|òW¬xWû8”âÜsÏO9'ÊËŠTòêÏ[[ ÿ®Ùͪ×Þõ/TœþÝs�B÷ѹùôc¹má2ªµïŹ¿ðÝÄ
+h«oþë=²†÷áw×~�%Ÿúıeóf$ ‚&f(ˆ”ºËF]q¥&< ÒØÚée$а¿Æ·<gM¬-¶͛©+;Èøé“‰´´Ñ\]Oåþ~nNvÊQÔÔÖhö튣ì¬lêëëýÖtÂëÙï7…ÔË>oÞïIjí}<x°ŠWþú7]ßo0Ì@ÃÜqÇ�ß8x°iÓ¤ÐÖ·eYXq‹H4‚í9¹\Ñ•LRéx)8ykvë¿k@J²‡õó‘qÆ÷ÏùO¯ZÏcW_†$ÁþgM«
Ç놩'¨¾¤Šëî{–Y'íÿ°0A“ú’*ªvàµÅZ&×UðØ5?æáë.`îõ2÷úi(;HÃÞjêöVã8ŠgºÆ'&+g[~¾ŽÚŠhk;±¶ûÐÖÐB[}3íu-ì+,eq‘†"�­D›ÚPŽ¢¶¶F—h;I�L,wÒlÛKëóî?¥¹‚ã’RвÒÔV:BHw¯"éö;–<þç?ãˆ_¿~7¬?âë—/Oì*"ÊÊ
+Õ#«^òÌ<ñ(ò>+Çñ9€θè[þ5žÌw”bwqµ…®˜û”c#¤Ám–pÔÐQlݾ
€ú’JÕd�臷ªæ^ýmr?*Âšì*ÚÀc×ü˜…ëvÑXU‹a˜(Çbö™c¸çù×@Aý^í8õü³Èß²I·linǶlêÊ¢b:úgÇ,‚™izµ;*ÉœÓë6;+›ú†ä&‚ììlwÏ ­`ÖÕ×�RääôB)øÓÝ÷p(xï½÷)(*ô9€4$†ašÍÂ00¤ Ó3«'á4¯+HbGÃp·Ž“RwH7B¾·ÔóÀ:
+tÝR¾˜xpî¹çc^þä½þ�ºb·Ï¯”äoË'{D?êŠ+9ã¢o¥ Ý	(xø²¸oé›ÔWpÙ=¿óBÿ8
+*·–’5¼ŸÛyIßfÛ6¿»öb®¾ç)ÃàºûæsÊygbÇl*·•‡P8nŸ>°m‹@0Èâ•{wÌx>~çýp)øèͺ5K$Žã8ØÑ8ʲôÙzw�ì¬l•G›Ûè?d�‡o²³r¨««u?gûÄ¡Ô×Uë�HH¸
+¥á¬>HAQa§ãRhõÔC¾aº×1R¹þ�fãòåow¯zý½NŽ‘|×÷¨`üø‰ú£übþ?p”âŹ¿ð#ƒ¹›v°qã¢-íÔ'šGÏøF,;FÞšz�€·´gÏm»š5´�ßH)¥÷R`[†i²m[>YCûø¦¨p”Eœ0}
+íM-”aEc<ˆh{»vþ8YYÙÔ)E¬¹]ÿ†�.“qài†Bø@­	$õ,êöîÝ×ù ñ†HA¾ÞÖt_m[ÛoÌ?\§÷йkþß|yïƒ;Q¸î‡¾Ât×scÛ¶|7l«'å�7þˆ–ö:þ¶£’YSŽF90eÒTÖ­Y“˜T‹>Ü…Ô
j
+ ˜A+j¹s&xjùzÍ	\:ܱS+—�åÕ88H¯úØÖ~…É'K¤µÝm«ªh­i"+³§«ˆ$êçcÍîFÕ.këjñº£øà·öOhú½z÷ê|¾Ôvì$ÑûI�tÛÑICbˆÄ>Gòk®~Ï2úZ�÷©–»!xÄàMÔ®ÿykv'lýd¢•‚ß]ó¯Ù(fž0šÜ-»™9e4y[
+7v<ùÑ8
ûjyaÎ�Xv”eŸ•�ÆõJêËjäýY^+e»rÎÏ
+r8ùÜE±s÷Njö³qõg3eV4޲Òº‡‰Çb®¦�ÛÇÏ!Ø-L¬¹�¶×óŸˆWxPW_çŸ9ü–/PUU™Âþ¥kNJ†�B&�o®¬ï8�_ù‡#‚#Ý4ÛôÚŽ-YWÈ
§j—oÀmd<÷Š}ŸÀb—PÆ�Ÿèß¼Ímò¨‘0!7àØ6[·mEM²†÷åîþ¡u†«.à¾ç_óçóù‡®eáÊÝìܹ�¬!}¨/;Hmq…¿1ƒ0”�¼I²†Ö˜R‚º$ݲql›öúVzdêžA]uϨ««%ÚÜN¨[˜h‹û·©�Ц¶ÔŽÌnؘ^	åѲ;W@ïÜÕE¾¾§È¹«ßC¾p•:¤üD@Ç„8ùúÌqå8ˆ[–>œ2CiÝ2Ù¸q½ÚõGïј:e*ï½¢·`q’"@vL—:çë«#€R§oi/‹Ãï®ÿw?ÿw½aS2B”­ãöj(¯æ”Ï&�ùr೫ýë½( ÖÛóó©Þ³Ÿ£Ç�¥¥®�½eå81‹ݺ»I¢êêR~:ÖÜNÿ¡Z¬«Oì^’rMKâOù{ôî„ÒPSSÍ?^ýWÊ1C˜f3h‡	ƒ¤ƒCo
+¥Ñ½[f0˜‚¾/cØ–ívGÐ÷yVèrýX,F{{{—V€rl¥�þ¦;.ˈ4·Pëfù¼8÷¼8ïôvÓ½6nÚHΨþäŒ@ï£Ð{Tz�î�bƒ<}ëuüåO÷Ò÷˜¡‚"�-Ì»îb}´›y×|ן]Dz�†À±,œX\‚­WÙG¯½Çå'ñ.‘tÐe+Ž?ç4-çmå§|×—é|?oÿ>e;´Õ7k-¾¾Žúº:êêë|–™Õ#+±Èý›Y=³ÉÊÊ!++‡ììbÍíZ_PPQºO_ïO^ê¶#»vw^ýz:…»Ñ•V=ä®OÀ0Œ¯ÌþãpbýðµÕõ/xÈ·ãqÌüüÍ)Ï”¦ ‹óò£÷³xÓðøÕWø¡àÇ®¾Ü߈ñ¶Kt’§ÐnàÖnášã'0yÒd6oÙL´)BS[OÉ"oMcÇ�cÇ6�8rè(¼È[<Ó”=Fñéò•Üò«\Ž;ãd®8m¿^¤÷è> ›�;v¸	ÂÂç>=dmi§´¸«]A¨[˜ººZßå‰îìžÙ]¹³äÏVRz€¢ß��ÔÕ×ùJã�òýp9A2¬®a÷®Ý¤ÎVJæFц¿ë™Î†2S·“RÇF¾"xDíH�P†ÛFRH	¶î^.…ÀN¹'�ü¸mc>zÝ%̾çqrð“;æ/�ÞOî¦nògbêoØ��ðøÕ—sÙ½ðgôÚã'ðÂg[™uìQ %bqîûã¿;i"JÁž];	vOmàkÕ+
Ó`Ƕ­ô؋ƽ5\~Ê~5_G›ö×ù,Ü]À½Ñرц6¬hDz	¤“&U,;+ÕÿknG•åûé7x`Êó’õÁ`·0ˆµF¨«ÓJáU÷þ’E®K¸¤¤Гì(IKá[€"  <ù¤góÒG~Àt·ŠM²º–ä_Žkátl!*]%*YÏèˆ|+f!s?ÓÊ]î¼ÛÈÞŸ^#û“ãfîþøÎ‡ý›§N�
+n_ø¢O}‹7ïâÅy¿@Çã7ìDš&K6o�¸=‚u8W)�TkjeHÿÁšý»ñv+naE£Zk·lº÷Ïâ¿^XŽr
åÕD›[;q<“Ž?–égžÄä�eÚé'’Ö=L $�"� ѳg–ïª�6·wB¾‡ØP7Ýl²¢|_¢K'PßXç{ÿPŠììÒzdø;J©·‹‘¶oßáçEH!�BS�! }ë+´oZŠi˜ÂpW¾á¶}Ot)ÿ:
÷´Ùëø»Ÿ%ƒÞgÙÝaÝ‹šºÉ¯òcñX´xí.&LšÈ¬ãŽbö}Oø,±½©�O?–Åv�d${$ÈâM;è=z ·>»„IS¦`L¼±ÔW‚�|¶üC²‡÷ó£r—�5”eïéÕH¢”Þ�»iÜ_›x1GaEb´Õ6Ò«woö¬ÙB "-#LFv**`Ç,â­ºgtÃ1CºøÃ¶RŒºŠò}ô20iÇ.MàÅ~•åû“ª€Bß' 'ÇõøÃ¿Ôiìuµ¾(†/  ¦»Ó©	´}ò,¦€ìsîÂ0Á ·ï±D}�6[!…ÛkØQ`$XBj·¬l@96V<�|+niÈ]«C¸³O8šÜµ»é5¼¿ëÏÕ¡Ðg?ZOZfz2}±ióFÊ”µeÙÌ÷Ù¯³éå:–¤¶é¥¡C¿¿}ö=†
nc©¢¢Zk›q,‡É§‡R…kói�FéžÙ�xLOT<§½©…Æê:ššš†DÙñ@š6i\÷tvVõ
õþ*h3QHI}]!×�L(ÊÝÔ1Ô-¬W¾Ç9„Dš	þꉋªªªRÛnmB.—0Ü¿-ïÿ��€¬Ï%”¦Çë¸ÄöuÜÁÊq°ÓmYoø²À�jºBÝ_ï%â@TAÔ�ÐI7bÙ. $³Ž?ŠÅkw1ûø£™ýêr5¬,I„„�`	¼[øFb¹$í`ðè¬1ó�?*î½ ƒiHâÑf €—aëùêKKŠQŽ"‰1á¸)Ôî­ tÓ®DÚ¹”ÇÑ™?.ïu,‡Œôš››êkkéÙ3Ëw)ƒ g�žTíÓnâ:j}B".è?d ;‰zÅWìÝO´¹�þCùéãÒ�˜“ä@4E&InÃ]ñA	–‚4	a÷´‡’xõ^‚3Ÿ¢½½Ý÷oã{€w�|ßPXNœ–Å·’¾£GA›1G�Ïr‘o±Xå(L/±3wí.¶nÍçÎ-ùäŒìÏ£×ýÈ•¥p÷¯ø?j¦§ù&Ñã×\Ém–€<~Õe,ܰ“oýðÛ\:q(wÌ…š"íKx纞aØQ#()*ı�¢­
ûj5QØŽÎà9P­÷ÌñB³.çJo©÷r0ý”,ACCƒGøþ²ö8€Fœ–…Ñæ6—½p9ƒÂ0õ¶/iÝÓAéí_„¡moÃËŽöí"+‰bBOòθÛÈi¤ÇØJhŽÐ?¨YqkÞ-¨ï?âÛå]¡_#·kÂðR4¾ò‹ndŽ	`íŠc¸Î ÃýívG@‹
Κùd;Kß“üàÚ¢
+�;ïV¯Ýíûûkܬ€3¾ó-nœ1”Ãâ
Úiû§Ù?fáçÛ¹rÊ(L3ÈŸnõ‹-<x#¹Ÿ2løâm†�AÑž”ãи¿PŒ?iÄÚ"8–í®~oë|6i[¶ÞhQjdvëÞ!MM�	v.¼}æõx½ðnEùþĦÏBûç=BÓE¤ŠXkD#¤_aH¤”BÌPÐçr†»syQq‰V´<‹CA(	ùŽË÷ÆdƒÝî*b@ã+¿ôW¦áZµR$D’w\"ÈšýT
+´,º�¸ö¸4lWìÇè6-LC­E·£Ø{â8è1Ål-Ñ…ÐãÓbI¦€rFöOP $àz
O쮩€g?LèÊ)®š>–EŸïpwÐHXž†ÀQŠïŸÙŸ¿½·Ÿö¦ͪm�šuûÍgðöšƒ(ÇÁŠÅ{ò$�Ä‹—»ƒÖÑ<JÏX÷î=�RGÙ@@Ï=uÒ‰‹ìÁ£‡ƒRÔÖÕinÓç(©·lC@zV&í�­(ÛÇ�£F`†‚A‚á4D¾_Çrl¼‰š�ƶ­Í~“�zUJF¬ˆ{ˆ8þFf…fÓ!‘b…‚åÅ&,¾™€ÔHxEB{\sGAÆø4,KÁÞ8jLÀÝQI?×TZ49àr¸$óS¸ wín?³Ç‹ÕUQSRåï˜iiõµýÛ.cц] u‹yð,¸ó…¿2ûÄQ¬«£l;n3tðPìxœÌ>=˜ÿò_¤xYéü.Áö¤á&=˜†iúÖ‚f‰$	� ©¹Y#/-D(=�@Z�@Zˆ@8ˆ4ÒÒÃÃ!Ò2Ó	¤¨k¬ÇÈìÓaJö—葉±ž´néÓôs‚á4L3H]]=Ã$`˜nk'-Mpò©aN:3̉ç„ñöƒöø9—€)!œ©‘å!E¸¹'¡;—e…𑵼$@Ô-jñˆÃ­‰¥Û„4ºOJÃ0 ²Us0ÓÐD—ê.ašB\0`bfj, «÷w˜8i²¿‰¦�î9GçzM˜8”bå¿–c„Rä[?ü—NÆÌ{þä³ÿ«ï{m)(„r4h¥EŤô�nøÉ±üí­bj÷Wmis}zäÒ0Ü>Ä	.ä}÷²ˆµ}®‰¤±¹	#``¦…0p FÐtW­dÿ�ý´Ö4"Œ?åØHÃàÀ­¯(ËFM„´7´"M£SÐÆjkçÛÓNGÑ´i
+èa*¦ž«9czº  aí?Z9ó‡pà#�ìöF(�h„&
+SèÏ’„œ x¯$Ày#ã¾"únq€óGÆi™FtgÓÕ7R?£×ÄöŽ8–{}ÄѲ¿ÙÖ2OÓý…Ä©¿ü±òV¾7¹ÈÞ�Ô–T¤AýòmÀQ,œs÷.}Ã/ö©Ú¥S°?|¹k˜uÂhîxîe”uEûqlå·{I$Fè—íÕ=›Úý‰¶ºà^c˜¦»�H0·ùƒ÷×¶÷ZƒPz˜æH+fZ@#SH†��4$ÅE^øÛÖÈN\gIÃ`è°a!¤§QVZ‚
+ÐT™ˆõ÷˜CU~	ß9îZ6äêãf‚å{H<ñ’&NÏ@JÁªGª°hj‚š¨k®»Èw\«Á®½î.]S€)o8xÜO÷ú $ÀŒáqÚG§ÛA
+Èœ˜æ­]²L›øŽ8qŒQâ6ÄâPß­UZ7P@·3nG¬+ü›˜}�NVÌÞßGp�ÛÌ!÷‘[ý=pAr÷£¦èçÜÂ’Ï
+¹ìØaüê¥w¨.Ú�Š;,ž{‹?Ýå³sÛŠ³5ŽRÔìÚ‡�‚úSQQ‘P΀°ÑT]ç€aÈ€™�‹IáZ/sW&¯P=û÷&gP_ÔTººÔ•Wã³åЭ_MIB¥˜xÒ±H)1CAœ¸E0"QX\€ã(ÆŒËýç_É;ï¼ÁŽ�»hߘë²lèfê•’úŸ.¾n„1ô%WØooå㥭V—´"©èÆttÁ‹ T¼QàÛ#âü«(ÀwFÆy»8ÀE#ㄎSÓ ý0¡ ¨mQ='ˆÅ@о=Ží@«m64zà,]ìb.^»›ÙÇÍ¢9?sY]b½ÏºçÏÚ"X³ËŸy¥¸î‡Ü5ÿ„\qü–|VÌÃW\Àuÿõ<‹æü”EkvúȰã 7aù·€R\ñý‰¼ÿi5JA¿~š´i­D†ÃDZZÝ]b¥Ÿ�¢y8ž#BsÃ4Iï™I÷>Ùô1ˆíù[PJ‘3¢/Ò4ÁQŒ}v,{|'Ò�ƒ5ú(Á 
+E0D
4MMÃ4!�¦
¹z8Ò]	’šÄm
+v¼Q…R‰AþZ8õÊgÀŠC8,Üì(ýÝÀƒ÷ê7NpÊÍ™LiÕc:0Œ ›6;ˆïŒÐ¦À‚8P·9NEŒê¡9‘z,Ñ.üÎâæä|fŸt´6ÑžÁ;çÿ•ß_ýCr×îFx|ËVlݺ…ß_÷C­Ñ^D)$«^]Ž,|èr?+p‹G%ñ¨.žÌ߸‰Ú¢
+úôê�Bh‰ÜÁþýûSUXî‰t°…E
+@Jé‹!%é=2ÉЛ`8�»gŸÎ’OJغi3f(ÈØñ°ã1½Õªƒo.®[µ”ƒ�†ïxnÎ
,]S®ÝÛý¡ŽŸ “a2ò«p°Ùö÷X
+Ò%= Žé, 4K¸ðv¨Þäš`6lüH‰'Ÿ=‚ÙTdâ`½W²!5—:þÚ’sa6/jÑD" ¿\Wi�ø–ô•?ÏúP
+úž&º¦�¸û;­®üo°|T“yÆíZ	œu‚Fºç
+žuÂÑ(G‘»n[·æSSTÁŸ›”(غu35E•ÌpÓÅÛfÕëïú¬ìôï|Ã4Ù²E»Œ•å`Å-j÷ìÇŠ[Ñ65Ð_ˆ°G1¶m¥¬üŽÄ`šž3S`dõïE·ÞY>Çè7jkÞù€ìáýùýMßgá*MÜŽ¥³�m+Žm;íÁA—ÅûöÚÜ«)®LÉ®¹tâi`hðqºu7èÞMðø¯Z'™U&pçã¬*ƒ!'¶Rº&ƒAǵ²Y—;tE„gÇïÜÄpÔ 8Aו±ko€qCb¾[9æùýyϾ ÃΑ¾w2`„†„pbŸµw´ùG‹€:K_\AÆÉ7{±€Ý!µùç~÷ólGûìDEœðÔW7mJ 5õœáý5—p`ë¶-Úÿo~]¾äŒÀÁ�º€¢¢²‚þý$°éM^ @ -Hïá¨,ÜÛ)KÙ¿\yîb�0éÑ'›ÌœžºÒH¶¬YO0$ÒÐFãþjþ²i/·œ3•Eë4ךyì(–m.ãý¾í'À&
+>Ç3B&yÝÎâõšxzT
+LÓ¤öãf$Œ;/‹;çfbHM0¡ Øtï®ó÷}–�P¾.ƒ lõMAÏGà¥8h~©ØVdÒ�˜ïÒ�+—•+�ø�{ƒŒ¢w b[#ÚÂPš›dÎûÜÈÖÇ=ßhéwX1Lßô&N˜˜²9±�PSêz'è'¯zõ�$¬zu¹ž-GéŒ]a°àáq”âÚûŸq›8)N<w�`Û±ÙÕdqà€N$©¨¬Hɼ4d0Á°î¦îžI $é¢I¤£t~�ËúCaÒº§cLí>6%“Nš†ã(º÷ë‰íÀUÇÅ¢u{ÉUÇÅâõàh‹Gºf̯»”ÅŸïÆ0
6mØ@mY%yÝNÞÆ_Ùº-�«Á¬¨×.WÓ[‰ÚÏþœ~—ë/Q�‚eæ�+ž¾³E›€®	çà†˜÷	ر7¨d]V`%¦�­åÁ„ûyr˜XLÑ#M�‚¶ÏÛéÙ'€Èl'Ò’$ТÉVž×Q$¹‚XùêrrFö§¶¨‚œ‘ýýœ{�>çýü¢¹·à1;ÛŽñ‹…ÿDÙŠÚ’
+ν…ÅŸîæòéÃÈÞeë"��»vr̘c°¢1ßüÃ/³ÒüVZ÷À0
z@Åž²”J�'ý€Q83�Œ¬î„»wÓ	.ûßòézüõ…<ð›
tï—ÅmϼÌc7þ)
~þÂËx
+…‡üG¯ý1K6b˜F’e!1Œ ß«°~_¶Ù—–·!%xnOƇL�+Iv{Iš8ð_75rÙù·>žíœ4±¸¯„àØ°ãÕZ&þ(‡ÿ¬eÜ÷9
Þ;{°üµ6"›u¦s\@`Z˜Ð´0Á@BÏp\N`h±´øÑé˜óÑë~À�óÿªM@wžkŠ*|¦¼hÎϘ}Ÿn~¬­‚Ý\yü(ò>ÝÃÌ�bâøIZ”Žcsåq#Éû´�y×|—ëîÎ-ËqÌXÍž
�À¶-úôîã"U`¦¹øŒ¼ùIµÏ†Ó{dÊH#ÒÜ–Ò¥CJISsiÝ3À‰rÛ•cùÛò*ßV–æüö»(åÐc@�ûkiª¨gfÙŸ]7®LH	yßFîúfO?š%›
+ÙðùçS·>›ÇŸo¸’EwÑPY�ݯqG#Ê”Zæ*ôg—9ù„áE{•Â�Í+»_¯Ócu{N9Jsï)`Ç?ts»û×oh¢ëo(ÙœNh:¤M#%Ä6µÓ¶¡°† ÍÍÃ�ªTN Ðz“ï	œu‚.ÜœåúrçÞêSš§þþêï“÷Y3�MÞg…~ý¼÷†«^{Ƕ�Òà´ÏÖ�8”bÛÖ|êËvÜ¡­¦eÙXÑ8Ã�¥“5„NIïÙÝ�íâ5I´=ƾíEØñ¸O�p',	õÈðë„)¹ûº“†¼ôÖ>ŠKŠ]~#GŽ¢¨¨EÖˆLš<äoÝìѼþRp3ÈmÏ-C˜F¢!ºÁÕ¥wÍå§g}ŸöŽtOsY««|Aâïñn©…—œ¬løåM&?ú–fæ¦tWR¨Y†	ÂŒž¦Óå”rM—Rº9�a“ÛØgêÕnÛšƒÄ6êP÷èKzpð�F¢Íš`Úl­?Tǵ%àÝO¹YóñY®öïAî¼[Éýl7¹k÷¸¬Úgf …ßGÀµíf¶Ì¸èrFô'{x_}©‘P§{éE�½üR+„ ³OOVUQu°’ªª*×Ço¸f�òÙWZFÝûdÑÔÒLSS#½‡ä¾Îg챓‘A3B¸Ëï¿~û&?ù!Å%Å.•käÛ¶îÖTYOÙ§;¸ê8Mð'Lö5÷;æ¿ÌþÊmÏ-`ò¤ÉœýýóÉq‹X.¿ï÷)šALCÛÿ^$Ï[ù†Ë¦ÿ ±šÍ}|w…‚î½ë>OÓæ¨û€Oצ¡€¸…;î»,Ú¤ÝÌÅ›4ò7†Qh/_tS;Ñ�혓µhÛÔH ¤ÓÖ,–ˆ[µmûãMª˜uüÑ \çÏ\M³Ž?šÜÏv£m÷£`„I
+&�Í›7Q[Råj´zV[‡vË$ÇÍ8ØSJyi)ÊVØqeÙà �â�ŸžÃKËK±âq7l«sÛöî/§½¾…´ìLî»ñL^yŸ®¾qƒC‘Ö6JKK@š+êüÉäá‹ùËÛû±mýöe{KQŽÃ°¡Ã:y†ÛdZJ‰0[6mB˜“'Mvi^úbàû½'²kç.¢Ÿü„FfЀ´ ”m3rš^�Ç^œd¼léƒuŒ®�üû‡ý PÌͰ\‹Àñ¶ãæ$ÐL7±C$Ípº"²¹Ý·*V¸äØ8­ÍšF¨‰C�.Ä"óä1
SGï–m*!‰ÑkdfÝ«‰`ñg.Wðd&[·mõWµ£`ÒÄIlÉßB}IR
+ι…Ã5÷>CöPF®-©ÄŽY|öÁ'æÉHi0dèPËÁ¶möïÛ‡cÙÓCüaÉ'ê;È_>(-/ÕNž^:þŸ‚|Wp–#M‰º÷Ïöý÷ËÞØË
á¥7;o
+AÙ–Ýüæú‹È]_ˆã8~¥8Ø–íG6ãѸ>ù•Џûv¤1aZ™š‚�’á%¶õÁPë	6dkçœkzùר6x¾.!HAz (Ü„Z0MA4ªuñ‡e+G÷_­$Åä0€oý<‡à#ml+”œ~�A[»"³NQÿiÄgê¦í¹š,‡Ù'Í�[óé5²?³ïý3‹æüŒ¼u{øàË}	à€®¾ï)@°²ø]—·	Íý)?Ú,xøF¬Þ…°Õvüæ mvýÆ6Â�6”œA}).+Áj‹Pº·,%­É˜.
Üý^Y¹ŸK΄ðÊÊÈHÊD9rÊQ+ESe½�|)%ñ˜ESEȯÜ
+f––¦ÐÅ’y?gñºÝÁ€ÎETp€»�ÿ……{°¥`à1„€òü0#§´ûÕdWÔæ±›£‚Vø>ú4À€^5¸þ+zNË¢yc==§gQ»®SB÷iY´l¬G�9Uv\4¦;'®ùh[€L'45Ý×=hЂöùÇßO¥µ~7ç\>“?ò“B€DJ@îg»™0i"[]ßÀì{žðŸ;÷V�Ç&ï³Îý)¿˜ÿ7t_�…sÊ�nQé#W—»_ø'ãÆ�ÇŽÇu´ÍÑ)]5û*E[CŽm3ð˜‘��sô˜cؾ)3`€Ò�9LÓÐÖš”€`΂¹ÿú3˜»pµßôÁKÕ¾÷æÓxù�ý‰v°À/ï•É'«µô€A÷þÙ~âªW˜‘=2±Ã€
+`ÇâÁ€ß/±#(ûv¦‘}lÄ7Ýá4]M{[Ô¤ƒÈ-}°'è¦ÞÄ÷œ–EýúzßP÷y½ÏÒ[·ÔãmgÐôy}‚ý›	Ï¡£4G1MMdÍëÛÈDÜß9Eç% µ¥�Öc ½¶œ©Ç)š\Èß’¯#€I¡a�rsçÝÊâOv1ó„£É][€�÷éÆ3ŽÕo~Àb7`ô‡ë~È�ϾÂ/æÿ!«_;æ…Z%MûªÙT~�ô~YL=å8̀ɕgŽbÉ…È€ŸŸêfèѣ)-+ÕZ¾¾µ0gþ*7ö/ü•ñë›Îaá?w&8•Rtï—•R�#„ð9Àä“§'¢•¶CIi)HÁ•÷=Æ‹�Ü…mÅX’_ÊUÓDzà³mÌ>öhçá6wðôc¯u 7±1Ë5å\G‘°µÕQ:J÷æŸÚ9å4hÚP�”°á“4¦�¬}ú=¦eÓ°®ÇJp”쳩_§Åší>3î€é¦þx™BÞyoL×g®å”k¢±�ÄãPS/|î!…Ô�pòÀÒGîÄvâ¾0ºó¹¿¢Åì“ǰxÍ.0óøÑä®-`ÛÎíþ}3OÍâ�w2iò„€•ÿÔÏì9¤
剷´‘Þ§'ÒÍé»ú¼1†ÉOï_Ì“ÏàWóßöS°¥)™uþh^ú Ä�NÈË+÷"Iaa�OJáwôHë–A¤¥•˾=˜‡ž,¦¥²Žnýu9˜‚¢â"ºÈöµkÛvÜ.ɨ‘#<é(¶åçsÛsËøÓu?aöÔ£Èݸå(­ÛÅÝ'Op+“•»Óšý›ön”P²1Œ‚‘V¥b°½'ʉÁ®ž('�±os€!Ý ÜÕê-9iP¶Q/ÙAŠô‘)(ÛÒÝwqën•ë{˜
+¡ÉéfB‡øäÉZÖî
ðÝiqÊ_ÓîäV7)ÄJÖWnY6Wåço¦¶¨‚Å®ö?ó¸£È[·‡YÇͬ{ݦFnzX¯á®‡Ð·ðçþ”¼µ8–ÅÌG“»F7•\ù÷·iÚ{�Ì~ÙwΩÒ`í!‘~e«Æ�Ö
ž~p¿|üUF�9Š‚Ý{hØ_Ë£¿¹„?(G9Ž›†?	…º²é×7œ�RŠöx?±J‹÷Þx2¯¼[J±yÍç€Û%Üm[ãe)¥°,›ÓÆêØn2�ûÐmÜ1ÿe–Üô0[¶l$Vr5B
+>Ë‹òí;õÄR`š	Ï^ŸþALÓï¿…R`+‡y7U2àÇ?íÆËO6sé­ÝüöÒHÈv�›	$ 5w1ýþ¶®ö ¦¶,kõ™r2!ƒˆ»–ÛM1U±„@ܲl®ZùOÝ5jñ¼[AîÚ]¾·H§‚áŠüáºK¸kÁßpl‡ºÒ*^øí
,[_•ǻ}•"?íõÍ2Òp,‡	nÕ±­”¸ÎÎ];¨+Ó±†gºš¼ÕÅ!hoj¡ @Àóc–}Pæ"Ü�|¹”SP¸G럦A}y ±"WTèe2÷¡‹yùíý'6Ž1|D"µÚ½Î¶¤!(**¤×È ¤ë	t)Ý÷¥ƒ�£¾¾‘¡ò÷`+¶-o¥›ë¸Ö@Àõ·O?Ï•÷ã j£þ{ílƒk�µ5¢5÷ÆrC¼Ó®éƆ…Íçþ•À±×wcÃüfv–7<–Ð'®½‘±Iá„Êíl'Õ �6›]P—lÞsê�™uüQ̾çq?+àŒï�ÊI¤Š»J`îg»ùÃ5?ô»ˆ\û_ϱðaÝØ/ædÀĎƱ£qj÷V`Åâô5ÛŠëÄWvJÃàéßÎfÉêb¤ÇÖÒ”wþ÷ËüéÁKYö¾Ž zý“³GŽE¡›¨E¬­�à�Ÿ�΃O¬Í•õ¾á\Œ—ŽßúÆç,RR[ZEÖ°¾L7!]o¡ûsÕ«AÀ¦÷Z€Dñ‡Rpôºá((ü‡.X9°&“�'·øî^�v¥Høé-.dËÒä¶aa³O›æëÏÊe¸~I€…ï kÛ }fRÀ'êš–f’ié%’&›š¢¼¼X=²ú%f¹É»fâ²?^ûc~ªÍ;3``Åm@;‡jŠªHתøÓ?Áv,i²hù”²±ã6Žå�Dé;b0Ûvl¥¾ì Ï?|yù"‰âØ»wï¢q
zðR–®(ãÊs†óâePS kúúöî£ÓÊ#1*++	õÈLŽ×Ÿ¦œ|›>YG÷94¨óEþß ¿èÆ+ôŠ
+iKவ_wþü§hùàw¬¨è†át¼ØÑÃw)6¿ÔLÈ€ã·}»Dà*e‘(<ð'ƒË§Ø)5 =ˆ^1‰·Ò󋃘®œò‰akQÐËÏÅV:ÝËC<h‘qúè­1ýì¨ë�¬�C“
õnX1óä1¥\uâXòÖíæO×ÿ„Y÷<æOž£Rÿ˜ã‘�Ô}kŠô>ú©{½~ò5÷>ÍOÈ則f²äƒbÁ–¥wñ ¨0ë?^CÃÞ]Z¸"M�«�Ätÿ_wf~þ«—P–®Ú´úSÅBlË&-3]Ç	”¢wïÞL:ï¶|¾!#GŒv·”ÓYÆÓÏ:•x{†�¤¨¸È_Q#GŒ¤¨¨…¢é@å[÷0tòÑ~"¿o°;+dê¡®	ê…Dℌ„ÏÞ�‚c¡a»NÍ2Ýsò=D¶—}OŸ»¹úáKˆb[ú¼Ppùo‚è*;…£ ºVÛý! WV�µO´èç+ýLËË+ð‡ÒV@Þ:íñË[·›œQýýUÚî¿óù—-•¥AnݺUGÑæÝÎÂO¶ëèàZ]î•3¼/•ÛËøÙKyâ¡+xà©7t¯/ô«FÈDùÕ%¼ô~9?8µ/°×cLìÎßæ²|­Ì¡€�x‘+�ƒ€B6Cn™´»¥ki×VEbaLOölZ«QŽbú™'�DiªÐ\AÁæOÖ�RŸ>žHS±hÔç(>ût'Q%Aò9€A§5Ó¸ö¯ÎôWç±91¶•˜®,7]exæoCX174.5QD£W> n9\úë†kžnÑfŸ‚m{ƒÔXŠqƒâ~È ;€Ÿf�æqÏŒt”ƒ‰Ì<îò>ßÍæ-©-¬ wÞíØ¶Eîº=˜†Á„	“µs°l;Ål´m‹+ŽE®ÛD
+ã'N"ÒÒFÃÞj~ö@O>4Û±p‡_?»„ qo
RJ~ùð?øÓoÂÒ÷J˜yÁhz~RÄÛã„{¦£”âçW�Ä?WVðƒsò÷w÷ûr»´¬D¿ )� .q›;¡k+iw¡7Ž�ƒâ’bzì…rllËÁ…˜6ãDŠK
+IÓþŒ@€Ò
;HëžÉšê5LÏ:6EÚeÄZˆ„»óýAM”좜{ÊB8À D;í§&q#ï?ã²3xùÙV®øY/>ÙÊÌÛ3°b›¶b+xa‹Áµ“l-ÃÝØ�­tÂȸÁ	ä38ÆÚÒ™SÂþê7
ˆoj÷%›åŠ•¦¸V3
M�`±o_©8÷ç³ü[4çg,ÝPÌåS‡“»v�/÷“‰À4Þûû[,xèf­ý'‹R ¥®‰µËWñäÜY,ý D'p$­ +na˜kßýG)ÿí¥üfÁ¾Ѱ·†Ç~{9uMµ¼üN¹ïóP¶æB%…:$=tè0½;hÌ"ÚÖNc´™Œ>=˜wËwyò¯\ÅTwÿ..)BÙ6�ê8öŒ“ü±;–ͦ�×u
+ÂL9õx~óÃëBðÑêUìß¿_sÁ¥�”Zö.’.¸ÖÄB0 }”KlÌmÀQP_©Ã±Þj5Hdy«WÊ‚Ló>¶–™0$ÆÎ½AÆ
Žé|BtzXµ¥8vHÜO˘ÆÌo÷W›­‰§>µV"o1ý¬Ÿ'<�ë¯-®BJƒ™ÓG“·n·N’TfÀÀ¶lÜDM‰›)¤×Þÿ§]x³N<ŠÜµ€bÅËoê×ò2v“hölŠ@H·ré9¸
ûj¸ã¿_IÍù—i˜¬Ø%”æ{§öæo+ÝÄQÃÐ�"ÓÀ±l~rÁ0þòV)e%º­}FŸžHÃà¾g^Ãq\{*¿þóû.Bl„iðèÜñÒ{ûAAQQ�NØ‹Æý5‰’J±é£Ï?º€æ–f’áòIFÎ2q-MÒÒ`ÃßÚ�èlß|£†$ê÷¬¶DưNJ‘(!‹8:ÃxC¹F¾W`
+	KÜûl-ÛmÓ/0È´Á45[cD6¶Ó#�ø
Ð9ˆ首ù¢ÁèšäÍ»ƒÜu;™yÜÑZ?pS¦,ÛæÃ½‹£‹æÜÀ]Ïý5µ ˆºÍöé¶îO<tÁ²Õå\yÆP½Sà;Y„a°{÷êË«yúá«xàù7A)êöêî_O=8!
žùÇ&.9£?/½[N `Ï®]4VÖÓ£_–þi·£ˆ�kn#”Ý�œ¡}©+?¨]ÑB`¹IÝúgÑ\QßÉPn`ÚŒQÀÆUŸúóòúŸðâ‹:W õýGýã¦À/õØuº¡'´×ð̆H´Dõõõ–Îêõü^²‡GÑÉ>ÑÜA¸¾îw6CëI9†ö‹7ÔUÁ^¥QÄÑÉ 5VR¿‚³îLp€³~ðm_˜yÏ9ëûç',‚¤íÜ<t3‹?݃&NœÄÊWßõ3¬oÓöÇÓs4QÝ÷ô›^>¹ï1óœ‘,û°!`÷î�ZpóÇŒqw&kÞû�[~•‹‚'œÍó¯nFH�£ÍÕ�HCò«ŸžÍƒO®ÐŒ!`ºA'ƒgæÌ"oe){’Óh€¨Û”ªû ^�ghÚWÃÔ'êlçÙÈÛ¶nÁ‹ž†N¿•æUÆÂB]¤.¸+ÎïÙgC{(Kgm,
Ro+®»_+uÞÏ[np'ÓLÎ,{(Îe÷ç=ãÚµ6-Û"”�36@Τ Öö
+=.¯Q„÷ª^Bˆrlľ½%þ[^ö´n‚X[XÑ	é>òçÜÂâ5ÚjHòŠmÛ·‚•;ÊyjÎL–®Ò�!%;wí@xø¦Èû ”={vú
"¥xvÎÕ,ù°8%áQÁÎÛhØ[À“ͦ%RÏož|¥M•uüáÁbÅ-–½S†cYí) ÒÔN 3̳ó®fñ
+ÝÂUºÞ–-ë6д¿Æÿ�i3N`ƒ»Ò¥˜~ÆI)Aý
+uÏ㇮¹™-[¶ê-mphþP×íw3µýa™pÈxÕ¸­õ!š£ÊwéÎ|0@,ËŸmõ‹C=Nb»©Û'Á}δÙäç¶úÄrƒÙ@ËQiH©«ƒ
“Ķ·ûÙ@Q×ö·”Ö<è6ãVŒ;î¸ý¿½EÑZúõíÇϺˆ�JJHÏîF{]þ)
=vÔp–¼½’]k·0ôè‘~3¯¶oÇÚ-´7´àX6ž=‰IÃ{’_Ú¨‰ªF'z~°¾€ºú:Êijã™y×±fÏ^Î:öh¶”Ö1ëÌQl)©ó½Š½ûô¥Åj'ÒÔÊ[+7³â£Ý´Õ7mi!x÷ƒœwöx¶5‚ôÈìACC=ñ–vÞúhƒGÓáf÷0Ó‚3iFñ¹Ö€aƒiµ"ÄšÛ©(ÝÇ€áƒý‰ª(ÕæéÏ>�ÒÒR­£ °Ê×�	ùt?ûI—ÀÎýnù}ˆãÎ5ºdÚÙq6.h¥ÉÖÈö¼|¸÷˜®Žà%‹@Åá'Ÿz-_ÐRe!«-‚Ò0ú˜Dò#~i¹×�ÂFs�vGÎ<åfÇ9ÔîáŽæ@î¼;Èû|w‚¿;�=¢_B!q3Xó·å“3L7…ªÜQŠ’¼÷‹}>8fÌXvíÞ�4
æÜp‘Ÿ
+ž÷¡^¡7ß¿�§¾Š¼•Ez§OËñ9€0
zéËœ¿Í’UÅHCÒ\Ý@AÑ÷×òÒ»:ÛÇjSpè°an×}†fŸ5Š%û“‹€Pf˜Ù
gÉ[e~2J1zÔh
+\1�o<±€�>×›I¸+¾ç™·Ó¼ò1ÿ:/Ê&�=\ uøüÙVßOà)v=Lh¶´þ Ü•�n$ü	Ê5ßPAH
+lÇ!î(?O0® `€Ñ㈭Bû¬Dø‚¸ÒÏVè`�âVÜ
§ä/IfN?š;^xÉ·
+ò>ß��ub¬yc•¿’VW¢€Ó/ú«^{7U”z£‚+g%oE±Öê¥ÁÃ×›¼•	ëÀQ!ÉÖ—[î_ÄÓsôV0÷=û†¦6i¸¦£¾ßƒŒ^=H«É é@B
+]Ðé&�Ã!0´÷î¦{rÒy3°-GûÜ�f¦åeàŠó³ôír
+
+:!?ZÛÚH2jü ÐÚõ®mÎç_ -›_oãïΑÆuÐÖ@3I…8.E¢Óˆ¶îhP^7P÷Û¿»öÀô!q¿~Pívª^â…Q
+[Ù�9€wËW—ªÇÆÉß–O]q%9ö¨+®dõëï%öp•;÷ò̼Ùä½_ÌÌ3G�÷�§h·ÛwG¿À§� oeR
+ÆŒËÎ;è9¤/7ÿjQÂvQŠgæ]ÃÒÕ%\qÚp–|Xˆt—�Ç�á—Ÿ;„eï”û›<A“¡Ã‡Í€º²ƒºàÒ‹¸¸3wïS¯1çæi�Ö³ä­2HZùÓÎ8ÉÇß|ÿZÿsSSS'¢(ªøòúŒ‹LºwÓ9{[ßmóëÿ¼Êo¯4Ë+!�»|?î*Œ{ü!á·˜;é�ÇSj“w-±âÑxÇV†Á–?ü’©Cb>qH‘Xý^*X²jÛ¥è5B's:Ž"?³¿•L]I•íó`a’9Xë–‘ÝtÏbž™3Ì<c÷?÷ŽË”îŠNlBåm±–=ÄÝÜQHêJ*¹éÞ…<=G‹†™gŒdéêb]b~únZ¾
+Á/ç¾Æïïÿyo˜Ä•¢ª¦Šž}}BêîK<¼ð­O$f—CA8œF�»y”6ð�š´G`×Úv_”îŠKsCÄË‹|g”nÚ`+=ñ¡{
+¬/×í÷¦ßö[)	M¤Ð-eù¾ÿ®ëXèfÔ§üæ)¦nÖiÛ6–eho‡¦&þí×ɯ®?{~€ªèfÞ÷˜ž3Ûî4qçê OÞg…¬zõ�âV-þtÛ¶åmn§¾¼Ú¿GšRWFÁ3s®fé‡Å\qú–}R®Y‘e³sÏN¿¸ã‘›.ƲãÌ w?ùOÊ«Á³ó®eéÇ¥Ì<u‹Vîa÷noB‡úR½ää¦éþƒJ±cS>ѶÒÝ”ÉQÏÌ»€%«ŠÙ¹sÇ3–�;wmi§ÉíTêY�Ê^yå%êuWN”[bîиn1¶£È04ƒö|^ë— „âŠçŽÐíÛ¢Ž  µìø¼<Èø[Äv-®®ÀÛª#ÐmããÄâ
+‡€$0
Ÿâ±8íÑ6š[¨©®!�øÏQ¨\þTb7,ÇQÔH ÝýÁ¼5‰âoG±…ó~æ_õÚ»ÄÚ"xN�çæ]ƒ—Äqã=/0ÿw7�ûQWœ<Œ%«
+Ù±kG
+1Ϲé"–­)EÅ-®8}J9Ü|ßB@1ÿw7·â!¹é¾’í¡N9y:»vìÀ‰ZÓ œ¥ƒ0õeyfÞÕ,ù°$•+¸ï¶sÇvªwïK!€dä<óìS>Ò•Û™S9Š–�K($Êïýc-Ë!aæTøöÈ8(ÁÖ½šÝOûÕ477cÅuë–¯Bq·+0	¥%€E<fÑÞÞFcs3µÕµ)�Âνó*å{l`þ'Û}ž�”›=Ý`ÆÅçáØÛ¶çS¹½	Ìÿý�,ùHgáØ–ÍŽ�Ûit½{ºPÒP¶"kXæÜp÷¿ðÊv˜{ãE(KWqåé#q‡›ï[¿à	sn¸CJlÇâþçߤ®ü ØV4Žc;DZ8÷]û¸æí•>Ìœ1’Ü•…¾öïÁÇo¬@9ŠcgœÈ¯¿{uÊ»<XÅÛo¿MKKs
+ò=hݸ‰�A·éƒ×N¢EAaE€óFÄÁ¶½N~è9b±Í­-Äc¶ã|e˜Bi¡ˆFõ¦ÍMMÔÖÖw"_è5¢/ÕºïOÞ§{ˆ:‰FÆ!#䱺‚™'ŒÖÎ!Ggì<;÷Z¯ÜÃì3�"wu tZØضmu%•`žyèLÃÀvl–|XèÆa°øƒÝ\yú(½m¬m“=¼u¥UÔ•T‘=²�Üð]r?J¤y=róÅüòÙ¹Dì0¤Ï Ú[Ûº”ÿy«Š4MwèÓ›5¬/ÊvøÍ÷®Mé °wo9ÍMM�ï�
ØJ`ˆÄN¢^ìÝóD¬,	�iNÿÍÓ:cXJ¤0�¦MåˆÀkú¨wé¨3¨.÷ôïõ>,½io?º�þ¡iürÆ¥„dÀÿ×ø[É¡EƒD÷ÿõÙ²€ÜÕE(ËÆ0MlKç8{²þ™‡®á¥5¥(¥Xúq)Â4?~<Â�X–
+–|Xˆ²-®<}¤^õ®9ïú‹È]]ÄÌSF¤Œ©¡´Šº¢J~wó÷ÈÌîNz·ÄÞÏÌ»!$Wž>¼k¥7~ùÅïý¦“ÉÚvcCƒ»õŠê°gHRã4wµÇí{÷‚1Ç5ÑÙ9ão}�h¤+C9Ž»Â¥K‡VB^§µŽÈ÷"¯Žr‰ «�Eöí+UšBº^Ý�¬z)‘ïä>0yOaÀW?xõMWH²ñì(ž™s-KW1ûŒ£ô*v54‰æsn¸Ð©1~òö*0óç^ïr|ñ$�+OÉ/Ÿy•ºòƒ<ýà,r?(ÆhÏÊÎ�;˜{óEä­*ÒD€V=ð«ó®LLœÛtÒqÓÉ”R,^¼�ºúúÎïþܵlù HsƒCeU®†åm†D’´´4ÒÃaÂia�–m�Åü8ƒ0¾„°}4ŒÁ Þ£Ø¶¶'�ÓÚÖJcc
�
Ä¢±”±›‡C>À/g\ŠW¦8oÕ‹þŽ¢ÔWrõ½O�=´Ž»s§‡™z7ëwþ\NÕì^ËvŸ…w ú{Ÿ}�±ÇŒí4–¬a}¨ß[�Âú
®pu	;wîH9³dUqÊ÷dä{ì5ˆp‡-[6PW[×å<ùÛ¶¸AÕAÓ�
L¿ô&½CºRÒmŠõ7qptûY	B}‘Éw(Hˆo,É·-�y8äw„_θ”Ë]Å/<‚¨)<À³^Cî*� òÉÛ+�|iÊUX–|X„Hêþy$P_v¤`Ö©# 	r?*ÒŠ  ¥AÞªÂäßûôk̽Y»¡—¬*æ�ó®<äV°ÉDÐØØô…ÈW8¤�û!¥+ÿÉQßú¡kŽtSCŸWŽÀ‘Û¶p7ZÓ;�„ÒÜj£#Ç…?N™è”šÞx¿¿bÛÖõª[÷ž‡¿Èëˆâü;´µðöùç½cŽãðÆïæû)[É“é,‰e‡¬B.ûÓ=A·Îé4Ž+ÿ|õ{«yû�QJ1gÅ‹)"Àvl۪Ǫà˜1ÇtZýsnº�¡i'w[W ”âÝåo³~ÆÃ"ßñ
+�€ijm< 
+¥låo	gJ‚�áp˜p8ìÎoÒÜ¡ðæS
+o“ª€�x˲ˆÅb´´¶ÒÒÜÒ¥øÿÊ'«:NbZIEND®B`‚

Fichier diff supprimé car celui-ci est trop grand
+ 190 - 1
docs/examples/web/models_ray_picking.js


BIN
docs/examples/web/resources/fonts/KAISG.ttf


+ 188 - 0
docs/examples/web/resources/fonts/pixantiqua.fnt

@@ -0,0 +1,188 @@
+info face="PixAntiqua" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=2,2,2,2 spacing=2,2 outline=0
+common lineHeight=32 base=27 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
+page id=0 file="pixantiqua_0.png"
+chars count=184
+char id=32   x=9     y=304   width=7     height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=33   x=391   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=34   x=240   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=35   x=468   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=36   x=152   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=37   x=176   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=38   x=303   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=39   x=495   y=266   width=8     height=36    xoffset=-3    yoffset=-2    xadvance=5     page=0  chnl=15
+char id=40   x=256   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=199  x=432   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=200  x=126   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=201  x=147   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=202  x=288   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=203  x=189   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=204  x=468   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=205  x=486   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=206  x=0     y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=207  x=72    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=208  x=329   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=209  x=277   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=210  x=182   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=211  x=26    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=41   x=272   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=42   x=288   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=43   x=414   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=44   x=378   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=45   x=414   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=46   x=443   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=47   x=392   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=48   x=485   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=49   x=450   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=50   x=21    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=51   x=42    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=59   x=456   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=60   x=168   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=61   x=309   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=62   x=336   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=63   x=315   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=64   x=364   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=65   x=390   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=66   x=120   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=67   x=144   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=68   x=168   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=69   x=294   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=52   x=488   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=53   x=63    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=54   x=24    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=55   x=48    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=56   x=72    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=57   x=96    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=58   x=404   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=70   x=252   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=71   x=192   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=72   x=78    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=78   x=78    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=79   x=355   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=80   x=264   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=81   x=381   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=82   x=288   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=83   x=312   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=91   x=144   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=92   x=108   y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=93   x=304   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=94   x=34    y=0     width=32    height=36    xoffset=-3    yoffset=-2    xadvance=29    page=0  chnl=15
+char id=95   x=231   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=96   x=442   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=97   x=408   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=98   x=432   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=99   x=210   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=84   x=336   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=85   x=360   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=86   x=0     y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=87   x=68    y=0     width=30    height=36    xoffset=-3    yoffset=-2    xadvance=27    page=0  chnl=15
+char id=88   x=26    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=89   x=384   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=90   x=84    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=100  x=456   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=101  x=480   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=102  x=54    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=103  x=0     y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=104  x=24    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=105  x=469   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=106  x=18    y=266   width=16    height=36    xoffset=-8    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=107  x=48    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=108  x=417   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=109  x=161   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=110  x=72    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=111  x=96    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=117  x=192   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=118  x=216   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=119  x=248   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=120  x=240   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=121  x=264   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=122  x=288   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=123  x=432   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=124  x=365   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=125  x=378   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=126  x=393   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=127  x=132   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=160  x=0     y=304   width=7     height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=161  x=352   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=162  x=351   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=163  x=336   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=165  x=360   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=167  x=384   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=169  x=433   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=170  x=224   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=171  x=105   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=172  x=0     y=0     width=32    height=36    xoffset=-3    yoffset=-2    xadvance=29    page=0  chnl=15
+char id=173  x=494   y=38    width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=174  x=52    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=175  x=52    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=176  x=126   y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=177  x=435   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=178  x=320   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=179  x=336   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=181  x=459   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=112  x=120   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=113  x=144   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=114  x=396   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=115  x=168   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=116  x=36    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=182  x=408   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=183  x=498   y=190   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=185  x=192   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=186  x=208   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=187  x=477   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=191  x=456   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=192  x=407   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=193  x=234   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=194  x=416   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=195  x=156   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=196  x=130   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=197  x=104   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=198  x=190   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=212  x=0     y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=213  x=338   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=214  x=312   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=215  x=357   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=216  x=286   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=217  x=456   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=218  x=480   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=219  x=0     y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=220  x=24    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=221  x=48    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=222  x=260   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=223  x=72    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=224  x=96    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=225  x=120   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=226  x=144   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=227  x=168   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=228  x=192   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=229  x=216   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=230  x=219   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=231  x=372   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=73   x=90    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=74   x=216   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=75   x=240   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=76   x=273   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=77   x=100   y=0     width=30    height=36    xoffset=-3    yoffset=-2    xadvance=27    page=0  chnl=15
+char id=232  x=312   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=233  x=240   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=234  x=264   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=235  x=104   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=236  x=430   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=237  x=482   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=238  x=160   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=239  x=176   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=240  x=128   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=241  x=200   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=242  x=224   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=243  x=248   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=244  x=272   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=245  x=296   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=246  x=320   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=247  x=330   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=248  x=208   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=249  x=344   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=250  x=368   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=251  x=416   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=252  x=440   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=253  x=464   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=254  x=0     y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=255  x=0     y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15

BIN
docs/examples/web/resources/fonts/pixantiqua_0.png


+ 456 - 0
docs/examples/web/resources/model/lowpoly-tower.obj

@@ -0,0 +1,456 @@
+# Blender v2.78 (sub 0) OBJ File: 'lowpoly-tower.blend'
+# www.blender.org
+o Grid
+v -4.000000 0.000000 4.000000
+v -2.327363 0.000000 4.654725
+v 0.000000 0.000000 4.654725
+v 2.327363 0.000000 4.654725
+v 4.000000 0.000000 4.000000
+v -4.654725 0.955085 2.327363
+v -2.000000 0.815050 2.000000
+v 0.000000 0.476341 2.423448
+v 2.000000 0.476341 2.000000
+v 4.654725 0.000000 2.327363
+v -4.654725 1.649076 0.000000
+v -2.423448 1.092402 0.000000
+v 2.423448 0.198579 0.000000
+v 4.654725 0.000000 0.000000
+v -4.654725 1.649076 -2.327363
+v -2.000000 1.092402 -2.000000
+v 0.000000 0.476341 -2.423448
+v 2.000000 -0.012791 -2.000000
+v 4.654725 0.000000 -2.612731
+v -4.000000 0.955085 -4.000000
+v -2.327363 0.955085 -4.654725
+v 0.000000 0.955085 -4.654725
+v 2.327363 0.000000 -4.654725
+v 4.000000 0.000000 -4.000000
+v 2.423448 0.682825 0.000000
+v 2.000000 0.565423 -2.000000
+v -4.654725 -0.020560 2.327363
+v -4.654725 0.000000 0.000000
+v -4.654725 0.000000 -2.327363
+v -4.000000 0.000000 -4.000000
+v -2.327363 0.000000 -4.654725
+v 0.000000 -0.020560 -4.654725
+v 0.000000 0.709880 -1.230535
+v -0.000000 7.395413 0.000000
+v 0.962071 0.709880 -0.767226
+v -0.533909 0.709880 1.108674
+v -1.199683 0.709880 0.273820
+v -0.962071 0.709880 -0.767226
+v 1.506076 0.859071 1.325337
+v 1.199683 0.709880 0.273820
+v 0.533909 0.709880 1.108674
+v 0.000000 1.875340 -1.177842
+v -0.000000 2.293973 -0.649884
+v -0.000000 4.365648 -0.627970
+v 0.000000 6.167194 -0.942957
+v 0.000000 6.232434 -1.708677
+v 1.335898 6.232434 -1.065343
+v 0.737233 6.167195 -0.587924
+v 0.490966 4.365648 -0.391533
+v 0.508100 2.293973 -0.405196
+v 0.920874 1.875340 -0.734372
+v -0.741367 6.232434 1.539465
+v -0.409133 6.167195 0.849574
+v -0.272466 4.365648 0.565781
+v -0.281974 2.293973 0.585526
+v -0.511047 1.875340 1.061199
+v -1.665837 6.232434 0.380217
+v -0.919314 6.167195 0.209828
+v -0.612225 4.365648 0.139736
+v -0.633590 2.293973 0.144613
+v -1.148311 1.875340 0.262095
+v -1.335898 6.232434 -1.065343
+v -0.737233 6.167195 -0.587924
+v -0.490967 4.365648 -0.391533
+v -0.508100 2.293973 -0.405196
+v -0.920874 1.875340 -0.734372
+v 1.665837 6.232434 0.380216
+v 0.919315 6.167195 0.209828
+v 0.612225 4.365648 0.139736
+v 0.633590 2.293973 0.144613
+v 1.148311 1.875340 0.262095
+v 0.741367 6.232434 1.539465
+v 0.409133 6.167195 0.849575
+v 0.272466 4.365648 0.565781
+v 0.281974 2.293973 0.585526
+v 0.511046 1.875340 1.061199
+v 0.000000 5.012550 -0.969733
+v 0.758168 5.012550 -0.604618
+v -0.420751 5.012550 0.873699
+v -0.945419 5.012550 0.215786
+v -0.758168 5.012550 -0.604618
+v 0.945419 5.012550 0.215786
+v 0.420751 5.012550 0.873699
+vt 0.0523 0.5444
+vt 0.1817 0.4284
+vt 0.1641 0.5859
+vt 0.0177 0.4451
+vt 0.1526 0.3090
+vt 0.0189 0.1737
+vt 0.0188 0.3088
+vt 0.0561 0.0762
+vt 0.1757 0.1924
+vt 0.3024 0.4534
+vt 0.3071 0.5902
+vt 0.3413 0.2459
+vt 0.2906 0.1614
+vt 0.4116 0.1801
+vt 0.2834 0.3774
+vt 0.1526 0.0362
+vt 0.2917 0.1622
+vt 0.4446 0.5865
+vt 0.4443 0.2989
+vt 0.3711 0.3021
+vt 0.4396 0.0275
+vt 0.4094 0.1829
+vt 0.4219 0.4255
+vt 0.5474 0.5381
+vt 0.5811 0.4376
+vt 0.5715 0.1505
+vt 0.5811 0.2997
+vt 0.5272 0.0533
+vt 0.2208 0.2194
+vt 0.3456 0.3610
+vt 0.2878 0.0321
+vt 0.2321 0.3392
+vt 0.4432 0.0177
+vt 0.7347 0.7934
+vt 0.7382 0.7595
+vt 0.8982 0.7768
+vt 0.6169 0.7595
+vt 0.6139 0.7879
+vt 0.4951 0.7634
+vt 0.1551 0.6832
+vt 0.2925 0.6268
+vt 0.2925 0.6832
+vt 0.7795 0.6832
+vt 0.6421 0.6268
+vt 0.7795 0.6255
+vt 0.5046 0.7241
+vt 0.6421 0.7241
+vt 0.3986 0.6268
+vt 0.3986 0.6832
+vt 0.5046 0.6268
+vt 0.0177 0.6268
+vt 0.1551 0.6255
+vt 0.8856 0.6268
+vt 0.1899 0.9579
+vt 0.1194 0.8696
+vt 0.2324 0.8696
+vt 0.1899 0.7813
+vt 0.0943 0.7595
+vt 0.0177 0.8206
+vt 0.0177 0.9186
+vt 0.0943 0.9797
+vt 0.2793 0.2349
+vt 0.2304 0.2758
+vt 0.6597 0.0177
+vt 0.6954 0.0993
+vt 0.6367 0.0768
+vt 0.7558 0.0777
+vt 0.7238 0.0440
+vt 0.8840 0.1330
+vt 0.7385 0.1141
+vt 0.9157 0.0886
+vt 0.9781 0.1232
+vt 0.9224 0.1276
+vt 0.2677 0.8141
+vt 0.3463 0.8037
+vt 0.3086 0.8339
+vt 0.6387 0.3550
+vt 0.7130 0.3801
+vt 0.6596 0.4053
+vt 0.7245 0.3245
+vt 0.6919 0.3383
+vt 0.8655 0.3566
+vt 0.7351 0.3577
+vt 0.9770 0.3365
+vt 0.9078 0.3751
+vt 0.9174 0.3282
+vt 0.2677 0.9018
+vt 0.3086 0.8821
+vt 0.6803 0.2948
+vt 0.6251 0.3035
+vt 0.7194 0.2854
+vt 0.8764 0.2832
+vt 0.9221 0.2861
+vt 0.3363 0.9565
+vt 0.3464 0.9122
+vt 0.6751 0.2482
+vt 0.6178 0.2499
+vt 0.7179 0.2431
+vt 0.9823 0.2484
+vt 0.9247 0.2452
+vt 0.3935 0.9014
+vt 0.6755 0.1996
+vt 0.6164 0.1941
+vt 0.7201 0.1992
+vt 0.8793 0.2446
+vt 0.9823 0.2060
+vt 0.9257 0.2051
+vt 0.4598 0.8580
+vt 0.4144 0.8579
+vt 0.6819 0.1498
+vt 0.6222 0.1361
+vt 0.7266 0.1555
+vt 0.8831 0.1684
+vt 0.9252 0.1659
+vt 0.4218 0.7790
+vt 0.3934 0.8145
+vt 0.3363 0.7595
+vt 0.8815 0.2060
+vt 0.8720 0.3208
+vt 0.8825 0.1012
+vt 0.9735 0.0816
+vt 0.9718 0.3817
+vt 0.9807 0.2918
+vt 0.4218 0.9370
+vt 0.9810 0.1644
+vn 0.1035 0.8806 0.4623
+vn 0.0964 0.9481 0.3030
+vn 0.0000 0.9780 0.2088
+vn 0.0659 0.9835 0.1683
+vn 0.2325 0.9320 0.2779
+vn 0.0553 0.9960 -0.0702
+vn 0.2827 0.9564 0.0728
+vn 0.1873 0.9776 -0.0961
+vn 0.2421 0.9703 0.0000
+vn 0.0921 0.9772 -0.1913
+vn -0.0277 0.9947 -0.0993
+vn 0.2308 0.9274 -0.2944
+vn 0.2771 0.9572 -0.0837
+vn 0.3724 0.9074 0.1947
+vn 0.0777 0.9770 -0.1985
+vn -0.1094 0.9539 0.2794
+vn 0.0364 0.9844 0.1721
+vn 0.1683 0.9835 0.0659
+vn 0.0674 0.9901 0.1230
+vn 0.4338 0.8823 0.1829
+vn 0.2845 0.9565 0.0649
+vn 0.0886 0.9961 0.0000
+vn 0.2000 0.9789 0.0424
+vn 0.1417 0.9830 0.1171
+vn 0.3021 0.9524 0.0412
+vn -0.0193 0.9986 -0.0493
+vn 0.0000 0.9777 0.2098
+vn 0.0005 0.9781 -0.2083
+vn 0.1879 0.9782 -0.0887
+vn 0.2249 0.0000 0.9744
+vn 0.9783 0.0000 -0.2071
+vn 0.9783 0.0000 0.2071
+vn 0.0000 0.0000 -1.0000
+vn -1.0000 0.0000 0.0000
+vn -0.3645 0.0000 -0.9312
+vn -0.9312 0.0000 -0.3645
+vn -0.9312 0.0000 0.3645
+vn 0.2615 0.7979 -0.5431
+vn 0.5877 0.7979 -0.1341
+vn 0.4713 0.7979 0.3758
+vn -0.0000 0.7979 0.6028
+vn -0.4713 0.7979 0.3758
+vn -0.5877 0.7979 -0.1341
+vn -0.2615 0.7979 -0.5431
+vn -0.1285 0.9864 -0.1025
+vn 0.0929 0.8937 0.4389
+vn -0.4335 0.0407 -0.9002
+vn -0.2867 0.7507 -0.5952
+vn -0.4339 0.0095 -0.9009
+vn -0.4338 0.0209 -0.9008
+vn -0.0408 -0.9956 -0.0848
+vn -0.9741 0.0407 -0.2223
+vn -0.6441 0.7507 -0.1470
+vn -0.9749 0.0095 -0.2225
+vn -0.9747 0.0209 -0.2225
+vn -0.0918 -0.9956 -0.0209
+vn -0.7812 0.0407 0.6230
+vn -0.5165 0.7507 0.4119
+vn -0.7818 0.0095 0.6235
+vn -0.7817 0.0209 0.6234
+vn -0.0736 -0.9956 0.0587
+vn -0.0000 0.0407 0.9992
+vn 0.0000 0.7507 0.6607
+vn 0.0000 0.0095 1.0000
+vn -0.0000 0.0209 0.9998
+vn -0.0000 -0.9956 0.0941
+vn 0.7812 0.0407 0.6230
+vn 0.5165 0.7507 0.4119
+vn 0.7818 0.0095 0.6235
+vn 0.7817 0.0209 0.6234
+vn 0.0736 -0.9956 0.0587
+vn 0.9741 0.0407 -0.2223
+vn 0.6441 0.7507 -0.1470
+vn 0.9749 0.0095 -0.2225
+vn 0.9747 0.0209 -0.2225
+vn 0.0918 -0.9956 -0.0209
+vn 0.4335 0.0407 -0.9002
+vn 0.2867 0.7507 -0.5952
+vn 0.4339 0.0095 -0.9009
+vn 0.4338 0.0209 -0.9008
+vn 0.0408 -0.9956 -0.0848
+vn 0.3918 -0.4298 -0.8135
+vn 0.8803 -0.4298 -0.2009
+vn 0.7059 -0.4298 0.5630
+vn -0.0000 -0.4298 0.9029
+vn -0.7059 -0.4298 0.5630
+vn -0.8803 -0.4298 -0.2009
+vn -0.3918 -0.4298 -0.8135
+vn 0.0210 0.9998 -0.0048
+vn 0.0482 0.9981 -0.0385
+vn -0.0166 0.9914 -0.1301
+vn -0.0090 0.9904 -0.1379
+vn 0.2820 0.9576 0.0597
+vn -0.0000 0.9846 0.1749
+vn -0.0921 0.9772 -0.1913
+vn -0.1734 0.9794 0.1036
+s off
+f 1/1/1 7/2/1 6/3/1
+f 2/4/2 8/5/2 7/2/2
+f 4/6/3 8/5/3 3/7/3
+f 5/8/4 9/9/4 4/6/4
+f 6/3/5 12/10/5 11/11/5
+f 35/12/6 25/13/6 26/14/6
+f 7/2/7 37/15/7 12/10/7
+f 10/16/8 13/17/8 9/9/8
+f 12/10/9 15/18/9 11/11/9
+f 35/12/10 17/19/10 33/20/10
+f 13/17/11 19/21/11 18/22/11
+f 16/23/12 20/24/12 15/18/12
+f 17/19/13 21/25/13 16/23/13
+f 17/19/14 23/26/14 22/27/14
+f 26/14/15 24/28/15 23/26/15
+f 1/1/16 2/4/16 7/2/16
+f 2/4/3 3/7/3 8/5/3
+f 4/6/17 9/9/17 8/5/17
+f 5/8/18 10/16/18 9/9/18
+f 6/3/19 7/2/19 12/10/19
+f 25/13/20 39/29/20 9/9/20
+f 38/30/21 12/10/21 37/15/21
+f 10/16/22 14/31/22 13/17/22
+f 12/10/23 16/23/23 15/18/23
+f 8/5/24 36/32/24 7/2/24
+f 38/30/25 17/19/25 16/23/25
+f 13/17/22 14/31/22 19/21/22
+f 16/23/26 21/25/26 20/24/26
+f 17/19/27 22/27/27 21/25/27
+f 17/19/28 26/14/28 23/26/28
+f 26/14/29 19/33/29 24/28/29
+f 26/34/30 18/35/30 19/36/30
+f 26/34/31 13/37/31 18/35/31
+f 25/38/32 9/39/32 13/37/32
+f 22/40/33 31/41/33 21/42/33
+f 6/43/34 28/44/34 27/45/34
+f 15/46/34 28/44/34 11/47/34
+f 21/42/35 30/48/35 20/49/35
+f 20/49/36 29/50/36 15/46/36
+f 22/40/33 23/51/33 32/52/33
+f 6/43/37 27/45/37 1/53/37
+f 46/54/38 34/55/38 47/56/38
+f 47/56/39 34/55/39 67/57/39
+f 67/57/40 34/55/40 72/58/40
+f 72/58/41 34/55/41 52/59/41
+f 52/59/42 34/55/42 57/60/42
+f 57/60/43 34/55/43 62/61/43
+f 62/61/44 34/55/44 46/54/44
+f 40/62/45 41/63/45 39/29/45
+f 39/29/46 8/5/46 9/9/46
+f 38/64/47 42/65/47 33/66/47
+f 65/67/48 42/65/48 66/68/48
+f 65/67/49 44/69/49 43/70/49
+f 81/71/50 45/72/50 77/73/50
+f 62/74/51 45/75/51 63/76/51
+f 37/77/52 66/78/52 38/79/52
+f 60/80/53 66/78/53 61/81/53
+f 60/80/54 64/82/54 65/83/54
+f 58/84/55 81/85/55 80/86/55
+f 57/87/56 63/76/56 58/88/56
+f 56/89/57 37/77/57 36/90/57
+f 55/91/58 61/81/58 56/89/58
+f 54/92/59 60/80/59 55/91/59
+f 79/93/60 58/84/60 80/86/60
+f 52/94/61 58/88/61 53/95/61
+f 76/96/62 36/90/62 41/97/62
+f 75/98/63 56/89/63 76/96/63
+f 75/98/64 54/92/64 55/91/64
+f 73/99/65 79/93/65 83/100/65
+f 73/101/66 52/94/66 53/95/66
+f 71/102/67 41/97/67 40/103/67
+f 70/104/68 76/96/68 71/102/68
+f 70/104/69 74/105/69 75/98/69
+f 68/106/70 83/100/70 82/107/70
+f 67/108/71 73/101/71 68/109/71
+f 51/110/72 40/103/72 35/111/72
+f 50/112/73 71/102/73 51/110/73
+f 49/113/74 70/104/74 50/112/74
+f 78/114/75 68/106/75 82/107/75
+f 47/115/76 68/109/76 48/116/76
+f 42/65/77 35/111/77 33/66/77
+f 43/70/78 51/110/78 42/65/78
+f 44/69/79 50/112/79 43/70/79
+f 45/72/80 78/114/80 77/73/80
+f 46/117/81 48/116/81 45/75/81
+f 44/69/82 78/114/82 49/113/82
+f 49/113/83 82/107/83 69/118/83
+f 82/107/84 74/105/84 69/118/84
+f 83/100/85 54/92/85 74/105/85
+f 79/93/86 59/119/86 54/92/86
+f 80/86/87 64/82/87 59/119/87
+f 64/120/88 77/73/88 44/69/88
+f 35/12/89 40/62/89 25/13/89
+f 7/2/90 36/32/90 37/15/90
+f 35/12/91 26/14/91 17/19/91
+f 25/13/92 40/62/92 39/29/92
+f 38/30/93 16/23/93 12/10/93
+f 8/5/94 41/63/94 36/32/94
+f 38/30/95 33/20/95 17/19/95
+f 26/34/31 25/38/31 13/37/31
+f 22/40/33 32/52/33 31/41/33
+f 6/43/34 11/47/34 28/44/34
+f 15/46/34 29/50/34 28/44/34
+f 21/42/35 31/41/35 30/48/35
+f 20/49/36 30/48/36 29/50/36
+f 39/29/96 41/63/96 8/5/96
+f 38/64/47 66/68/47 42/65/47
+f 65/67/48 43/70/48 42/65/48
+f 65/67/49 64/120/49 44/69/49
+f 81/71/50 63/121/50 45/72/50
+f 62/74/51 46/117/51 45/75/51
+f 37/77/52 61/81/52 66/78/52
+f 60/80/53 65/83/53 66/78/53
+f 60/80/54 59/119/54 64/82/54
+f 58/84/55 63/122/55 81/85/55
+f 57/87/56 62/74/56 63/76/56
+f 56/89/57 61/81/57 37/77/57
+f 55/91/58 60/80/58 61/81/58
+f 54/92/59 59/119/59 60/80/59
+f 79/93/60 53/123/60 58/84/60
+f 52/94/61 57/87/61 58/88/61
+f 76/96/62 56/89/62 36/90/62
+f 75/98/63 55/91/63 56/89/63
+f 75/98/64 74/105/64 54/92/64
+f 73/99/65 53/123/65 79/93/65
+f 73/101/66 72/124/66 52/94/66
+f 71/102/67 76/96/67 41/97/67
+f 70/104/68 75/98/68 76/96/68
+f 70/104/69 69/118/69 74/105/69
+f 68/106/70 73/99/70 83/100/70
+f 67/108/71 72/124/71 73/101/71
+f 51/110/72 71/102/72 40/103/72
+f 50/112/73 70/104/73 71/102/73
+f 49/113/74 69/118/74 70/104/74
+f 78/114/75 48/125/75 68/106/75
+f 47/115/76 67/108/76 68/109/76
+f 42/65/77 51/110/77 35/111/77
+f 43/70/78 50/112/78 51/110/78
+f 44/69/79 49/113/79 50/112/79
+f 45/72/80 48/125/80 78/114/80
+f 46/117/81 47/115/81 48/116/81
+f 44/69/82 77/73/82 78/114/82
+f 49/113/83 78/114/83 82/107/83
+f 82/107/84 83/100/84 74/105/84
+f 83/100/85 79/93/85 54/92/85
+f 79/93/86 80/86/86 59/119/86
+f 80/86/87 81/85/87 64/82/87
+f 64/120/88 81/71/88 77/73/88

BIN
docs/examples/web/resources/model/lowpoly-tower.png


BIN
docs/examples/web/resources/ps3.png


BIN
docs/examples/web/resources/xbox.png


BIN
docs/examples/web/shaders_shapes_textures.data


+ 3 - 1
docs/examples/web/shaders_shapes_textures.js

@@ -104,6 +104,8 @@ Module.expectedDataFileDownloads++;
     }
 Module['FS_createPath']('/', 'resources', true, true);
 Module['FS_createPath']('/resources', 'texture_formats', true, true);
+Module['FS_createPath']('/resources', 'shaders', true, true);
+Module['FS_createPath']('/resources/shaders', 'glsl100', true, true);
 
     function DataRequest(start, end, crunched, audio) {
       this.start = start;
@@ -183,7 +185,7 @@ Module['FS_createPath']('/resources', 'texture_formats', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 116512, "filename": "/resources/texture_formats/sonic.png"}], "remote_package_size": 116512, "package_uuid": "d1fc9f95-b3a7-4538-9e6f-b593f6d6be0b"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 116512, "filename": "/resources/texture_formats/sonic.png"}, {"audio": 0, "start": 116512, "crunched": 0, "end": 117117, "filename": "/resources/shaders/glsl100/base.vs"}, {"audio": 0, "start": 117117, "crunched": 0, "end": 117782, "filename": "/resources/shaders/glsl100/grayscale.fs"}], "remote_package_size": 117782, "package_uuid": "d42d3374-bb59-4789-9c86-3d81cea4c708"});
 
 })();
 

+ 43 - 1
docs/examples/web/text_bmfont_ttf.data

@@ -97,7 +97,49 @@ char id=123  x=191   y=141   width=14    height=45    xoffset=-1    yoffset=0
 char id=124  x=416   y=141   width=5     height=45    xoffset=2     yoffset=0     xadvance=9     page=0  chnl=15
 char id=125  x=207   y=141   width=13    height=45    xoffset=0     yoffset=0     xadvance=12    page=0  chnl=15
 char id=126  x=42    y=141   width=19    height=45    xoffset=1     yoffset=0     xadvance=21    page=0  chnl=15
-0FFTMM…B`ˆ¸GDEF_Õ€„NGPOSWµzß�TdGSUB"n'“€Ô€OS/2X›ƒò¸VcmapaÙ¾r¢cvt "ˆÀfeatTˆÔ,gaspÿÿ€|glyfÐà‘L5 headìc‹�<6hheaõÂt$hmtx�Œÿw
+‰PNG
+
+
IHDRÅ�Îg IDATxœí�Mˆfǹß#²áE{¡±6V+Â+Ûj+„,ì0¸í…POâ…uœxF�Ë5‘Ìä•ï…€
žya'4ãà�k/Lf/¬“Ä‹@�Ú×w|u=
+¹µp/Œz?Yœ·nW×[ÏSUçãýèóÿÁËL¿çÔ9§>þõ<O=uáÑ£G!„b^<¶î!„bõH!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!�;À;À£Ìë�Åç)7�ï?Z|–ã®ñýß»£\ÍtìÒ•³öZS®F¿ùØŸ ŒcãÕ‹øu×9†WO¬:V:oÍý³žWß:Ws/¬¶2e9­6eݧ>íÎÖ_ïUÛböeã˜ÞýðêiŒw­­ÏØ+OK™Æ:_Ÿ:šÃ«Gc�#¦t]c�#¥öøˆ®~ÔPÓ÷y¯1Ɖâ¸õp¼oà	à#™÷?áœôó,W€]à9ãûo�ã­›»Àï€K™Ï®S~P;À«Ñß?î�Vºõó$ù¿CWZ9¾Ÿ_¾kœ3ð=òÏàø*muîYà™ÂwžY|¯…‡‹²œŸ_^6>»
+8Çþ:ãÔ³}àû…ïœ_n47têoÒ=S‹ëÔ,?q>{ŽºâEç³·èê§G,h¼çÃâóÖ�eÈùö€?8_G×+Î1TÜ´\tmåwô»¶0X[ý|Ìm¦o)éÚÆaãõƒÀ©à·Æç�O%ïyƒ9äEÃS‹cå°Î½	ܤ\ù.?Â~Hߤk‡À·Ç)ÚÆ`
|¡«}x¼æ|¾¼`|¶\v~Ûg`|�bñùó�ÇeQ–:Ÿ…底ŠÊ”{À�eIÙ¥«ÛÞµŸ_¢þž†Ž=nW×€™×GéÚœ,^çþ+láx	øl¡l^ßvü¢ðû»”�ÅmúYVu¾«‹ßÔr@ÿArÈuAWÎËQ˜!{‚Æâ€i¬)—èêu«(M€Sðò³�‹t3¼˜Ï⫊\C{ûaþ¦PÆu±K×ùÆÜ¢ë˜žælGcÍÔÒc¼Ny±mäê”ëI‰;t™ÅwÈŒßÅ®k}ÆKFÎúU÷9èR.Ñ)ù˜8•)'tõl(;ÀOñŸaëà•ÓŽ=X
.`?“cà3œ·±EÀCàÇÎù½Ù=øuööuQÍLÕcø%å:´êóíÒµ·V.ÓnƾËðë‚nP÷Äâ.ÝÀ:¤�ª½CÉõ7©kA¼G§Ês|ªðwŽ´¡Y¿9¢{›HÚÄ3€‡t®‹˜\çÿrtŒ±fe›H®c­©'%^ÁŸÑ¥�"¶¶¤-Ž×J�ù?ÐÇ
Ý@ç
Ú—9íHK�ñ.¦ºŽÍº—Ðoæ\	‡ÀÇ¿ÍÅW¤wA~{`±&3PvxuÖs/xõ®•=à�ÂwÞXñù,î!�8»@'æÒûÞj«±¸¶�›$ŠæñJöèžÿÔÔ¸°š-AüøÀøN<°ÕΆR¿°3ðÁâÜ›HÚ|H'”©ë"u}ì_[ü¬YÙ¦’>ï¾þÿ”’+à2gÆÔbóýbM^%oQøÛÌ{ñMóžÅ#>n,*SÆr1½Ay€iq¥Ä–™Cà‹tƒúU:³~z®ÛÀç¬0¸
+¼´ø½òkà]£9—f\F«Îz•¸�çˆ-á•,c°g¯%רçÛ‚[4ïÓYIúRj¿pj�
¯Ô›b¹}Jæñôƨ97�Ç=ò.¯[Îo¼ºÜj51gà˜.À%G<°ÕΆâ™Ðy1tÁ‡©IÜ‹¸ÎUR+ÒÑ
+ž°¢ŽÇ^�hŸ•Õ\—u-9ÿW.º¹O¤éË�!�ùæüÿàwB¥�1ž¢ïk}±|Â'À&=µÁf9<‹ÇðçØ�ä	ð
†»˜jfa×h»Ÿa†—1
.q¡SÿÇœ
+ƒNûŠ ¤­8¯/óf¤^ßæ*[ºëø4Ëmÿ>�ÄT,wŪÏçO’¬~¾ÖÅë	Û#ºz‘™>>Iûuy×[§©*ÅÖmÁsZÜd@¼DœÀzP±òð|ù1qCó‚Árf5Ïš3ÑY~;KýY×�6òô~¤
+,µjÄÖŒXaö5={‘d=øëœ¨!‘ó	…HÓÖå[é+�È=“ÿ�íf*á
Œ{Àÿ´†Ü«n½ü'ò3Íš`3‹’Åã[Fy`ÓÿUÊæÃÖÁ?žÙ…2¦±·¢cæîAl}û9§�¤Õ‘ÿ»¾XqV §g½+D{V§c:1Ôâ®XõùVpå×脜å2:¤{^%JÖëJ­W’ï—==mõCcYÞ†N÷"ïSlQ‰a€´üGAÕç°*\®ñz~»Zõ—käibQ“«Da‰P¡ýcÆ]æø8ð_)›h÷è:š@—RÀLÊ›,וø¾æžÉÿi8~Ji`üûÎg}Mÿ`×÷·€¿Ážiö™MJÁ�9Æè€þ)åÀ¡ÖÁNETC1æÊž¶½X\ÇË–­%¨¹�@.NÀޥs+äðV7Õ~ž»"'$W}¾€\&97N‹Eʳ¾Ôĉݧ»/(/Eõî¡÷¬ál½ŠW®|†á–·RÐmê‚ö8þÖ„Xx•ãSØÊé�nv—¥¥¬½²pêg/)ÇTÕZfªÜƒÏUú°&9õµÑ
¶0ý²¿‹Ô«Ä?¡Þ'Ô2hå‚FCgœ{&c{ö‡^zæÿ0�YgCÜà[<råÃô@a~·±ø85këSWaˆ¿±ò”€´—sx�W>Ï"šso¦x9X`YH¯ú|1-æiËaá]רqbCïáü•+5ÄùÂ+'¢bjóå\£8U÷>^åø¶rzø�™÷ƒ¢ì˜kÀ©J-Å$Ô~ßjä7(:qb™m^ö×2håZ˜YYþÿ1qËÀ8Ôõbù$cáj‰æ¡>Á’Å#æ«K,U
+K‰whc©°ªñ§·5¿ñr¤–DÏüï­ý÷ÌÚü&-yPÆXYÓ7ïJÉ…¸|Œñ¬ž¹A¹&cŸç4Æ=\5¥¾,ÄH4“t/«r<	üs–Ih –ûàsØ€%åo5àøÖ$h‰g9õWjäW°£MoqVmÅ�héì3—rHàa0A•"TãˆV/jÖ‹2͑֕à*ÊùÍkfy5´ŒCLÿže)Vâ^ÀYßœ­xËÓ¦À[Z•‹Á0hÇõÃr¦“�>¹B¼œi�²õ¬°=Y;§L¨ˆk‚ÍúÔÇM”71)Ý]›±ú²\©°LšÏ�²
+³!k&t€=C/5jË
:ÖÚ¥fñÌ6gÂ,ù}BY>Æò²�Øß/ωc
+B¤~.¸*¤¯l͘‹‹’2�ƒÃZйºò"ùÆ<f²§;øËe`xÎϲ”vp^›é“Ú¯´ÈcÐbÝÈY
ãúQã×ôb…JÔ$8k
R®ÅK—>S�ï.mã,|ñ*%Ïr´)ÉàVýÌJÜb\kÊ©°Y~ç0²fBO`›Öju®¿_®“Î-QnËÿ?Öì4^žÝšTªÐ	¥–Hü¥:UãÊÕ•Oÿ$yoŠdO^”÷9<ËRÈ^Ö¬¨oj`hKRÒš%lBô÷P,×Pl©Ë‰„ "J®%/®)L¬•5õvŒ¶Õ2èL}¾ôø}ó\§q;
+í¦5}®èÙ—¡÷ð*«ÙÐm%iãSà%ÊÐ-7¶fÖ
g—ü€žë¤ß&ßù¿H^0Ôä÷®!]öS?rì«Ig±-É$6A1[qé=ÞädO9ÆJbýÜU9¼Z}ó%®á'�©Ù�	ü£±¥.­?ñó)‰wÏE,ƒV`cMЕåú„å�+7ör¤Àr;o9_ŽÒùb¼GÁýèÕ‘òVÏÜ3ó®ËôìÃÐ{ø"§«úæR	‰€<—ìð{»‰Tx
&%�Å{A7)5Ñ–^y>G¾“þ‰QŽç¿IÃÆI›š[ö—HâN%5OY?¾.j,cYXVEKêßÞ¦E9úæ\‡ñ\a©_)³[ëµÕúyÓA*í+Âó©ï–µèÝ@l­ô¨±"y'½?±…0lijOÛò·–óåhYngYÁâå†÷é¢ý[s�y¿uybÎ%[ÊvðîaÉm—[Ä@Ÿ��J»�–6šL* ~v™Îâ½µ·)-&ìœïOY^2*p®—è’¨¤Œ@e-ûËùãëÎUÄM	†©ÅË»ØkE^¦µ>´,�óLÿGt)t[öFh%NÈÝ è=ß’èˆÛb0=—êC:H¥}Ex>¨ï^¿d%VªµP–ú¼W9�WJ¿·ü캖³@Ôž/Gi£¬ô|–« d5ÙøVN”ÒÄsÌ8ï–Ry{í³ïD§$´'uñå€g"‰É]pÍÀÞjv÷ÔaL\�kö1|ÓÛ¼ìoJ&ÞMÞì)G)ÓZj—W–Lÿ¯ÑÍ4¼ Î!®€[,'Q£s
+}B¸±….7ãJX,‚Oºu‰g«ÐoéÌ=‘̸ÏÒ¥q.å{�±Ê\s¾Ôl¼¿xß[g^{�rõ9¤Ê-]›;âÅõ„`é\œT)+jïæ¶ù
ç°ÚçPWriyóe&rä@퀛Sò53–ŒFPï–ˆ+p�;¢6±‚‡·ì/O«ê\„ô¶Í–K3’móÿÝÂ8Gí>ôžé?®[}¶IBÉ
+p¿s
+}B¸ñò¼4–À:»KçSŽónÔÒâžlíÌïÓýZÄþâGÔíÔæ­bi=_Íò½Üù¬Éœµ?}x>¡l¹UO¥­œá4[K�¥{¸·8ní90Ì•\ºö!›Œ¹ä@)[Ø3»ñÐgP(	‹´<5ækÙ_ '\bõœúضm¶ð¬>Ûæÿ÷ÌõqêÏÜëZÏã‚oZÌÕ-oPÛdX²”ãßuœU.îlÃï´¢ÇÃÌ¿%Ã\ fp	<èqü>›¸XÔX7Æ<ß!Ý.‹)53òx n	\= /j¯µb¹sƺ‡Öýk¥TžËL`È	(›ò­Ùs�xè3(”:¡\y¼~è`›úÓ¬�XÒF7œT-�½gÀªðÄÙ6Y4<óM}ñ\g—±oÉôŸ«[¥ÌØ«J&ÊÒžèá÷aïyËdö—ÿGœíC2«!k¢k¬“ÐobPÚ-®…šÜ Çtñ C°xkæ”1s†¤Üby“žÀƹ�¡ÎXyúǸ‡GÀ—�ã·âm‚õ+oš°@©±x¡Ô€ú
+ÞqsŸyf¿¡ƒm¼™‰Ù
+å(ÏÀ=Ê›Xl*VÀ¶Y4¼íHkÜEžõËÊ	P2ý{u«4c;pª4ƒö–±ÆƒI<û»ÁY+Jè¬Ã€ÞÙ6ƒ/6Ì:["¯k¬“Cëìê£ÑK„|ñ–�÷ȳ<y\£¼‰Íú_�µT°¦¯»Bÿë
+ç®É‡_»�cì”Ç�_öÓºò¦ˆ%¼à®’�Ìx‡dõ²Žk5Z+§ÁЀ�´Ó.¥œ
;Uå*YÈ`©ámÀr·l“ÿ¿´ö¿fVXŠUIs”vÿ‚aÛ»^Z¬ƒg®9_œÁñ€ö4Ø79닽EÛ.l5±DcÄÅ;Ó•f²¡ý[é¼kvø»Ã©P*�/XXZrƇë)¥‡Óõíññãþ¯Å\Þr]pvàÖ, AˆzëòÓóLÑg×ì·0jŒÏ…G��u,!„(q•³©eO€/‘Ÿ­åö™÷¾¿íÄ÷æ<_§Ø$„ëà.ísKÏ#ÁE²Í–A±H!ÖÉ>ð3ìej÷Ð@(Ä$H!„3Ä
+B!Ä9F@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!BÌ�»À£Å¿Bˆ™" „BÌ� ö�éfc¼Þv¢óÜt¾{³PFï·ñæêˆå�_Wåcq­ï4Þ“>×[ºWÞsŒ;Õóˆ{×ù^Íë÷ÀnÏrx¯÷iIëpzÒk.Ý£˜øy,Þ;ˆÞ+=÷uQªGc—ÛêGj¬%Cú ÚþÊ÷¤¦Ï²(�5Ç¶Ž±Émï<‘ŽGf‘`¡¢ÿØ+|woñ½!�àk~»m\~Çøfê‹À›ï(§àÅäï€?F¢ðyJÜ8߸Îf	�0ÈÕ–{Œz²|Àï?5B<jïÉmÚëwèËÞ¤k#Þ±5�o¿±>�èÏUÊ�%G€ú>�ïR?S80�¯ú6›3àíO&ï½W~ž;Þ/)Ó”ë¬76 ˆ–Ò —r@Û,:eøíí9&hcÑ÷žÔÖïÖ¾lH&¦çxñÿ“èÿKHôcèL�Åïû¨è=à›Ͻm\fºÇu6£#ûðDòÞo>Où&íƒà€õÝ“7è_î¾mcø)�Õ©/9�6CžeÉj8¤/ëÛ‡‰ñ	îÁàüíâý�÷8µðœ±ÞHôãU†ÍXüþùž¿�“+†Ý«¾C½/}*ž�þN•ûg9;@yÊ~øÊÀò¼Êê-M»ÀsÆg÷€‹×G�Cã{_¡ýY¾Aÿ6�hc°O×ÞsÜâôž\3¾Sj;V_v<½8öÓ‹¿sÇ~Õ9¶X
;Àçÿ®Óë‹¿/Å©…çL}à>]çs¡âõºÎÇâø2¶ir*îЯÌqEϽî$ß÷:©“ŹâßßsÊüyúu²Ûî
+ˆ;®ð²:™>ăEiÀ€®Ñ¼<Ò¹ûò$g;â Ü©9ý<&�P×C�¼G÷,r<<ë”w•¯DßÀï‡j¹I»i=G*ài]´^Ÿ!ßg>O~€>¾ýýsì:n¹&¼¾ì5àáâÿçxŽõ‹ç¹ó,]{ÍñËõçïêC«`øYæ€�#ºÎç¡ñùyç‡tb*æ%ì†ùÝÌ¡çÍðø±ó¹gî.qL×ÁZƒÔ‹±R”t�Ï5wŒÛÉw‚’Ÿ_7>o	Èz›å¶ùmÎÖÏ Îg¹.[”¢ß[V+Ôòݵá*Ë÷µ/©€ü6ó^7ÈÏòÓø�Øï[‹'•¼÷+òýq:ñÓ—ÒjžÚx¯]Ö¶ku…W­ò×Ä£Ô®)¹ãâ	¼e	‚Ó¶}%¼Ñ"4ø—É™æÃà“SýcØý:O®Ïl�ë�úðl+CiÆk)Xj̨ô±9 ëÿAô^Z?o4/Ü“T¼¤ÔŠ•‡t"%÷ûïE{>ûœÈÉaù¾ÿ‚~–¨Ü
+€àä–>‘ô±•3}NÞlþ'ÆûÖª…Üê’?.ÞOâž+	°kDƒ•sŒR»¬]ùcÝ'KäĦ÷”×±­àµí&вªÃ²Ý"Ó¶k@ið?¾Ê<«“‚³më^§p„Ìz�1cÊ�ãwØAX±9r¥ggqÝ¥¾±†F¥Áš­Aw�cøªûÜ“šèñWÈ—=ÎY`-»M]VÄÿ-–]~µäÌìázs.†ðÙÖOÒ
+9,×Àû,^ž…¡Ïê‡]ºØ‹k”ŸÅMÚëàmlqn
ž–ȱLïÞ„¥O™¥ ËtåÏ_rÚ–²ÁÎ5 fðÿõæÂóÀëÔùSA0Å€pÞ\1ÁgÝ·SÎá™ds3¢!>â=º³Uã	�˜0¨¶BCýæ^ÐåCà“ø19¿+	Ek°¼G›õ#=fß—è‚´úLÂLÒDcÆc
ugJ«.jÿ!î›ò®ºc:×JŽœ‹ÐŠÏø1ùz848׺Lÿàßs¶¸M"J ´6vŽƒ?t×ûõ¿É€ú¨þò&88_®€˜¡þÅ¡x
ö�.¸0˜d­ø‚Ë,?›4è6ým˜š~ŸÛòÕ¿Dý Ç”\^Tzkߦ&ý”>õµñ4o°<XÒݯ¾]0…%ヒÑ-­ý“´•ý
ìU5ƒ¿g=ˆÛNŸÕ"–›0uZæÿàöÉaÅ\Àr`´ÕŸxA—ÿŽÓöâÑb‹Ú=’{ë	€]:3†Uà¹þ�;ô�\ï«ú_Á6Qmóª‹`AY•)=5e¾ŒmVý"ggV7ȯø¨Y*•ž7õc§ŸçL´)Á·ï­BÉ⬺iÍzrýA*”cábùv¯â»ƒ,jÚTÎrqB·¢`È,ÙZg;vo@Ú^h<¯—y0Xw6%ÑUà[ØÖ£šÁìv™Æ¡ÓY@r}´µòDzž¥.ÂÈ‹˜ØcbÃðéŠèDDN<[“¢cà?þ���Óàêl<…%Jƒ?t
{®ƒà!�Ê.-3Ëq‘κÒb	ð–?íÿ¦±ÛªLééÌÇòmZø¬ "o†”›‰ÅåÈwµÌЮPŽNñê¦uOÞ~�y?îô¬¥n�Ú™�·.Ý*·e2£Ë-£¾GwÏc·‚7 Ár*è1°2;öY50”‹ÀçŒÏÜŒu	VÌ€zî0kå�åâ}ÑøŒÕ¤Ä«;Òvq“~YfYçÎÞ‡Â*'jÿZ¥6ÒHêZAÐgýù}:óNŽÏ1<AÑ*ÈåðÌ^0m6Àž‰Ô
+”´‚{Rót¼d)ç¿��Ÿ›
ǟךÆq�U W7½{â¥%®¥vf÷pñwíÌΊøôWâŠqlo@j5¥Çƒˆ÷\[3;¶õÕX¤JÔ&ê㺰޷ÜF¿¦´)Áün­¸ð.-rÉ�µ4µH*jRbŽ=øO•?{�Ä‚ $ú$J×n�‰58×ÒC±Ìè0^6@¯¾•RïÎ�¾‰ªú2ÖÌ.=޵F¿e5ʘ;'ŽL—òv¿�›±¶–c꾺F¨ôi—­9D¬`ÀKtÂÓòå{KÿbâÜ5ÉMF,j6é;ø{ ¤z½J7UC²ð¶ýµûÆÌZ6å17…)Ÿi)‹cl‚´Ö=÷aÁŒ»tuÒK(²ÔYî�!‰ªZsf×:“>/xQì-÷¤õþ�ÙfK)¨û´Ë>»4ZÁ€Ÿ"/¦jr•„ñÛá‡@ÚRÆÝQ fðb.{ûb¼à—}:Óo/Úr*<¿YP‡«Âsl3SÎ2,3ø©uSJV’ôÕ’Uo(aàÏÍd-¿¥—7 ë¹ÅîoõKŸuæ›d=Ìeu³f³-ëï!?ñ#¸Ï
+4Ë	?O<÷ÉÒi%\*-k³žxÛi[¦A~L²–þÅX›:Åñ-«ì+xŒúÁ¿ïY°}*�¥õ‰”·¨´‚ަÆS»·Yn˜¥¥”C|§SºÖÁXyÙ­c{Ê;53·®	n!�åÜC±¸È»]ÃÞÉÚZù{ä…QÚAz÷ä2ùX„xÕ@¼Ü0'¬¶•[úä
Hcø¤k	ƒs.þ#7›mÉØŽ�3çê —™.×ÏXé”s“™–´Á%®ŽíÂ)mè4V=)õ½¹`À\nýšÉ¨÷lrâÁZm3*�Q·Õd);\)Íå1ÝÍôéKU�1‚Žú॓…å{å-ijÅØVW€UŸJ¦±Ú{ûkkŽme�³fH{t¢9¼ÞÖl-—I,žM¥ËËj"¥Kmí€S‘î“%ºrm̺'¹|Otå:=k&y‰n�	Ç.*×Fb��w¿ÓzÒš±¯tì7¢¿½‰œÕv¼ý7â¬sÞêŒÚÔË�Ø�lEÛ—‚£­>8­'Þý>ât©œEiâx@yÖîÅ.¤bî.+
+\åvÀwh_“l‘[7¹*J›Ö´�Û<¨•óê
+HyÀt¦1+Õ°woCR§’`õêjœ–ΦJ;Zx;ÃÕb•Û»'¥
ŒVçë•;>¶'ª—’�àïš¾¬%†ñ®~©5ÔëÛâzâ|YdÞ±kÒ#ƒßv¬Á4ÎbjÝïÊ»ôû±€½¿([/¹™·;a\O¼{Rc²÷,^�Ú{àYæÒ¾d*+è«Ж�Ì"—„eÕxÑêµI=šrÞ\)µ9ÞûPŠmò¬K©XÓà¤Ôäžúì=ŸeLi½y‰R¹‡Üoß�1Ê=U=)aíaPC©¾Dÿö]º'éžG+âË
+PZx‡þ+’Z\Ú%‹o­+ºÆ
+^ƒ·gI3«5Û²zÜ£œLdU\¡ÿuÔìrÕ¶ºj˜j—Ém[Ó\¡}À«ÉMïeøËEÅ·¸½B’ª)Ê
ýêÿðiüAÃ[ã_:ö:w#í{¿ÓdA9úfu¬}–÷é²8¶ô5å®Á³\ÆÏqqƒ¶WÐ^îÒ¾µKÿ Þ
+‚­ïöYÕ�eÕ XÔ¦Ò
�OcšcÐrq¤çÉGΛ+ ¤�ºerJ0å¶FÛ†Œz¥A/¿&ë�—á/ç3ìm][îp¿[v¨ÿ¥N¸õY¶dØ÷{ìzÒ—Úûú´–¾ »4ˆÔÖÁ˜˜ZZ~Ö§Ü%<+@)[jpïxåŽ÷¨èSn«|} ¯`�¡œ¡.[±,£åç¸ðèÑ£1Ž#„ØîÒùï±y¢Z±"ÖeB!Ä‘B!fˆ\B!Ä‘@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„'ãÀÜBIDATb†H!„3D@!„˜!B!Ä‘B!fˆ€B1Cæ$ö��GÉëÃÅg­ßƒà�̹ÂënÅ1î:¿/½nö(sé|ï,®kŠò¦¯«å½éüþ÷ÀnÍEWrÕ9Wé¾Zg½6VÓfVÅ*ûÚ)Èõßµ}Š÷Œ[^ñ‘ö?ÅñcN`“çÀžó½¦<®S×)Äý ðÝ=ºë{pm%t‚×�ï\~ÇúË*´ÕÙm$Ï3/°Ü_^^CY~FP˜äI¬ž]à¯ñþ”½Åo¦¤nc‹€à—´•º†ð+V?°±R*1ë*«˜Ž«l�Õ¥O�½¼ÉfÍèçÄðªñÙWXO_r¼•¼÷5¡(°Zv€ŸÒ
8­\ZüvªíUãØß¤}ðL]æoЯ¼—€ï�[±f‚5jÓLß)CÚØ÷Y¯%`—΂6¥kmÉÍþë´ü8‰þ¾|£–X-^¥¹\X¼®ßÙ[c
+rÇÞ¥S³9Ž€§éÊûQΚžbžž£€\ÅžEÅ÷÷žñ�ËȬz^¹ÍfÆbxm¬†‹Àó#•EÔáÍþ«°œ¯'ïÝ$ï™ã†ÀjyÑxÿp'úû¶°fê9âAïðΪÔO%–¼µâø*ðpñ÷1ðe:Q�ÒÒA¥å-½â{æ5Êôþ¾’)ë	ð¯€ÿWYV±�«À¦øÐ_ƶÞâ´®?M¾}|žÍ5ç�ÜDîo“¿KV€Ô÷sÖ„åët~ÊO2ïeÇ�Çð#—s¦³Räzü}+Õ3Yå©Qî¹ó�­ø­ë/E\îOfÞ?¡3Û¤¤�!3êût•ÆâÉß© ¼ü:yï�À=Ë5ÏÒÝ›”Üý}|Œ³�ìqà/�¿™°Œ9Sj\­zW3�ÕD—V„XÛ¥òÕ¬dI)µãÜç­zð¡·”±t¼ïX.ˆ´ÍîÑ
�‡À�+Ëyž°Ú…u?[VôY…�›hÿše�6†à&y«æ5ÎNjbÞgy¢—µ<¶8È-§©rðüUéLëõLA SGŸ5Ža͒ߢ›iæ¢!w£‚âÿ–ñÛ¾…¹"ö­Šùà‰Êp‘¼�¨%W9,n�WŸï³ü,ƺ¾¾<IwoR>Þ[qYZ¹IÙ�›	†úû�žÇ-E•Š�>KC¯Ñ¿]Ä„ÙkǵåûöŒ9%”qˆï: 7É×ÃÛä…Æò–¹tç¹
+¼¾q›¹‹Ý.¬û95¹ÙÿÛtÏ=hCcö邸RîaþÐMÎÞͼ¿4¶À·±}¸±rð*ááâ85�üìrx.ó¾5K†®c¹m|ó9ò
³–‹‹c”°"êÇœ![3óž§í>\aÙ$u%ó=Ë]ð›Ês?mÍ+½ÇÖ=ù€îÞ[3‰>ޘܤn€þSÚÅj�›r�¶€¹=ü	D ¬¶üŒrݼN]´|lå±Üi)a‰]k½¸H×)—ž�µ,ë>�ÊroíE¾}?h(ë6¬3¥ç\\æ62–›1ˆµ4ú»gvè‚÷ÒöpDçÂô8¦›¤¥<G"pƒð|¸ÐÍ>v颤-Ÿð7XV¡¹e	�Ü�±‘œÉ™E™úÌŒ¦&ܯë¡X>rˤ
¶Ù°ÄUüAá·=�»O×Áç8¤sgL�uOÞ§³ZY3‰ë¬Ïl)ü©Ž{�ÓÆÜÌÕß¡xÑÈVg7w(_sJ‹Eäì¶šÒ: ÜĶ*¤±8Sb	è\»Š…ÔÔ«Vÿ�›ýÇý[nÂÛ7pÛ²´¿FÝóÎÅ,YÞã À‡‹ƒç¸D·¼ê²ñ¹Œ�:Í	‹œ/Û2ÿ¿NÞÄåÍ:ãήf†RK˜cgX.k€½ÎÙŽ¦v6T"�Q{–ÏÊâq»ƒûÙ­ŠÊ3á‹t÷{Õ"À³ÆÄõ¬µþZî�¸SHEÿ	�)úÝ̹uP©iVüŠ'vÇlÇÇÀg¨ˆ�ŠÚžàR°êîðiì~w.<Aç~œkö»_ŽYŽÊ‡¶Àm°-í-“)ËÕ{ÆRš®¸ƒÝx-zÉñ�ÎG’’Î|-óÿ�?/‡%R3‰åËn%
Ìy	{F‘+›%†àtÆñ@�Š´w&7ñEE©nl�±ÚõË–Õ"u§�US÷Tl&œþƒIm»°¬]–šªÃY³ûX„°Š¥ÅÒ`ñ¶KáýDÚ¶Qs?žZAYr³ÿܤ){Òj°V†Œ1™:Óçä–æ–HYÔø#ÀŒÍ7OÑ=Ì”·ÉWt+ªÞúMÎ$ÒJzÏÅñ$˪ï!�Én3�Úç(ÍN ë¤r±ë žÝzþ”	<ÒÀI¯þ悺Zê¯虋³êɵ‹œ»–M¶;‹÷rLÕŽálxŸX‰”XìZ3ÁZö±­­·Øœv5%cÞÏ¡X³ÿ,‹fkÂ[ëV³fÿÞD8Ç{tõ;å̸”-ƒT­?Â
+ŒÍ7¹Y@.ÑA
9S{Kô{ŽìN-‡ešº|©¢,·o¶ãqD箨�MÔ¤2îÛIÅßš Dꢺ�-VåSl]5ÑRsÉ@<ú,‰XíÂrwµ˜lÇnÇñRű­l©0RNË…“´>¯Œy?‡»ŽJÁÐ�œ®µØX³ÿWþ¾‰!‰€ZDKÁ_¹5°‚ÿ`ýËεî1Áü˜„B†½ocÏûëåÎÓbJô¢‘át¦}Ãø|J¬{bùÍr»àPéºáMN/ûýÌÐŒ“;£¶]¬¢‡e¥ͷbBìAM]n�”°V´¬s¹_.w†• (ÎÚgû~nÖ8Ø7>«HNÔFäº9†3Xër_Äò*üºÏ†,ÉËeƒ
+�Äëk;WoFÝêC,&g}AI}„X
q�Ò¬±¥.´Ö_kVhf-}‚ÝÆH9=¤]ŒAµ^³LκŠÖif·²Ä­CXŸgZÛÔÔXã 7DN´lL±·ø~
V&«ç€?#oþï«zrÁUC¶•€Ç
+ëÏûbÅD¬C—ÿ[tƒÍ:£ý-ak”púÜ<a‘rÞòÌÔBÑâ';àµDºÆÜK)Ûç|­‰©Òûë	¡!íØ[!”fûC!Åf“«§ë©)V0ìd–ŸTôY—ìn7˜�3»^þ$óÝø�ÑÀ[Jx@ÿÔ;†µrì‡V»{–U&Sƒ»tÑñV§{�͘™Xq&Ö’Lëþ¦Áz^F¹¸î{�[�V@Û]xÀÛäÈ#MÏ{“eS®‘bµHÛ…Ø—Þ_OåÊ0F;Ù¦ÕY)ÔÇÈ|W›lkSöJ“x9^)'Ê:°&}¬›ÖòLû‹€gú?þ!öÒžZW€—0¥&Ú×òã¦[»Zù”[I3OY‰‘ ÿЮb'Îø^ò=«r®z]½w�PסÔv\-™Ó$-^¤pºüÍ»¿i½³¢zálðœç°"x­ýà4=m‹	Î
+ÌÔç�³,XKSséž-Òvñ¶1×®k…Ðíø�nYYk ©Ø¬èw8»=tK›Z^Ü1-¾g,‘±ðLÿ¯ÿ»ƒ­uÔ.ç¨]òà	ЏSéÅëõ­ÎÈ
+<óò,Ôtø«^W_šÕnÞý�Å…u­çf-c­ÅZ-sL—AsÌèfoÓ˜t@…¼Àë³ú¦¦]XíÚ³²ŒÕŽÃlÝ®*1-›ÖŠ5cï»—IÎU¶äVÀ3ýǃŽ7c©uÔlÒQ»äaŠt(VZä@Kž…˜CºÈîUÒºoÀ&Ð÷þÑeÆË=·ûÀ{–§$ÚJ;4BW¶?£¾ž{{{Ī5X?`_¸%„¼,¤CÐlzr«Ö™¤¨%gÀ»Ô[¤§ÆŠméK–‹oX�Q6ýÇ	b¼›[ë
+(mkÙüWÓ�B7²®þ�ºˆ—ºëÿ$mK´î±ú™‹çÇÝdúÜßš\7¨ßT&P›!äªÏÕÏ[´w¨ÇÀé·°5‡Ã	ð?+¾çm_ÊⳚûûuBèšíÏÏ8¤¿›2y´[\q«ï^J¬õ¾¿.§Ø=+@ÎĘÃòÝC¿ 7¯
³€1f·±ÓR†Hâšó„%Z¥ˆì�_}AJ›’g¡qâ¯#u£v€
õ¬4Psskpd.�HßËÚ{è[f€¿`œvQÓŽÿe�ò‰ùam³–znš8ì»Á[Ž\ß�uë]xôèÑˆç­Æ[Vv‹Íˆ*bjâ-{K©“­m¯[39öÅj³'t™-Wµ|nSÊ!Ħ’ë+鬂gDÏ�L€}ñ–•�ǽ­…¨!öͧËB½m¯‡æ›Bœ/Ò¥²f\ÚÔ ]‡lí˜$߱зŒ5ÞOÝk3ëÞnY±9ä–>À°Œ­Ã`¡Ù¿˜­›ö¤lÓvËBˆéI3`º;½N-¼,_1't;jö/æÆKô‹Öߤ햅ë'·m±»cï*,¥�뮡Üb¾´Fë¯seˆbsy�³+úŠÂu­B!ÄÙ¤!„B¬	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ�¹€»À£�¯»+/u®’¿†�ýÅëCã;WÇÞ~oü6>Ç*¹¹xµb]Ë;ÀNrüܵö9',?Ÿô|)Vý­©“ñ¹Jç©¡ôüs÷Æ«oÖoâóÔÔ©Ü=²®wgñY®¿_œ{[±êJz/¼>ñfÅ÷î6~'mC}ÛŽèÁÜ€‡›Àï€KÎw>Þ[Mqþ®S¹Þó·¥k)q�öcøNòÞëÀñ€rx¼ýÿý	Ï36�·ÿ¿<_øþàZòÞðÂÈåbëCÕ,å6Oö�¯U|ïà�—%Ì8úüP-5\^nøþ÷8+:�Ÿ�T–”àÉèïŸLtž©ømôÿOT|ÿË"à;l÷Œ^ˆÁÁ|÷:E-æÉ“t3±SÎ2ƒ=xœç©»–Z>O�iý*Ëe‹éî׳À3‹ÿŸÐ=›mâtåxŽº�<­MˆsGfYo2ng)¦çWÀQæý`žÿ5ðnæó£Åos|Êxÿx¸°x]i*éz¨™M¶ðð‘Âwv€W“÷Nè¹W8½¿ñ«t¯cÑö.Ýsß&Þ£«³�OUþ._a>VËÊÓWhö­{bƒ¨qàMÍ,«6 È{­;èæù
+¾Íþ�t¦ø”·é|«ÇägƒžùÞ4Waò_÷èžõg8ÛYÞX¼ÿNg¤15ƒÓ,[Ц”Wéÿ?>Êi{¹}vŸî…ÏR3½Ek@Ì�è|[«†m¯Ï£¿YuAÄæP!˜jhPÔ\ð¢ˆk^cDc{Ó)þ”ßÿ¤ƒD� Ü£sY×UŠ´ÏEˆ§Ç©qC]g˜¨<¡Æó¸<h<.ägÿP?+ë³
+`Ûýÿ�Ö8€,œ£eÅÀ&¬.ˆ­&�!îŸ!+PĆ�qÇ\LUk²‹t¹Tí³]úˆ�RÅŸ>»Ø¿Xõ ±üŒeÓ:¢ÕkW/ä„S‰Ø3å¬lÛýÿ�>q5XÏq›VJ䈭&�mtÿˆ‰@T[fû·èLi�ÓÍ‚¦&(éÛÉûéb<5½KçÇž»%#6�æž]j–½°øÍª¸ü[–ÿ𙸶‘:ôâ-Æ`Ûýÿ�¾q}é#ð6�ÔoŸº´ÄÌxŒÓ�?T-bŸÞ�ÂwÇdøkü—èL.aK«ã6¾¹~‰mæÀ3ägÅSV©i|jvèV	¤LíkÞÖõÿ)Câ<,ë‹|åâÜѲ
+ ÅըƇt65AtÖ+
Ðy™ú<ö?YÞÊ1Ýý±®Ér:¾ÈövÈS3eRè¢õŸÈ¼?d@ö&ë|S/—<þÿÀq¹`¹mv•aR!úyÕfàóÈ>ð}ã³müc�wÏøNl)êcjL£Çsõ/¸+>ºø~Žà¦ò¢¾w€Ÿ’˜µ²5CüyKÑSteO™ÒÔ|^üÿ�)ârÁrBœKJà€ÓYt)ü*‰;uoJ9~0U¡¬ 6èÊôe¶gð_«º'!¦Ä[EP;K¶r,„ø”ÔeT›@iLjýÿÖž›´LV�õ¬}©Ðlù®+£Å|â5Kզʒˤ±Wðg�,>û$«ol¥Áÿ³¨H	y	ÖMK:Þ‡Àk#œsJ_óyñÿ¦ˆÈåÊØöBdyŒÓ¨ð[•¿‰ýë«Ìÿ_,ƒÊ~šå™Ø5ÚÍÐ¥D@5+v�¡Á¿•uG\ŸÐ%÷i­3¡-ÕX¤¬ŠSqÞüÿ�±ãr¹ÎƒXb‰Ø²šåP‹�deñ·¨,sˆëˆ_ð–ž_Eƒ¿Åº#®ƒÙ¾5©I0�×dË\õ5ž7ÿ`Š8€t¹Ü6eû¢šœ &À+eÌe8ç/¨ìø«É› †q@}ì‹•Õ¯•©,çeýʪóqn(Å%lå:Ëì¿Ä*û:ü7…à6òâG^4ÞO±²úwBê2²r³OE‹ÿ?MµÉÁkcÇÔ¦¸�*ð¶¥[Lm`œ®Æ*0E€m 4ø_CË)WMÍ–¼Çt«r®¯'+~¾—‹õø!yÁg-7{GB8¿þÿÀù„8÷ôÙXV›oâg*,eÜ´å–Û‚·‰K´êÍŠ¬�kÉ™î½=2¬óÕ
+ŽΫÿ?0Õ¾Bœkú€@M!VÅÐYmËNpc`íÌø]–À19¯þÿ€â„èÁ~ÔUî DÊÏ)Ñ>ƒÃr ·óâØy[ÿŸ2Õ¾BœkÆBlAˆzù,.boø³êÍ€ ›‰¿›¼7övÞýÿ�MŠØ„ÄA›P±áü½u`ÍŒ½¾÷ó³„ô½‡!PtlÆ~—è6¢ò޹|¥Ç±�é69Jwâ�‹ÞL}¸\yŽÏô(Û¶1Ös¯­Ïé}½‹�ÿ¡åù®W†Zj¯¿æ{ÊŸ°áÈ D‡^å¶™~DûVÓ19×Å3t�{9Â9ßdõ{	ô!Ý™3κO统ÕnI¾i¤bì-VïfÙ„2ˆ-C`³I;ÈÖ×*24ž'ÆNAœÛD&åøgc,7À�u ÄºS)ωt¯oåÇy.ƒØB$„8%”7„ÚM�î’÷rù>B”è¡Î5„$<©%ÆÊûp^Ë ¶	€Í&NÀÔçU³a‘8å>]ç9GÀ+
ß…³‰ˆö€’ï<E÷L=Ôù¯†¿s�ÕÆmBÄ# ÄYnж!VŽ[´g²Ìm'ü*õI�BÊauþ«ã]fÔ{¬oÓ±M(ƒØR.<zôhÝeB!ÄŠ‘@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!B!Ä‘B!fˆ€B1C$„Bˆ" „BÌ	!„b†H!„3D@!„˜!ÿì@=V|IEND®B`‚0FFTMM…B`ˆ¸GDEF_Õ€„NGPOSWµzß�TdGSUB"n'“€Ô€OS/2X›ƒò¸VcmapaÙ¾r¢cvt "ˆÀfeatTˆÔ,gaspÿÿ€|glyfÐà‘L5 headìc‹�<6hheaõÂt$hmtx�Œÿw
 kern33…=ìloca§®µ:Ĉmaxp	i˜ morxÀNÈw‰Pname Q›>Cð:¤post#eç~”åq¤Np_<õÅC#íÅC#íÿUÿUUUUÿUôªÿUUÂÃ8@.æô™Ì�™Ìë3	PfEd  ¬UÿUôU«Ôv"UUªUUªªUUUªUªªUUUUUªªUUUUªªUUUªªUªUUUUªUªUUªUªªUUUUªUUÿUUUUUUªUªUUUUUªªUUUªUªªªªªUUªUUUªªªªªªUªªªªªªªªªªªªUUUUUªUUUUUUUUUUUUUUUUUUUªUUUUUUUUUUœ€£¥§³·»ÿSax~ ¬ÿÿ  ¥§©µ¹¿R`x} ¬ÿÿÿãÿÃÿÂÿÁÿÀÿ¿ÿ¾ÿ»ÿiÿ]ÿGÿCà	
 
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab€‚„Œ‘—œ›�Ÿž ¢¤£¥¦¨§©ª¬®­¯±°µ´¶·pefhušni�“qgtjx¡³zdlkyc{~�»¼²º¿Âv}…|†ƒˆ‰Š‡Ž��•–”o"ˆ****>P~¼ä(B\xŒžª¶Ô>fˆ¨ÐîBTj�¤ÈèFjˆ¢ºÐð8^nž¾äþ(LzަÈô"@btŽ æòBf„¢Æà		(	>	X	~	Ž	°	È	æ
 

Fichier diff supprimé car celui-ci est trop grand
+ 74 - 3
docs/examples/web/text_bmfont_ttf.js


+ 61 - 32
docs/examples/web/text_bmfont_unordered.c

@@ -11,55 +11,84 @@
 
 #include "raylib.h"
 
+#if defined(PLATFORM_WEB)
+    #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+const int screenWidth = 800;
+const int screenHeight = 450;
+
+// NOTE: Using chars outside the [32..127] limits!
+// NOTE: If a character is not found in the font, it just renders a space
+const char msg[256] = "ASCII extended characters:\n¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ\nÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæ\nçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
+
+SpriteFont font;
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void);     // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
 int main()
 {
     // Initialization
     //--------------------------------------------------------------------------------------
-    int screenWidth = 800;
-    int screenHeight = 450;
-
     InitWindow(screenWidth, screenHeight, "raylib [text] example - bmfont unordered loading and drawing");
 
-    // NOTE: Using chars outside the [32..127] limits!
-    // NOTE: If a character is not found in the font, it just renders a space
-    const char msg[256] = "ASCII extended characters:\n¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ\nÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæ\nçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
-
     // NOTE: Loaded font has an unordered list of characters (chars in the range 32..255)
-    SpriteFont font = LoadSpriteFont("resources/fonts/pixantiqua.fnt");       // BMFont (AngelCode)
+    font = LoadSpriteFont("resources/fonts/pixantiqua.fnt");       // BMFont (AngelCode)
 
-    SetTargetFPS(60);
+#if defined(PLATFORM_WEB)
+    emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+    SetTargetFPS(60);   // Set our game to run at 60 frames-per-second
     //--------------------------------------------------------------------------------------
-
+    
     // Main game loop
     while (!WindowShouldClose())    // Detect window close button or ESC key
     {
-        // Update
-        //----------------------------------------------------------------------------------
-        // TODO: Update variables here...
-        //----------------------------------------------------------------------------------
-
-        // Draw
-        //----------------------------------------------------------------------------------
-        BeginDrawing();
-
-            ClearBackground(RAYWHITE);
-
-            DrawText("Font name:       PixAntiqua", 40, 50, 20, GRAY);
-            DrawText(FormatText("Font base size:           %i", font.baseSize), 40, 80, 20, GRAY);
-            DrawText(FormatText("Font chars number:     %i", font.charsCount), 40, 110, 20, GRAY);
-            
-            DrawTextEx(font, msg, (Vector2){ 40, 180 }, font.baseSize, 0, MAROON);
-
-        EndDrawing();
-        //----------------------------------------------------------------------------------
+        UpdateDrawFrame();
     }
+#endif
 
     // De-Initialization
     //--------------------------------------------------------------------------------------
-    UnloadSpriteFont(font);     // AngelCode SpriteFont unloading
-    
-    CloseWindow();                // Close window and OpenGL context
+    UnloadSpriteFont(font); // Unload music stream buffers from RAM
+
+    CloseWindow();          // Close window and OpenGL context
     //--------------------------------------------------------------------------------------
 
     return 0;
+}
+
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+    // Update
+    //----------------------------------------------------------------------------------
+    // TODO: Update variables here...
+    //----------------------------------------------------------------------------------
+
+    // Draw
+    //----------------------------------------------------------------------------------
+    BeginDrawing();
+
+        ClearBackground(RAYWHITE);
+
+        DrawText("Font name:       PixAntiqua", 40, 50, 20, GRAY);
+        DrawText(FormatText("Font base size:           %i", font.baseSize), 40, 80, 20, GRAY);
+        DrawText(FormatText("Font chars number:     %i", font.charsCount), 40, 110, 20, GRAY);
+        
+        DrawTextEx(font, msg, (Vector2){ 40, 180 }, font.baseSize, 0, MAROON);
+
+    EndDrawing();
+    //----------------------------------------------------------------------------------
 }

+ 213 - 0
docs/examples/web/text_bmfont_unordered.data

@@ -0,0 +1,213 @@
+info face="PixAntiqua" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=2,2,2,2 spacing=2,2 outline=0
+common lineHeight=32 base=27 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
+page id=0 file="pixantiqua_0.png"
+chars count=184
+char id=32   x=9     y=304   width=7     height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=33   x=391   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=34   x=240   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=35   x=468   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=36   x=152   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=37   x=176   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=38   x=303   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=39   x=495   y=266   width=8     height=36    xoffset=-3    yoffset=-2    xadvance=5     page=0  chnl=15
+char id=40   x=256   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=199  x=432   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=200  x=126   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=201  x=147   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=202  x=288   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=203  x=189   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=204  x=468   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=205  x=486   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=206  x=0     y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=207  x=72    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=208  x=329   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=209  x=277   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=210  x=182   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=211  x=26    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=41   x=272   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=42   x=288   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=43   x=414   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=44   x=378   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=45   x=414   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=46   x=443   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=47   x=392   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=48   x=485   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=49   x=450   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=50   x=21    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=51   x=42    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=59   x=456   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=60   x=168   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=61   x=309   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=62   x=336   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=63   x=315   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=64   x=364   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=65   x=390   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=66   x=120   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=67   x=144   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=68   x=168   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=69   x=294   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=52   x=488   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=53   x=63    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=54   x=24    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=55   x=48    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=56   x=72    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=57   x=96    y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=58   x=404   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=70   x=252   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=71   x=192   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=72   x=78    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=78   x=78    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=79   x=355   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=80   x=264   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=81   x=381   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=82   x=288   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=83   x=312   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=91   x=144   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=92   x=108   y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=93   x=304   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=94   x=34    y=0     width=32    height=36    xoffset=-3    yoffset=-2    xadvance=29    page=0  chnl=15
+char id=95   x=231   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=96   x=442   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=97   x=408   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=98   x=432   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=99   x=210   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=84   x=336   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=85   x=360   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=86   x=0     y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=87   x=68    y=0     width=30    height=36    xoffset=-3    yoffset=-2    xadvance=27    page=0  chnl=15
+char id=88   x=26    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=89   x=384   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=90   x=84    y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=100  x=456   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=101  x=480   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=102  x=54    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=103  x=0     y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=104  x=24    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=105  x=469   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=106  x=18    y=266   width=16    height=36    xoffset=-8    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=107  x=48    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=108  x=417   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=109  x=161   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=110  x=72    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=111  x=96    y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=117  x=192   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=118  x=216   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=119  x=248   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=120  x=240   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=121  x=264   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=122  x=288   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=123  x=432   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=124  x=365   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=125  x=378   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=126  x=393   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=127  x=132   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=160  x=0     y=304   width=7     height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=161  x=352   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=162  x=351   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=163  x=336   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=165  x=360   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=167  x=384   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=169  x=433   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=170  x=224   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=171  x=105   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=172  x=0     y=0     width=32    height=36    xoffset=-3    yoffset=-2    xadvance=29    page=0  chnl=15
+char id=173  x=494   y=38    width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=174  x=52    y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=175  x=52    y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=176  x=126   y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=177  x=435   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=178  x=320   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=179  x=336   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=181  x=459   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=112  x=120   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=113  x=144   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=114  x=396   y=228   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=115  x=168   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=116  x=36    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=182  x=408   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=183  x=498   y=190   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=185  x=192   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=186  x=208   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=187  x=477   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=191  x=456   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=192  x=407   y=0     width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=193  x=234   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=194  x=416   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=195  x=156   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=196  x=130   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=197  x=104   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=198  x=190   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=212  x=0     y=76    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=213  x=338   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=214  x=312   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=215  x=357   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=216  x=286   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=217  x=456   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=218  x=480   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=219  x=0     y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=220  x=24    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=221  x=48    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=222  x=260   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=223  x=72    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=224  x=96    y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=225  x=120   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=226  x=144   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=227  x=168   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=228  x=192   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=229  x=216   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=230  x=219   y=0     width=27    height=36    xoffset=-3    yoffset=-2    xadvance=24    page=0  chnl=15
+char id=231  x=372   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=73   x=90    y=266   width=16    height=36    xoffset=-3    yoffset=-2    xadvance=13    page=0  chnl=15
+char id=74   x=216   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=75   x=240   y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=76   x=273   y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=77   x=100   y=0     width=30    height=36    xoffset=-3    yoffset=-2    xadvance=27    page=0  chnl=15
+char id=232  x=312   y=152   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=233  x=240   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=234  x=264   y=190   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=235  x=104   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=236  x=430   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=237  x=482   y=266   width=11    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=238  x=160   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=11    page=0  chnl=15
+char id=239  x=176   y=266   width=14    height=36    xoffset=-3    yoffset=-2    xadvance=8     page=0  chnl=15
+char id=240  x=128   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=241  x=200   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=242  x=224   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=243  x=248   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=244  x=272   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=245  x=296   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=246  x=320   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=247  x=330   y=190   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=248  x=208   y=38    width=24    height=36    xoffset=-3    yoffset=-2    xadvance=21    page=0  chnl=15
+char id=249  x=344   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=250  x=368   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=251  x=416   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=252  x=440   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=253  x=464   y=76    width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+char id=254  x=0     y=228   width=19    height=36    xoffset=-3    yoffset=-2    xadvance=16    page=0  chnl=15
+char id=255  x=0     y=114   width=22    height=36    xoffset=-3    yoffset=-2    xadvance=19    page=0  chnl=15
+‰PNG
+
+
IHDRÑ‹&zIDATxœíÝO^ó*ÀqâçÝ„u.¡�ƵµS‡u	nC‡ºÞ¥%p’´Þ‡ßwò\Óük.='ÆÀœÑ:Ç-r<dÜò 5ާ¯|´?�·:ƒ��|·éÞñçQ0%E½ÇŸs`žT�?¾JÖ(úÛï)ˆo“¿/{.åŽ`W¬DFkGéÄ�1jm5†'ïcÃ'-—¢
+ sÆ0ÐkÍÏ£ýyŒ×hñqÄ>÷ÕP9éœV�ШÖ1ú—¥:tæcŒxi×Dèœ+¾ðí�1æñÇý{ÿ5-¦öô+{¾Ía†áá[Ø£þó8ïóh¿î§ËƒcZkwƳ;ïÇ5ƒ.­ÓøW2ž¶¿«hKÿÓ
+þM?Ôì«B�ÿzƘÃ0|}âíçóð–o¦±éc�ÖØ¾ s€ÎÝù(ô68óý0¼cÌïÓðâV
+ôÞ˜}ó½öÛðôëþë÷ix3æí\‰ÇN‘ðcç-wÖ¾O¿á¿ãtÏbudŒ««2[NÄ*�þ0çÚìR­ˆuç¾¾�<þØ×!ðüYt¼ÑÚÝéÂß‹Ð9
+@çΠ¤Yhe³ûÚåÚìõ‚f´1ÆßG¬vÛ,†óñr£²jÊ´î\IPå\è�Ñ»ðß_Ï»¸`oD€ÎÝ]
+îÊ¿#5Íܱô&[«ý¹ÃE©Kóq´ÖžºöI÷Ü·S³Qú-¹öìú_ezœœø«6!tŽÐ9WüͲ™m*Ý®.´ïí×½ù8µ1&ñkÚãé£V]jÎÛ0®"›ˆÃµïê(çëGí“õ¾‚ÌwºH]«³ß†çOû*u,ˆ�£tîî2æh.ÚŤppü±¸�º‰øaå>¼EÏY|J7”]Òp©.Ê?ñÕVz/B…&tŠœú‚
+kznD€Î¹~€÷Ëx€’ÛUn@72iMÛ¦¯ÖZûz>ñ ãn®ïåüë²O·¯´‡Î?3/ä´«å½è]ð?ÌZkíçsQÏãáÒ:Î�Ð9
+Jù�—fâÖ¿$˜Ö°`,AÃ"@ç(�û_ÍÊ÷_æcØêLúöýp£¥.CÓËû õL`3“ZÅd]mI´Ö̺¢w�¯�bL;ëcød°ú{ÑÐ9
+¦¹¢é®Ê'F͆’ÝÆäŸ)ŠY²ÉºZ¹’³ã‚lÅ•ÝÌYëô´dâuËæ¤±‰sˆ�£àÚU@ö. 2ÓW.âN«j”<�6ü¦59ëå®AÍYª+ÿ�Çy}£)�¹ŒzSÏÌüsÛ¤g­5Û”_™’xkîêè)þª3Ãf¯�ž�ñrä8uï„Òt%tŽйÒ0ÊóôÉZª,%ó¡§dCI·™Ë½èçT½NçM(‰·<Ÿ'›föüqüŒå8åæ{>ÁWz
”³žþ_Óo–Oz!tŽй»4ÓÁ$\¤tó¤ä:&—ùPßÿLÐέÝÉá\¬jr\vƲiÂÙêéuÂ]Í|J –³žGèÜ´(	`’ü¢ôlF)ɹl(Ú69éo¶èW&Ú—NÁ-âµÒqÒkÐ~Ö’¸ï€Ð9
+@çÎYÂ|¨ŒD,i‚‰÷çz —²¡Ìm£Óƒö|â­4»Ëºù _†çO÷½âsÔ3ÂÔ]ƒi~÷(WŒ÷b {€Î ½Û�ïg׸Õƒ\Ë6RïÅ\>âܸ®àAèô6Ê=R]ê/—Þg<âòŠ¥îºÑŒBçð2<ý®ŸÛ/L¯µ.=½–»ÿ=7šJÒ÷ëo{	ö泑G¯¨Lýu¸œÛFo9¬Bè€nd“ŸÜðEuI`´Ü\z®.mÿòòÚÜ_õÇÕl³>ƒ:G€3“½«f:FQB…Éq‚t&ér§¨ÊææÒBº¢Åë¡í_û^
Çõû‹‹èç#7[õçOèNuFÅ\–°ìñ'kú=¹ºVÆÝÿ„Ê\i5â,mD˜™|[ó™¸j²j‰�:±q5�&Yn¢_Š�òþµãn·<sžârù
+Öï'³áxD€ÎQ:w7ŸoKùäuˆÙ®"Aö®8ÝÄ¡eBŠß_0íbwÉ͵C¢xÜ­—ÿ5Âõ2D€îQ:·¨è™¿+S:ŒÖÚSšÃKõÙ˾îÍ.<†›Y»îÆ¿ãh¿îן£¢+�…ÀͧOKëLª“I‚i#jâ0ÃiÖòkòpdë_Ê
Œ¥³™×Cè sW/¾r˜O�’yçÖ
BåGœúwj5¶‰�£tî\ê²]9/Ò'®ò|Ãçæ×'wÕ6	r¼_öç3“¹¬M~9&7ø²è“5Ælúœý&ã‚åñˆ&qy¾Ñ[¾á:e–:GÀ_Wÿ~p”Ç%tŽüs*úGˆüq9ÛJÇ[ÐÐ9
+Ì|–+m ‚°eøˆ x‘yÅ@�Ö�âÀ“ÈX~Üéú‹:d®[öúÒŒRä•çùZÊå¾É�Ünÿ¹ŠJsQàVîæ~Aé,­‘“Q›òÕ;Ô½a;Y?›zf�qø{ûó8=î÷ÚSÖôrÊZk­�ߟ»þD€ÎQ:—)Á+ÕãÐñqšà'tÈìGÏ¢ä"»¢ýâÁKâ�ZžÎæ�TI£”õÌÙÛÏç\¶²‹üõ'tŽйÙ�†­•ëC™k…–¶®}‚å³býÝIéláºâ÷òé3w•w7"7›w"s³Ê,bCèÞ‚ßG·¥L]/Ūo”•ySÒÛf#˜Ðh|9Í·_tþ>’Äû×îë¤ÙÙ"@ç(�»›Ë*¥ù'5
+�7ŸÅ,þ^oÃӝܨ««zÊeh6в³:Gèœ+bV©µLûªhïÔ):ϹçæmUß^zŽ¿©u»ÊãÑÂDx™çËârá—3÷Ü_	£ï?^¬ß¿+Ëš³Œi×¥4û˜QFRe²zU­_56žD€ÎQà”þ4�)Z¯ÕhB
"@ç(0õ!½iýŠ*WCœiÙ¨
+²Tõb•·Ÿ­H?ùÅôtŽMÙkÇ ‡Öò1¦>�Fv}í|äª�Ð9
+@ç(‹	³¥}b‡÷„™Us*µõ}óý0¼§c߇‡oé). s®h£IÍi<¿Ö8ÑòãeF«NF笿Ê(ß±~}môrUãm2¿?“
+&XˆRÄhÿ_Äõ:GèÜÝÜ,Ô¹ì^“P¶“²Ze9ë§Ç“gïÎÑWESáĬhùƛޘ‹SÁSçâªmoŒ1¿OÃÛSö"@ç(�k.Ë-¶w�\B峕ý}~ŬdŸ`3î’sµåVZ sw­ùýjóì-¤f-}h¢Ñ²reOùci$ñç)\ŸÑÚ�1+å\ s€Îݵß_¯Šk†aX#1ãhí{’õ+“2Ƈn¡ÊвoiçŸV=Z\�}¬i–ö s€Î�@ö©Ÿàm�Plrwqv,?Ô©41£Zý~…�/fKºd3w=Ú�«¢QÇKWsz>Û" °áûû²Ïñµó(<Y•}kî=}ñyÕŽÈŒsh8Ÿãé:T½*WË*&\"@ç(Æ‘¯p_YuܹFçUÏǩʖ¶–‚›¥ãÿk:G€i·ï"°
+¸A•“•É®¶Ö¬d"ôJèZ¥Ùµ™õMî)Xæ¾µvÿÂS­zZWj]Š•ÿ:ú:G€#<˜[?6Î´¨
¹Â@ˆQéBÖο¶JÊ÷|á s4Œý�Ì�µ»�Úª-•yÃé?€й¶Ð0»5;JvÃåiJSôîÝx?Z
+�bqr£7©Õi#tŽ€Ö‰qãʯ/¿†^ÛÏõ—/˜ðR$íaHk-‰eù>õ…“*ÀÏRQ[äD€ÎQ:· ­kcŒ6ëVL<q«å
öIhÕ:^¦óœ}þ�§_9%Ñäź5厾“rt¼Ã�Ìb~ž?““w›:×Vj³lùV�v?~íåFϨ-›þ²¾†Àé",ì3|ü±¯§¯Ñ>£»;ú‡ù}J²úD�@÷ò€ñüo‚Ð9
+@ç®P
+²_u¹£e÷*Ìú%F{±^(çrÒF­¸L´)HL檕Ãùß`Ÿî"@ç(�»bˆ³~Ýz¹Ó˜Ý+í+Ç·ŒUÐn7FkwR6³£ý|VRœ`š²KéÙ®ä‡AUû¿Örí<mú�«ùî^ÛíêãÚ^éKèká­âY´‚u§›ÕŽ1pˆ�£`-T7×�í�Z4~ãeeùïæoYÒs2;X¼ªiç3ý�£`‹.ÜÚAå³_×%ž§xA2k.×Ñ–L§p«èŠ• s€ÎmW>.¯zÏç¾ef¿Š›/°gjòÿ¤kú¯Ù�6iCÁ<ž—ì“9ΆнéÛÃçÓX¥µIR~zÑbñ7¨ü0…6Zºfý˜Ûò\‡pŽU:Ú~I£:xïp]«2jú7¬_æ¤K"@ç(�;€·iKÆÍ&
+úÍÅIR_÷ÉõÜ­bŽí×ý\®•`^°œa]Ñ)	)râüº¹SÚYû^Ðxå'¿å:G@fN_¶[4×qj”îÊô%DboªÖÅšî3³yIè/ß¼ü”œ´%¯=µ×,9sq�ô4J–"@÷ò@lq‰Ón„”˜®Ä‰rp‰}ÓNÈ‹"n^®|óò5_’¦òa^“yúÚŒþ³4òˆ�ÌfD€ÎQ:—)bt­ÝMWóÉRâƒ4\Ï&-Ì[7ô­å $K+ÊÑÚ÷iÊÖA.šö:.ƒÐ9
+@ç‚§�“�Äð1jÊV>þŽ7]çTºåQtáxçù͵öôw>�Õßvˆ(Y°EÚ¿7Ó³57زñ@…ãšÆ¦:'Ëãc¸yá¶âVá÷-Yâ:G@Õ£“c²…¸ðú›o€Ýt^@	"@ç(¨oµÆ-É�^ƒûÏÛtvp!"ô)ÉÇRt“�i?†ÿ¶ò}¶ÓwüdO¤ê©¿Ÿ�¿ÉÿŸ¼~|~ñ…Ú¢O|LzÞgÄ'¡î€~€ÎQ`Šs-¦Y§òϤÄa	é1fE!XÉékÞâ×ÄiÛ›´
+)ø;þæz•2¡×åŸTs›\uª„((Ìv8;ÛTÜOºNtŒôÞ¡¡=ÖTsÛÇg-WÙ»”löãÅUÀªˆ�»ÓóGE7�{cL’w.\¢ïg¢%¡^ù/ì|Œ]î+.Ø‹4ÿËoOvžLXý\Ø‹ŽD€ÎQ:§€Id,O<˜ç·š,y·Ö&™”Qÿ¾Ìöói}ÈŽÿÞÀ.í~_t¼l‹°$#ØdµÜ6D€ÎQ:w“%yÐr,ŠC¼ü´n­‰óÇw¢Ïó_ s×/‡aøØô7hÎ)¹sŸ´�[¢F[ s€ÎݨT¥y¹	1!e“ò\Þåï¬X s€Îݤ¼T¾a[i÷ôµèY×[ô“ÕÚúˆ�»“žì·)3ðGÅÏïãçûY7öЀ(n–õ믧3•Yº²M½u«Æ†Ä¸D€ÎQ�ºmÖ¯­Ÿß/U{~-7ø�çÕð?ŒÀñM.|il8IEND®B`‚

Fichier diff supprimé car celui-ci est trop grand
+ 190 - 1
docs/examples/web/text_bmfont_unordered.js


+ 1 - 1
docs/examples/web/text_font_select.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'fonts', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2159, "filename": "/resources/fonts/alagard.rbmf"}, {"audio": 0, "start": 2159, "crunched": 0, "end": 4319, "filename": "/resources/fonts/pixelplay.rbmf"}, {"audio": 0, "start": 4319, "crunched": 0, "end": 6479, "filename": "/resources/fonts/mecha.rbmf"}, {"audio": 0, "start": 6479, "crunched": 0, "end": 8639, "filename": "/resources/fonts/setback.rbmf"}, {"audio": 0, "start": 8639, "crunched": 0, "end": 10799, "filename": "/resources/fonts/romulus.rbmf"}, {"audio": 0, "start": 10799, "crunched": 0, "end": 12959, "filename": "/resources/fonts/pixantiqua.rbmf"}, {"audio": 0, "start": 12959, "crunched": 0, "end": 15119, "filename": "/resources/fonts/alpha_beta.rbmf"}, {"audio": 0, "start": 15119, "crunched": 0, "end": 17279, "filename": "/resources/fonts/jupiter_crash.rbmf"}], "remote_package_size": 17279, "package_uuid": "68fdcaa1-c089-41da-8d39-73a05c3d73d4"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2159, "filename": "/resources/fonts/alagard.rbmf"}, {"audio": 0, "start": 2159, "crunched": 0, "end": 4319, "filename": "/resources/fonts/pixelplay.rbmf"}, {"audio": 0, "start": 4319, "crunched": 0, "end": 6479, "filename": "/resources/fonts/mecha.rbmf"}, {"audio": 0, "start": 6479, "crunched": 0, "end": 8639, "filename": "/resources/fonts/setback.rbmf"}, {"audio": 0, "start": 8639, "crunched": 0, "end": 10799, "filename": "/resources/fonts/romulus.rbmf"}, {"audio": 0, "start": 10799, "crunched": 0, "end": 12959, "filename": "/resources/fonts/pixantiqua.rbmf"}, {"audio": 0, "start": 12959, "crunched": 0, "end": 15119, "filename": "/resources/fonts/alpha_beta.rbmf"}, {"audio": 0, "start": 15119, "crunched": 0, "end": 17279, "filename": "/resources/fonts/jupiter_crash.rbmf"}], "remote_package_size": 17279, "package_uuid": "c5737461-6fac-433b-b918-e475c1d97f5f"});
 
 })();
 

+ 1 - 1
docs/examples/web/text_rbmf_fonts.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'fonts', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2159, "filename": "/resources/fonts/alagard.rbmf"}, {"audio": 0, "start": 2159, "crunched": 0, "end": 4319, "filename": "/resources/fonts/pixelplay.rbmf"}, {"audio": 0, "start": 4319, "crunched": 0, "end": 6479, "filename": "/resources/fonts/mecha.rbmf"}, {"audio": 0, "start": 6479, "crunched": 0, "end": 8639, "filename": "/resources/fonts/setback.rbmf"}, {"audio": 0, "start": 8639, "crunched": 0, "end": 10799, "filename": "/resources/fonts/romulus.rbmf"}, {"audio": 0, "start": 10799, "crunched": 0, "end": 12959, "filename": "/resources/fonts/pixantiqua.rbmf"}, {"audio": 0, "start": 12959, "crunched": 0, "end": 15119, "filename": "/resources/fonts/alpha_beta.rbmf"}, {"audio": 0, "start": 15119, "crunched": 0, "end": 17279, "filename": "/resources/fonts/jupiter_crash.rbmf"}], "remote_package_size": 17279, "package_uuid": "909db3c4-b037-4c00-9591-d9677c67b8f2"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 2159, "filename": "/resources/fonts/alagard.rbmf"}, {"audio": 0, "start": 2159, "crunched": 0, "end": 4319, "filename": "/resources/fonts/pixelplay.rbmf"}, {"audio": 0, "start": 4319, "crunched": 0, "end": 6479, "filename": "/resources/fonts/mecha.rbmf"}, {"audio": 0, "start": 6479, "crunched": 0, "end": 8639, "filename": "/resources/fonts/setback.rbmf"}, {"audio": 0, "start": 8639, "crunched": 0, "end": 10799, "filename": "/resources/fonts/romulus.rbmf"}, {"audio": 0, "start": 10799, "crunched": 0, "end": 12959, "filename": "/resources/fonts/pixantiqua.rbmf"}, {"audio": 0, "start": 12959, "crunched": 0, "end": 15119, "filename": "/resources/fonts/alpha_beta.rbmf"}, {"audio": 0, "start": 15119, "crunched": 0, "end": 17279, "filename": "/resources/fonts/jupiter_crash.rbmf"}], "remote_package_size": 17279, "package_uuid": "e3160f18-2a84-4d1b-b527-c1a780a150f0"});
 
 })();
 

+ 1 - 1
docs/examples/web/text_sprite_fonts.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'fonts', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 26597, "filename": "/resources/fonts/custom_mecha.png"}, {"audio": 0, "start": 26597, "crunched": 0, "end": 64532, "filename": "/resources/fonts/custom_alagard.png"}, {"audio": 0, "start": 64532, "crunched": 0, "end": 88128, "filename": "/resources/fonts/custom_jupiter_crash.png"}], "remote_package_size": 88128, "package_uuid": "128b1ddd-b8bf-4bd6-a915-f86578bb01df"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 26597, "filename": "/resources/fonts/custom_mecha.png"}, {"audio": 0, "start": 26597, "crunched": 0, "end": 64532, "filename": "/resources/fonts/custom_alagard.png"}, {"audio": 0, "start": 64532, "crunched": 0, "end": 88128, "filename": "/resources/fonts/custom_jupiter_crash.png"}], "remote_package_size": 88128, "package_uuid": "ba5b2d4c-8fe3-45e6-843e-f81fe6609614"});
 
 })();
 

+ 120 - 83
docs/examples/web/text_ttf_loading.c

@@ -11,120 +11,157 @@
 
 #include "raylib.h"
 
+#if defined(PLATFORM_WEB)
+    #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+const int screenWidth = 800;
+const int screenHeight = 450;
+
+const char msg[50] = "TTF SpriteFont";
+
+SpriteFont font;
+float fontSize;
+Vector2 fontPosition = { 40, screenHeight/2 + 50 };
+Vector2 textSize;
+
+int currentFontFilter = 0;      // FILTER_POINT
+
+#if !defined(PLATFORM_WEB)
+int count = 0;
+char **droppedFiles;
+#endif
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void);     // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
 int main()
 {
     // Initialization
     //--------------------------------------------------------------------------------------
-    int screenWidth = 800;
-    int screenHeight = 450;
-
     InitWindow(screenWidth, screenHeight, "raylib [text] example - ttf loading");
-    
-    const char msg[50] = "TTF SpriteFont";
 
     // NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required)
     
     // TTF SpriteFont loading with custom generation parameters
-    SpriteFont font = LoadSpriteFontTTF("resources/fonts/KAISG.ttf", 96, 0, 0);
+    font = LoadSpriteFontTTF("resources/fonts/KAISG.ttf", 96, 0, 0);
     
     // Generate mipmap levels to use trilinear filtering
     // NOTE: On 2D drawing it won't be noticeable, it looks like FILTER_BILINEAR
     GenTextureMipmaps(&font.texture);
 
-    float fontSize = font.baseSize;
-    Vector2 fontPosition = { 40, screenHeight/2 + 50 };
-    Vector2 textSize;
+    fontSize = font.baseSize;
 
     SetTextureFilter(font.texture, FILTER_POINT);
-    int currentFontFilter = 0;      // FILTER_POINT
-    
-    int count = 0;
-    char **droppedFiles;
     
-    SetTargetFPS(60);
+#if defined(PLATFORM_WEB)
+    emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+    SetTargetFPS(60);   // Set our game to run at 60 frames-per-second
     //--------------------------------------------------------------------------------------
     
     // Main game loop
     while (!WindowShouldClose())    // Detect window close button or ESC key
     {
-        // Update
-        //----------------------------------------------------------------------------------
-        fontSize += GetMouseWheelMove()*4.0f;
-        
-        // Choose font texture filter method
-        if (IsKeyPressed(KEY_ONE))
-        {
-            SetTextureFilter(font.texture, FILTER_POINT);
-            currentFontFilter = 0;
-        }
-        else if (IsKeyPressed(KEY_TWO))
-        {
-            SetTextureFilter(font.texture, FILTER_BILINEAR);
-            currentFontFilter = 1;
-        }
-        else if (IsKeyPressed(KEY_THREE))
-        {
-            // NOTE: Trilinear filter won't be noticed on 2D drawing
-            SetTextureFilter(font.texture, FILTER_TRILINEAR);
-            currentFontFilter = 2;
-        }
-        
-        textSize = MeasureTextEx(font, msg, fontSize, 0);
-        
-        if (IsKeyDown(KEY_LEFT)) fontPosition.x -= 10;
-        else if (IsKeyDown(KEY_RIGHT)) fontPosition.x += 10;
-        
-        // Load a dropped TTF file dynamically (at current fontSize)
-        if (IsFileDropped())
-        {
-            droppedFiles = GetDroppedFiles(&count);
-            
-            if (count == 1) // Only support one ttf file dropped
-            {
-                UnloadSpriteFont(font);
-                font = LoadSpriteFontTTF(droppedFiles[0], fontSize, 0, 0);
-                ClearDroppedFiles();
-            }
-        }
-        //----------------------------------------------------------------------------------
-        
-        // Draw
-        //----------------------------------------------------------------------------------
-        BeginDrawing();
-        
-            ClearBackground(RAYWHITE);
-            
-            DrawText("Use mouse wheel to change font size", 20, 20, 10, GRAY);
-            DrawText("Use KEY_RIGHT and KEY_LEFT to move text", 20, 40, 10, GRAY);
-            DrawText("Use 1, 2, 3 to change texture filter", 20, 60, 10, GRAY);
-            DrawText("Drop a new TTF font for dynamic loading", 20, 80, 10, DARKGRAY);
-
-            DrawTextEx(font, msg, fontPosition, fontSize, 0, BLACK);
-            
-            // TODO: It seems texSize measurement is not accurate due to chars offsets...
-            //DrawRectangleLines(fontPosition.x, fontPosition.y, textSize.x, textSize.y, RED);
-            
-            DrawRectangle(0, screenHeight - 80, screenWidth, 80, LIGHTGRAY);
-            DrawText(FormatText("Font size: %02.02f", fontSize), 20, screenHeight - 50, 10, DARKGRAY);
-            DrawText(FormatText("Text size: [%02.02f, %02.02f]", textSize.x, textSize.y), 20, screenHeight - 30, 10, DARKGRAY);
-            DrawText("CURRENT TEXTURE FILTER:", 250, 400, 20, GRAY);
-            
-            if (currentFontFilter == 0) DrawText("POINT", 570, 400, 20, BLACK);
-            else if (currentFontFilter == 1) DrawText("BILINEAR", 570, 400, 20, BLACK);
-            else if (currentFontFilter == 2) DrawText("TRILINEAR", 570, 400, 20, BLACK);
-      
-        EndDrawing();
-        //----------------------------------------------------------------------------------
+        UpdateDrawFrame();
     }
+#endif
 
     // De-Initialization
     //--------------------------------------------------------------------------------------
     UnloadSpriteFont(font);     // SpriteFont unloading
     
+#if !defined(PLATFORM_WEB) 
     ClearDroppedFiles();        // Clear internal buffers
+#endif
 
     CloseWindow();              // Close window and OpenGL context
     //--------------------------------------------------------------------------------------
-    
+
     return 0;
+}
+
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+    // Update
+    //----------------------------------------------------------------------------------
+    fontSize += GetMouseWheelMove()*4.0f;
+    
+    // Choose font texture filter method
+    if (IsKeyPressed(KEY_ONE))
+    {
+        SetTextureFilter(font.texture, FILTER_POINT);
+        currentFontFilter = 0;
+    }
+    else if (IsKeyPressed(KEY_TWO))
+    {
+        SetTextureFilter(font.texture, FILTER_BILINEAR);
+        currentFontFilter = 1;
+    }
+    else if (IsKeyPressed(KEY_THREE))
+    {
+        // NOTE: Trilinear filter won't be noticed on 2D drawing
+        SetTextureFilter(font.texture, FILTER_TRILINEAR);
+        currentFontFilter = 2;
+    }
+    
+    textSize = MeasureTextEx(font, msg, fontSize, 0);
+    
+    if (IsKeyDown(KEY_LEFT)) fontPosition.x -= 10;
+    else if (IsKeyDown(KEY_RIGHT)) fontPosition.x += 10;
+    
+#if !defined(PLATFORM_WEB)
+    // Load a dropped TTF file dynamically (at current fontSize)
+    if (IsFileDropped())
+    {
+        droppedFiles = GetDroppedFiles(&count);
+        
+        if (count == 1) // Only support one ttf file dropped
+        {
+            UnloadSpriteFont(font);
+            font = LoadSpriteFontTTF(droppedFiles[0], fontSize, 0, 0);
+            ClearDroppedFiles();
+        }
+    }
+#endif
+    //----------------------------------------------------------------------------------
+    
+    // Draw
+    //----------------------------------------------------------------------------------
+    BeginDrawing();
+    
+        ClearBackground(RAYWHITE);
+        
+        DrawText("Use mouse wheel to change font size", 20, 20, 10, GRAY);
+        DrawText("Use KEY_RIGHT and KEY_LEFT to move text", 20, 40, 10, GRAY);
+        DrawText("Use 1, 2, 3 to change texture filter", 20, 60, 10, GRAY);
+        DrawText("Drop a new TTF font for dynamic loading", 20, 80, 10, DARKGRAY);
+
+        DrawTextEx(font, msg, fontPosition, fontSize, 0, BLACK);
+        
+        // TODO: It seems texSize measurement is not accurate due to chars offsets...
+        //DrawRectangleLines(fontPosition.x, fontPosition.y, textSize.x, textSize.y, RED);
+        
+        DrawRectangle(0, screenHeight - 80, screenWidth, 80, LIGHTGRAY);
+        DrawText(FormatText("Font size: %02.02f", fontSize), 20, screenHeight - 50, 10, DARKGRAY);
+        DrawText(FormatText("Text size: [%02.02f, %02.02f]", textSize.x, textSize.y), 20, screenHeight - 30, 10, DARKGRAY);
+        DrawText("CURRENT TEXTURE FILTER:", 250, 400, 20, GRAY);
+        
+        if (currentFontFilter == 0) DrawText("POINT", 570, 400, 20, BLACK);
+        else if (currentFontFilter == 1) DrawText("BILINEAR", 570, 400, 20, BLACK);
+        else if (currentFontFilter == 2) DrawText("TRILINEAR", 570, 400, 20, BLACK);
+  
+    EndDrawing();
+    //----------------------------------------------------------------------------------
 }

BIN
docs/examples/web/text_ttf_loading.data


Fichier diff supprimé car celui-ci est trop grand
+ 262 - 20
docs/examples/web/text_ttf_loading.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
docs/examples/web/textures_formats_loading.js


+ 1 - 1
docs/examples/web/textures_image_drawing.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 295054, "filename": "/resources/parrots.png"}, {"audio": 0, "start": 295054, "crunched": 0, "end": 683586, "filename": "/resources/cat.png"}], "remote_package_size": 683586, "package_uuid": "0b55a7d8-679a-472e-b929-8b4a827cc116"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 295054, "filename": "/resources/parrots.png"}, {"audio": 0, "start": 295054, "crunched": 0, "end": 683586, "filename": "/resources/cat.png"}], "remote_package_size": 683586, "package_uuid": "3d0998d2-5991-41c5-abff-c7fce726b395"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_image_loading.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "85a25fea-6354-4fd5-ae29-2ca548c86940"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "ba766e96-b2bd-4179-b669-377c7771c8ac"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_image_processing.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 295054, "filename": "/resources/parrots.png"}], "remote_package_size": 295054, "package_uuid": "e4e834ee-01d2-4389-a278-53740c6fc2cd"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 295054, "filename": "/resources/parrots.png"}], "remote_package_size": 295054, "package_uuid": "36324a4c-216a-4a83-802d-12544330631d"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_logo_raylib.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "38be83d9-edac-417b-9c60-b5da0fbcff06"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "71c74538-6d2f-419f-99e0-d310208f954c"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_particles_trail_blending.c

@@ -85,7 +85,7 @@ int main()
     // De-Initialization
     //--------------------------------------------------------------------------------------
 	UnloadTexture(smoke);	// Texture unloading
-	 
+
     CloseWindow();        // Close window and OpenGL context
     //--------------------------------------------------------------------------------------
 

+ 1 - 1
docs/examples/web/textures_particles_trail_blending.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 15427, "filename": "/resources/smoke.png"}], "remote_package_size": 15427, "package_uuid": "457aeccf-3888-43de-8532-6894fbc146be"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 15427, "filename": "/resources/smoke.png"}], "remote_package_size": 15427, "package_uuid": "f4df9a25-e387-4cd6-92c5-3cee7c384a45"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_raw_data.js

@@ -183,7 +183,7 @@ Module['FS_createPath']('/resources', 'texture_formats', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 1048576, "filename": "/resources/texture_formats/sonic_R8G8B8A8.raw"}], "remote_package_size": 1048576, "package_uuid": "7bfbf262-7504-4c83-a6cc-bf2d26e775fe"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 1048576, "filename": "/resources/texture_formats/sonic_R8G8B8A8.raw"}], "remote_package_size": 1048576, "package_uuid": "3737e5a7-8382-4bd7-805a-49ca01d81651"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_rectangle.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 85247, "filename": "/resources/guybrush.png"}], "remote_package_size": 85247, "package_uuid": "d7c2ab68-a8da-4273-a50f-ba2c6e8860b8"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 85247, "filename": "/resources/guybrush.png"}], "remote_package_size": 85247, "package_uuid": "2a974ffe-7b38-475a-aaaa-6209cb11351e"});
 
 })();
 

+ 1 - 1
docs/examples/web/textures_srcrec_dstrec.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 85247, "filename": "/resources/guybrush.png"}], "remote_package_size": 85247, "package_uuid": "d99bc7c4-6775-4512-882e-19a7952641f6"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 85247, "filename": "/resources/guybrush.png"}], "remote_package_size": 85247, "package_uuid": "482e2cdc-1cc2-4396-b036-7f4de958912c"});
 
 })();
 

+ 0 - 1
docs/examples/web/textures_to_image.c

@@ -96,7 +96,6 @@ void UpdateDrawFrame(void)
 
         DrawText("this IS a texture loaded from an image!", 300, 370, 10, GRAY);
 
-
     EndDrawing();
     //----------------------------------------------------------------------------------
 }

+ 3 - 3
docs/examples/web/textures_to_image.js

@@ -182,7 +182,7 @@ Module['FS_createPath']('/', 'resources', true, true);
   }
 
  }
- loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "d58fbf9b-0e8b-4d53-8235-977e6e66f280"});
+ loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 3760, "filename": "/resources/raylib_logo.png"}], "remote_package_size": 3760, "package_uuid": "1abd60d9-f55f-4eac-95a6-a940d84ea4d2"});
 
 })();
 
@@ -16365,10 +16365,10 @@ function _rlglReadTexturePixels($0) {
  _glFramebufferTexture2D(36160,36064,3553,($7|0),0);
  $8 = HEAP32[$2>>2]|0;
  $9 = HEAP32[$4>>2]|0;
- $10 = $8 << 2;
+ $10 = ($8*3)|0;
  $11 = Math_imul($10, $9)|0;
  $12 = (_malloc($11)|0);
- _glReadPixels(0,0,($8|0),($9|0),6408,5121,($12|0));
+ _glReadPixels(0,0,($8|0),($9|0),6407,5121,($12|0));
  $13 = ((($1)) + 4|0);
  $14 = HEAP32[$13>>2]|0;
  _glFramebufferTexture2D(36160,36064,3553,($14|0),0);

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff