Browse Source

Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop

victorfisac 8 năm trước cách đây
mục cha
commit
256bc6e1dc
79 tập tin đã thay đổi với 19244 bổ sung15165 xóa
  1. 31 28
      docs/examples/web/audio_music_stream.c
  2. 316 305
      docs/examples/web/audio_music_stream.js
  3. 114 0
      docs/examples/web/audio_raw_stream.c
  4. 316 305
      docs/examples/web/audio_sound_loading.js
  5. 307 301
      docs/examples/web/core_2d_camera.js
  6. 3 4
      docs/examples/web/core_3d_camera_first_person.c
  7. 307 301
      docs/examples/web/core_3d_camera_first_person.js
  8. 1 4
      docs/examples/web/core_3d_camera_free.c
  9. 307 301
      docs/examples/web/core_3d_camera_free.js
  10. 307 301
      docs/examples/web/core_3d_mode.js
  11. 1 3
      docs/examples/web/core_3d_picking.c
  12. 307 301
      docs/examples/web/core_3d_picking.js
  13. 307 301
      docs/examples/web/core_basic_window.js
  14. 307 301
      docs/examples/web/core_color_select.js
  15. 307 301
      docs/examples/web/core_gestures_detection.js
  16. 307 301
      docs/examples/web/core_input_keys.js
  17. 307 301
      docs/examples/web/core_input_mouse.js
  18. 307 301
      docs/examples/web/core_mouse_wheel.js
  19. 307 301
      docs/examples/web/core_random_values.js
  20. 1 3
      docs/examples/web/core_world_screen.c
  21. 307 301
      docs/examples/web/core_world_screen.js
  22. 145 59
      docs/examples/web/makefile
  23. 2 4
      docs/examples/web/models_billboard.c
  24. 316 305
      docs/examples/web/models_billboard.js
  25. 307 301
      docs/examples/web/models_box_collisions.js
  26. 1 2
      docs/examples/web/models_cubicmap.c
  27. 316 305
      docs/examples/web/models_cubicmap.js
  28. 307 301
      docs/examples/web/models_geometric_shapes.js
  29. 2 3
      docs/examples/web/models_heightmap.c
  30. 316 305
      docs/examples/web/models_heightmap.js
  31. 316 305
      docs/examples/web/models_obj_loading.js
  32. 197 0
      docs/examples/web/models_ray_picking.c
  33. 1593 0
      docs/examples/web/models_ray_picking.js
  34. 1 3
      docs/examples/web/shaders_custom_uniform.c
  35. 316 305
      docs/examples/web/shaders_custom_uniform.js
  36. 3 5
      docs/examples/web/shaders_model_shader.c
  37. 316 305
      docs/examples/web/shaders_model_shader.js
  38. 1 3
      docs/examples/web/shaders_postprocessing.c
  39. 316 305
      docs/examples/web/shaders_postprocessing.js
  40. BIN
      docs/examples/web/shaders_shapes_textures.data
  41. 316 307
      docs/examples/web/shaders_shapes_textures.js
  42. 307 301
      docs/examples/web/shapes_basic_shapes.js
  43. 307 301
      docs/examples/web/shapes_colors_palette.js
  44. 307 301
      docs/examples/web/shapes_logo_raylib.js
  45. 307 301
      docs/examples/web/shapes_logo_raylib_anim.js
  46. 4 4
      docs/examples/web/text_bmfont_ttf.c
  47. 1 43
      docs/examples/web/text_bmfont_ttf.data
  48. 311 361
      docs/examples/web/text_bmfont_ttf.js
  49. 65 0
      docs/examples/web/text_bmfont_unordered.c
  50. 1593 0
      docs/examples/web/text_bmfont_unordered.js
  51. 3 3
      docs/examples/web/text_font_select.c
  52. 316 305
      docs/examples/web/text_font_select.js
  53. 307 301
      docs/examples/web/text_format_text.js
  54. 3 3
      docs/examples/web/text_rbmf_fonts.c
  55. 316 305
      docs/examples/web/text_rbmf_fonts.js
  56. 9 9
      docs/examples/web/text_sprite_fonts.c
  57. 316 305
      docs/examples/web/text_sprite_fonts.js
  58. 130 0
      docs/examples/web/text_ttf_loading.c
  59. 1611 0
      docs/examples/web/text_ttf_loading.js
  60. 307 301
      docs/examples/web/text_writing_anim.js
  61. 14 5
      docs/examples/web/textures_formats_loading.js
  62. 316 305
      docs/examples/web/textures_image_drawing.js
  63. 316 305
      docs/examples/web/textures_image_loading.js
  64. 316 305
      docs/examples/web/textures_image_processing.js
  65. 316 305
      docs/examples/web/textures_logo_raylib.js
  66. 316 305
      docs/examples/web/textures_particles_trail_blending.js
  67. 316 305
      docs/examples/web/textures_raw_data.js
  68. 316 305
      docs/examples/web/textures_rectangle.js
  69. 316 305
      docs/examples/web/textures_srcrec_dstrec.js
  70. 316 305
      docs/examples/web/textures_to_image.js
  71. 0 256
      project/vs2015/external/lua/include/lauxlib.h
  72. 0 486
      project/vs2015/external/lua/include/lua.h
  73. 0 9
      project/vs2015/external/lua/include/lua.hpp
  74. 0 769
      project/vs2015/external/lua/include/luaconf.h
  75. 0 58
      project/vs2015/external/lua/include/lualib.h
  76. BIN
      project/vs2015/external/lua/lib/win32/lua53.dll
  77. BIN
      project/vs2015/external/lua/lib/win32/lua53.lib
  78. BIN
      project/vs2015/external/lua/lib/win32/lua53dll.lib
  79. 5 5
      src/utils.c

+ 31 - 28
docs/examples/web/audio_music_stream.c

@@ -25,6 +25,9 @@ int screenHeight = 450;
 
 int framesCounter = 0;
 float timePlayed = 0.0f;
+static bool pause = false;
+
+Music music;
 
 //----------------------------------------------------------------------------------
 // Module Functions Declaration
@@ -42,7 +45,9 @@ int main()
     
     InitAudioDevice();              // Initialize audio device
 
-    PlayMusicStream(0, "resources/audio/guitar_noodling.ogg");         // Play music stream
+    music = LoadMusicStream("resources/audio/guitar_noodling.ogg");
+    
+    PlayMusicStream(music);
     
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
@@ -59,6 +64,8 @@ int main()
 
     // De-Initialization
     //--------------------------------------------------------------------------------------
+    UnloadMusicStream(music);   // Unload music stream buffers from RAM
+
     CloseAudioDevice();     // Close audio device (music streaming is automatically stopped)
     CloseWindow();        // Close window and OpenGL context
     //--------------------------------------------------------------------------------------
@@ -73,33 +80,26 @@ void UpdateDrawFrame(void)
 {
     // Update
     //----------------------------------------------------------------------------------
-    framesCounter++;
+    UpdateMusicStream(music);        // Update music buffer with new stream data
     
-    // Testing music fading from one file to another
-/*
-        if (framesCounter > 600)    // Wait for 10 seconds (600 frames)
-        {
-            volume -= 0.01;         // Decrement music volume level
-
-            // When music volume level equal or lower than 0,
-            // restore volume level and init another music file
-            if (volume <= 0)
-            {
-                volume = 1.0;
-                framesCounter = 0;
-                PlayMusicStream(1, "resources/audio/another_file.ogg");
-            }
-
-            SetMusicVolume(volume);
-        }
-*/
+    // Restart music playing (stop and play)
+    if (IsKeyPressed(KEY_SPACE)) 
+    {
+        StopMusicStream(music);
+        PlayMusicStream(music);
+    }
     
-    if (IsWindowMinimized()) PauseMusicStream(0);
-    else ResumeMusicStream(0);
-
-    timePlayed = GetMusicTimePlayed(0)/GetMusicTimeLength(0)*100*4; // We scale by 4 to fit 400 pixels
+    // Pause/Resume music playing 
+    if (IsKeyPressed(KEY_P))
+    {
+        pause = !pause;
+        
+        if (pause) PauseMusicStream(music);
+        else ResumeMusicStream(music);
+    }
     
-    UpdateMusicStream(0);        // Update music buffer with new stream data
+    // Get timePlayed scaled to bar dimensions (400 pixels)
+    timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music)*400;
     //----------------------------------------------------------------------------------
 
     // Draw
@@ -108,11 +108,14 @@ void UpdateDrawFrame(void)
 
         ClearBackground(RAYWHITE);
 
-        DrawText("MUSIC SHOULD BE PLAYING!", 255, 200, 20, LIGHTGRAY);
+        DrawText("MUSIC SHOULD BE PLAYING!", 255, 150, 20, LIGHTGRAY);
 
-        DrawRectangle(200, 250, 400, 12, LIGHTGRAY);
-        DrawRectangle(200, 250, (int)timePlayed, 12, MAROON); 
+        DrawRectangle(200, 200, 400, 12, LIGHTGRAY);
+        DrawRectangle(200, 200, (int)timePlayed, 12, MAROON);
+        DrawRectangleLines(200, 200, 400, 12, GRAY);
         
+        DrawText("PRESS SPACE TO RESTART MUSIC", 215, 250, 20, LIGHTGRAY);
+        DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 280, 20, LIGHTGRAY);
         
     EndDrawing();
     //----------------------------------------------------------------------------------

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/audio_music_stream.js


+ 114 - 0
docs/examples/web/audio_raw_stream.c

@@ -0,0 +1,114 @@
+/*******************************************************************************************
+*
+*   raylib [audio] example - Raw audio streaming
+*
+*   NOTE: This example requires OpenAL Soft library installed
+*
+*   This example has been created using raylib 1.6 (www.raylib.com)
+*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+*   Copyright (c) 2015 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include <stdlib.h>         // Required for: malloc(), free()
+#include <math.h>           // Required for: sinf()
+
+#define MAX_SAMPLES             22050
+#define MAX_SAMPLES_PER_UPDATE   4096
+
+int main()
+{
+    // Initialization
+    //--------------------------------------------------------------------------------------
+    int screenWidth = 800;
+    int screenHeight = 450;
+
+    InitWindow(screenWidth, screenHeight, "raylib [audio] example - raw audio streaming");
+
+    InitAudioDevice();              // Initialize audio device
+
+    // Init raw audio stream (sample rate: 22050, sample size: 16bit-short, channels: 1-mono)
+    AudioStream stream = InitAudioStream(22050, 16, 1);
+    
+    // Generate samples data from sine wave
+    short *data = (short *)malloc(sizeof(short)*MAX_SAMPLES);
+    
+    // TODO: Review data generation, it seems data is discontinued for loop,
+    // for that reason, there is a clip everytime audio stream is looped...
+    for (int i = 0; i < MAX_SAMPLES; i++)
+    {
+        data[i] = (short)(sinf(((2*PI*(float)i)/2)*DEG2RAD)*32000);
+    }
+    
+    PlayAudioStream(stream);        // Start processing stream buffer (no data loaded currently)
+    
+    int totalSamples = MAX_SAMPLES;
+    int samplesLeft = totalSamples;
+    
+    Vector2 position = { 0, 0 };
+
+    SetTargetFPS(30);               // Set our game to run at 30 frames-per-second
+    //--------------------------------------------------------------------------------------
+
+    // Main game loop
+    while (!WindowShouldClose())    // Detect window close button or ESC key
+    {
+        // Update
+        //----------------------------------------------------------------------------------
+        
+        // Refill audio stream if required
+        // NOTE: Every update we check if stream data has been already consumed and we update
+        // buffer with new data from the generated samples, we upload data at a rate (MAX_SAMPLES_PER_UPDATE),
+        // but notice that at some point we update < MAX_SAMPLES_PER_UPDATE data...
+        if (IsAudioBufferProcessed(stream)) 
+        {
+            int numSamples = 0;
+            if (samplesLeft >= MAX_SAMPLES_PER_UPDATE) numSamples = MAX_SAMPLES_PER_UPDATE;
+            else numSamples = samplesLeft;
+
+            UpdateAudioStream(stream, data + (totalSamples - samplesLeft), numSamples);
+            
+            samplesLeft -= numSamples;
+            
+            // Reset samples feeding (loop audio)
+            if (samplesLeft <= 0) samplesLeft = totalSamples;
+        }
+        //----------------------------------------------------------------------------------
+
+        // Draw
+        //----------------------------------------------------------------------------------
+        BeginDrawing();
+
+            ClearBackground(RAYWHITE);
+
+            DrawText("SINE WAVE SHOULD BE PLAYING!", 240, 140, 20, LIGHTGRAY);
+            
+            // NOTE: Draw a part of the sine wave (only screen width, proportional values)
+            for (int i = 0; i < GetScreenWidth(); i++)
+            {
+                position.x = i;
+                position.y = 250 + 50*data[i]/32000;
+                
+                DrawPixelV(position, RED);
+            }
+
+        EndDrawing();
+        //----------------------------------------------------------------------------------
+    }
+
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    free(data);                 // Unload sine wave data
+    
+    CloseAudioStream(stream);   // Close raw audio stream and delete buffers from RAM
+
+    CloseAudioDevice();         // Close audio device (music streaming is automatically stopped)
+
+    CloseWindow();              // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
+
+    return 0;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/audio_sound_loading.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_2d_camera.js


+ 3 - 4
docs/examples/web/core_3d_camera_first_person.c

@@ -56,9 +56,8 @@ int main()
         colors[i] = (Color){ GetRandomValue(20, 255), GetRandomValue(10, 55), 30, 255 };
     }
     
-    SetCameraMode(CAMERA_FIRST_PERSON);         // Set a first person camera mode
-    SetCameraFovy(camera.fovy);                 // Set internal camera field-of-view Y
-	
+    SetCameraMode(camera, CAMERA_FIRST_PERSON);         // Set a first person camera mode
+
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
 #else
@@ -88,7 +87,7 @@ void UpdateDrawFrame(void)
 {
     // Update
     //----------------------------------------------------------------------------------
-    UpdateCameraPlayer(&camera, &playerPosition); // Update camera and player position
+    UpdateCamera(&camera);          // Update camera and player position
     //----------------------------------------------------------------------------------
 
     // Draw

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_3d_camera_first_person.js


+ 1 - 4
docs/examples/web/core_3d_camera_free.c

@@ -47,10 +47,7 @@ int main()
     camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target)
     camera.fovy = 45.0f;                                // Camera field-of-view Y
     
-    SetCameraMode(CAMERA_FREE);         // Set a free camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);     // Set internal camera target to match our camera target
-    SetCameraFovy(camera.fovy);         // Set internal camera field-of-view Y
+    SetCameraMode(camera, CAMERA_FREE);                 // Set a free camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_3d_camera_free.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_3d_mode.js


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

@@ -50,9 +50,7 @@ int main()
     camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target)
     camera.fovy = 45.0f;                                // Camera field-of-view Y
 
-    SetCameraMode(CAMERA_FREE);         // Set a free camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our camera position
-    SetCameraFovy(camera.fovy);         // Set internal camera field-of-view Y
+    SetCameraMode(camera, CAMERA_FREE);                 // Set a free camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_3d_picking.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_basic_window.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_color_select.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_gestures_detection.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_input_keys.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_input_mouse.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_mouse_wheel.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_random_values.js


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

@@ -42,9 +42,7 @@ int main()
     //--------------------------------------------------------------------------------------
     InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free");
     
-    SetCameraMode(CAMERA_FREE);         // Set a free camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);     // Set internal camera target to match our camera target
+    SetCameraMode(camera, CAMERA_FREE);         // Set a free camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/core_world_screen.js


+ 145 - 59
docs/examples/web/makefile

@@ -2,16 +2,18 @@
 #
 #   raylib makefile for desktop platforms, Raspberry Pi and HTML5 (emscripten)
 #
-#   Copyright (c) 2015 Ramon Santamaria (@raysan5)
+#   NOTE: By default examples are compiled using raylib static library and OpenAL Soft shared library
 #
-#   This software is provided "as-is", without any express or implied warranty. In no event 
+#   Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)
+#
+#   This software is provided "as-is", without any express or implied warranty. In no event
 #   will the authors be held liable for any damages arising from the use of this software.
 #
-#   Permission is granted to anyone to use this software for any purpose, including commercial 
+#   Permission is granted to anyone to use this software for any purpose, including commercial
 #   applications, and to alter it and redistribute it freely, subject to the following restrictions:
 #
-#     1. The origin of this software must not be misrepresented; you must not claim that you 
-#     wrote the original software. If you use this software in a product, an acknowledgment 
+#     1. The origin of this software must not be misrepresented; you must not claim that you
+#     wrote the original software. If you use this software in a product, an acknowledgment
 #     in the product documentation would be appreciated but is not required.
 #
 #     2. Altered source versions must be plainly marked as such, and must not be misrepresented
@@ -26,6 +28,9 @@
 # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop()
 PLATFORM ?= PLATFORM_DESKTOP
 
+# define NO to use OpenAL Soft as static library (shared by default)
+SHARED_OPENAL ?= NO
+
 # determine PLATFORM_OS in case PLATFORM_DESKTOP selected
 ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     # No uname.exe on MinGW!, but OS=Windows_NT on Windows! ifeq ($(UNAME),Msys) -> Windows
@@ -61,50 +66,95 @@ endif
 endif
 
 # define compiler flags:
-#  -O2         defines optimization level
-#  -Wall       turns on most, but not all, compiler warnings
-#  -std=c99    use standard C from 1999 revision
-ifeq ($(PLATFORM),PLATFORM_RPI)
-    CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline
-else
-    CFLAGS = -O2 -Wall -std=c99
+#  -O2                  defines optimization level
+#  -Og                  enable debugging
+#  -s                   strip unnecessary data from build
+#  -Wall                turns on most, but not all, compiler warnings
+#  -std=c99             defines C language mode (standard C from 1999 revision)
+#  -std=gnu99           defines C language mode (GNU C from 1999 revision)
+#  -fgnu89-inline       declaring inline functions support (GCC optimized)
+#  -Wno-missing-braces  ignore invalid warning (GCC bug 53119)
+#  -D_DEFAULT_SOURCE    use with -std=c99 on Linux to enable timespec and drflac
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        CFLAGS = -O2 -s -Wall -std=c99
+    endif
+    ifeq ($(PLATFORM_OS),LINUX)
+        CFLAGS = -O2 -s -Wall -std=c99 -D_DEFAULT_SOURCE
+    endif
+    ifeq ($(PLATFORM_OS),OSX)
+        CFLAGS = -O2 -s -Wall -std=c99
+    endif
 endif
 ifeq ($(PLATFORM),PLATFORM_WEB)
-    CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3
-    #-s ASSERTIONS=1            # to check for memory allocation errors (-O1 disables it)
-    #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing
-    #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB)
+    CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --profiling
+    # -O2                        # if used, also set --memory-init-file 0
+    # --memory-init-file 0       # to avoid an external memory initialization code file (.mem)
+    #-s ALLOW_MEMORY_GROWTH=1    # to allow memory resizing
+    #-s TOTAL_MEMORY=16777216    # to specify heap memory size (default = 16MB)
+endif
+ifeq ($(PLATFORM),PLATFORM_RPI)
+    CFLAGS = -O2 -s -Wall -std=gnu99 -fgnu89-inline
 endif
-
 #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes
 
+# define raylib release directory for compiled library
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        RAYLIB_PATH = ../release/win32/mingw32
+    endif
+    ifeq ($(PLATFORM_OS),LINUX)
+        RAYLIB_PATH = ../release/linux
+    endif
+    ifeq ($(PLATFORM_OS),OSX)
+        RAYLIB_PATH = ../release/osx
+    endif
+endif
+ifeq ($(PLATFORM),PLATFORM_WEB)
+    RAYLIB_PATH = ../release/html5
+endif
+ifeq ($(PLATFORM),PLATFORM_RPI)
+    RAYLIB_PATH = ../release/rpi
+endif
+
 # define any directories containing required header files
+INCLUDES = -I. -I../../../src -I../src/external -I$(RAYLIB_PATH)
+
 ifeq ($(PLATFORM),PLATFORM_RPI)
-    INCLUDES = -I. -I../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads
-else
-    INCLUDES = -I. -I../src -I../github/raylib/src
-# external libraries headers
-# GLFW3
-    INCLUDES += -I../external/glfw3/include
-# GLEW: Not required any more, replaced by GLAD
-    #INCLUDES += -I../external/glew/include
-# OpenAL Soft
-    INCLUDES += -I../external/openal_soft/include
+    INCLUDES += -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads
+endif
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        # external libraries headers
+        # GLFW3
+            INCLUDES += -I../src/external/glfw3/include
+        # OpenAL Soft
+            INCLUDES += -I../src/external/openal_soft/include
+    endif
+    ifeq ($(PLATFORM_OS),LINUX)
+        # you may optionally create this directory and install raylib 
+        # and related headers there. Edit ../src/Makefile appropriately.
+            INCLUDES += -I/usr/local/include/raylib
+    endif
+    ifeq ($(PLATFORM_OS),OSX)
+        # additional directories for MacOS
+    endif
 endif
 
 # define library paths containing required libs
+LFLAGS = -L. -L../src -L$(RAYLIB_PATH)
+
 ifeq ($(PLATFORM),PLATFORM_RPI)
-    LFLAGS = -L. -L../src -L/opt/vc/lib
-else
-    LFLAGS = -L. -L../src
-# external libraries to link with
-# GLFW3
-    LFLAGS += -L../external/glfw3/lib/$(LIBPATH)
-    ifneq ($(PLATFORM_OS),OSX)
-    # OpenAL Soft
-        LFLAGS += -L../external/openal_soft/lib/$(LIBPATH)
-    # GLEW: Not required any more, replaced by GLAD
-        #LFLAGS += -L../external/glew/lib/$(LIBPATH)
+    LFLAGS += -L/opt/vc/lib
+endif
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    # add standard directories for GNU/Linux
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        # external libraries to link with
+        # GLFW3
+            LFLAGS += -L../src/external/glfw3/lib/$(LIBPATH)
+        # OpenAL Soft
+            LFLAGS += -L../src/external/openal_soft/lib/$(LIBPATH)
     endif
 endif
 
@@ -114,20 +164,27 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     ifeq ($(PLATFORM_OS),LINUX)
         # libraries for Debian GNU/Linux desktop compiling
         # requires the following packages:
-        # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev
-        LIBS = -lraylib -lglfw3 -lGLEW -lGL -lopenal -lm -pthread
+        # libglfw3-dev libopenal-dev libegl1-mesa-dev
+        LIBS = -lraylib -lglfw3 -lGL -lopenal -lm -lpthread -ldl
         # on XWindow could require also below libraries, just uncomment
-        #LIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
+        LIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
     else
     ifeq ($(PLATFORM_OS),OSX)
         # libraries for OS X 10.9 desktop compiling
         # requires the following packages:
-        # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev
-        LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa
+        # libglfw3-dev libopenal-dev libegl1-mesa-dev
+        LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa
     else
         # libraries for Windows desktop compiling
         # NOTE: GLFW3 and OpenAL Soft libraries should be installed
-        LIBS = -lraylib -lglfw3 -lopengl32 -lopenal32 -lgdi32
+        LIBS = -lraylib -lglfw3 -lopengl32 -lgdi32
+        # if static OpenAL Soft required, define the corresponding libs
+        ifeq ($(SHARED_OPENAL),NO)
+            LIBS += -lopenal32 -lwinmm
+            CFLAGS += -Wl,-allow-multiple-definition
+        else
+            LIBS += -lopenal32dll
+        endif
     endif
     endif
 endif
@@ -138,7 +195,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
 endif
 ifeq ($(PLATFORM),PLATFORM_WEB)
     # just adjust the correct path to libraylib.bc
-    LIBS = ../github/raylib/src/libraylib.bc
+    LIBS = ../../../release/html5/libraylib.bc
 endif
 
 # define additional parameters and flags for windows
@@ -168,6 +225,8 @@ EXAMPLES = \
     core_3d_picking \
     core_3d_camera_free \
     core_3d_camera_first_person \
+    core_2d_camera \
+    core_world_screen \
     shapes_logo_raylib \
     shapes_basic_shapes \
     shapes_colors_palette \
@@ -188,25 +247,28 @@ EXAMPLES = \
     text_format_text \
     text_font_select \
     text_writing_anim \
+    text_ttf_loading \
+    text_bmfont_unordered \
     models_geometric_shapes \
     models_box_collisions \
     models_billboard \
     models_obj_loading \
     models_heightmap \
     models_cubicmap \
+    models_ray_picking \
     shaders_model_shader \
     shaders_shapes_textures \
     shaders_custom_uniform \
     shaders_postprocessing \
-    shaders_basic_lighting \
     audio_sound_loading \
     audio_music_stream \
-    fix_dylib \
+    audio_module_playing \
+    audio_raw_stream \
 
 
-# typing 'make' will invoke the first target entry in the file,
+# typing 'make' will invoke the default target entry called 'all',
 # in this case, the 'default' target entry is raylib
-default: examples
+all: examples
 
 # compile all examples
 examples: $(EXAMPLES)
@@ -229,10 +291,10 @@ core_mouse_wheel: core_mouse_wheel.c
 
 # compile [core] example - gamepad input
 core_input_gamepad: core_input_gamepad.c
-ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 else
-	@echo core_input_gamepad: Only supported on desktop platform
+	@echo core_input_gamepad: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
 endif
 
 # compile [core] example - generate random values
@@ -248,15 +310,15 @@ core_drop_files: core_drop_files.c
 ifeq ($(PLATFORM),PLATFORM_DESKTOP)
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 else
-	@echo core_drop_files: Only supported on desktop platform
+	@echo core_drop_files: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB or PLATFORM_RPI
 endif
 
 # compile [core] example - storage values
 core_storage_values: core_storage_values.c
-ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 else
-	@echo core_storage_values: Only supported on desktop platform
+	@echo core_storage_values: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
 endif
 
 # compile [core] example - gestures detection
@@ -278,7 +340,19 @@ core_3d_camera_free: core_3d_camera_free.c
 # compile [core] example - 3d camera first person
 core_3d_camera_first_person: core_3d_camera_first_person.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
-    
+
+# compile [core] example - 2d camera
+core_2d_camera: core_2d_camera.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
+# compile [core] example - world screen
+core_world_screen: core_world_screen.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
+# compile [core] example - oculus rift
+#core_oculus_rift: core_oculus_rift.c
+#	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
 # compile [shapes] example - raylib logo (with basic shapes)
 shapes_logo_raylib: shapes_logo_raylib.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
@@ -359,6 +433,14 @@ text_font_select: text_font_select.c
 text_writing_anim: text_writing_anim.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
+# compile [text] example - text ttf loading
+text_ttf_loading: text_ttf_loading.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
+# compile [text] example - text bmfont unordered
+text_bmfont_unordered: text_bmfont_unordered.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
 # compile [models] example - basic geometric 3d shapes
 models_geometric_shapes: models_geometric_shapes.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
@@ -387,21 +469,25 @@ models_heightmap: models_heightmap.c
 models_cubicmap: models_cubicmap.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/cubicmap.png --preload-file resources/cubicmap_atlas.png
 
+# compile [models] example - model ray picking
+models_ray_picking: models_ray_picking.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
 # compile [shaders] example - model shader
 shaders_model_shader: shaders_model_shader.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/base.vs --preload-file resources/shaders/grayscale.fs
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/glsl100/base.vs --preload-file resources/shaders/glsl100/grayscale.fs
     
 # 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/shapes_base.vs --preload-file resources/shaders/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/shapes_base.vs --preload-file resources/shaders/glsl100/shapes_grayscale.fs
     
 # compile [shaders] example - custom uniform in shader
 shaders_custom_uniform: shaders_custom_uniform.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/base.vs --preload-file resources/shaders/swirl.fs
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/glsl100/base.vs --preload-file resources/shaders/glsl100/swirl.fs
     
 # compile [shaders] example - postprocessing shader
 shaders_postprocessing: shaders_postprocessing.c
-	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/base.vs --preload-file resources/shaders/bloom.fs
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) -s TOTAL_MEMORY=67108864 --preload-file resources/model/dwarf.obj --preload-file resources/model/dwarf_diffuse.png --preload-file resources/shaders/glsl100/base.vs --preload-file resources/shaders/glsl100/bloom.fs
 
 # compile [shaders] example - shaders_basic_lighting
 shaders_basic_lighting: shaders_basic_lighting.c

+ 2 - 4
docs/examples/web/models_billboard.c

@@ -41,11 +41,9 @@ int main()
     //--------------------------------------------------------------------------------------
     InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards");
 
-    bill = LoadTexture("resources/billboard.png");     // Our texture billboard
+    bill = LoadTexture("resources/billboard.png");  // Our texture billboard
     
-    SetCameraMode(CAMERA_ORBITAL);      // Set an orbital camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);     // Set internal camera target to match our camera target
+    SetCameraMode(camera, CAMERA_ORBITAL);          // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/models_billboard.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/models_box_collisions.js


+ 1 - 2
docs/examples/web/models_cubicmap.c

@@ -53,8 +53,7 @@ int main()
 
     UnloadImage(image);     // Unload cubesmap image from RAM, already uploaded to VRAM
     
-    SetCameraMode(CAMERA_ORBITAL);      // Set an orbital camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our custom camera position
+    SetCameraMode(camera, CAMERA_ORBITAL);              // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/models_cubicmap.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/models_geometric_shapes.js


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

@@ -48,10 +48,9 @@ int main()
     map = LoadHeightmap(image, (Vector3){ 16, 8, 16 });     // Load heightmap model with defined size
     map.material.texDiffuse = texture;                      // Set map diffuse texture
 
-    UnloadImage(image);                 // Unload heightmap image from RAM, already uploaded to VRAM
+    UnloadImage(image);                         // Unload heightmap image from RAM, already uploaded to VRAM
     
-    SetCameraMode(CAMERA_ORBITAL);      // Set an orbital camera mode
-    SetCameraPosition(camera.position); // Set internal camera position to match our custom camera position
+    SetCameraMode(camera, CAMERA_ORBITAL);      // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/models_heightmap.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/models_obj_loading.js


+ 197 - 0
docs/examples/web/models_ray_picking.c

@@ -0,0 +1,197 @@
+/*******************************************************************************************
+*
+*   raylib [models] example - Ray picking in 3d mode, ground plane, triangle, mesh
+*
+*   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)
+*   Example contributed by Joel Davis (@joeld42)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+#include "../src/raymath.h"
+
+#include <stdio.h>
+#include <float.h>
+
+
+int main()
+{
+    // Initialization
+    //--------------------------------------------------------------------------------------
+    int screenWidth = 800;
+    int screenHeight = 450;
+
+    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 };
+    
+    Ray ray;        // Picking line ray
+    
+    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
+    
+    Vector3 towerPos = { 0.0f, 0.0f, 0.0f };                                // Set model position
+    BoundingBox towerBBox = CalculateBoundingBox( tower.mesh );    
+    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 }; 
+
+    SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
+
+    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
+        //----------------------------------------------------------------------------------
+        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";
+        }
+
+        // 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";
+
+            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 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);
+
+            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);
+
+            if (nearestHit.hit) 
+            {
+                int ypos = 70;
+
+                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);
+            }
+
+            DrawText("Use Mouse to Move Camera", 10, 430, 10, GRAY);
+
+            DrawFPS(10, 10);
+
+        EndDrawing();
+        //----------------------------------------------------------------------------------
+    }
+
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    CloseWindow();        // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
+
+    return 0;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1593 - 0
docs/examples/web/models_ray_picking.js


+ 1 - 3
docs/examples/web/shaders_custom_uniform.c

@@ -75,9 +75,7 @@ int main()
     target = LoadRenderTexture(screenWidth, screenHeight);
     
     // Setup orbital camera
-    SetCameraMode(CAMERA_ORBITAL);          // Set an orbital camera mode
-    SetCameraPosition(camera.position);     // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);         // Set internal camera target to match our camera target
+    SetCameraMode(camera, CAMERA_ORBITAL);          // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/shaders_custom_uniform.js


+ 3 - 5
docs/examples/web/shaders_model_shader.c

@@ -57,13 +57,11 @@ int main()
     shader = LoadShader("resources/shaders/glsl100/base.vs", 
                         "resources/shaders/glsl100/grayscale.fs");   // Load model shader
 
-    dwarf.material.shader = shader;            // Set shader effect to 3d model
-    dwarf.material.texDiffuse = texture;       // Bind texture to model
+    dwarf.material.shader = shader;             // Set shader effect to 3d model
+    dwarf.material.texDiffuse = texture;        // Bind texture to model
 
     // Setup orbital camera
-    SetCameraMode(CAMERA_ORBITAL);          // Set an orbital camera mode
-    SetCameraPosition(camera.position);     // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);         // Set internal camera target to match our camera target
+    SetCameraMode(camera, CAMERA_ORBITAL);      // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/shaders_model_shader.js


+ 1 - 3
docs/examples/web/shaders_postprocessing.c

@@ -65,9 +65,7 @@ int main()
     target = LoadRenderTexture(screenWidth, screenHeight);
     
     // Setup orbital camera
-    SetCameraMode(CAMERA_ORBITAL);          // Set an orbital camera mode
-    SetCameraPosition(camera.position);     // Set internal camera position to match our camera position
-    SetCameraTarget(camera.target);         // Set internal camera target to match our camera target
+    SetCameraMode(camera, CAMERA_ORBITAL);          // Set an orbital camera mode
 
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/shaders_postprocessing.js


BIN
docs/examples/web/shaders_shapes_textures.data


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 307
docs/examples/web/shaders_shapes_textures.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/shapes_basic_shapes.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/shapes_colors_palette.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/shapes_logo_raylib.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/shapes_logo_raylib_anim.js


+ 4 - 4
docs/examples/web/text_bmfont_ttf.c

@@ -47,8 +47,8 @@ int main()
     fontBm = LoadSpriteFont("resources/fonts/bmfont.fnt");       // BMFont (AngelCode)
     fontTtf = LoadSpriteFont("resources/fonts/pixantiqua.ttf");  // TTF font
     
-    fontPosition.x = screenWidth/2 - MeasureTextEx(fontBm, msgBm, fontBm.size, 0).x/2;
-    fontPosition.y = screenHeight/2 - fontBm.size/2 - 80;
+    fontPosition.x = screenWidth/2 - MeasureTextEx(fontBm, msgBm, fontBm.baseSize, 0).x/2;
+    fontPosition.y = screenHeight/2 - fontBm.baseSize/2 - 80;
     
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
@@ -90,8 +90,8 @@ void UpdateDrawFrame(void)
 
         ClearBackground(RAYWHITE);
 
-        DrawTextEx(fontBm, msgBm, fontPosition, fontBm.size, 0, MAROON);
-        DrawTextEx(fontTtf, msgTtf, (Vector2){ 75.0f, 240.0f }, fontTtf.size*0.8f, 2, LIME);
+        DrawTextEx(fontBm, msgBm, fontPosition, fontBm.baseSize, 0, MAROON);
+        DrawTextEx(fontTtf, msgTtf, (Vector2){ 75.0f, 240.0f }, fontTtf.baseSize*0.8f, 2, LIME);
 
     EndDrawing();
     //----------------------------------------------------------------------------------

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

@@ -97,49 +97,7 @@ 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
-‰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
+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	~	Ž	°	È	æ
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 311 - 361
docs/examples/web/text_bmfont_ttf.js


+ 65 - 0
docs/examples/web/text_bmfont_unordered.c

@@ -0,0 +1,65 @@
+/*******************************************************************************************
+*
+*   raylib [text] example - BMFont unordered chars loading and drawing
+*
+*   This example has been created using raylib 1.4 (www.raylib.com)
+*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+*   Copyright (c) 2016 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+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)
+
+    SetTargetFPS(60);
+    //--------------------------------------------------------------------------------------
+
+    // 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();
+        //----------------------------------------------------------------------------------
+    }
+
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    UnloadSpriteFont(font);     // AngelCode SpriteFont unloading
+    
+    CloseWindow();                // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
+
+    return 0;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1593 - 0
docs/examples/web/text_bmfont_unordered.js


+ 3 - 3
docs/examples/web/text_font_select.c

@@ -77,7 +77,7 @@ int main()
                          
     fontNames = tempFontNames;
     
-    textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].size*3, 1);
+    textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].baseSize*3, 1);
     
     btnNextRec = (Rectangle){ 673, positionY, 109, 44 };    // Button rectangle (useful for collision)
     
@@ -166,7 +166,7 @@ void UpdateDrawFrame(void)
     }
 
     // Text measurement for better positioning on screen
-    textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].size*3, 1);
+    textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].baseSize*3, 1);
     //----------------------------------------------------------------------------------
 
     // Draw
@@ -188,7 +188,7 @@ void UpdateDrawFrame(void)
         DrawText("NEXT", 700, positionY + 13, 20, btnNextOutColor);
 
         DrawTextEx(fonts[currentFont], text, (Vector2){ screenWidth/2 - textSize.x/2,
-                   260 + (70 - textSize.y)/2 }, fonts[currentFont].size*3,
+                   260 + (70 - textSize.y)/2 }, fonts[currentFont].baseSize*3,
                    1, colors[currentFont]);
 
     EndDrawing();

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/text_font_select.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/text_format_text.js


+ 3 - 3
docs/examples/web/text_rbmf_fonts.c

@@ -68,8 +68,8 @@ int main()
         
     for (int i = 0; i < 8; i++)
     {
-        positions[i].x = screenWidth/2 - MeasureTextEx(fonts[i], messages[i], fonts[i].size*2, spacings[i]).x/2;
-        positions[i].y = 60 + fonts[i].size + 50*i;
+        positions[i].x = screenWidth/2 - MeasureTextEx(fonts[i], messages[i], fonts[i].baseSize*2, spacings[i]).x/2;
+        positions[i].y = 60 + fonts[i].baseSize + 50*i;
     }
     
 #if defined(PLATFORM_WEB)
@@ -118,7 +118,7 @@ void UpdateDrawFrame(void)
         
         for (int i = 0; i < 8; i++)
         {
-            DrawTextEx(fonts[i], messages[i], positions[i], fonts[i].size*2, spacings[i], colors[i]);
+            DrawTextEx(fonts[i], messages[i], positions[i], fonts[i].baseSize*2, spacings[i], colors[i]);
         }
 
     EndDrawing();

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/text_rbmf_fonts.js


+ 9 - 9
docs/examples/web/text_sprite_fonts.c

@@ -50,14 +50,14 @@ int main()
     font2 = LoadSpriteFont("resources/fonts/custom_alagard.png");        // SpriteFont loading
     font3 = LoadSpriteFont("resources/fonts/custom_jupiter_crash.png");  // SpriteFont loading
     
-    fontPosition1.x = screenWidth/2 - MeasureTextEx(font1, msg1, font1.size, -3).x/2;
-    fontPosition1.y = screenHeight/2 - font1.size/2 - 80;
+    fontPosition1.x = screenWidth/2 - MeasureTextEx(font1, msg1, font1.baseSize, -3).x/2;
+    fontPosition1.y = screenHeight/2 - font1.baseSize/2 - 80;
 
-    fontPosition2.x = screenWidth/2 - MeasureTextEx(font2, msg2, font2.size, -2).x/2;
-    fontPosition2.y = screenHeight/2 - font2.size/2 - 10;
+    fontPosition2.x = screenWidth/2 - MeasureTextEx(font2, msg2, font2.baseSize, -2).x/2;
+    fontPosition2.y = screenHeight/2 - font2.baseSize/2 - 10;
 
-    fontPosition3.x = screenWidth/2 - MeasureTextEx(font3, msg3, font3.size, 2).x/2;
-    fontPosition3.y = screenHeight/2 - font3.size/2 + 50;
+    fontPosition3.x = screenWidth/2 - MeasureTextEx(font3, msg3, font3.baseSize, 2).x/2;
+    fontPosition3.y = screenHeight/2 - font3.baseSize/2 + 50;
     
 #if defined(PLATFORM_WEB)
     emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
@@ -99,9 +99,9 @@ void UpdateDrawFrame(void)
 
         ClearBackground(RAYWHITE);
 
-        DrawTextEx(font1, msg1, fontPosition1, font1.size, -3, WHITE);
-        DrawTextEx(font2, msg2, fontPosition2, font2.size, -2, WHITE);
-        DrawTextEx(font3, msg3, fontPosition3, font3.size, 2, WHITE);
+        DrawTextEx(font1, msg1, fontPosition1, font1.baseSize, -3, WHITE);
+        DrawTextEx(font2, msg2, fontPosition2, font2.baseSize, -2, WHITE);
+        DrawTextEx(font3, msg3, fontPosition3, font3.baseSize, 2, WHITE);
 
     EndDrawing();
     //----------------------------------------------------------------------------------

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/text_sprite_fonts.js


+ 130 - 0
docs/examples/web/text_ttf_loading.c

@@ -0,0 +1,130 @@
+/*******************************************************************************************
+*
+*   raylib [text] example - TTF loading and usage
+*
+*   This example has been created using raylib 1.3.0 (www.raylib.com)
+*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+*   Copyright (c) 2015 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+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);
+    
+    // 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;
+
+    SetTextureFilter(font.texture, FILTER_POINT);
+    int currentFontFilter = 0;      // FILTER_POINT
+    
+    int count = 0;
+    char **droppedFiles;
+    
+    SetTargetFPS(60);
+    //--------------------------------------------------------------------------------------
+    
+    // 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();
+        //----------------------------------------------------------------------------------
+    }
+
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    UnloadSpriteFont(font);     // SpriteFont unloading
+    
+    ClearDroppedFiles();        // Clear internal buffers
+
+    CloseWindow();              // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
+    
+    return 0;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1611 - 0
docs/examples/web/text_ttf_loading.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 307 - 301
docs/examples/web/text_writing_anim.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 14 - 5
docs/examples/web/textures_formats_loading.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_image_drawing.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_image_loading.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_image_processing.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_logo_raylib.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_particles_trail_blending.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_raw_data.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_rectangle.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_srcrec_dstrec.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 316 - 305
docs/examples/web/textures_to_image.js


+ 0 - 256
project/vs2015/external/lua/include/lauxlib.h

@@ -1,256 +0,0 @@
-/*
-** $Id: lauxlib.h,v 1.129 2015/11/23 11:29:43 roberto Exp $
-** Auxiliary functions for building Lua libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lauxlib_h
-#define lauxlib_h
-
-
-#include <stddef.h>
-#include <stdio.h>
-
-#include "lua.h"
-
-
-
-/* extra error code for 'luaL_load' */
-#define LUA_ERRFILE     (LUA_ERRERR+1)
-
-
-typedef struct luaL_Reg {
-  const char *name;
-  lua_CFunction func;
-} luaL_Reg;
-
-
-#define LUAL_NUMSIZES	(sizeof(lua_Integer)*16 + sizeof(lua_Number))
-
-LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);
-#define luaL_checkversion(L)  \
-	  luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)
-
-LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
-LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);
-LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len);
-LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg);
-LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg,
-                                                          size_t *l);
-LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg,
-                                          const char *def, size_t *l);
-LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg);
-LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def);
-
-LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg);
-LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg,
-                                          lua_Integer def);
-
-LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
-LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t);
-LUALIB_API void (luaL_checkany) (lua_State *L, int arg);
-
-LUALIB_API int   (luaL_newmetatable) (lua_State *L, const char *tname);
-LUALIB_API void  (luaL_setmetatable) (lua_State *L, const char *tname);
-LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname);
-LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
-
-LUALIB_API void (luaL_where) (lua_State *L, int lvl);
-LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
-
-LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def,
-                                   const char *const lst[]);
-
-LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);
-LUALIB_API int (luaL_execresult) (lua_State *L, int stat);
-
-/* predefined references */
-#define LUA_NOREF       (-2)
-#define LUA_REFNIL      (-1)
-
-LUALIB_API int (luaL_ref) (lua_State *L, int t);
-LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);
-
-LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename,
-                                               const char *mode);
-
-#define luaL_loadfile(L,f)	luaL_loadfilex(L,f,NULL)
-
-LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
-                                   const char *name, const char *mode);
-LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
-
-LUALIB_API lua_State *(luaL_newstate) (void);
-
-LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);
-
-LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
-                                                  const char *r);
-
-LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
-
-LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname);
-
-LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1,
-                                  const char *msg, int level);
-
-LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,
-                                 lua_CFunction openf, int glb);
-
-/*
-** ===============================================================
-** some useful macros
-** ===============================================================
-*/
-
-
-#define luaL_newlibtable(L,l)	\
-  lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)
-
-#define luaL_newlib(L,l)  \
-  (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
-
-#define luaL_argcheck(L, cond,arg,extramsg)	\
-		((void)((cond) || luaL_argerror(L, (arg), (extramsg))))
-#define luaL_checkstring(L,n)	(luaL_checklstring(L, (n), NULL))
-#define luaL_optstring(L,n,d)	(luaL_optlstring(L, (n), (d), NULL))
-
-#define luaL_typename(L,i)	lua_typename(L, lua_type(L,(i)))
-
-#define luaL_dofile(L, fn) \
-	(luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
-
-#define luaL_dostring(L, s) \
-	(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
-
-#define luaL_getmetatable(L,n)	(lua_getfield(L, LUA_REGISTRYINDEX, (n)))
-
-#define luaL_opt(L,f,n,d)	(lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
-
-#define luaL_loadbuffer(L,s,sz,n)	luaL_loadbufferx(L,s,sz,n,NULL)
-
-
-/*
-** {======================================================
-** Generic Buffer manipulation
-** =======================================================
-*/
-
-typedef struct luaL_Buffer {
-  char *b;  /* buffer address */
-  size_t size;  /* buffer size */
-  size_t n;  /* number of characters in buffer */
-  lua_State *L;
-  char initb[LUAL_BUFFERSIZE];  /* initial buffer */
-} luaL_Buffer;
-
-
-#define luaL_addchar(B,c) \
-  ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \
-   ((B)->b[(B)->n++] = (c)))
-
-#define luaL_addsize(B,s)	((B)->n += (s))
-
-LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
-LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
-LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
-LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);
-LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
-LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
-LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz);
-LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz);
-
-#define luaL_prepbuffer(B)	luaL_prepbuffsize(B, LUAL_BUFFERSIZE)
-
-/* }====================================================== */
-
-
-
-/*
-** {======================================================
-** File handles for IO library
-** =======================================================
-*/
-
-/*
-** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and
-** initial structure 'luaL_Stream' (it may contain other fields
-** after that initial structure).
-*/
-
-#define LUA_FILEHANDLE          "FILE*"
-
-
-typedef struct luaL_Stream {
-  FILE *f;  /* stream (NULL for incompletely created streams) */
-  lua_CFunction closef;  /* to close stream (NULL for closed streams) */
-} luaL_Stream;
-
-/* }====================================================== */
-
-
-
-/* compatibility with old module system */
-#if defined(LUA_COMPAT_MODULE)
-
-LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname,
-                                   int sizehint);
-LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname,
-                                const luaL_Reg *l, int nup);
-
-#define luaL_register(L,n,l)	(luaL_openlib(L,(n),(l),0))
-
-#endif
-
-
-/*
-** {==================================================================
-** "Abstraction Layer" for basic report of messages and errors
-** ===================================================================
-*/
-
-/* print a string */
-#if !defined(lua_writestring)
-#define lua_writestring(s,l)   fwrite((s), sizeof(char), (l), stdout)
-#endif
-
-/* print a newline and flush the output */
-#if !defined(lua_writeline)
-#define lua_writeline()        (lua_writestring("\n", 1), fflush(stdout))
-#endif
-
-/* print an error message */
-#if !defined(lua_writestringerror)
-#define lua_writestringerror(s,p) \
-        (fprintf(stderr, (s), (p)), fflush(stderr))
-#endif
-
-/* }================================================================== */
-
-
-/*
-** {============================================================
-** Compatibility with deprecated conversions
-** =============================================================
-*/
-#if defined(LUA_COMPAT_APIINTCASTS)
-
-#define luaL_checkunsigned(L,a)	((lua_Unsigned)luaL_checkinteger(L,a))
-#define luaL_optunsigned(L,a,d)	\
-	((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d)))
-
-#define luaL_checkint(L,n)	((int)luaL_checkinteger(L, (n)))
-#define luaL_optint(L,n,d)	((int)luaL_optinteger(L, (n), (d)))
-
-#define luaL_checklong(L,n)	((long)luaL_checkinteger(L, (n)))
-#define luaL_optlong(L,n,d)	((long)luaL_optinteger(L, (n), (d)))
-
-#endif
-/* }============================================================ */
-
-
-
-#endif
-
-

+ 0 - 486
project/vs2015/external/lua/include/lua.h

@@ -1,486 +0,0 @@
-/*
-** $Id: lua.h,v 1.331 2016/05/30 15:53:28 roberto Exp $
-** Lua - A Scripting Language
-** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
-** See Copyright Notice at the end of this file
-*/
-
-
-#ifndef lua_h
-#define lua_h
-
-#include <stdarg.h>
-#include <stddef.h>
-
-
-#include "luaconf.h"
-
-
-#define LUA_VERSION_MAJOR	"5"
-#define LUA_VERSION_MINOR	"3"
-#define LUA_VERSION_NUM		503
-#define LUA_VERSION_RELEASE	"3"
-
-#define LUA_VERSION	"Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
-#define LUA_RELEASE	LUA_VERSION "." LUA_VERSION_RELEASE
-#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2016 Lua.org, PUC-Rio"
-#define LUA_AUTHORS	"R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
-
-
-/* mark for precompiled code ('<esc>Lua') */
-#define LUA_SIGNATURE	"\x1bLua"
-
-/* option for multiple returns in 'lua_pcall' and 'lua_call' */
-#define LUA_MULTRET	(-1)
-
-
-/*
-** Pseudo-indices
-** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty
-** space after that to help overflow detection)
-*/
-#define LUA_REGISTRYINDEX	(-LUAI_MAXSTACK - 1000)
-#define lua_upvalueindex(i)	(LUA_REGISTRYINDEX - (i))
-
-
-/* thread status */
-#define LUA_OK		0
-#define LUA_YIELD	1
-#define LUA_ERRRUN	2
-#define LUA_ERRSYNTAX	3
-#define LUA_ERRMEM	4
-#define LUA_ERRGCMM	5
-#define LUA_ERRERR	6
-
-
-typedef struct lua_State lua_State;
-
-
-/*
-** basic types
-*/
-#define LUA_TNONE		(-1)
-
-#define LUA_TNIL		0
-#define LUA_TBOOLEAN		1
-#define LUA_TLIGHTUSERDATA	2
-#define LUA_TNUMBER		3
-#define LUA_TSTRING		4
-#define LUA_TTABLE		5
-#define LUA_TFUNCTION		6
-#define LUA_TUSERDATA		7
-#define LUA_TTHREAD		8
-
-#define LUA_NUMTAGS		9
-
-
-
-/* minimum Lua stack available to a C function */
-#define LUA_MINSTACK	20
-
-
-/* predefined values in the registry */
-#define LUA_RIDX_MAINTHREAD	1
-#define LUA_RIDX_GLOBALS	2
-#define LUA_RIDX_LAST		LUA_RIDX_GLOBALS
-
-
-/* type of numbers in Lua */
-typedef LUA_NUMBER lua_Number;
-
-
-/* type for integer functions */
-typedef LUA_INTEGER lua_Integer;
-
-/* unsigned integer type */
-typedef LUA_UNSIGNED lua_Unsigned;
-
-/* type for continuation-function contexts */
-typedef LUA_KCONTEXT lua_KContext;
-
-
-/*
-** Type for C functions registered with Lua
-*/
-typedef int (*lua_CFunction) (lua_State *L);
-
-/*
-** Type for continuation functions
-*/
-typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);
-
-
-/*
-** Type for functions that read/write blocks when loading/dumping Lua chunks
-*/
-typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
-
-typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud);
-
-
-/*
-** Type for memory-allocation functions
-*/
-typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
-
-
-
-/*
-** generic extra include file
-*/
-#if defined(LUA_USER_H)
-#include LUA_USER_H
-#endif
-
-
-/*
-** RCS ident string
-*/
-extern const char lua_ident[];
-
-
-/*
-** state manipulation
-*/
-LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
-LUA_API void       (lua_close) (lua_State *L);
-LUA_API lua_State *(lua_newthread) (lua_State *L);
-
-LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
-
-
-LUA_API const lua_Number *(lua_version) (lua_State *L);
-
-
-/*
-** basic stack manipulation
-*/
-LUA_API int   (lua_absindex) (lua_State *L, int idx);
-LUA_API int   (lua_gettop) (lua_State *L);
-LUA_API void  (lua_settop) (lua_State *L, int idx);
-LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
-LUA_API void  (lua_rotate) (lua_State *L, int idx, int n);
-LUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
-LUA_API int   (lua_checkstack) (lua_State *L, int n);
-
-LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
-
-
-/*
-** access functions (stack -> C)
-*/
-
-LUA_API int             (lua_isnumber) (lua_State *L, int idx);
-LUA_API int             (lua_isstring) (lua_State *L, int idx);
-LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
-LUA_API int             (lua_isinteger) (lua_State *L, int idx);
-LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
-LUA_API int             (lua_type) (lua_State *L, int idx);
-LUA_API const char     *(lua_typename) (lua_State *L, int tp);
-
-LUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);
-LUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);
-LUA_API int             (lua_toboolean) (lua_State *L, int idx);
-LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
-LUA_API size_t          (lua_rawlen) (lua_State *L, int idx);
-LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
-LUA_API void	       *(lua_touserdata) (lua_State *L, int idx);
-LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
-LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
-
-
-/*
-** Comparison and arithmetic functions
-*/
-
-#define LUA_OPADD	0	/* ORDER TM, ORDER OP */
-#define LUA_OPSUB	1
-#define LUA_OPMUL	2
-#define LUA_OPMOD	3
-#define LUA_OPPOW	4
-#define LUA_OPDIV	5
-#define LUA_OPIDIV	6
-#define LUA_OPBAND	7
-#define LUA_OPBOR	8
-#define LUA_OPBXOR	9
-#define LUA_OPSHL	10
-#define LUA_OPSHR	11
-#define LUA_OPUNM	12
-#define LUA_OPBNOT	13
-
-LUA_API void  (lua_arith) (lua_State *L, int op);
-
-#define LUA_OPEQ	0
-#define LUA_OPLT	1
-#define LUA_OPLE	2
-
-LUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
-LUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
-
-
-/*
-** push functions (C -> stack)
-*/
-LUA_API void        (lua_pushnil) (lua_State *L);
-LUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);
-LUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);
-LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len);
-LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
-LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
-                                                      va_list argp);
-LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
-LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
-LUA_API void  (lua_pushboolean) (lua_State *L, int b);
-LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
-LUA_API int   (lua_pushthread) (lua_State *L);
-
-
-/*
-** get functions (Lua -> stack)
-*/
-LUA_API int (lua_getglobal) (lua_State *L, const char *name);
-LUA_API int (lua_gettable) (lua_State *L, int idx);
-LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k);
-LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n);
-LUA_API int (lua_rawget) (lua_State *L, int idx);
-LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n);
-LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p);
-
-LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
-LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
-LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
-LUA_API int  (lua_getuservalue) (lua_State *L, int idx);
-
-
-/*
-** set functions (stack -> Lua)
-*/
-LUA_API void  (lua_setglobal) (lua_State *L, const char *name);
-LUA_API void  (lua_settable) (lua_State *L, int idx);
-LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
-LUA_API void  (lua_seti) (lua_State *L, int idx, lua_Integer n);
-LUA_API void  (lua_rawset) (lua_State *L, int idx);
-LUA_API void  (lua_rawseti) (lua_State *L, int idx, lua_Integer n);
-LUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);
-LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
-LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
-
-
-/*
-** 'load' and 'call' functions (load and run Lua code)
-*/
-LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults,
-                           lua_KContext ctx, lua_KFunction k);
-#define lua_call(L,n,r)		lua_callk(L, (n), (r), 0, NULL)
-
-LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
-                            lua_KContext ctx, lua_KFunction k);
-#define lua_pcall(L,n,r,f)	lua_pcallk(L, (n), (r), (f), 0, NULL)
-
-LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
-                          const char *chunkname, const char *mode);
-
-LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);
-
-
-/*
-** coroutine functions
-*/
-LUA_API int  (lua_yieldk)     (lua_State *L, int nresults, lua_KContext ctx,
-                               lua_KFunction k);
-LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg);
-LUA_API int  (lua_status)     (lua_State *L);
-LUA_API int (lua_isyieldable) (lua_State *L);
-
-#define lua_yield(L,n)		lua_yieldk(L, (n), 0, NULL)
-
-
-/*
-** garbage-collection function and options
-*/
-
-#define LUA_GCSTOP		0
-#define LUA_GCRESTART		1
-#define LUA_GCCOLLECT		2
-#define LUA_GCCOUNT		3
-#define LUA_GCCOUNTB		4
-#define LUA_GCSTEP		5
-#define LUA_GCSETPAUSE		6
-#define LUA_GCSETSTEPMUL	7
-#define LUA_GCISRUNNING		9
-
-LUA_API int (lua_gc) (lua_State *L, int what, int data);
-
-
-/*
-** miscellaneous functions
-*/
-
-LUA_API int   (lua_error) (lua_State *L);
-
-LUA_API int   (lua_next) (lua_State *L, int idx);
-
-LUA_API void  (lua_concat) (lua_State *L, int n);
-LUA_API void  (lua_len)    (lua_State *L, int idx);
-
-LUA_API size_t   (lua_stringtonumber) (lua_State *L, const char *s);
-
-LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
-LUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
-
-
-
-/*
-** {==============================================================
-** some useful macros
-** ===============================================================
-*/
-
-#define lua_getextraspace(L)	((void *)((char *)(L) - LUA_EXTRASPACE))
-
-#define lua_tonumber(L,i)	lua_tonumberx(L,(i),NULL)
-#define lua_tointeger(L,i)	lua_tointegerx(L,(i),NULL)
-
-#define lua_pop(L,n)		lua_settop(L, -(n)-1)
-
-#define lua_newtable(L)		lua_createtable(L, 0, 0)
-
-#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
-
-#define lua_pushcfunction(L,f)	lua_pushcclosure(L, (f), 0)
-
-#define lua_isfunction(L,n)	(lua_type(L, (n)) == LUA_TFUNCTION)
-#define lua_istable(L,n)	(lua_type(L, (n)) == LUA_TTABLE)
-#define lua_islightuserdata(L,n)	(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
-#define lua_isnil(L,n)		(lua_type(L, (n)) == LUA_TNIL)
-#define lua_isboolean(L,n)	(lua_type(L, (n)) == LUA_TBOOLEAN)
-#define lua_isthread(L,n)	(lua_type(L, (n)) == LUA_TTHREAD)
-#define lua_isnone(L,n)		(lua_type(L, (n)) == LUA_TNONE)
-#define lua_isnoneornil(L, n)	(lua_type(L, (n)) <= 0)
-
-#define lua_pushliteral(L, s)	lua_pushstring(L, "" s)
-
-#define lua_pushglobaltable(L)  \
-	((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS))
-
-#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)
-
-
-#define lua_insert(L,idx)	lua_rotate(L, (idx), 1)
-
-#define lua_remove(L,idx)	(lua_rotate(L, (idx), -1), lua_pop(L, 1))
-
-#define lua_replace(L,idx)	(lua_copy(L, -1, (idx)), lua_pop(L, 1))
-
-/* }============================================================== */
-
-
-/*
-** {==============================================================
-** compatibility macros for unsigned conversions
-** ===============================================================
-*/
-#if defined(LUA_COMPAT_APIINTCASTS)
-
-#define lua_pushunsigned(L,n)	lua_pushinteger(L, (lua_Integer)(n))
-#define lua_tounsignedx(L,i,is)	((lua_Unsigned)lua_tointegerx(L,i,is))
-#define lua_tounsigned(L,i)	lua_tounsignedx(L,(i),NULL)
-
-#endif
-/* }============================================================== */
-
-/*
-** {======================================================================
-** Debug API
-** =======================================================================
-*/
-
-
-/*
-** Event codes
-*/
-#define LUA_HOOKCALL	0
-#define LUA_HOOKRET	1
-#define LUA_HOOKLINE	2
-#define LUA_HOOKCOUNT	3
-#define LUA_HOOKTAILCALL 4
-
-
-/*
-** Event masks
-*/
-#define LUA_MASKCALL	(1 << LUA_HOOKCALL)
-#define LUA_MASKRET	(1 << LUA_HOOKRET)
-#define LUA_MASKLINE	(1 << LUA_HOOKLINE)
-#define LUA_MASKCOUNT	(1 << LUA_HOOKCOUNT)
-
-typedef struct lua_Debug lua_Debug;  /* activation record */
-
-
-/* Functions to be called by the debugger in specific events */
-typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
-
-
-LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
-LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
-LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
-LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
-LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
-LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
-
-LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
-LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
-                                               int fidx2, int n2);
-
-LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
-LUA_API lua_Hook (lua_gethook) (lua_State *L);
-LUA_API int (lua_gethookmask) (lua_State *L);
-LUA_API int (lua_gethookcount) (lua_State *L);
-
-
-struct lua_Debug {
-  int event;
-  const char *name;	/* (n) */
-  const char *namewhat;	/* (n) 'global', 'local', 'field', 'method' */
-  const char *what;	/* (S) 'Lua', 'C', 'main', 'tail' */
-  const char *source;	/* (S) */
-  int currentline;	/* (l) */
-  int linedefined;	/* (S) */
-  int lastlinedefined;	/* (S) */
-  unsigned char nups;	/* (u) number of upvalues */
-  unsigned char nparams;/* (u) number of parameters */
-  char isvararg;        /* (u) */
-  char istailcall;	/* (t) */
-  char short_src[LUA_IDSIZE]; /* (S) */
-  /* private part */
-  struct CallInfo *i_ci;  /* active function */
-};
-
-/* }====================================================================== */
-
-
-/******************************************************************************
-* Copyright (C) 1994-2016 Lua.org, PUC-Rio.
-*
-* Permission is hereby granted, free of charge, to any person obtaining
-* a copy of this software and associated documentation files (the
-* "Software"), to deal in the Software without restriction, including
-* without limitation the rights to use, copy, modify, merge, publish,
-* distribute, sublicense, and/or sell copies of the Software, and to
-* permit persons to whom the Software is furnished to do so, subject to
-* the following conditions:
-*
-* The above copyright notice and this permission notice shall be
-* included in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-******************************************************************************/
-
-
-#endif

+ 0 - 9
project/vs2015/external/lua/include/lua.hpp

@@ -1,9 +0,0 @@
-// lua.hpp
-// Lua header files for C++
-// <<extern "C">> not supplied automatically because Lua also compiles as C++
-
-extern "C" {
-#include "lua.h"
-#include "lualib.h"
-#include "lauxlib.h"
-}

+ 0 - 769
project/vs2015/external/lua/include/luaconf.h

@@ -1,769 +0,0 @@
-/*
-** $Id: luaconf.h,v 1.255 2016/05/01 20:06:09 roberto Exp $
-** Configuration file for Lua
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef luaconf_h
-#define luaconf_h
-
-#include <limits.h>
-#include <stddef.h>
-
-
-/*
-** ===================================================================
-** Search for "@@" to find all configurable definitions.
-** ===================================================================
-*/
-
-
-/*
-** {====================================================================
-** System Configuration: macros to adapt (if needed) Lua to some
-** particular platform, for instance compiling it with 32-bit numbers or
-** restricting it to C89.
-** =====================================================================
-*/
-
-/*
-@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats. You
-** can also define LUA_32BITS in the make file, but changing here you
-** ensure that all software connected to Lua will be compiled with the
-** same configuration.
-*/
-/* #define LUA_32BITS */
-
-
-/*
-@@ LUA_USE_C89 controls the use of non-ISO-C89 features.
-** Define it if you want Lua to avoid the use of a few C99 features
-** or Windows-specific features on Windows.
-*/
-/* #define LUA_USE_C89 */
-
-
-/*
-** By default, Lua on Windows use (some) specific Windows features
-*/
-#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)
-#define LUA_USE_WINDOWS  /* enable goodies for regular Windows */
-#endif
-
-
-#if defined(LUA_USE_WINDOWS)
-#define LUA_DL_DLL	/* enable support for DLL */
-#define LUA_USE_C89	/* broadly, Windows is C89 */
-#endif
-
-
-#if defined(LUA_USE_LINUX)
-#define LUA_USE_POSIX
-#define LUA_USE_DLOPEN		/* needs an extra library: -ldl */
-#define LUA_USE_READLINE	/* needs some extra libraries */
-#endif
-
-
-#if defined(LUA_USE_MACOSX)
-#define LUA_USE_POSIX
-#define LUA_USE_DLOPEN		/* MacOS does not need -ldl */
-#define LUA_USE_READLINE	/* needs an extra library: -lreadline */
-#endif
-
-
-/*
-@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for
-** C89 ('long' and 'double'); Windows always has '__int64', so it does
-** not need to use this case.
-*/
-#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)
-#define LUA_C89_NUMBERS
-#endif
-
-
-
-/*
-@@ LUAI_BITSINT defines the (minimum) number of bits in an 'int'.
-*/
-/* avoid undefined shifts */
-#if ((INT_MAX >> 15) >> 15) >= 1
-#define LUAI_BITSINT	32
-#else
-/* 'int' always must have at least 16 bits */
-#define LUAI_BITSINT	16
-#endif
-
-
-/*
-@@ LUA_INT_TYPE defines the type for Lua integers.
-@@ LUA_FLOAT_TYPE defines the type for Lua floats.
-** Lua should work fine with any mix of these options (if supported
-** by your C compiler). The usual configurations are 64-bit integers
-** and 'double' (the default), 32-bit integers and 'float' (for
-** restricted platforms), and 'long'/'double' (for C compilers not
-** compliant with C99, which may not have support for 'long long').
-*/
-
-/* predefined options for LUA_INT_TYPE */
-#define LUA_INT_INT		1
-#define LUA_INT_LONG		2
-#define LUA_INT_LONGLONG	3
-
-/* predefined options for LUA_FLOAT_TYPE */
-#define LUA_FLOAT_FLOAT		1
-#define LUA_FLOAT_DOUBLE	2
-#define LUA_FLOAT_LONGDOUBLE	3
-
-#if defined(LUA_32BITS)		/* { */
-/*
-** 32-bit integers and 'float'
-*/
-#if LUAI_BITSINT >= 32  /* use 'int' if big enough */
-#define LUA_INT_TYPE	LUA_INT_INT
-#else  /* otherwise use 'long' */
-#define LUA_INT_TYPE	LUA_INT_LONG
-#endif
-#define LUA_FLOAT_TYPE	LUA_FLOAT_FLOAT
-
-#elif defined(LUA_C89_NUMBERS)	/* }{ */
-/*
-** largest types available for C89 ('long' and 'double')
-*/
-#define LUA_INT_TYPE	LUA_INT_LONG
-#define LUA_FLOAT_TYPE	LUA_FLOAT_DOUBLE
-
-#endif				/* } */
-
-
-/*
-** default configuration for 64-bit Lua ('long long' and 'double')
-*/
-#if !defined(LUA_INT_TYPE)
-#define LUA_INT_TYPE	LUA_INT_LONGLONG
-#endif
-
-#if !defined(LUA_FLOAT_TYPE)
-#define LUA_FLOAT_TYPE	LUA_FLOAT_DOUBLE
-#endif
-
-/* }================================================================== */
-
-
-
-
-/*
-** {==================================================================
-** Configuration for Paths.
-** ===================================================================
-*/
-
-/*
-@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for
-** Lua libraries.
-@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for
-** C libraries.
-** CHANGE them if your machine has a non-conventional directory
-** hierarchy or if you want to install your libraries in
-** non-conventional directories.
-*/
-#define LUA_VDIR	LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
-#if defined(_WIN32)	/* { */
-/*
-** In Windows, any exclamation mark ('!') in the path is replaced by the
-** path of the directory of the executable file of the current process.
-*/
-#define LUA_LDIR	"!\\lua\\"
-#define LUA_CDIR	"!\\"
-#define LUA_SHRDIR	"!\\..\\share\\lua\\" LUA_VDIR "\\"
-#define LUA_PATH_DEFAULT  \
-		LUA_LDIR"?.lua;"  LUA_LDIR"?\\init.lua;" \
-		LUA_CDIR"?.lua;"  LUA_CDIR"?\\init.lua;" \
-		LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
-		".\\?.lua;" ".\\?\\init.lua"
-#define LUA_CPATH_DEFAULT \
-		LUA_CDIR"?.dll;" \
-		LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
-		LUA_CDIR"loadall.dll;" ".\\?.dll;" \
-    LUA_CDIR"?53.dll;" ".\\?53.dll"
-
-#else			/* }{ */
-
-#define LUA_ROOT	"/usr/local/"
-#define LUA_LDIR	LUA_ROOT "share/lua/" LUA_VDIR "/"
-#define LUA_CDIR	LUA_ROOT "lib/lua/" LUA_VDIR "/"
-#define LUA_PATH_DEFAULT  \
-		LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
-		LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua;" \
-		"./?.lua;" "./?/init.lua"
-#define LUA_CPATH_DEFAULT \
-		LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \
-    LUA_CDIR"lib?53.so;" "./lib?53.so"
-#endif			/* } */
-
-
-/*
-@@ LUA_DIRSEP is the directory separator (for submodules).
-** CHANGE it if your machine does not use "/" as the directory separator
-** and is not Windows. (On Windows Lua automatically uses "\".)
-*/
-#if defined(_WIN32)
-#define LUA_DIRSEP	"\\"
-#else
-#define LUA_DIRSEP	"/"
-#endif
-
-/* }================================================================== */
-
-
-/*
-** {==================================================================
-** Marks for exported symbols in the C code
-** ===================================================================
-*/
-
-/*
-@@ LUA_API is a mark for all core API functions.
-@@ LUALIB_API is a mark for all auxiliary library functions.
-@@ LUAMOD_API is a mark for all standard library opening functions.
-** CHANGE them if you need to define those functions in some special way.
-** For instance, if you want to create one Windows DLL with the core and
-** the libraries, you may want to use the following definition (define
-** LUA_BUILD_AS_DLL to get it).
-*/
-#if defined(LUA_BUILD_AS_DLL)	/* { */
-
-#if defined(LUA_CORE) || defined(LUA_LIB)	/* { */
-#define LUA_API __declspec(dllexport)
-#else						/* }{ */
-#define LUA_API __declspec(dllimport)
-#endif						/* } */
-
-#else				/* }{ */
-
-#define LUA_API		extern
-
-#endif				/* } */
-
-
-/* more often than not the libs go together with the core */
-#define LUALIB_API	LUA_API
-#define LUAMOD_API	LUALIB_API
-
-
-/*
-@@ LUAI_FUNC is a mark for all extern functions that are not to be
-** exported to outside modules.
-@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables
-** that are not to be exported to outside modules (LUAI_DDEF for
-** definitions and LUAI_DDEC for declarations).
-** CHANGE them if you need to mark them in some special way. Elf/gcc
-** (versions 3.2 and later) mark them as "hidden" to optimize access
-** when Lua is compiled as a shared library. Not all elf targets support
-** this attribute. Unfortunately, gcc does not offer a way to check
-** whether the target offers that support, and those without support
-** give a warning about it. To avoid these warnings, change to the
-** default definition.
-*/
-#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
-    defined(__ELF__)		/* { */
-#define LUAI_FUNC	__attribute__((visibility("hidden"))) extern
-#else				/* }{ */
-#define LUAI_FUNC	extern
-#endif				/* } */
-
-#define LUAI_DDEC	LUAI_FUNC
-#define LUAI_DDEF	/* empty */
-
-/* }================================================================== */
-
-
-/*
-** {==================================================================
-** Compatibility with previous versions
-** ===================================================================
-*/
-
-/*
-@@ LUA_COMPAT_5_2 controls other macros for compatibility with Lua 5.2.
-@@ LUA_COMPAT_5_1 controls other macros for compatibility with Lua 5.1.
-** You can define it to get all options, or change specific options
-** to fit your specific needs.
-*/
-#if defined(LUA_COMPAT_5_2)	/* { */
-
-/*
-@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated
-** functions in the mathematical library.
-*/
-#define LUA_COMPAT_MATHLIB
-
-/*
-@@ LUA_COMPAT_BITLIB controls the presence of library 'bit32'.
-*/
-#define LUA_COMPAT_BITLIB
-
-/*
-@@ LUA_COMPAT_IPAIRS controls the effectiveness of the __ipairs metamethod.
-*/
-#define LUA_COMPAT_IPAIRS
-
-/*
-@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for
-** manipulating other integer types (lua_pushunsigned, lua_tounsigned,
-** luaL_checkint, luaL_checklong, etc.)
-*/
-#define LUA_COMPAT_APIINTCASTS
-
-#endif				/* } */
-
-
-#if defined(LUA_COMPAT_5_1)	/* { */
-
-/* Incompatibilities from 5.2 -> 5.3 */
-#define LUA_COMPAT_MATHLIB
-#define LUA_COMPAT_APIINTCASTS
-
-/*
-@@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'.
-** You can replace it with 'table.unpack'.
-*/
-#define LUA_COMPAT_UNPACK
-
-/*
-@@ LUA_COMPAT_LOADERS controls the presence of table 'package.loaders'.
-** You can replace it with 'package.searchers'.
-*/
-#define LUA_COMPAT_LOADERS
-
-/*
-@@ macro 'lua_cpcall' emulates deprecated function lua_cpcall.
-** You can call your C function directly (with light C functions).
-*/
-#define lua_cpcall(L,f,u)  \
-	(lua_pushcfunction(L, (f)), \
-	 lua_pushlightuserdata(L,(u)), \
-	 lua_pcall(L,1,0,0))
-
-
-/*
-@@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library.
-** You can rewrite 'log10(x)' as 'log(x, 10)'.
-*/
-#define LUA_COMPAT_LOG10
-
-/*
-@@ LUA_COMPAT_LOADSTRING defines the function 'loadstring' in the base
-** library. You can rewrite 'loadstring(s)' as 'load(s)'.
-*/
-#define LUA_COMPAT_LOADSTRING
-
-/*
-@@ LUA_COMPAT_MAXN defines the function 'maxn' in the table library.
-*/
-#define LUA_COMPAT_MAXN
-
-/*
-@@ The following macros supply trivial compatibility for some
-** changes in the API. The macros themselves document how to
-** change your code to avoid using them.
-*/
-#define lua_strlen(L,i)		lua_rawlen(L, (i))
-
-#define lua_objlen(L,i)		lua_rawlen(L, (i))
-
-#define lua_equal(L,idx1,idx2)		lua_compare(L,(idx1),(idx2),LUA_OPEQ)
-#define lua_lessthan(L,idx1,idx2)	lua_compare(L,(idx1),(idx2),LUA_OPLT)
-
-/*
-@@ LUA_COMPAT_MODULE controls compatibility with previous
-** module functions 'module' (Lua) and 'luaL_register' (C).
-*/
-#define LUA_COMPAT_MODULE
-
-#endif				/* } */
-
-
-/*
-@@ LUA_COMPAT_FLOATSTRING makes Lua format integral floats without a
-@@ a float mark ('.0').
-** This macro is not on by default even in compatibility mode,
-** because this is not really an incompatibility.
-*/
-/* #define LUA_COMPAT_FLOATSTRING */
-
-/* }================================================================== */
-
-
-
-/*
-** {==================================================================
-** Configuration for Numbers.
-** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_*
-** satisfy your needs.
-** ===================================================================
-*/
-
-/*
-@@ LUA_NUMBER is the floating-point type used by Lua.
-@@ LUAI_UACNUMBER is the result of an 'usual argument conversion'
-@@ over a floating number.
-@@ l_mathlim(x) corrects limit name 'x' to the proper float type
-** by prefixing it with one of FLT/DBL/LDBL.
-@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
-@@ LUA_NUMBER_FMT is the format for writing floats.
-@@ lua_number2str converts a float to a string.
-@@ l_mathop allows the addition of an 'l' or 'f' to all math operations.
-@@ l_floor takes the floor of a float.
-@@ lua_str2number converts a decimal numeric string to a number.
-*/
-
-
-/* The following definitions are good for most cases here */
-
-#define l_floor(x)		(l_mathop(floor)(x))
-
-#define lua_number2str(s,sz,n)	l_sprintf((s), sz, LUA_NUMBER_FMT, (n))
-
-/*
-@@ lua_numbertointeger converts a float number to an integer, or
-** returns 0 if float is not within the range of a lua_Integer.
-** (The range comparisons are tricky because of rounding. The tests
-** here assume a two-complement representation, where MININTEGER always
-** has an exact representation as a float; MAXINTEGER may not have one,
-** and therefore its conversion to float may have an ill-defined value.)
-*/
-#define lua_numbertointeger(n,p) \
-  ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
-   (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
-      (*(p) = (LUA_INTEGER)(n), 1))
-
-
-/* now the variable definitions */
-
-#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT		/* { single float */
-
-#define LUA_NUMBER	float
-
-#define l_mathlim(n)		(FLT_##n)
-
-#define LUAI_UACNUMBER	double
-
-#define LUA_NUMBER_FRMLEN	""
-#define LUA_NUMBER_FMT		"%.7g"
-
-#define l_mathop(op)		op##f
-
-#define lua_str2number(s,p)	strtof((s), (p))
-
-
-#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE	/* }{ long double */
-
-#define LUA_NUMBER	long double
-
-#define l_mathlim(n)		(LDBL_##n)
-
-#define LUAI_UACNUMBER	long double
-
-#define LUA_NUMBER_FRMLEN	"L"
-#define LUA_NUMBER_FMT		"%.19Lg"
-
-#define l_mathop(op)		op##l
-
-#define lua_str2number(s,p)	strtold((s), (p))
-
-#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE	/* }{ double */
-
-#define LUA_NUMBER	double
-
-#define l_mathlim(n)		(DBL_##n)
-
-#define LUAI_UACNUMBER	double
-
-#define LUA_NUMBER_FRMLEN	""
-#define LUA_NUMBER_FMT		"%.14g"
-
-#define l_mathop(op)		op
-
-#define lua_str2number(s,p)	strtod((s), (p))
-
-#else						/* }{ */
-
-#error "numeric float type not defined"
-
-#endif					/* } */
-
-
-
-/*
-@@ LUA_INTEGER is the integer type used by Lua.
-**
-@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
-**
-@@ LUAI_UACINT is the result of an 'usual argument conversion'
-@@ over a lUA_INTEGER.
-@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
-@@ LUA_INTEGER_FMT is the format for writing integers.
-@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
-@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
-@@ lua_integer2str converts an integer to a string.
-*/
-
-
-/* The following definitions are good for most cases here */
-
-#define LUA_INTEGER_FMT		"%" LUA_INTEGER_FRMLEN "d"
-#define lua_integer2str(s,sz,n)	l_sprintf((s), sz, LUA_INTEGER_FMT, (n))
-
-#define LUAI_UACINT		LUA_INTEGER
-
-/*
-** use LUAI_UACINT here to avoid problems with promotions (which
-** can turn a comparison between unsigneds into a signed comparison)
-*/
-#define LUA_UNSIGNED		unsigned LUAI_UACINT
-
-
-/* now the variable definitions */
-
-#if LUA_INT_TYPE == LUA_INT_INT		/* { int */
-
-#define LUA_INTEGER		int
-#define LUA_INTEGER_FRMLEN	""
-
-#define LUA_MAXINTEGER		INT_MAX
-#define LUA_MININTEGER		INT_MIN
-
-#elif LUA_INT_TYPE == LUA_INT_LONG	/* }{ long */
-
-#define LUA_INTEGER		long
-#define LUA_INTEGER_FRMLEN	"l"
-
-#define LUA_MAXINTEGER		LONG_MAX
-#define LUA_MININTEGER		LONG_MIN
-
-#elif LUA_INT_TYPE == LUA_INT_LONGLONG	/* }{ long long */
-
-/* use presence of macro LLONG_MAX as proxy for C99 compliance */
-#if defined(LLONG_MAX)		/* { */
-/* use ISO C99 stuff */
-
-#define LUA_INTEGER		long long
-#define LUA_INTEGER_FRMLEN	"ll"
-
-#define LUA_MAXINTEGER		LLONG_MAX
-#define LUA_MININTEGER		LLONG_MIN
-
-#elif defined(LUA_USE_WINDOWS) /* }{ */
-/* in Windows, can use specific Windows types */
-
-#define LUA_INTEGER		__int64
-#define LUA_INTEGER_FRMLEN	"I64"
-
-#define LUA_MAXINTEGER		_I64_MAX
-#define LUA_MININTEGER		_I64_MIN
-
-#else				/* }{ */
-
-#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
-  or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)"
-
-#endif				/* } */
-
-#else				/* }{ */
-
-#error "numeric integer type not defined"
-
-#endif				/* } */
-
-/* }================================================================== */
-
-
-/*
-** {==================================================================
-** Dependencies with C99 and other C details
-** ===================================================================
-*/
-
-/*
-@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89.
-** (All uses in Lua have only one format item.)
-*/
-#if !defined(LUA_USE_C89)
-#define l_sprintf(s,sz,f,i)	snprintf(s,sz,f,i)
-#else
-#define l_sprintf(s,sz,f,i)	((void)(sz), sprintf(s,f,i))
-#endif
-
-
-/*
-@@ lua_strx2number converts an hexadecimal numeric string to a number.
-** In C99, 'strtod' does that conversion. Otherwise, you can
-** leave 'lua_strx2number' undefined and Lua will provide its own
-** implementation.
-*/
-#if !defined(LUA_USE_C89)
-#define lua_strx2number(s,p)		lua_str2number(s,p)
-#endif
-
-
-/*
-@@ lua_number2strx converts a float to an hexadecimal numeric string. 
-** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that.
-** Otherwise, you can leave 'lua_number2strx' undefined and Lua will
-** provide its own implementation.
-*/
-#if !defined(LUA_USE_C89)
-#define lua_number2strx(L,b,sz,f,n)	((void)L, l_sprintf(b,sz,f,n))
-#endif
-
-
-/*
-** 'strtof' and 'opf' variants for math functions are not valid in
-** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the
-** availability of these variants. ('math.h' is already included in
-** all files that use these macros.)
-*/
-#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))
-#undef l_mathop  /* variants not available */
-#undef lua_str2number
-#define l_mathop(op)		(lua_Number)op  /* no variant */
-#define lua_str2number(s,p)	((lua_Number)strtod((s), (p)))
-#endif
-
-
-/*
-@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation
-** functions.  It must be a numerical type; Lua will use 'intptr_t' if
-** available, otherwise it will use 'ptrdiff_t' (the nearest thing to
-** 'intptr_t' in C89)
-*/
-#define LUA_KCONTEXT	ptrdiff_t
-
-#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \
-    __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-#if defined(INTPTR_MAX)  /* even in C99 this type is optional */
-#undef LUA_KCONTEXT
-#define LUA_KCONTEXT	intptr_t
-#endif
-#endif
-
-
-/*
-@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point).
-** Change that if you do not want to use C locales. (Code using this
-** macro must include header 'locale.h'.)
-*/
-#if !defined(lua_getlocaledecpoint)
-#define lua_getlocaledecpoint()		(localeconv()->decimal_point[0])
-#endif
-
-/* }================================================================== */
-
-
-/*
-** {==================================================================
-** Language Variations
-** =====================================================================
-*/
-
-/*
-@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some
-** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from
-** numbers to strings. Define LUA_NOCVTS2N to turn off automatic
-** coercion from strings to numbers.
-*/
-/* #define LUA_NOCVTN2S */
-/* #define LUA_NOCVTS2N */
-
-
-/*
-@@ LUA_USE_APICHECK turns on several consistency checks on the C API.
-** Define it as a help when debugging C code.
-*/
-#if defined(LUA_USE_APICHECK)
-#include <assert.h>
-#define luai_apicheck(l,e)	assert(e)
-#endif
-
-/* }================================================================== */
-
-
-/*
-** {==================================================================
-** Macros that affect the API and must be stable (that is, must be the
-** same when you compile Lua and when you compile code that links to
-** Lua). You probably do not want/need to change them.
-** =====================================================================
-*/
-
-/*
-@@ LUAI_MAXSTACK limits the size of the Lua stack.
-** CHANGE it if you need a different limit. This limit is arbitrary;
-** its only purpose is to stop Lua from consuming unlimited stack
-** space (and to reserve some numbers for pseudo-indices).
-*/
-#if LUAI_BITSINT >= 32
-#define LUAI_MAXSTACK		1000000
-#else
-#define LUAI_MAXSTACK		15000
-#endif
-
-
-/*
-@@ LUA_EXTRASPACE defines the size of a raw memory area associated with
-** a Lua state with very fast access.
-** CHANGE it if you need a different size.
-*/
-#define LUA_EXTRASPACE		(sizeof(void *))
-
-
-/*
-@@ LUA_IDSIZE gives the maximum size for the description of the source
-@@ of a function in debug information.
-** CHANGE it if you want a different size.
-*/
-#define LUA_IDSIZE	60
-
-
-/*
-@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system.
-** CHANGE it if it uses too much C-stack space. (For long double,
-** 'string.format("%.99f", 1e4932)' needs ~5030 bytes, so a
-** smaller buffer would force a memory allocation for each call to
-** 'string.format'.)
-*/
-#if defined(LUA_FLOAT_LONGDOUBLE)
-#define LUAL_BUFFERSIZE		8192
-#else
-#define LUAL_BUFFERSIZE   ((int)(0x80 * sizeof(void*) * sizeof(lua_Integer)))
-#endif
-
-/* }================================================================== */
-
-
-/*
-@@ LUA_QL describes how error messages quote program elements.
-** Lua does not use these macros anymore; they are here for
-** compatibility only.
-*/
-#define LUA_QL(x)	"'" x "'"
-#define LUA_QS		LUA_QL("%s")
-
-
-
-
-/* =================================================================== */
-
-/*
-** Local configuration. You can use this space to add your redefinitions
-** without modifying the main part of the file.
-*/
-
-
-
-
-
-#endif
-

+ 0 - 58
project/vs2015/external/lua/include/lualib.h

@@ -1,58 +0,0 @@
-/*
-** $Id: lualib.h,v 1.44 2014/02/06 17:32:33 roberto Exp $
-** Lua standard libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lualib_h
-#define lualib_h
-
-#include "lua.h"
-
-
-
-LUAMOD_API int (luaopen_base) (lua_State *L);
-
-#define LUA_COLIBNAME	"coroutine"
-LUAMOD_API int (luaopen_coroutine) (lua_State *L);
-
-#define LUA_TABLIBNAME	"table"
-LUAMOD_API int (luaopen_table) (lua_State *L);
-
-#define LUA_IOLIBNAME	"io"
-LUAMOD_API int (luaopen_io) (lua_State *L);
-
-#define LUA_OSLIBNAME	"os"
-LUAMOD_API int (luaopen_os) (lua_State *L);
-
-#define LUA_STRLIBNAME	"string"
-LUAMOD_API int (luaopen_string) (lua_State *L);
-
-#define LUA_UTF8LIBNAME	"utf8"
-LUAMOD_API int (luaopen_utf8) (lua_State *L);
-
-#define LUA_BITLIBNAME	"bit32"
-LUAMOD_API int (luaopen_bit32) (lua_State *L);
-
-#define LUA_MATHLIBNAME	"math"
-LUAMOD_API int (luaopen_math) (lua_State *L);
-
-#define LUA_DBLIBNAME	"debug"
-LUAMOD_API int (luaopen_debug) (lua_State *L);
-
-#define LUA_LOADLIBNAME	"package"
-LUAMOD_API int (luaopen_package) (lua_State *L);
-
-
-/* open all previous libraries */
-LUALIB_API void (luaL_openlibs) (lua_State *L);
-
-
-
-#if !defined(lua_assert)
-#define lua_assert(x)	((void)0)
-#endif
-
-
-#endif

BIN
project/vs2015/external/lua/lib/win32/lua53.dll


BIN
project/vs2015/external/lua/lib/win32/lua53.lib


BIN
project/vs2015/external/lua/lib/win32/lua53dll.lib


+ 5 - 5
src/utils.c

@@ -44,6 +44,9 @@
 *
 **********************************************************************************************/
 
+#define SUPPORT_TRACELOG            // Output tracelog messages
+//#define SUPPORT_TRACELOG_DEBUG     // Avoid DEBUG messages tracing
+
 #include "utils.h"
 
 #if defined(PLATFORM_ANDROID)
@@ -65,9 +68,6 @@
 #define RRES_IMPLEMENTATION
 #include "rres.h"
 
-//#define NO_TRACELOG                 // Avoid TraceLog() output (any type)
-#define DO_NOT_TRACE_DEBUG_MSGS     // Avoid DEBUG messages tracing
-
 //----------------------------------------------------------------------------------
 // Global Variables Definition
 //----------------------------------------------------------------------------------
@@ -94,10 +94,10 @@ void TraceLog(int msgType, const char *text, ...)
 {
 #if defined(SUPPORT_TRACELOG)
     static char buffer[128];
-    int traceDebugMsgs = 1;
+    int traceDebugMsgs = 0;
     
 #if defined(SUPPORT_TRACELOG_DEBUG)
-    traceDebugMsgs = 0;
+    traceDebugMsgs = 1;
 #endif
 
     switch(msgType)

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác