Fully removed the freetype-dl hard dependancy.
This commit is contained in:
parent
2a0d014356
commit
b9deda34a2
@ -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)
|
target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARIES} ${FREETYPE_LIBRARIES} z GL /usr/local/lib/libfreetype-gl.a)
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(ftgl)
|
|
||||||
|
|
||||||
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION "lib")
|
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION "lib")
|
||||||
install(DIRECTORY include/glez DESTINATION "include")
|
install(DIRECTORY include/glez DESTINATION "include")
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#target_sources(glez PRIVATE
|
|
||||||
#"${CMAKE_CURRENT_LIST_DIR}/mat4.c")
|
|
@ -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 */
|
|
@ -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 <stdlib.h>
|
|
||||||
|
|
||||||
#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__ */
|
|
@ -31,7 +31,7 @@ void internal_draw_string(float x, float y, const std::string& string,
|
|||||||
|
|
||||||
glez::bind(fnt->atlas->id);
|
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_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 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);
|
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,
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, fnt->atlas->width,
|
||||||
fnt->atlas->height, 0, GL_RED, GL_UNSIGNED_BYTE,
|
fnt->atlas->height, 0, GL_RED, GL_UNSIGNED_BYTE,
|
||||||
fnt->atlas->data);
|
fnt->atlas->data);
|
||||||
fnt->atlas->dirty = 0;
|
fnt->atlas->modified = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* sstring = string.c_str();
|
const char* sstring = string.c_str();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user