diff --git a/CMakeLists.txt b/CMakeLists.txt index bc30fd6..d1b5480 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,6 @@ target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/i target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARIES} ${FREETYPE_LIBRARIES} z GL /usr/local/lib/libfreetype-gl.a) add_subdirectory(src) -add_subdirectory(ftgl) install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION "lib") install(DIRECTORY include/glez DESTINATION "include") diff --git a/ftgl/CMakeLists.txt b/ftgl/CMakeLists.txt deleted file mode 100644 index 1055e1d..0000000 --- a/ftgl/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ - - -#target_sources(glez PRIVATE - #"${CMAKE_CURRENT_LIST_DIR}/mat4.c") \ No newline at end of file diff --git a/ftgl/freetype-gl.h b/ftgl/freetype-gl.h deleted file mode 100644 index f6fe1de..0000000 --- a/ftgl/freetype-gl.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Freetype GL - A C OpenGL Freetype engine - * - * Distributed under the OSI-approved BSD 2-Clause License. See accompanying - * file `LICENSE` for more details. - */ -#ifndef __FREETYPE_GL_H__ -#define __FREETYPE_GL_H__ - -/* Mandatory */ -#include "opengl.h" -#include "vec234.h" -#include "vector.h" -#include "texture-atlas.h" -#include "texture-font.h" - -#ifdef __cplusplus -#ifndef NOT_USING_FT_GL_NAMESPACE -using namespace ftgl; -#endif /* NOT_USING_FT_GL_NAMESPACE */ -#endif /* __cplusplus */ - -#endif /* FREETYPE_GL_H */ diff --git a/ftgl/texture-atlas.h b/ftgl/texture-atlas.h deleted file mode 100644 index bea165b..0000000 --- a/ftgl/texture-atlas.h +++ /dev/null @@ -1,184 +0,0 @@ -/* Freetype GL - A C OpenGL Freetype engine - * - * Distributed under the OSI-approved BSD 2-Clause License. See accompanying - * file `LICENSE` for more details. - * ============================================================================ - * - * - * This source is based on the article by Jukka Jylänki : - * "A Thousand Ways to Pack the Bin - A Practical Approach to - * Two-Dimensional Rectangle Bin Packing", February 27, 2010. - * - * More precisely, this is an implementation of the Skyline Bottom-Left - * algorithm based on C++ sources provided by Jukka Jylänki at: - * http://clb.demon.fi/files/RectangleBinPack/ - * - * ============================================================================ - */ -#ifndef __TEXTURE_ATLAS_H__ -#define __TEXTURE_ATLAS_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "vector.h" -#include "vec234.h" - -#ifdef __cplusplus -namespace ftgl -{ -#endif - -/** - * @file texture-atlas.h - * @author Nicolas Rougier (Nicolas.Rougier@inria.fr) - * - * @defgroup texture-atlas Texture atlas - * - * A texture atlas is used to pack several small regions into a single texture. - * - * The actual implementation is based on the article by Jukka Jylänki : "A - * Thousand Ways to Pack the Bin - A Practical Approach to Two-Dimensional - * Rectangle Bin Packing", February 27, 2010. - * More precisely, this is an implementation of the Skyline Bottom-Left - * algorithm based on C++ sources provided by Jukka Jylänki at: - * http://clb.demon.fi/files/RectangleBinPack/ - * - * - * Example Usage: - * @code - * #include "texture-atlas.h" - * - * ... - * - * / Creates a new atlas of 512x512 with a depth of 1 - * texture_atlas_t * atlas = texture_atlas_new( 512, 512, 1 ); - * - * // Allocates a region of 20x20 - * ivec4 region = texture_atlas_get_region( atlas, 20, 20 ); - * - * // Fill region with some data - * texture_atlas_set_region( atlas, region.x, region.y, region.width, - * region.height, data, stride ) - * - * ... - * - * @endcode - * - * @{ - */ - -/** - * A texture atlas is used to pack several small regions into a single texture. - */ -typedef struct texture_atlas_t -{ - /** - * Allocated nodes - */ - vector_t *nodes; - - /** - * Width (in pixels) of the underlying texture - */ - size_t width; - - /** - * Height (in pixels) of the underlying texture - */ - size_t height; - - /** - * Depth (in bytes) of the underlying texture - */ - size_t depth; - - /** - * Allocated surface size - */ - size_t used; - - /** - * Texture identity (OpenGL) - */ - unsigned int id; - - /** - * Atlas data - */ - unsigned char *data; - - /** - * Custom field - */ - char dirty; - -} texture_atlas_t; - -/** - * Creates a new empty texture atlas. - * - * @param width width of the atlas - * @param height height of the atlas - * @param depth bit depth of the atlas - * @return a new empty texture atlas. - * - */ -texture_atlas_t *texture_atlas_new(const size_t width, const size_t height, - const size_t depth); - -/** - * Deletes a texture atlas. - * - * @param self a texture atlas structure - * - */ -void texture_atlas_delete(texture_atlas_t *self); - -/** - * Allocate a new region in the atlas. - * - * @param self a texture atlas structure - * @param width width of the region to allocate - * @param height height of the region to allocate - * @return Coordinates of the allocated region - * - */ -ivec4 texture_atlas_get_region(texture_atlas_t *self, const size_t width, - const size_t height); - -/** - * Upload data to the specified atlas region. - * - * @param self a texture atlas structure - * @param x x coordinate the region - * @param y y coordinate the region - * @param width width of the region - * @param height height of the region - * @param data data to be uploaded into the specified region - * @param stride stride of the data - * - */ -void texture_atlas_set_region(texture_atlas_t *self, const size_t x, - const size_t y, const size_t width, - const size_t height, const unsigned char *data, - const size_t stride); - -/** - * Remove all allocated regions from the atlas. - * - * @param self a texture atlas structure - */ -void texture_atlas_clear(texture_atlas_t *self); - -/** @} */ - -#ifdef __cplusplus -} -} -#endif - -#endif /* __TEXTURE_ATLAS_H__ */ diff --git a/src/draw.cpp b/src/draw.cpp index ca880a5..ae8857e 100644 --- a/src/draw.cpp +++ b/src/draw.cpp @@ -31,7 +31,7 @@ void internal_draw_string(float x, float y, const std::string& string, glez::bind(fnt->atlas->id); - if (fnt->atlas->dirty) { + if (fnt->atlas->modified) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -39,7 +39,7 @@ void internal_draw_string(float x, float y, const std::string& string, glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, fnt->atlas->width, fnt->atlas->height, 0, GL_RED, GL_UNSIGNED_BYTE, fnt->atlas->data); - fnt->atlas->dirty = 0; + fnt->atlas->modified = 0; } const char* sstring = string.c_str();