Merge pull request #256 from raysan5/develop

Integrate develop branch
This commit is contained in:
Ray
2017-04-04 12:17:08 +02:00
committed by GitHub
324 changed files with 1281871 additions and 1276915 deletions
+32 -29
View File
@@ -4,7 +4,7 @@
*
* NOTE: This example requires OpenAL Soft library installed
*
* This example has been created using raylib 1.3 (www.raylib.com)
* This example has been created using raylib 1.7 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
@@ -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();
//----------------------------------------------------------------------------------
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -24,7 +24,7 @@ int screenWidth = 800;
int screenHeight = 450;
// Define the camera to look into our 3d world (position, target, up vector)
Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 60.0f };
Camera camera = {{ 4.0f, 2.0f, 4.0f }, { 0.0f, 1.8f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 60.0f };
// Generates some random columns
float heights[MAX_COLUMNS];
@@ -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
File diff suppressed because one or more lines are too long
+3 -7
View File
@@ -2,7 +2,7 @@
*
* raylib [core] example - Initialize 3d camera free (adapted for HTML5 platform)
*
* This example has been created using raylib 1.3 (www.raylib.com)
* This example has been created using raylib 1.7 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
@@ -41,16 +41,12 @@ int main()
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free");
// Define the camera to look into our 3d world
Camera camera;
camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position
camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
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);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -4
View File
@@ -45,14 +45,12 @@ int main()
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking");
camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position
camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
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);
File diff suppressed because one or more lines are too long
-1
View File
@@ -25,7 +25,6 @@
int screenWidth = 800;
int screenHeight = 450;
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -4
View File
@@ -22,7 +22,7 @@ int screenWidth = 800;
int screenHeight = 450;
// Define the camera to look into our 3d world
Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }};
Camera camera = {{ 8.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
@@ -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);
File diff suppressed because one or more lines are too long
+147 -61
View File
@@ -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 any directories containing required header files
# 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)
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
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/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)
@@ -341,7 +415,7 @@ text_sprite_fonts: text_sprite_fonts.c
# compile [text] example - bmfonts and ttf loading
text_bmfont_ttf: text_bmfont_ttf.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/bmfont.fnt --preload-file resources/fonts/pixantiqua.ttf
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/bmfont.fnt --preload-file resources/fonts/bmfont.png --preload-file resources/fonts/pixantiqua.ttf -s ALLOW_MEMORY_GROWTH=1
# compile [text] example - raylib bitmap fonts (rBMF)
text_rbmf_fonts: text_rbmf_fonts.c
@@ -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) --preload-file resources/fonts/KAISG.ttf -s ALLOW_MEMORY_GROWTH=1
# compile [text] example - text bmfont unordered
text_bmfont_unordered: text_bmfont_unordered.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) --preload-file resources/fonts/pixantiqua.fnt --preload-file resources/fonts/pixantiqua_0.png
# compile [models] example - basic geometric 3d shapes
models_geometric_shapes: models_geometric_shapes.c
$(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) --preload-file resources/model/lowpoly-tower.obj --preload-file resources/model/lowpoly-tower.png
# compile [shaders] example - model shader
shaders_model_shader: shaders_model_shader.c
$(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/base.vs --preload-file resources/shaders/glsl100/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
+3 -5
View File
@@ -22,7 +22,7 @@ int screenWidth = 800;
int screenHeight = 450;
// Define the camera to look into our 3d world
Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }};
Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Texture2D bill; // Our texture billboard
Vector3 billPosition = { 0.0f, 2.0f, 0.0f }; // Position where draw billboard
@@ -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);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -2
View File
@@ -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);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -3
View File
@@ -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);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+239
View File
@@ -0,0 +1,239 @@
/*******************************************************************************************
*
* 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 "raymath.h"
#include <stdio.h>
#include <float.h>
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
Camera camera;
Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
Ray ray; // Picking line ray
Model tower;
Texture2D texture;
Vector3 towerPos = { 0.0f, 0.0f, 0.0f };
BoundingBox towerBBox;
bool hitMeshBBox = false;
bool hitTriangle = false;
// Test triangle
Vector3 ta = (Vector3){ -25.0, 0.5, 0.0 };
Vector3 tb = (Vector3){ -4.0, 2.5, 1.0 };
Vector3 tc = (Vector3){ -8.0, 6.5, 0.0 };
Vector3 bary = { 0.0f, 0.0f, 0.0f };
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
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.position = (Vector3){ 10.0f, 8.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 2.3f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
tower = LoadModel("resources/model/lowpoly-tower.obj"); // Load OBJ model
texture = LoadTexture("resources/model/lowpoly-tower.png"); // Load model texture
tower.material.texDiffuse = texture; // Set model diffuse texture
towerBBox = CalculateBoundingBox(tower.mesh);
SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
#else
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
UpdateDrawFrame();
}
#endif
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadModel(tower); // Unload model from GPU
UnloadTexture(texture); // Unload texture from GPU
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------------------------
// Module Functions Definition
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void)
{
// Update
//----------------------------------------------------------------------------------
UpdateCamera(&camera); // Update camera
// Display information about closest hit
RayHitInfo nearestHit;
char *hitObjectName = "None";
nearestHit.distance = FLT_MAX;
nearestHit.hit = false;
Color cursorColor = WHITE;
// Get ray and test against ground, triangle, and mesh
ray = GetMouseRay(GetMousePosition(), camera);
// Check ray collision aginst ground plane
RayHitInfo groundHitInfo = GetCollisionRayGround(ray, 0.0f);
if ((groundHitInfo.hit) && (groundHitInfo.distance < nearestHit.distance))
{
nearestHit = groundHitInfo;
cursorColor = GREEN;
hitObjectName = "Ground";
}
// 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();
//----------------------------------------------------------------------------------
}
+554
View File
@@ -0,0 +1,554 @@
# Blender v2.78 (sub 0) OBJ File: 'lowpoly-tower.blend'
# www.blender.org
o Grid
v -4.000000 0.000000 4.000000
v -2.327363 0.000000 4.654725
v 0.000000 0.000000 4.654725
v 2.327363 0.000000 4.654725
v 4.000000 0.000000 4.000000
v -4.654725 0.955085 2.327363
v -2.000000 0.815050 2.000000
v 0.000000 0.476341 2.423448
v 2.000000 0.476341 2.000000
v 4.654725 0.000000 2.327363
v -4.654725 1.649076 0.000000
v -2.423448 1.092402 0.000000
v 2.423448 0.198579 0.000000
v 4.654725 0.000000 0.000000
v -4.654725 1.649076 -2.327363
v -2.000000 1.092402 -2.000000
v 0.000000 0.476341 -2.423448
v 2.000000 -0.012791 -2.000000
v 4.654725 0.000000 -2.612731
v -4.000000 0.955085 -4.000000
v -2.327363 0.955085 -4.654725
v 0.000000 0.955085 -4.654725
v 2.327363 0.000000 -4.654725
v 4.000000 0.000000 -4.000000
v 2.423448 0.682825 0.000000
v 2.000000 0.565423 -2.000000
v -4.654725 -0.020560 2.327363
v -4.654725 0.000000 0.000000
v -4.654725 0.000000 -2.327363
v -4.000000 0.000000 -4.000000
v -2.327363 0.000000 -4.654725
v 0.000000 -0.020560 -4.654725
v 0.000000 0.709880 -1.230535
v -0.000000 7.395413 0.000000
v 0.962071 0.709880 -0.767226
v -0.533909 0.709880 1.108674
v -1.199683 0.709880 0.273820
v -0.962071 0.709880 -0.767226
v 1.506076 0.859071 1.325337
v 1.199683 0.709880 0.273820
v 0.533909 0.709880 1.108674
v 0.000000 1.875340 -1.177842
v -0.000000 2.293973 -0.649884
v -0.000000 4.365648 -0.627970
v 0.000000 6.167194 -0.942957
v 0.000000 6.232434 -1.708677
v 1.335898 6.232434 -1.065343
v 0.737233 6.167195 -0.587924
v 0.490966 4.365648 -0.391533
v 0.508100 2.293973 -0.405196
v 0.920874 1.875340 -0.734372
v -0.741367 6.232434 1.539465
v -0.409133 6.167195 0.849574
v -0.272466 4.365648 0.565781
v -0.281974 2.293973 0.585526
v -0.511047 1.875340 1.061199
v -1.665837 6.232434 0.380217
v -0.919314 6.167195 0.209828
v -0.612225 4.365648 0.139736
v -0.633590 2.293973 0.144613
v -1.148311 1.875340 0.262095
v -1.335898 6.232434 -1.065343
v -0.737233 6.167195 -0.587924
v -0.490967 4.365648 -0.391533
v -0.508100 2.293973 -0.405196
v -0.920874 1.875340 -0.734372
v 1.665837 6.232434 0.380216
v 0.919315 6.167195 0.209828
v 0.612225 4.365648 0.139736
v 0.633590 2.293973 0.144613
v 1.148311 1.875340 0.262095
v 0.741367 6.232434 1.539465
v 0.409133 6.167195 0.849575
v 0.272466 4.365648 0.565781
v 0.281974 2.293973 0.585526
v 0.511046 1.875340 1.061199
v 0.000000 5.012550 -0.969733
v 0.758168 5.012550 -0.604618
v -0.420751 5.012550 0.873699
v -0.945419 5.012550 0.215786
v -0.758168 5.012550 -0.604618
v 0.945419 5.012550 0.215786
v 0.420751 5.012550 0.873699
vt 0.0523 0.5444
vt 0.1817 0.4284
vt 0.1641 0.5859
vt 0.0177 0.4451
vt 0.1526 0.3090
vt 0.0189 0.1737
vt 0.0188 0.3088
vt 0.0561 0.0762
vt 0.1757 0.1924
vt 0.3024 0.4534
vt 0.3071 0.5902
vt 0.3413 0.2459
vt 0.2906 0.1614
vt 0.4116 0.1801
vt 0.2834 0.3774
vt 0.1526 0.0362
vt 0.2917 0.1622
vt 0.4446 0.5865
vt 0.4443 0.2989
vt 0.3711 0.3021
vt 0.4396 0.0275
vt 0.4094 0.1829
vt 0.4219 0.4255
vt 0.5474 0.5381
vt 0.5811 0.4376
vt 0.5715 0.1505
vt 0.5811 0.2997
vt 0.5272 0.0533
vt 0.2208 0.2194
vt 0.3456 0.3610
vt 0.2878 0.0321
vt 0.2321 0.3392
vt 0.4432 0.0177
vt 0.7347 0.7934
vt 0.7382 0.7595
vt 0.8982 0.7768
vt 0.6169 0.7595
vt 0.6139 0.7879
vt 0.4951 0.7634
vt 0.1551 0.6832
vt 0.2925 0.6268
vt 0.2925 0.6832
vt 0.7795 0.6832
vt 0.6421 0.6268
vt 0.7795 0.6255
vt 0.5046 0.7241
vt 0.6421 0.7241
vt 0.3986 0.6268
vt 0.3986 0.6832
vt 0.5046 0.6268
vt 0.0177 0.6268
vt 0.1551 0.6255
vt 0.8856 0.6268
vt 0.1899 0.9579
vt 0.1194 0.8696
vt 0.2324 0.8696
vt 0.1899 0.7813
vt 0.0943 0.7595
vt 0.0177 0.8206
vt 0.0177 0.9186
vt 0.0943 0.9797
vt 0.2793 0.2349
vt 0.2304 0.2758
vt 0.6597 0.0177
vt 0.6954 0.0993
vt 0.6367 0.0768
vt 0.7558 0.0777
vt 0.7238 0.0440
vt 0.8840 0.1330
vt 0.7385 0.1141
vt 0.9157 0.0886
vt 0.9781 0.1232
vt 0.9224 0.1276
vt 0.2677 0.8141
vt 0.3463 0.8037
vt 0.3086 0.8339
vt 0.6387 0.3550
vt 0.7130 0.3801
vt 0.6596 0.4053
vt 0.7245 0.3245
vt 0.6919 0.3383
vt 0.8655 0.3566
vt 0.7351 0.3577
vt 0.9770 0.3365
vt 0.9078 0.3751
vt 0.9174 0.3282
vt 0.2677 0.9018
vt 0.3086 0.8821
vt 0.6803 0.2948
vt 0.6251 0.3035
vt 0.7194 0.2854
vt 0.8764 0.2832
vt 0.9221 0.2861
vt 0.3363 0.9565
vt 0.3464 0.9122
vt 0.6751 0.2482
vt 0.6178 0.2499
vt 0.7179 0.2431
vt 0.9823 0.2484
vt 0.9247 0.2452
vt 0.3935 0.9014
vt 0.6755 0.1996
vt 0.6164 0.1941
vt 0.7201 0.1992
vt 0.8793 0.2446
vt 0.9823 0.2060
vt 0.9257 0.2051
vt 0.4598 0.8580
vt 0.4144 0.8579
vt 0.6819 0.1498
vt 0.6222 0.1361
vt 0.7266 0.1555
vt 0.8831 0.1684
vt 0.9252 0.1659
vt 0.4218 0.7790
vt 0.3934 0.8145
vt 0.3363 0.7595
vt 0.8815 0.2060
vt 0.8720 0.3208
vt 0.8825 0.1012
vt 0.9735 0.0816
vt 0.9718 0.3817
vt 0.9807 0.2918
vt 0.4218 0.9370
vt 0.9810 0.1644
vn 0.1035 0.8806 0.4623
vn 0.0964 0.9481 0.3030
vn 0.0000 0.9780 0.2088
vn 0.0659 0.9835 0.1683
vn 0.2325 0.9320 0.2779
vn 0.0553 0.9960 -0.0702
vn 0.2827 0.9564 0.0728
vn 0.1873 0.9776 -0.0961
vn 0.2421 0.9703 0.0000
vn 0.0921 0.9772 -0.1913
vn -0.0277 0.9947 -0.0993
vn 0.2308 0.9274 -0.2944
vn 0.2771 0.9572 -0.0837
vn 0.3724 0.9074 0.1947
vn 0.0777 0.9770 -0.1985
vn -0.1094 0.9539 0.2794
vn 0.0364 0.9844 0.1721
vn 0.1683 0.9835 0.0659
vn 0.0674 0.9901 0.1230
vn 0.4338 0.8823 0.1829
vn 0.2845 0.9565 0.0649
vn 0.0886 0.9961 0.0000
vn 0.2000 0.9789 0.0424
vn 0.1417 0.9830 0.1171
vn 0.3021 0.9524 0.0412
vn -0.0193 0.9986 -0.0493
vn 0.0000 0.9777 0.2098
vn 0.0005 0.9781 -0.2083
vn 0.1879 0.9782 -0.0887
vn 0.2249 0.0000 0.9744
vn 0.9783 0.0000 -0.2071
vn 0.9783 0.0000 0.2071
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn -0.3645 0.0000 -0.9312
vn -0.9312 0.0000 -0.3645
vn -0.9312 0.0000 0.3645
vn 0.2615 0.7979 -0.5431
vn 0.5877 0.7979 -0.1341
vn 0.4713 0.7979 0.3758
vn -0.0000 0.7979 0.6028
vn -0.4713 0.7979 0.3758
vn -0.5877 0.7979 -0.1341
vn -0.2615 0.7979 -0.5431
vn -0.1285 0.9864 -0.1025
vn 0.0929 0.8937 0.4389
vn -0.4335 0.0407 -0.9002
vn -0.2867 0.7507 -0.5952
vn -0.4339 0.0095 -0.9009
vn -0.4338 0.0209 -0.9008
vn -0.0408 -0.9956 -0.0848
vn -0.9741 0.0407 -0.2223
vn -0.6441 0.7507 -0.1470
vn -0.9749 0.0095 -0.2225
vn -0.9747 0.0209 -0.2225
vn -0.0918 -0.9956 -0.0209
vn -0.7812 0.0407 0.6230
vn -0.5165 0.7507 0.4119
vn -0.7818 0.0095 0.6235
vn -0.7817 0.0209 0.6234
vn -0.0736 -0.9956 0.0587
vn -0.0000 0.0407 0.9992
vn 0.0000 0.7507 0.6607
vn 0.0000 0.0095 1.0000
vn -0.0000 0.0209 0.9998
vn -0.0000 -0.9956 0.0941
vn 0.7812 0.0407 0.6230
vn 0.5165 0.7507 0.4119
vn 0.7818 0.0095 0.6235
vn 0.7817 0.0209 0.6234
vn 0.0736 -0.9956 0.0587
vn 0.9741 0.0407 -0.2223
vn 0.6441 0.7507 -0.1470
vn 0.9749 0.0095 -0.2225
vn 0.9747 0.0209 -0.2225
vn 0.0918 -0.9956 -0.0209
vn 0.4335 0.0407 -0.9002
vn 0.2867 0.7507 -0.5952
vn 0.4339 0.0095 -0.9009
vn 0.4338 0.0209 -0.9008
vn 0.0408 -0.9956 -0.0848
vn 0.3918 -0.4298 -0.8135
vn 0.8803 -0.4298 -0.2009
vn 0.7059 -0.4298 0.5630
vn -0.0000 -0.4298 0.9029
vn -0.7059 -0.4298 0.5630
vn -0.8803 -0.4298 -0.2009
vn -0.3918 -0.4298 -0.8135
vn 0.0210 0.9998 -0.0048
vn 0.0482 0.9981 -0.0385
vn -0.0166 0.9914 -0.1301
vn -0.0090 0.9904 -0.1379
vn 0.2820 0.9576 0.0597
vn -0.0000 0.9846 0.1749
vn -0.0921 0.9772 -0.1913
vn -0.1734 0.9794 0.1036
s off
f 1/1/1 7/2/1 6/3/1
f 2/4/2 8/5/2 7/2/2
f 4/6/3 8/5/3 3/7/3
f 5/8/4 9/9/4 4/6/4
f 6/3/5 12/10/5 11/11/5
f 35/12/6 25/13/6 26/14/6
f 7/2/7 37/15/7 12/10/7
f 10/16/8 13/17/8 9/9/8
f 12/10/9 15/18/9 11/11/9
f 35/12/10 17/19/10 33/20/10
f 13/17/11 19/21/11 18/22/11
f 16/23/12 20/24/12 15/18/12
f 17/19/13 21/25/13 16/23/13
f 17/19/14 23/26/14 22/27/14
f 26/14/15 24/28/15 23/26/15
f 1/1/16 2/4/16 7/2/16
f 2/4/3 3/7/3 8/5/3
f 4/6/17 9/9/17 8/5/17
f 5/8/18 10/16/18 9/9/18
f 6/3/19 7/2/19 12/10/19
f 25/13/20 39/29/20 9/9/20
f 38/30/21 12/10/21 37/15/21
f 10/16/22 14/31/22 13/17/22
f 12/10/23 16/23/23 15/18/23
f 8/5/24 36/32/24 7/2/24
f 38/30/25 17/19/25 16/23/25
f 13/17/22 14/31/22 19/21/22
f 16/23/26 21/25/26 20/24/26
f 17/19/27 22/27/27 21/25/27
f 17/19/28 26/14/28 23/26/28
f 26/14/29 19/33/29 24/28/29
f 26/34/30 18/35/30 19/36/30
f 26/34/31 13/37/31 18/35/31
f 25/38/32 9/39/32 13/37/32
f 22/40/33 31/41/33 21/42/33
f 6/43/34 28/44/34 27/45/34
f 15/46/34 28/44/34 11/47/34
f 21/42/35 30/48/35 20/49/35
f 20/49/36 29/50/36 15/46/36
f 22/40/33 23/51/33 32/52/33
f 6/43/37 27/45/37 1/53/37
f 46/54/38 34/55/38 47/56/38
f 47/56/39 34/55/39 67/57/39
f 67/57/40 34/55/40 72/58/40
f 72/58/41 34/55/41 52/59/41
f 52/59/42 34/55/42 57/60/42
f 57/60/43 34/55/43 62/61/43
f 62/61/44 34/55/44 46/54/44
f 40/62/45 41/63/45 39/29/45
f 39/29/46 8/5/46 9/9/46
f 38/64/47 42/65/47 33/66/47
f 65/67/48 42/65/48 66/68/48
f 65/67/49 44/69/49 43/70/49
f 81/71/50 45/72/50 77/73/50
f 62/74/51 45/75/51 63/76/51
f 37/77/52 66/78/52 38/79/52
f 60/80/53 66/78/53 61/81/53
f 60/80/54 64/82/54 65/83/54
f 58/84/55 81/85/55 80/86/55
f 57/87/56 63/76/56 58/88/56
f 56/89/57 37/77/57 36/90/57
f 55/91/58 61/81/58 56/89/58
f 54/92/59 60/80/59 55/91/59
f 79/93/60 58/84/60 80/86/60
f 52/94/61 58/88/61 53/95/61
f 76/96/62 36/90/62 41/97/62
f 75/98/63 56/89/63 76/96/63
f 75/98/64 54/92/64 55/91/64
f 73/99/65 79/93/65 83/100/65
f 73/101/66 52/94/66 53/95/66
f 71/102/67 41/97/67 40/103/67
f 70/104/68 76/96/68 71/102/68
f 70/104/69 74/105/69 75/98/69
f 68/106/70 83/100/70 82/107/70
f 67/108/71 73/101/71 68/109/71
f 51/110/72 40/103/72 35/111/72
f 50/112/73 71/102/73 51/110/73
f 49/113/74 70/104/74 50/112/74
f 78/114/75 68/106/75 82/107/75
f 47/115/76 68/109/76 48/116/76
f 42/65/77 35/111/77 33/66/77
f 43/70/78 51/110/78 42/65/78
f 44/69/79 50/112/79 43/70/79
f 45/72/80 78/114/80 77/73/80
f 46/117/81 48/116/81 45/75/81
f 44/69/82 78/114/82 49/113/82
f 49/113/83 82/107/83 69/118/83
f 82/107/84 74/105/84 69/118/84
f 83/100/85 54/92/85 74/105/85
f 79/93/86 59/119/86 54/92/86
f 80/86/87 64/82/87 59/119/87
f 64/120/88 77/73/88 44/69/88
f 35/12/89 40/62/89 25/13/89
f 7/2/90 36/32/90 37/15/90
f 35/12/91 26/14/91 17/19/91
f 25/13/92 40/62/92 39/29/92
f 38/30/93 16/23/93 12/10/93
f 8/5/94 41/63/94 36/32/94
f 38/30/95 33/20/95 17/19/95
f 26/34/31 25/38/31 13/37/31
f 22/40/33 32/52/33 31/41/33
f 6/43/34 11/47/34 28/44/34
f 15/46/34 29/50/34 28/44/34
f 21/42/35 31/41/35 30/48/35
f 20/49/36 30/48/36 29/50/36
f 39/29/96 41/63/96 8/5/96
f 38/64/47 66/68/47 42/65/47
f 65/67/48 43/70/48 42/65/48
f 65/67/49 64/120/49 44/69/49
f 81/71/50 63/121/50 45/72/50
f 62/74/51 46/117/51 45/75/51
f 37/77/52 61/81/52 66/78/52
f 60/80/53 65/83/53 66/78/53
f 60/80/54 59/119/54 64/82/54
f 58/84/55 63/122/55 81/85/55
f 57/87/56 62/74/56 63/76/56
f 56/89/57 61/81/57 37/77/57
f 55/91/58 60/80/58 61/81/58
f 54/92/59 59/119/59 60/80/59
f 79/93/60 53/123/60 58/84/60
f 52/94/61 57/87/61 58/88/61
f 76/96/62 56/89/62 36/90/62
f 75/98/63 55/91/63 56/89/63
f 75/98/64 74/105/64 54/92/64
f 73/99/65 53/123/65 79/93/65
f 73/101/66 72/124/66 52/94/66
f 71/102/67 76/96/67 41/97/67
f 70/104/68 75/98/68 76/96/68
f 70/104/69 69/118/69 74/105/69
f 68/106/70 73/99/70 83/100/70
f 67/108/71 72/124/71 73/101/71
f 51/110/72 71/102/72 40/103/72
f 50/112/73 70/104/73 71/102/73
f 49/113/74 69/118/74 70/104/74
f 78/114/75 48/125/75 68/106/75
f 47/115/76 67/108/76 68/109/76
f 42/65/77 51/110/77 35/111/77
f 43/70/78 50/112/78 51/110/78
f 44/69/79 49/113/79 50/112/79
f 45/72/80 48/125/80 78/114/80
f 46/117/81 47/115/81 48/116/81
f 44/69/82 77/73/82 78/114/82
f 49/113/83 78/114/83 82/107/83
f 82/107/84 83/100/84 74/105/84
f 83/100/85 79/93/85 54/92/85
f 79/93/86 80/86/86 59/119/86
f 80/86/87 81/85/87 64/82/87
f 64/120/88 81/71/88 77/73/88
‰PNG

IHDRÃ>aËgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDùC» pHYs  ÒÝ~ü`ÏIDATxÚíýw|ÕÕø¿ïÙ]­$Iq/˜^L %„FB³Mo JBË“'l“„BǸH¶!ƒcŒ«Ü­.IVï[fæ~ÿ¸3³»’lLyžäùü~çõ²µ;mïÜsîéç\±öÓ¥P(”R @‘ô÷K€@€!BH÷¯`óæ-ìܱó°÷:Ê@
‰aC ‘úŽ›ÓùúÃÁ5×\û¥Æÿÿ*È/¼B?žg}¥9òâßöâ ¼ðoûíÿ$0ä"\ò;›öšå\ôs›´ìóüs/?`~Á½‡A¾ø÷À¢… ¹êê«ÿ­cø"$.ô?ïSot:ßúƱ)ß3.\Ÿò}û=3üÏãæ­êt¿øB\òˆEûÁåi9©}+å;¤…‡l!»Fþ¦M›¾”R`˜Æ×R$˜ß*$#߃d"èˆ|<"HF¾‰à EÀ%¤²}Ló?{ÈOþ©}‹ïþü5~ü¥ÿͱR"¥Ôàk¬ü#Aì‘@2òAs‚ÿ4è
ù‡;ÞºB~—sq¸“ÉÈ÷9×ÿœ¼Ú“¡+‚ÉOu4‘¯œ#[­yØ<“÷O.z?Ïÿ Wÿ—…ŽÈ÷à?‘þ7 KÞqÕ{ìß#»=hBHÉè™à‡Zõ‘Hä°\ü¾MfzM)Ç›ÿOÿsÆào£p¸êlã{þoèß4HÑ1ß¹óMá½{gûŸ”ϑڷˆÔ¾EZÎ>GHæ žI¿ÞY‡ýñƒrðàÁCž
À¡¥­”"c&À.MP¥X´Â扅¯ñä¢×yrÑëä½o'½è<ðŸÃ ºRøwü«‚ôY3ù$#»#Dj×%Ëþd‚¨Ú÷*%[ÿJ¿ÞYàÒ?u6!Ç¢­­½ËßÐȇÌp´ã! ×;Aú „EÒ¶÷íâ˜y–á¾ä‘!߃ÿT"èø½£ÆŸ|¬+¿«c¦4$w,ŒSZaÓ w)åÛ_"@†Â¾5e¿™Ñ=å
èÝ+ hN9^}°!ÊÑHó”¼gòÏ«*x…ŒAg»ŠƒJZýB€jE‘Fë¾wõ!×·à—E¾ÿ)â #Òïz#Ãÿü‡ [»$ºBxG0ò”‰KÀNAöq—R]]$Ÿ¬ ôÌè@mM
9½z±wž~`ä'Õ[,¹-¡v´´µ!…Ä‘ŽOyt D…^ý"ˆR6®2é¤AýQ$Ÿ9ø;,^¡¸ú\þã`Ù²e\~ùå_xíŽÈØGÊüO—,è¼h_¹ÆHù~Á­IùþÖoOJù.ò·|¦®ÍsèÕ'D]«â@~-ÐYñK CÆ]Jey•ÿ=§W/ªö½J¸Ÿ^­í•+>áG”lý+=ží@sS#«WLKK O,|[®ºEïEÉ ÷¤¥½T„Ö}º¿ Hï?åD2LÛ
‰ãŽ™NÛ5>d :@rõ¹©"¾¤ :{ÖU޽ÿþ
¥DZm'ÁÁ|1ä8؎²mP`;¶mƒJŒA&ÓDJ‰”R„!Àˆ³ïîrL W”Q^ÕÄ¡À#‚ŽÈïŠOST7+úåt£u 4—l cðÑ´îÝMûÁå)&àq—úŸ=Ö_KBùk¯\A¸ßÙ„ûM¿ÞY>òö¯àŠÇÏfém&ݺ÷ ©9ñO-zCOÜ€ÓÈ÷ µ=BúÀ“iÛÿ1(EÛ„ûG©¸|¥´íÿûZQ”Z_A.·¹æ<Mtò<ßÉ` Þ~ûÒÓÓ\Ú(åh*ûR ¾Â=‡†½ë^ƒ¡3¾‘gI)ÕغvÃúvóOf >šŒÁG©~€êê:bÍøß#µoaE>ö¿{«4H™Š$Þ£Gw”£|… õÀjZÛ»¼áŒc γ§qáÙSùÎÙÇrþ¤8ÞÕb L­{ßäÏóÿ…D{¿Ì?„ÔÈÿ&@}¹àÙáàŠã"_ÿ!.H€¦â
þ­kWÑmø4ÿ{·áÓ¡Rd¨”pŸs}½ ÌŒî
PY]$ˆ Üïll.{LkóÙ99½{
ˆÂ§…ôS÷ŸÌ…gO…$…N ‘.;ÿÁy'Þ¨JEiÝ÷>­{ߢmïÛ‰5 7qäÿ‚À76ÑðÒÀ7xâ„fñ݆O£¹$A2TJ19@‚#˜Ý}¹ŸŒh*«ë©¬®÷9Iѳ‡V$3KßÑ—è.§lÛÿ1m6¢TŒ3Æ88NçÙKUð%ˆ .Gðe±üñ¹¿!_êß7I‡Ã½ú
.î+û¾Óåñ+ú$ˆ¾£Â×Õ1±sÇ&uIžã#z 3غvN˜AiUs
)DÑ^Y’‚ìdðÄ@òyïXF¿³q€Wî0Yºt)ÿø4“–H 8QPqmû>åpö©ã‘.U©W½ …@š†ôl}xåÍO½×ÒÿDÂ,DÀ]7ÿˆ#CšôêÕ Ó4| ÚŽíæGpäJ ­° å€e[ÙIJ Ó@JÃ0S”@謯ø}'bR]°–‹¾sd1Ÿ<HF¸Ç
¶®]å#ß»&søxÆŒêǦôÄw5‘ý3ýït<­­ Ü÷xþëôí¬ýl=ËVÅÉL롉@µ£œ(ÊiÓœ4Ê%wV‚“`0ˆš´¸– ¯oÐØ2 HZ÷½‹HbwÝüÃ#š˜pZYY9 ¶ÒVŽãš›_–´5à8NÂW¡Ò01¥Ä B`H#…ÜŸÖïßáûáàH‰À7Ê“9€‡tYûpêyûßW¿Sèn*Ü
ýOüÂ
åôçõ»ºñÞ»ZÙkÝ·‚ÖÄÛèWT
<Ö8b¼Vì•&XÜÂ0˜BaÛ¶Kÿ|g È|ÊiCÈL2Ç•­{_="䇂itïÑÁ-ܙއ/ ‡ºE)Ò·o^{ý/$ ©«Þ[í W|iU3Yûøÿ@#}õ;…l; Wh¸ÿð”‡N95AÝGM ¨¢%å˜a˜¬®àú+ÎOL’›äÑ{¸ß8-Þ“CÓ­c;‰–íMëÞ÷ÂtikÓQÅùùõßñ8]ÿ3¥I÷nÝéÙ³G—“•ð!|9L©ÇU§³ÿ£Êák¯>vÐ¥a\ZÕL·áÓÈšØE”ñBþ¹ºü½)Ÿ³'ö¿w5¢ŠŠ*Zè>jü‘ý3i*Üê{å'ACc=R‚ôF!³•>ð8Âýǃ˜†fõ†4&FÀè4fG)ÒûOñ¿·î_!R;„ΑX¶…eDZ,ÛqRð”äôîM8>ì„ <b<2"P)SïñŸ!_6ÇòˆÁQ¼úêk‡<-NfŸ·Ú=d¯~§0…’aü€§çžhdìŸéŸO–ýM…[ýãÖæf
‘P´2žNŸQßtÿ™†ðM>!µ ¨ßMéï^_±…Mú€´ì}–½o$½©–—Úõ¬”ƒRR$,’×ÌÒ1—ñ‹Q— ƒä{õþÓâ…ã.¨CÔ/¦?ä»ç£ˆ¦¬r<YŸ¼âO;o”/â­šÍoúèSÙÂW~¢‘]S[›4N‡ŒAç“1è,2Ó{ÓÒÞ23úÓ^±…·VnaÕîäЮðqP¼»UˈöŠ|a2é#¬«ÄS¥¶²µgÏQ„Ò„Ò¿ò=þ©¸ýB"PŠäÈ+€®ÃéB$!߃®ˆ@Ji Ã&áþ™‡eïÙ3~@ˆñBdOLöÄÁ)
 wï®ÂÊ”ðÄ@ÇÏuuu¾ÐvaPUøwíØÿ1ÕEï$f[Àê=6+w)¤¡ÍÁ7Vlä_ï­!Hp 2ë³Õ«Ï1´¢Ã?¥Á´ =³Ÿ·àâÏOnM¦€/ú‘JWs÷þý/ ߃ŽD`¦É«3M®ø0H[EêÅã„`À(¶Ð\au~â\2q$«ËßK¸ÿp™>ðï­~€ýP]]ã ·} ÷±óú³Fú€ãQ¶%·WlåŸ[жëHx*Aë¾÷ɬã^\àP¹„ wï¾G<¯ZS¤’À‘ƒrßG p…£Àø¦Sãƒ|^}õ5.¾ø"¤i˜˜?ÏäýÛ‡ø%¯ð®ä¿'û“¯÷þfOœ"ï“?{0xÈ`ù×_Þ!nëj[ƒf€£[­d>ð$×Äa @Ѻo9B˜apÕ9]§­KCÒ«W/ä—E€Ò"Hüb™#eŽã …dÍš
¬ß°…Í›·}“1¢#B¾'ûö•(Ó0SdÓ>PôouCBö{Ÿ=sÐ;ï]Û^QâßÿΓSž··¼”wÞy‡ÖÖÖ”ãÏ/sÃÎJ镬â(ógYGþ }àÉNpx­ûWê¯2[‡ƒ»`Ý{ô ;+;1w¾0O\l¦OoÚÂT¼÷þ*„XE$Á²ºIW¥<e3aîÂad2MÓµ*$ß={Ò¼¶B/˜ŽŸ¦ïsŸuXGЗ@~2ˆÊ•!;[ƒg=VÞ‰<8qt<Ö^Q0ý:Àkÿú'ÅÅÅ'ÍQÌé]2}
8 :ëGAÆÀÓ@¦és¤uŸ&šŒg€Hs5u¸úÜ$_~„3ÂôíݯÓï:h?‚R
!R¼÷þªNB ¥¤¡¡¥·Ïž­l6®^IeU”ÂÖtÿzX¤”ôµ €âzƒ¬¬ž˜¦A0ÔA)?P!€æöå
†‘I&ÆéÓ§ø‹VÙÎWB>€ÙòÞ¿}ˆOÉîJö
²Æ
$Ü7'j!\ßy2„Óºµ
)¸þŠóY¶*îê’Ö½ïº'ahŒÊPJž`ëþ•îÊ׎¥…Ëã "ú–C!__"p€ï¯ö-„à¦ËNgóÚXS$]½M1ûÓyã¥W)h
óè‚÷9aˆƒ±-Û¸æGÓqXð×uضE³eã8J»‡]¢8óøQ˜¦dùÇ»±,Eck›N“S[†$É
éÕÚµŸ˜8Nj0éØiSø2 ª*÷}!étÅ
º"ˆŽÇþ2Cñ½DxùÛÚÔs'…>xÿ]òó;ë~˜O9,[eѺÿý”Óƒ¾å]ˆAZö¾î}ãÖ뾋RJ#ÿœ$äýûõ#ìlî½»beÊwÇqR¢”âšKNbçç‰ÙÔÔ·SÞÖ;8Nc]Ÿï—8ŽBÊ„µm!ã{iñPÕ¥¢5„ãè¨f<gˆLF5{  ZÚ"Ô´÷ wz¦!ÙצƒCîs
Ãt‰Á3ǧá¯Ã¾2t„¿žÙY›±Û¶PŽF~G"Xùþ{lÉÏïüƒBjVœÄþæ¿ô®‹|OYÔù€×|+¨‘¦´‚•âÛLbûG9ŠÑ£GÑÖÚJcS3¹yÁ0 #U4éîèÔ-`D÷6ÍÆ‡½­ÝÜÕ­¹@O»šòÖBŸU{«QÉèqªÚ¢ØÊ¡¾-ŒãØØ¶ƒãØŒÞh4JÏî™Äí8Óà`kj>¥5IÇ…B>/Hó×ÐŽ„’‰ÀC~WïŠÇÖŠL"¨>XAMÍA
Š(,êZHЃàùeËÉt.3ÏL Ì«LÉüí ÑÄСC»ôï·µ¶bÛ6õ
45¶ø:@,#·B"
Áªפp.¥ñ¸E4ᤧ£…£×±ä°ö³MþuÁ{Ÿ½ï¡PˆÙ¦”Á I¿ǧ¼‹örêrº@À$
!…8t4ðKÁÅ_täðU@)…í8 -Øq8p œh¤=e õuõ”••¥‚G^j–”tòê}}”^õGm­­457ÛD"jjê|Ðï’—åXÄb1,+ŽmÙ8v(|îeÙ6ñXŒ¸'·ˆD¢DÛcØ
ÒÒÒHO ƒús0pxFg-E·:B"ðüGTþu@kª’ýûЉ´·u9¸¬ì,²²³:t(5µµ444RZRê#ÿËB·ŒL&NOVvöß“ž‘AzF"ç~ôè/ÿ®e¥¥´G¢Äc1ªkk©©IMŸóœˆíþÕ ½ŠŽR|Ht8,xȇÿA(//Ʋb8¶ƒeYGTÙëÀ¨‘#4W(.=¢ßëÞ³;ÙYYdf¤Ó§oÒÓ3Žè¾?=öÄW~ÇŸßþ³”ç$ï»ví¦©±‘ææÊö©½“XPI)qÁ[åžpX8 $#@|ºæ}Ã0éÑ#=¾Ø7ž 55UÔÖTaA¥ï—…úºzêêêinn¢¤´ŒáÆ&B¶fìììCÆð_ñG
‡#¶mßAVÏž 8€Ý»öÐØÜLKS mû"À4
LÓÄ0ÍNp¨Œ Žâ #òÄÊÞH¹Û³×¥P'¢8p œÖÖfâñ8ÿ—à釂#!†ŽPXPD}CH;iá0ñx !Œ#'ð‰ +äCÐåEID!ÿ#+ý
¾é×_¬…ýó¯t:wßìqþç9‹·ö(ø*Ä ¥¥e´4·Ð‰¹JöáQx¸´°#"€ÿKðeVùõ¦WOíG¨iˆ¥ ÑC~MC¬Ó}Þu‡»ÿHáë@YY9ÑhÔ÷a$é§ž~Ø{¿Q%ð©§Ÿ#‹ùΕäÁÜvëOè‡Cà¡&뫬òäÕí!¹ãJî
ùá‹®ù"îÐqì_… †rÈsÕÕ•ô>„ë¾!ðøŸŸD†i¥ÜBåÇØº,ìøßù$¯ÞŽP”ŸHŽ9qÚ!Ÿ™ŒÐC!Øãt¼¦#‡éxþ›à Ép("øZàñ??éûj}<„åoàýâîG|ßó¯t‰ìdHF¼÷ì÷‹Œnuù_Ä9¾È¬ü²p(Nð•8@W,7y’“‘”Œ8 yÉ÷n"õìäs_Eþ~U¢:ܳŽd‡âJ‡‚o:Á—"€#•µÉÈ>ä%OÂáXöáîïøüÃý®gH”§w<ß×8«ÿ2×
Ùu’®®û¦!™¾P
éGºzï;«öŽœ8¿xÅv|Ž–ç‰£ãï{1râ4â
;ôëÿõîë(ÿ»ºîpc9kDSÊØ=ÄW”nN¹¿+ÝÂÃÅ×%„dq`ÌžuÙwuÑŸ{‚µk×ùƒ™6&‡
»¾íž±R²ûð?—Ô‡è+¥¾Jg–z/髯ªHAÀ´19L“ãß 0Í­<ö (%õ¡NÇë«*(©±aW.™(’ÇæåœÓÇûǽßeDVÔ÷†]u7yL
r´Þþ³½çt…ü¢ü
ŒÈŠvùNÞ8¼s×_<šÆÊ­DÉöŸŸ És~ýÅ£ýÏk×®ãÄŽÿZDÐÖÖBFFfg¬Ø’µäŽ+̃¯#ŸµÊ“¶®¾ƒG|º8°Áûá8‰V5R=ÇvRß/Öç=äw¥Hv5ÎäEðEÜ£ã<&s…oTWW&t€;wFرcõõuÄã©}G–”Ì.5™‡R²ÎÑÔå}Þñ®®ïÉ_
uÝ¡®=gy×é˜;.œ#YH_•©‰G­« òò§ÇžèRq;ܤH)8c˜®žxÑýG<ޝ ?¿ýgßÈïtŒþoŒûëÂÿs®àÿ?9ôîÝï›Ï0 ÝíâHë’ÕWÜw'/Î{ŒAƒ‡é²oÇáŠn'Þ=üƒ:Ôëýñç¿pëîðcîÿÆý)þãÀ³¾2˜†‰4 î}á ¦ï,6n\OmÁÎün§S›’J$Ìž2–Û,áñ«/gñÆ]‰ón»ÿá3&SS´ŸÌ1þ°æïÄ"QâÑ8Ç̘ÀÎíÛ¨/?È)œÙ)3RšŽ­Ó±¯<e$¿|öyêʪ8áìÓˆGcXѱöûwóû[ïÔ)gÿ?Jð³‡$-33 ˜žÆ“¿¹…ÜM;üóÓ¿wVÊõ+þþyÝÆÒÍE{›t€YS!wc×›EÁvc 8Žß@ ®¬ªS,Ü!5ôÊSFqý½ÏéŸu³jmËÂŽ[8Ž¢ÿÑÃùÙ³¿`øð‘ü÷®¥¹¹å&¯þ»w1ùŸ†ŽžÀC@ZZ˜áÃâÜ[/`ö”cX¼ig
ò“¡¶à ‘ñüê-Ü|Æq,\¿«¦!wãnfOÑfNu[*ÑÈw«n7o\ï×ýà8HÓàŠF²ôã" kh_¤!Ù¾m›ßzÑí2̤ÉS¸ò”‘ÜóÜ«d
íK}YJ9„2Ói¨¨N¬K˜%%Eüúåçý0ꃗވRŠ––FÛþŽºŠøà­¬P(ÌðáÚì¸ôÙûÀc×\ÉâMz¥Îš’°Ws7íеtB’3Z;^j €€§W®ã¦ÓÈݸ‹YSañ†íÌšz ½GöGNÜæêã&°pývPPSäA–˲Éû¸)Û¡¾¬
a”­Ëª…)õg`UÙrVý+QAð¼›X²¦(ñ¶nA…wEcE= M´·y`Ù3<xÙ
dfvG)Ekkóÿ3„p¨h Øšÿ¹Bbš&ݺõÐ
œ€ß¯û³§Ãí š.¿çrF ¶àP]p SŸ™“¾5C϶ÜxÚò60kÊÑܾèEª *X6G+{¹wi|;[¶l¦º¨‚¥s~NÞÆ=Ìšv O¼³Æ/Ä@Jvn×+Þ
ßõ¹Â'o® kX?êË*ɪ_²¾¬ŠùsoàÅÏËÁ]%~Um;ÒTÑ&0¥À±m·vAñð•7éäK
E[[ËÿiB8\>€Ù£G"uÚKõúãú2{ê8oÚÉc×\Éí –pû‚%8@Îè<~õ~š˜[]"˜:e*­
-~ÿ³«6rÓÓ¹mþjŠ+†æÓŽaÑçÛ‘~}¢ƒ@2sÊQ,ú\§`Í<u$yŸ”¸Èw@AÞÇEZ7N:ï ÓÀs k'*ƒ…З÷î(Á0%¶­üÞ>zë˜|ÒtWö'W”ãpùoîw¯Ä¥ÿõ{Âá @ÑÞÖêZÿwápÈåeE©ú´<ºöo˜Á€O³§ŒãÖ¹ q°ÑÍ’Y“ÇøDP¤œtî Ý}Iòó·ÐTY¯kýæÜÍ¢»´n°As€Í›ÖSSP¡•=±KçÞI}«Vú®¿w~Êœ??÷r?LxŤ”ºžÏ|òÎ*”ã LÉóÞÀïs?Ðà(Š }$7UÔŠ ÇO¥´¬Dw¦stAGs•»CIï,ýõïñ;y¹¥Ú‘H›î÷÷N_„ü. `Þê¿ ˜Áf0à#ù¶KAÀŸ=pçnÚÂ5ñ.õŸoi§¶¸Šd™l¤i•cÙÜ»Ám/hÎQSTŽF:À÷>J¯Ñý‰4¸½„KVÊ¡¾ü (½òÁÕ]\ÂÙµ{§¿³©pK¨šÔ¸mu?!„Ö?Åön9†ËÍZ6¢l›1SuW“¹×ü,ùÞ_¥±Xä?–Žù)pÙ“÷ø'Nœì¯ÄgGîæ]š\O2Õ/à$ Å
Ø´~‚ÊüR̽¥lîžÿþpý¹oÉë‰{îʇ¥ßÁâ
»™=íh.¿÷€"ÞE8ù¼3ýn;wo§®ô >~ÁÙHt5®°}ûVw‰M%÷ê=‰ËFÙº'Ñ AƒÙµakBìU;fÊx¤!QŽbîµ·v‰|¿±RÄbÑ#+ØøC~
ˆmà®ç½ý0nüD¤”ÜxÚ±)D0eÒT¿bkÖ”±>Ø´q#¨.8€ÝeÁÜ[È[[€‚+ŽMî§{˜uâhÂÁLr7ìfóæÔV°ì‘_à8ÁâM{ÀcÅõMìØ¦«‡9fœŸþüéòU à™‡®eÉGE¦ÉÇo­ð‘~Ê…çàÄãÄcqª
Ê)++E9ýû¶¥»ƒ¨Ð"«¿þTVUÒZÓ(ÌP1S'h¢QŠy×ÝvHä'ÿÅ¢ÿv"ø2ÈO!€y«ÿÂÌ´ù—LãÇOG±»dO¢y“€)S¦ú„²qãÆÕ ,˜{3Br×ìÑ2Ö])ÁÌ0üCw¼^:÷~¾Coc;ÁʶùlµÞƒÀqãÆŽ÷ÙÌÎ]ÛýÏÂ)^Á±cÇaÇ-¬hœX{„ƒ%(/+¥èÓ««Ýk‘PYQRŠ~ýû M“ªÊ
ÚZ5q¬~]Gñ»›~Þ%Â}δ¡¶eYÿ6"ø²ÈïD€O(ÅÕ÷>™`ïá cÇ2|ïûÒ9w±xó.ÚZøð_ï‚„…snÁql–¬-ÒÍ–]™ýñ»«X6÷.­ßÉUÇŽaÑú]Zv;ºfîóOÖ€£xøú YúI©–­XóÞÊ”ž{Ž;J‰6禜r<Ñæ6â±8õû²Ÿn\Ñ»W­õ»]5ªÝ-ërzõF55RÐVßÊè‰cüVnŽãðè­w'íœî"ÝÇ}âs]}ÕÕ5Äb1úôéCŸ>=þS®#È[ýykµf·f73O<Šìý|ìÖWbGc¼üè} $·-XJmaÂà/ιËõñëU’5¼/õ%zo¡¼µEÌ:ñ(¼áê=ä ÜU¿Àå¶e#
ÉÖm[|âZúq)ÊQ)صgÙƒûP·¯šçç\ÊaÉšR¶mÛBma%Žemi'Q·¿
'në>€‹ã(…²mª««ýδŽeQ}°ÊßàZÙ6±ö(FÀÀ±t|Á/ní€ð޽%Å%ìÚSH}m’qãÇÒ»W/úôéMNNß4|òW¬xWû8”âÜsÏO9'ÊËŠTòêÏ[[ ÿ®Ùͪ×Þõ/TœþÝsB÷ѹùôc¹má2ª µïŹ¿ðÝÄ
h«oþë=²†÷áw×~úıeóf$ &f(ˆ”ºËF]q¥&< ÒØÚée$а¿Æ·<gM¬-¶͛©+;Èøé“‰´´Ñ\]Oåþ~nNvÊQÔÔÖhö튣ì¬lêëëýÖtÂëÙï7…ÔË>oÞïIjí}<x°ŠWþú7]ßo0 Ì@ÃÜqÇß8x°iÓ¤ÐÖ·eYXqH4‚í9¹\Ñ•LRéx)8ykvë¿k @J²‡õó‘qÆ÷ÏùO¯ZÏcW_†$ÁþgM«
Ç놩'¨¾¤Šëî{–Y'íÿ°0A“ú’*ªvàµÅZ&×UðØ5?æáë.`îõ2÷ú i(;HÃÞjêöVã8ŠgºÆ'&+g[~¾ŽÚŠhk;±¶ûÐÖÐB[}3íu-ì+,eq‘†"­D›ÚPŽ¢¶¶F—h;IL,wÒlÛKëóî?¥¹‚ãRвÒÔV:BHw¯"éö;<þç?ãˆ_¿~7¬?âë—/Oì*"ÊÊ
Õ#«^òÌ<ñ(ò>+Çñ9€θè[þ5žÌw”bwqµ…®˜û ”c#¤Ám –pÔÐQlݾ
€ú’JÕd臷ªæ^ýmr?* šì*ÚÀc×ü˜…ëvÑXU‹a˜(Çbö™c¸çù×@Aý^í 8õü³Èß²I·linǶlêÊ¢b:úgÇ,‚™izµ;*ÉœÓë6;+›ú†ä&‚ììlwÏ ­`ÖÕ×RääôB)øÓÝ÷p(xï½÷)(*ô9€4$†ašÍÂ00¤ Ó3«'á4¯+HbGÃp·Ž“RwH7B¾·ÔóÀ:
tÝR¾˜xpî¹çc^þä½þºb·Ï¯”äoË'{D?êŠ+9ã¢o¥ Ý (xø² ¸oé›ÔWpÙ=¿óBÿ8
*·–’5¼ŸÛyIßfÛ6¿»öb®¾ç) ÃàºûæsÊygbÇl*·•‡P8nŸ>°m@0Èâ•{wÌx>~çýp)øèͺ5K$Žã8ØÑ8ʲôÙzwì¬l•G›Ûè?d‡o²³r¨««u?gûÄ¡Ô×UëHH¸
¥á¬>HAQa§ãRhõÔC¾aº×1R¹þfãòåow¯zý½NŽ‘|×÷¨`üø‰ú£übþ?p”âŹ¿ð#ƒ¹›v°qã¢-íÔ'šGÏøF,;FÞšz·´gÏm»š5´ßH)¥÷R`[†i²m[>YCûø¦¨p”Eœ0}
íM-”aEc <ˆh{»vþ8YYÙÔ)E¬¹]ÿ†.“qài†Bø@­ $õ,êöîÝ×ù ñ†HA¾ÞÖt_m[ÛoÌ?\§÷йkþß|yïƒ;Q¸î‡¾Ât×scÛ¶|7l«'å7þˆ–ö:þ¶£’YSŽF90eÒTÖ­Y“˜T>Ü…Ô
j
 ˜A+j¹s&xjùzÍ \:ܱS+—åÕ88H¯úØÖ~…É'K¤µÝm«ªh­i"+³§«ˆ$êçcÍîFÕ.këjñº£øà·öOhú½z÷ê|¾Ôvì$ÑûItÛÑICbˆÄ>Gòk®~Ï2úZ÷©–»!xÄàMÔ®ÿykv'lýd¢•‚ß]ó¯Ù(fž0šÜ-»™9e4y[
7v<ùÑ8
ûjyaÎXv”eŸ•ÆõJêË ýY^+e»rÎÏ
r8ùÜE±s÷Nj ö³qõg3eV4޲Òº‡‰Çb®¦ÛÇÏ!Ø-L¬¹¶×óŸˆWxPW_çŸ9ü–/PUU™Âþ¥kNJB&o®¬ï8_ù‡##Ý4ÛôÚŽ-YWÈ
§j—oÀmd<÷Š }ŸÀb—PÆŸèß¼Ímò¨‘0!7àØ6[·mEM²†÷åîþ¡u†«.à¾ç_óçóù‡®eáÊÝìܹ¬!}¨/;Hmq…¿1ƒ0 ¼I²†Ö˜R‚º$ݲql›öúVzdêžA]uϨ««%ÚÜN¨[˜h‹û·©Š¦¶ÔŽÌnؘ^ åѲ;W@ïÜÕE¾¾§È¹«ßC¾p•:¤üD@Ç„8ùúÌqå8ˆ[–>œ2CiÝ2Ù¸q½ÚõGïј:e*ï½¢·`q"@vL—:ç ë«#€R§oi/‹Ãï®ÿw?ÿw½aS2B”­ãöj(¯æ” Ï&ùr೫ýë½( ÖÛóó©Þ³Ÿ£Ç¥¥®½eå81‹ݺ»I¢êêR~:ÖÜNÿ¡Z¬«Oì^’rMKâOù{ôî„Ò PSSÍ?^ýWÊ1C˜f3hƒ¤ƒCo 
¥Ñ½[f0˜‚¾/cØ–ívGÐ÷yVèrýX,F{{{—V€rþ¦;.ˈ4·Pëfù¼8÷¼8ïôvÓ½6nÚHΨþäŒ@ï£Ð{Tzî bƒ<}ëuüåO÷Ò÷˜¡"-Ì»îb}´›y×|ן]Dz†À±,œX\‚­WÙG¯½Çå'ñ.‘tÐ e+Ž?ç4-çmå§|×—é|?oÿ>e;´Õ7k-¾¾Žúº:êêë|–™Õ#+±Èý›Y=³ÉÊÊ!++‡ììbÍíZ_PPQºO_ïO^ê¶#»vw^ýz:…»Ñ•V®OÀ0Œ¯ÌþãpbýðµÕõ/xÈ·ãqÌüüÍ)Ï”¦ ‹óò£÷³xÓðøÕWø¡àÇ®¾Ü߈ñ¶Kt’§ÐnàÖnášã'0yÒd6oÙL´)BS[OÉ"oMcÇ68rè(¼È[<Ó”=Fñéò•Üò«\Ž;ãd®8m¿^¤÷è> ;v¸ ÂÂç>=dmi§´¸«]A¨[˜ººZßå‰îìžÙ]¹³äÏVRz€¢ßÔÕ×ùJãòý p9A2¬®a÷®Ý¤ÎVJæFц¿ë™Î†2 “RÇF¾"xDíHP†ÛFRH ¶î^.…ÀN¹'ü¸mc>zÝ%̾çqrð“;æ/ÞOî¦nògbêðøÕ—sÙ½ðgôÚã'ðÂg[™uìQ %bqîûã¿;i"JÁž]; vOmàkÕ+
Ó`Ƕ­ô؋ƽ5\~Ê~5_G ›ö×ù,Ü]À½Ñرц6¬h Dz ¤“&U,;+ÕÿknG•åûé7x`Êó’õÁ`·0ˆµF¨«ÓJáU÷þ’E®K¸¤¤Гì(IKá[€" <ù¤góÒG~Àt·ŠM²º–ä_ Žkátl!*]%*YÏèˆ|+f!s?ÓÊ]î¼ÛÈÞŸ^#û“ãfîþøÎ‡ý›§N
n_ø¢O}7ïâÅy¿@Çã 7ìDš&K6o¸=u8W)TkjeHÿÁšý»ñv+naE£Zk·lº÷Ïâ¿^XŽr
åÕD›[;q<“Ž?–égžÄäeÚé'’Ö=L $" ѳg–ïª6·wB¾‡ØP7Ýl²¢|_¢K'PßXç{ÿPŠììÒzdø;J ©·‹‘¶oßáçEH!BS! }ë+´oZŠi˜ÂpW¾á¶}Ot)ÿ:
÷´Ùëø»Ÿ%ƒÞgÙÝaÝ‹šºÉ¯òcñX´xí.&LšÈ¬ãŽbö}Oø,±½©O?–Åvd${$ÈâM;è=z ·>»„IS¦`L¼±ÔW‚|¶üC²‡÷ó£r—5”eïéÕH ¢”Þ»iÜ_›x1GaEb´Õ6Ò«woö¬ÙB "-#LFv**`Ç,â­ºgtÃ1CºøÃ¶RŒºŠò}ô20iÇ.MàÅ~•åû“ªBß' 'ÇõøÃ¿Ôiìuµ¾(/ ¦»Ó© ´}ò,¦€ìsîÂ0Á ·ï±D}6[!…ÛkØQ`$XBj·¬l@96V<|+niÈ]«C¸³O8šÜµ»é5¼¿ëÏÕ¡Ðg?ZOZfz2}±ióFÊ”µeÙÌ÷Ù¯³éå:–¤¶é¥¡C¿¿}ö=†
nc©¢¢Zk›q,‡É§‡R…kóiFéžÙxLOT<§½©…Æê:ššš†DÙñ@š6i\÷tvVõ
õþ*h3QHI}]!×L(ÊÝÔ1Ô-¬W¾Ç9„Dš þꉋªªªRÛnmB.—0Ü¿-ïÿ€¬Ï%”¦Çë¸ÄöuÜÁÊq°ÓmYoø²ÀBÝ_ï%â@TAÔÐI7bÙ. $³Ž?ŠÅkw1ûø£™ýêr5¬,I„„` ¼[øFb¹$í`ðè¬?*î½ ƒiHâÑf €—aëùêKKŠQŽ"‰1á¸)Ôî­ tÓ®DÚ¹”ÇÑ™?.ïu,‡Œô š››êkkéÙ3Ëw)ƒ gžTíÓnâ:j}B".è?d ;‰zÅWìÝO´¹þCùéãÒ˜“ä@4E&InÃ]ñA –‚4 a÷´‡’ xõ^‚3Ÿ¢½½Ý÷oã {€wPXNœ–Å·’¾£GA›1GÏr‘o±X å(L/±3wí.¶nÍçÎ-ùäŒìÏ£×ýÈ•¥p÷ ¯ø?j¦§ù&Ñã×\Ém –€<~Õe,ܰ“oýðÛ\:q(wÌ…š"íKx纞aØQ#()*ı¢­
ûj5QØŽÎà9P­÷ÌñB³.çJo©÷ r0ý”,ACCƒGøþ²ö8€Fœ–…Ñæ6—½p9ƒÂ0õ¶/iÝÓAéí_„¡moÃËŽöí"+‰bBOòθÛÈi¤ÇØJhŽÐ?¨YqkÞ-¨ï?âÛå]¡_#·kÂðR4¾ò‹ndŽ `íŠc¸Î ÃýívG@‹
Κùd;Kß“üàÚ¢
;ïV¯Ýíûûkܬ€3¾ó-nœ1”Ãâ
Úiû§Ù?fáçÛ¹rÊ(L3È Ÿnõ‹-<x#¹Ÿ2løâmAÑž”ãи¿?iÄÚ"8–í®~oë|6i[¶ÞhQjdvëÞ!MM v.¼}æõx½ðnEùþĦÏBûç=BÓE¤ŠXkD#¤_aH¤”BÌPÐçr†»syQq‰V´<CA( ùŽË ÷ÆdƒÝî*b@ã+¿ôW¦áZµR$Dw\"ÈšýT
´,º¸ö¸4lWìÇè6-LC­E·£Ø{â8è1Ål-Ñ…ÐãÓbI¦rFöOP z
O쮩€g?LèÊ) ®š>–EŸïpwÐHXž†ÀQŠïŸÙŸ¿½·Ÿö¦ͪmšuûÍgðöšƒ(ÇÁŠÅ{ò$Ä‹—»ƒÖÑ<JÏX÷î=RGÙ@@Ï=uÒ‰‹ìÁ£‡ƒRÔÖÕinÓç(©·lC@zV&í­(ÛÇ£F`†‚A‚á4_Çrl¼‰šÆ¶­Í~“zUJF¬ˆ{ˆ8þFf…fÓ!b…‚åÅ&,¾™€ÔHxEB{\sGAÆø4,KÁÞ8jLÀÝQI?×TZ49àr¸$óS¸ wín?³Ç‹ÕUQSRåï˜iiõµýÛ.cц] u‹yð,¸ó…¿2ûÄQ¬« £l;n3tðPìxœÌ>=˜ÿò_¤xYéü.Áö¤á&=˜†iúÖ‚f‰$  ©¹Y#/-D(=@Z@Zˆ@8ˆ4 ÒÒÃÃ!Ò2Ó ¤¨k¬ÇÈìÓaJö—葉±ž´néÓôs‚á4L3H]]=Ã$`˜nk'-Mpò©aN:3̉ç„ñöƒöø9—€)!œ©‘å!E¸¹'¡;—e…𑵼$@Ô-jñˆÃ­‰¥Û„4ºOJÃ0 ²Us0ÓÐD—ê.ašB\0`bfj, «÷w˜8i²¿‰¦î9GçzM˜8”bå¿–c„Rä[?ü—NÆÌ{þä³ÿ«ï{m)(„r4h¥EŤônøÉ±üí­bj÷Wmis}zäÒ0Ü>Ä .ä}÷²ˆµ}®‰¤±¹ #``¦…0p FÐtW­dÿý´Ö4"Œ?åØHÃàÀ­¯(ËFM„´7´"M£SÐÆjkçÛÓNGÑ´i
èa*¦ž«9czº aí?Z9ó‡pà#ìöF(h„&
SèÏ’„œ x¯$Ày#ã¾"únq€óGÆi™FtgÓÕ7R?£×ÄöŽ8–{}ÄѲ¿ÙÖ2OÓý…Ä©¿ü±òV¾7¹ÈÞÔ–T¤AýòmÀQ,œs ÷.}Ã/ö©Ú¥S°?| ¹k ˜uÂhîxîe”uEûqlå·{I$Fè—íÕ=›Úý‰¶ºà^c˜¦»H0·ùƒ÷×¶÷ZƒPz˜æH+fZ@#SH†4$ÅE^øÛÖÈN\gIÃ`è°a!¤§QVZ
ÐT™ˆõ÷˜CU~ ß9îZ6äêãf‚å{H<ñ’ &NÏ@JÁªGª°hj‚š¨k®»Èw\«Á®½î.]S€)o8xÜO÷ú $ÀŒáqÚG§ÛA
Èœ˜æ­]²L›øŽ8qŒQâ6ÄâPß­UZ7P@·3nG¬+ü›˜}NVÌÞßGpÛÌ!÷‘[ý=pAr÷ £¦è çÜÂ’Ï
¹ìØaüê¥w¨.ÚŠ;,ž{‹?Ýå³sÛŠ³5 ŽRÔìÚ‡úSQQ‘P΀°ÑT]ç€aÈ€™IáZ/sW&¯P=û÷&gP_ÔTººÔ•Wã³åЭ_MIB¥˜xÒ±H)1CAœ¸E0"QX\€ã(ÆŒËýç_É;ï¼ÁŽ»hߘë²lèfê•’úŸn„1ô%ooå㥭V—´"©èÆt‹ T¼QàÛ#âü«(ÀwFÆy»8ÀE#ㄎ SÓ ý0¡ ¨mQ ='ˆÅ@о=Ží@«m64zà,]ìb.^»›ÙÇÍ¢9?sY]b½ÏºçÏÚ"X³ËŸy¥¸î‡Ü5ÿ\qü–|VÌÃW\Àuÿõ<‹æü”EkvúȰã 7aù·€R\ñý‰¼ÿi5JA¿~š´i­D†ÃDZZÝ]b¥Ÿ¢y8ž#BsÃ4Iï™I÷>Ùô1ˆíù[PJ3¢/Ò4ÁQŒ}v,{|'Òƒ5ú(Á
E0D
4MMÃ4!¦
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+1 -3
View File
@@ -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);
File diff suppressed because one or more lines are too long
+3 -5
View File
@@ -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);
File diff suppressed because one or more lines are too long
+1 -3
View File
@@ -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);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
@@ -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();
//----------------------------------------------------------------------------------
File diff suppressed because one or more lines are too long
+94
View File
@@ -0,0 +1,94 @@
/*******************************************************************************************
*
* 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"
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
// NOTE: Using chars outside the [32..127] limits!
// NOTE: If a character is not found in the font, it just renders a space
const char msg[256] = "ASCII extended characters:\n¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ\nÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæ\nçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
SpriteFont font;
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [text] example - bmfont unordered loading and drawing");
// NOTE: Loaded font has an unordered list of characters (chars in the range 32..255)
font = LoadSpriteFont("resources/fonts/pixantiqua.fnt"); // BMFont (AngelCode)
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
#else
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
UpdateDrawFrame();
}
#endif
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadSpriteFont(font); // Unload music stream buffers from RAM
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------------------------
// Module Functions Definition
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void)
{
// Update
//----------------------------------------------------------------------------------
// TODO: Update variables here...
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Font name: PixAntiqua", 40, 50, 20, GRAY);
DrawText(FormatText("Font base size: %i", font.baseSize), 40, 80, 20, GRAY);
DrawText(FormatText("Font chars number: %i", font.charsCount), 40, 110, 20, GRAY);
DrawTextEx(font, msg, (Vector2){ 40, 180 }, font.baseSize, 0, MAROON);
EndDrawing();
//----------------------------------------------------------------------------------
}
@@ -0,0 +1,213 @@
info face="PixAntiqua" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=2,2,2,2 spacing=2,2 outline=0
common lineHeight=32 base=27 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
page id=0 file="pixantiqua_0.png"
chars count=184
char id=32 x=9 y=304 width=7 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=33 x=391 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=34 x=240 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=35 x=468 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=36 x=152 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=37 x=176 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=38 x=303 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=39 x=495 y=266 width=8 height=36 xoffset=-3 yoffset=-2 xadvance=5 page=0 chnl=15
char id=40 x=256 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=199 x=432 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=200 x=126 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=201 x=147 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=202 x=288 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=203 x=189 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=204 x=468 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=205 x=486 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=206 x=0 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=207 x=72 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=208 x=329 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=209 x=277 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=210 x=182 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=211 x=26 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=41 x=272 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=42 x=288 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=43 x=414 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=44 x=378 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=45 x=414 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=46 x=443 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=47 x=392 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=48 x=485 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=49 x=450 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=50 x=21 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=51 x=42 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=59 x=456 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=60 x=168 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=61 x=309 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=62 x=336 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=63 x=315 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=64 x=364 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=65 x=390 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=66 x=120 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=67 x=144 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=68 x=168 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=69 x=294 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=52 x=488 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=53 x=63 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=54 x=24 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=55 x=48 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=56 x=72 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=57 x=96 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=58 x=404 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=70 x=252 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=71 x=192 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=72 x=78 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=78 x=78 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=79 x=355 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=80 x=264 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=81 x=381 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=82 x=288 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=83 x=312 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=91 x=144 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=92 x=108 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=93 x=304 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=94 x=34 y=0 width=32 height=36 xoffset=-3 yoffset=-2 xadvance=29 page=0 chnl=15
char id=95 x=231 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=96 x=442 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=97 x=408 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=98 x=432 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=99 x=210 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=84 x=336 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=85 x=360 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=86 x=0 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=87 x=68 y=0 width=30 height=36 xoffset=-3 yoffset=-2 xadvance=27 page=0 chnl=15
char id=88 x=26 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=89 x=384 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=90 x=84 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=100 x=456 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=101 x=480 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=102 x=54 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=103 x=0 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=104 x=24 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=105 x=469 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=106 x=18 y=266 width=16 height=36 xoffset=-8 yoffset=-2 xadvance=8 page=0 chnl=15
char id=107 x=48 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=108 x=417 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=109 x=161 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
char id=110 x=72 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=111 x=96 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=117 x=192 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=118 x=216 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=119 x=248 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
char id=120 x=240 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=121 x=264 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=122 x=288 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=123 x=432 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=124 x=365 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=125 x=378 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=126 x=393 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=127 x=132 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
char id=160 x=0 y=304 width=7 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=161 x=352 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=162 x=351 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=163 x=336 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=165 x=360 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=167 x=384 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=169 x=433 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=170 x=224 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=171 x=105 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=172 x=0 y=0 width=32 height=36 xoffset=-3 yoffset=-2 xadvance=29 page=0 chnl=15
char id=173 x=494 y=38 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=174 x=52 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=175 x=52 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=176 x=126 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=177 x=435 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=178 x=320 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=179 x=336 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=181 x=459 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=112 x=120 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=113 x=144 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=114 x=396 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=115 x=168 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=116 x=36 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=182 x=408 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=183 x=498 y=190 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=185 x=192 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=186 x=208 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=187 x=477 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=191 x=456 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=192 x=407 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=193 x=234 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=194 x=416 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=195 x=156 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=196 x=130 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=197 x=104 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=198 x=190 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
char id=212 x=0 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=213 x=338 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=214 x=312 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=215 x=357 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=216 x=286 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=217 x=456 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=218 x=480 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=219 x=0 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=220 x=24 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=221 x=48 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=222 x=260 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=223 x=72 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=224 x=96 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=225 x=120 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=226 x=144 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=227 x=168 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=228 x=192 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=229 x=216 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=230 x=219 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
char id=231 x=372 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=73 x=90 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
char id=74 x=216 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=75 x=240 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=76 x=273 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=77 x=100 y=0 width=30 height=36 xoffset=-3 yoffset=-2 xadvance=27 page=0 chnl=15
char id=232 x=312 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=233 x=240 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=234 x=264 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=235 x=104 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=236 x=430 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=237 x=482 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=238 x=160 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15
char id=239 x=176 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
char id=240 x=128 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=241 x=200 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=242 x=224 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=243 x=248 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=244 x=272 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=245 x=296 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=246 x=320 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=247 x=330 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=248 x=208 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15
char id=249 x=344 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=250 x=368 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=251 x=416 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=252 x=440 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=253 x=464 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
char id=254 x=0 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
char id=255 x=0 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
‰PNG

IHDRÑ&zIDATxœíÝO^ó*ÀqâçÝ„uƵµS‡u nC‡º Þ¥%p’´Þ‡ßwò\Óük.=ÀœÑ:Ç-r<dÜò 5ާ¯|´?·:ƒ|·éÞñçQ0%E½ÇŸs`žT?¾JÖ(úÛï)ˆo“¿/{.åŽ`W¬DFkGéÄ1jm5†'ïcÃ'-—¢
 sÆ0ÐkÍÏ£ýyŒ×hñqÄ >÷ÕP9éœVШÖ1ú—¥:tæcŒxi×Dèœ+¾ðí1æñÇý{ÿ5-¦öô+{¾Ía†áá[Ø£þó8ïóh¿î§ËƒcZkwƳ;ïÇ5ƒ.­ÓøW2ž¶¿«hKÿÓ
þM?Ôì«BÿzƘÃ0|íçóð–o¦±écÖØ ¾ s€ÎÝù(ô68óý0¼cÌïÓðâV
ôÞ˜}ó½öÛðôëþë÷ix3æí\‰ÇN‘ðcç-wÖ¾O¿á¿ãtÏbudŒ««2[NÄ*þ0 çÚìR­ˆuç¾¾<þØ×!ðüYt¼ÑÚÝéÂß‹Ð9
@çΠ¤Yhe ³ûÚåÚìõ‚f´1ÆßG¬vÛ,†óñr£² jÊ´î\IPå\èÑ»ðß_Ï»¸`oD€ÎÝ]
îÊ¿#5Íܱô&[«ý¹ÃE©Kóq´ÖžºöI÷Ü·S³Qú-¹öìú_ezœœø«6!Ð9WüͲ™m *Ý®.´ïí×½ù8µ1&ñkÚãé£V]jÎÛ0 ®"›ˆÃµïê(çëGí“õ¾‚ÌwºH]«³ß†çOû*u, ˆ£tîî2æh.ÚŤpp ü±¸º‰øaå>¼EÏY|J7”]Òp©.Ê?ñÕVz/B…&tŠœú
kznD€Î¹~€÷Ëx€’ÛUn@72iMÛ¦¯ÖZûz>ñ ãn®ïåüë²O·¯´‡Î?3 /ä´«å½è]ð?ÌZkíçsQÏãáÒ:ÎÐ9
fâÖ¿$˜Ö°`,AÃ"@ç(û_ÍÊ÷_æcØêLúöýp£¥.CÓËû õL`3“ZÅd]mI´Ö̺¢w¯bL;ëcød°ú{ÑÐ9
¦¹¢é®Ê'F͆’ÝÆäŸ)ŠY²ÉºZ¹’³ã‚l Å•ÝÌYëô´dâuËæ¤±‰sˆ£àÚU@ö. 2ÓW.âN«j”<6ü¦59ëå®AÍYª+ÿÇy}£)¹ŒzSÏÌüsÛ¤g­5Û”_™’xkîêè)þª3Ãf¯žñrä8uï„Òt%йÒ0ÊóôÉZª,%ó¡§dCI·™Ë½èçT½NçM(‰·<Ÿ' üqüŒå8åæ{>ÁWz
”³žþ_Óo–Oz!й»4ÓÁ$\¤tó¤ä:&—ùPßÿLÐέÝÉá\¬jr\vƲiÂÙêéuÂ]Í|J –³žGèÜ´( `’ü¢ôlF)ɹl(Ú69éo¶èW&Ú—NÁ-âµÒqÒkÐ~Ö’¸ï€Ð9
@çÎYÂ|¨ŒD,i‚‰÷çz —²¡Ìm£Óƒö|â­4»Ëºù _†çO÷½âsÔ3ÂÔ]ƒi~÷(WŒ÷b  {€Î ½Ûïg׸Õƒ\Ë6RïÅ\>âܸ®àAèô6Ê=R]ê/—Þg<âòŠ¥îºÑŒBçð2<ý®ŸÛ/L¯µ.=½–»ÿ=7šJÒ÷ëo{ ö泑G¯¨Lýu¸œÛFo9¬Bè€nd“ŸÜðEuI`´Ü\z®.mÿòòÚÜ_õÇÕl³>ƒ:G€3“½«f:FQB…Éqt&ér§¨ÊææÒBº¢Åë¡í_û^
Çõû‹‹èç#7[õçOèNuFÅ\–°ìñ'kú=¹ºVÆÝÿ„Ê\i5â,mD˜™|[ó™¸j²j‰:±q5&Yn¢_Šòþµãn·<sžârù
Öï'³áxD€ÎQ:w7ŸoKùäuˆÙ®"Aö®8ÝÄ¡eBŠß_0íbwÉ͵C¢xÜ­—ÿ5Âõ2D€îQ:·¨è™¿+S:ŒÖÚSšÃKõÙ˾îÍ.<†›Y»îÆ¿ãh¿îן£¢+ÀͧOKëLª“I‚i#jâ0 ÃiÖòkòpdë_Ê
Œ¥³™×Cè sW/¾r˜O’yçÖ
Gœúwj5¶‰£tî\ê²]9/ Ò'®ò|Ãçæ×'wÕ6 r¼_öç3“¹¬M~9&7ø²è“5Ælúœý&ã‚åñˆ&qy¾Ñ[¾á:e:GÀ_Wÿ~p”Ç%üs*úGˆüq9ÛJÇ[ÐÐ9
Ì|–+m ‚°eøˆ x‘yÅ@ÖâÀÈX~Üéú‹:d®[öúÒŒRä•çùZÊå¾ÉÜnÿ¹ŠJsQàVîæ~Aé,­‘“Q›òÕ;Ô½a;Y?›zfqø{ûó8=î÷ÚSÖô rÊZk­ßŸ»þD€ÎQ:—)Á+ÕãÐñqšà'tÈìGÏ¢ä"»¢ýâÁKâZžÎæTI£”õÌÙÛÏç\¶²‹üõ'йÙ­•ëC™k…–¶®}‚å³býÝIéláºâ÷òé3w•w7"7w"s³Ê,bCèÞ‚ßG·¥L]/Ūo”•ySÒÛf#˜Ðh|9Í·_tþ>’Äû×îë¤ÙÙ"@ç(»›Ë*¥ù'5
7ŸÅ,þ^oÃӝܨ««zÊeh6в³:Gèœ+bV©µLûªhïÔ):ϹçæmUß^zŽ¿©u»ÊãÑÂDx™çËârá—3÷Ü_ £ï?^¬ß¿+Ëš³Œi×¥4û˜QFRe²zU­_56žD€ÎQà”þ4)Z¯ÕhB
"@ç(0õ!½iýŠ*WCœiÙ¨
²Tõb•·Ÿ­H?ùÅôMÙkÇ ‡Öò1¦>Fv}í|äªÐ9
@ç(‹ ³¥}b‡÷„™Us*µõ}óý0¼§c߇‡oé). s®h£IÍi<¿Ö8ÑòãeF«NF笿Ê(ß±~}môrUãm2¿?“
&XˆRÄhÿ_Äõ:GèÜÝÜ,Ô¹ì^“P¶“²Ze9ë§Ç“gïÎÑWESáĬhùƛޘ‹SÁSçâªmoŒ1¿OÃÛ"@ç(k.Ëw\B峕ý}~ŬdŸ`3î’sµåVZ  sw­ùýjóì-¤f-}h¢Ñ²re ci$ñç)\ŸÑÚ1+å\ s€Îݵß_¯Šk†aX#1ãhí{’õ+“2Ƈn¡ÊвoiçŸV=Z\}¬i–ö s€Î @ö©ŸàmPlrwqv,?Ô©41£Zý~…/fK ºd3w=Ú«¢QÇKWsz>Û" °áûû²Ïñµó(<Y•}kî=}ñyÕŽÈŒsh8Ÿãé:T½*WË*&\"@ç(Æ‘¯p_YuܹFçUÏǩʖ¶–‚›¥ãÿk:G€i·ï"°
¸A•“•É®¶Ö¬d"ôJèZ¥Ùµ™õMî)Xæ¾µvÿÂS­zZWj]Š•ÿ:ú:G€#<˜[?6Î ´¨
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -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();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -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();
File diff suppressed because one or more lines are too long
+9 -9
View File
@@ -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();
//----------------------------------------------------------------------------------
File diff suppressed because one or more lines are too long
+167
View File
@@ -0,0 +1,167 @@
/*******************************************************************************************
*
* 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"
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
const char msg[50] = "TTF SpriteFont";
SpriteFont font;
float fontSize;
Vector2 fontPosition = { 40, screenHeight/2 + 50 };
Vector2 textSize;
int currentFontFilter = 0; // FILTER_POINT
#if !defined(PLATFORM_WEB)
int count = 0;
char **droppedFiles;
#endif
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [text] example - ttf loading");
// NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required)
// TTF SpriteFont loading with custom generation parameters
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);
fontSize = font.baseSize;
SetTextureFilter(font.texture, FILTER_POINT);
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
#else
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
UpdateDrawFrame();
}
#endif
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadSpriteFont(font); // SpriteFont unloading
#if !defined(PLATFORM_WEB)
ClearDroppedFiles(); // Clear internal buffers
#endif
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------------------------
// Module Functions Definition
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void)
{
// Update
//----------------------------------------------------------------------------------
fontSize += GetMouseWheelMove()*4.0f;
// Choose font texture filter method
if (IsKeyPressed(KEY_ONE))
{
SetTextureFilter(font.texture, FILTER_POINT);
currentFontFilter = 0;
}
else if (IsKeyPressed(KEY_TWO))
{
SetTextureFilter(font.texture, FILTER_BILINEAR);
currentFontFilter = 1;
}
else if (IsKeyPressed(KEY_THREE))
{
// NOTE: Trilinear filter won't be noticed on 2D drawing
SetTextureFilter(font.texture, FILTER_TRILINEAR);
currentFontFilter = 2;
}
textSize = MeasureTextEx(font, msg, fontSize, 0);
if (IsKeyDown(KEY_LEFT)) fontPosition.x -= 10;
else if (IsKeyDown(KEY_RIGHT)) fontPosition.x += 10;
#if !defined(PLATFORM_WEB)
// Load a dropped TTF file dynamically (at current fontSize)
if (IsFileDropped())
{
droppedFiles = GetDroppedFiles(&count);
if (count == 1) // Only support one ttf file dropped
{
UnloadSpriteFont(font);
font = LoadSpriteFontTTF(droppedFiles[0], fontSize, 0, 0);
ClearDroppedFiles();
}
}
#endif
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Use mouse wheel to change font size", 20, 20, 10, GRAY);
DrawText("Use KEY_RIGHT and KEY_LEFT to move text", 20, 40, 10, GRAY);
DrawText("Use 1, 2, 3 to change texture filter", 20, 60, 10, GRAY);
DrawText("Drop a new TTF font for dynamic loading", 20, 80, 10, DARKGRAY);
DrawTextEx(font, msg, fontPosition, fontSize, 0, BLACK);
// TODO: It seems texSize measurement is not accurate due to chars offsets...
//DrawRectangleLines(fontPosition.x, fontPosition.y, textSize.x, textSize.y, RED);
DrawRectangle(0, screenHeight - 80, screenWidth, 80, LIGHTGRAY);
DrawText(FormatText("Font size: %02.02f", fontSize), 20, screenHeight - 50, 10, DARKGRAY);
DrawText(FormatText("Text size: [%02.02f, %02.02f]", textSize.x, textSize.y), 20, screenHeight - 30, 10, DARKGRAY);
DrawText("CURRENT TEXTURE FILTER:", 250, 400, 20, GRAY);
if (currentFontFilter == 0) DrawText("POINT", 570, 400, 20, BLACK);
else if (currentFontFilter == 1) DrawText("BILINEAR", 570, 400, 20, BLACK);
else if (currentFontFilter == 2) DrawText("TRILINEAR", 570, 400, 20, BLACK);
EndDrawing();
//----------------------------------------------------------------------------------
}
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -85,7 +85,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadTexture(smoke); // Texture unloading
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -96,7 +96,6 @@ void UpdateDrawFrame(void)
DrawText("this IS a texture loaded from an image!", 300, 370, 10, GRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
File diff suppressed because one or more lines are too long
+136 -126
View File
@@ -87,9 +87,11 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
endif
endif
ifeq ($(PLATFORM),PLATFORM_WEB)
CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources
#-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 --preload-file resources
# -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
@@ -122,7 +124,6 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
INCLUDES += -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads
endif
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
# add standard directories for GNU/Linux
ifeq ($(PLATFORM_OS),WINDOWS)
# external libraries headers
# GLFW3
@@ -130,6 +131,14 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
# 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
@@ -202,65 +211,66 @@ endif
# define all object files required
EXAMPLES = \
core_basic_window \
core_input_keys \
core_input_mouse \
core_mouse_wheel \
core_input_gamepad \
core_random_values \
core_color_select \
core_drop_files \
core_storage_values \
core_gestures_detection \
core_3d_mode \
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 \
shapes_logo_raylib_anim \
textures_logo_raylib \
textures_image_loading \
textures_rectangle \
textures_srcrec_dstrec \
textures_to_image \
textures_raw_data \
textures_formats_loading \
textures_particles_trail_blending \
textures_image_processing \
textures_image_drawing \
text_sprite_fonts \
text_bmfont_ttf \
text_rbmf_fonts \
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_standard_lighting \
audio_sound_loading \
audio_music_stream \
audio_module_playing \
audio_raw_stream \
physics_demo \
physics_friction \
physics_movement \
physics_restitution \
physics_shatter \
core/core_basic_window \
core/core_input_keys \
core/core_input_mouse \
core/core_mouse_wheel \
core/core_input_gamepad \
core/core_random_values \
core/core_color_select \
core/core_drop_files \
core/core_storage_values \
core/core_gestures_detection \
core/core_3d_mode \
core/core_3d_picking \
core/core_3d_camera_free \
core/core_3d_camera_first_person \
core/core_2d_camera \
core/core_world_screen \
core/core_vr_simulator \
shapes/shapes_logo_raylib \
shapes/shapes_basic_shapes \
shapes/shapes_colors_palette \
shapes/shapes_logo_raylib_anim \
textures/textures_logo_raylib \
textures/textures_image_loading \
textures/textures_rectangle \
textures/textures_srcrec_dstrec \
textures/textures_to_image \
textures/textures_raw_data \
textures/textures_formats_loading \
textures/textures_particles_trail_blending \
textures/textures_image_processing \
textures/textures_image_drawing \
text/text_sprite_fonts \
text/text_bmfont_ttf \
text/text_rbmf_fonts \
text/text_format_text \
text/text_font_select \
text/text_writing_anim \
text/text_ttf_loading \
text/text_bmfont_unordered \
models/models_geometric_shapes \
models/models_box_collisions \
models/models_billboard \
models/models_obj_loading \
models/models_heightmap \
models/models_cubicmap \
models/models_ray_picking \
shaders/shaders_model_shader \
shaders/shaders_shapes_textures \
shaders/shaders_custom_uniform \
shaders/shaders_postprocessing \
shaders/shaders_standard_lighting \
audio/audio_sound_loading \
audio/audio_music_stream \
audio/audio_module_playing \
audio/audio_raw_stream \
physac/physics_demo \
physac/physics_friction \
physac/physics_movement \
physac/physics_restitution \
physac/physics_shatter \
fix_dylib \
@@ -272,23 +282,23 @@ all: examples
examples: $(EXAMPLES)
# compile [core] example - basic window
core_basic_window: core_basic_window.c
core/core_basic_window: core/core_basic_window.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - keyboard input
core_input_keys: core_input_keys.c
core/core_input_keys: core/core_input_keys.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - mouse input
core_input_mouse: core_input_mouse.c
core/core_input_mouse: core/core_input_mouse.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - mouse wheel
core_mouse_wheel: core_mouse_wheel.c
core/core_mouse_wheel: core/core_mouse_wheel.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - gamepad input
core_input_gamepad: core_input_gamepad.c
core/core_input_gamepad: core/core_input_gamepad.c
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@@ -296,15 +306,15 @@ else
endif
# compile [core] example - generate random values
core_random_values: core_random_values.c
core/core_random_values: core/core_random_values.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - color selection (collision detection)
core_color_select: core_color_select.c
core/core_color_select: core/core_color_select.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - drop files
core_drop_files: core_drop_files.c
core/core_drop_files: core/core_drop_files.c
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@@ -312,7 +322,7 @@ else
endif
# compile [core] example - storage values
core_storage_values: core_storage_values.c
core/core_storage_values: core/core_storage_values.c
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@@ -320,211 +330,211 @@ else
endif
# compile [core] example - gestures detection
core_gestures_detection: core_gestures_detection.c
core/core_gestures_detection: core/core_gestures_detection.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d mode
core_3d_mode: core_3d_mode.c
core/core_3d_mode: core/core_3d_mode.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d picking
core_3d_picking: core_3d_picking.c
core/core_3d_picking: core/core_3d_picking.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d camera free
core_3d_camera_free: core_3d_camera_free.c
core/core_3d_camera_free: core/core_3d_camera_free.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d camera first person
core_3d_camera_first_person: core_3d_camera_first_person.c
core/core_3d_camera_first_person: core/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
core/core_2d_camera: core/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
core/core_world_screen: core/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 [core] example - vr simulator
core/core_vr_simulator: core/core_vr_simulator.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
shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - basic shapes usage (rectangle, circle, ...)
shapes_basic_shapes: shapes_basic_shapes.c
shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - raylib color palette
shapes_colors_palette: shapes_colors_palette.c
shapes/shapes_colors_palette: shapes/shapes_colors_palette.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - raylib logo animation
shapes_logo_raylib_anim: shapes_logo_raylib_anim.c
shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - raylib logo texture loading
textures_logo_raylib: textures_logo_raylib.c
textures/textures_logo_raylib: textures/textures_logo_raylib.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - image loading and conversion to texture
textures_image_loading: textures_image_loading.c
textures/textures_image_loading: textures/textures_image_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture rectangle drawing
textures_rectangle: textures_rectangle.c
textures/textures_rectangle: textures/textures_rectangle.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture source and destination rectangles
textures_srcrec_dstrec: textures_srcrec_dstrec.c
textures/textures_srcrec_dstrec: textures/textures_srcrec_dstrec.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture to image
textures_to_image: textures_to_image.c
textures/textures_to_image: textures/textures_to_image.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture raw data
textures_raw_data: textures_raw_data.c
textures/textures_raw_data: textures/textures_raw_data.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture formats loading
textures_formats_loading: textures_formats_loading.c
textures/textures_formats_loading: textures/textures_formats_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture particles trail blending
textures_particles_trail_blending: textures_particles_trail_blending.c
textures/textures_particles_trail_blending: textures/textures_particles_trail_blending.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture image processing
textures_image_processing: textures_image_processing.c
textures/textures_image_processing: textures/textures_image_processing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture image drawing
textures_image_drawing: textures_image_drawing.c
textures/textures_image_drawing: textures/textures_image_drawing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - sprite fonts loading
text_sprite_fonts: text_sprite_fonts.c
text/text_sprite_fonts: text/text_sprite_fonts.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - bmfonts and ttf loading
text_bmfont_ttf: text_bmfont_ttf.c
text/text_bmfont_ttf: text/text_bmfont_ttf.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - raylib bitmap fonts (rBMF)
text_rbmf_fonts: text_rbmf_fonts.c
text/text_rbmf_fonts: text/text_rbmf_fonts.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - text formatting
text_format_text: text_format_text.c
text/text_format_text: text/text_format_text.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - font selection program
text_font_select: text_font_select.c
text/text_font_select: text/text_font_select.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - text writing animation
text_writing_anim: text_writing_anim.c
text/text_writing_anim: text/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
text/text_ttf_loading: text/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
text/text_bmfont_unordered: text/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
models/models_geometric_shapes: models/models_geometric_shapes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - box collisions
models_box_collisions: models_box_collisions.c
models/models_box_collisions: models/models_box_collisions.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - basic window
models_planes: models_planes.c
models/models_planes: models/models_planes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - billboard usage
models_billboard: models_billboard.c
models/models_billboard: models/models_billboard.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - OBJ model loading
models_obj_loading: models_obj_loading.c
models/models_obj_loading: models/models_obj_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - heightmap loading
models_heightmap: models_heightmap.c
models/models_heightmap: models/models_heightmap.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - cubesmap loading
models_cubicmap: models_cubicmap.c
models/models_cubicmap: models/models_cubicmap.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - model ray picking
models_ray_picking: models_ray_picking.c
models/models_ray_picking: models/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
shaders/shaders_model_shader: shaders/shaders_model_shader.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - shapes texture shader
shaders_shapes_textures: shaders_shapes_textures.c
shaders/shaders_shapes_textures: shaders/shaders_shapes_textures.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - custom uniform in shader
shaders_custom_uniform: shaders_custom_uniform.c
shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - postprocessing shader
shaders_postprocessing: shaders_postprocessing.c
shaders/shaders_postprocessing: shaders/shaders_postprocessing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - standard lighting
shaders_standard_lighting: shaders_standard_lighting.c
shaders/shaders_standard_lighting: shaders/shaders_standard_lighting.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - sound loading and playing (WAV and OGG)
audio_sound_loading: audio_sound_loading.c
audio/audio_sound_loading: audio/audio_sound_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - music stream playing (OGG)
audio_music_stream: audio_music_stream.c
audio/audio_music_stream: audio/audio_music_stream.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - module playing (XM)
audio_module_playing: audio_module_playing.c
audio/audio_module_playing: audio/audio_module_playing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - raw audio streaming
audio_raw_stream: audio_raw_stream.c
audio/audio_raw_stream: audio/audio_raw_stream.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [physac] example - physics demo
physics_demo: physics_demo.c
physac/physics_demo: physac/physics_demo.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -lpthread -D$(PLATFORM) $(WINFLAGS)
# compile [physac] example - physics friction
physics_friction: physics_friction.c
physac/physics_friction: physac/physics_friction.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -lpthread -D$(PLATFORM) $(WINFLAGS)
# compile [physac] example - physics movement
physics_movement: physics_movement.c
physac/physics_movement: physac/physics_movement.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -lpthread -D$(PLATFORM) $(WINFLAGS)
# compile [physac] example - physics restitution
physics_restitution: physics_restitution.c
physac/physics_restitution: physac/physics_restitution.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -lpthread -D$(PLATFORM) $(WINFLAGS)
# compile [physac] example - physics shatter
physics_shatter: physics_shatter.c
physac/physics_shatter: physac/physics_shatter.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -lpthread -D$(PLATFORM) $(WINFLAGS)
# fix dylib install path name for each executable (MAC)

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

+114
View File
@@ -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;
}

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Some files were not shown because too many files have changed in this diff Show More