Compare commits

...

11 Commits

Author SHA1 Message Date
James Turk
3be471f750 Update README 2016-10-16 00:34:28 -04:00
James Turk
8be25bcebc add LICENSE for GitHub to pick up 2016-10-16 00:32:58 -04:00
James Turk
8f02ca1df2 fix clang warning on std::max 2016-10-06 23:50:01 -04:00
James Turk
4e8b9c2fa3 OSX build options 2016-10-06 23:46:48 -04:00
James Turk
189e89ae21 fix vsnprintf 2011-02-28 21:18:08 -05:00
PureW
a4248ddef7 Added library needed for compilation
Signed-off-by: James Turk <james.p.turk@gmail.com>
2009-06-19 10:26:56 +08:00
PureW
97a65f92d1 Wouldn't compile on linux due memset and strlen not members of std-namespace
Signed-off-by: James Turk <james.p.turk@gmail.com>
2009-06-19 10:26:55 +08:00
James Turk
ec14f0c1b5 point at polimath and other changes 2008-12-12 00:31:14 -05:00
cozman
ce9d4b490a archive automation 2005-07-18 22:37:52 +00:00
cozman
5d82bb0dac release of 0.2 2005-07-18 22:32:26 +00:00
cozman
2cd172d158 added Makefile 2005-07-18 22:28:27 +00:00
7 changed files with 88 additions and 127 deletions

View File

@ -1,42 +1,44 @@
// GLFT_Font (http://www.cs.rit.edu/~jpt2433/glftfont/)
// by James Turk (jpt2433@rit.edu)
// GLFT_Font (http://polimath.com/blog/code/glft_font/)
// by James Turk (james.p.turk@gmail.com)
// Based on work by Marijn Haverbeke (http://marijn.haverbeke.nl)
//
// Version 0.1 - Released 1 July 2005 - Initial Release
// Version 0.2 - Released 18 July 2005 - Added beginDraw/endDraw,
// Version 0.2.2 - Released 28 February 2011 - Fixed linux compilation.
// Version 0.2.1 - Released 2 March 2008 - Updated contact information.
// Version 0.2.0 - Released 18 July 2005 - Added beginDraw/endDraw,
// Changed vsprintf to vsnprintf
// Version 0.1.0 - Released 1 July 2005 - Initial Release
//
// $Id: GLFT_Font.cpp,v 1.1 2005/07/18 22:19:16 cozman Exp $
//
// Copyright (c) 2005, James Turk
// Copyright (c) 2005-2008, James Turk
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the GLFT_Font nor the names of its contributors
// may be used to endorse or promote products derived from this software
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
#include "GLFT_Font.hpp"
#include <cstring>
// static members
FT_Library FTLibraryContainer::library_;
@ -92,7 +94,7 @@ GLFT_Font::~GLFT_Font()
void GLFT_Font::open(const std::string& filename, unsigned int size)
{
const size_t MARGIN = 3;
// release the font if it already exists
if(isValid())
{
@ -144,8 +146,8 @@ void GLFT_Font::open(const std::string& filename, unsigned int size)
lineSpace -= widths_[ch];
maxAscent = std::max(face->glyph->bitmap_top, maxAscent);
maxDescent = std::max(face->glyph->bitmap.rows -
face->glyph->bitmap_top, maxDescent);
maxDescent = std::max((int)face->glyph->bitmap.rows -
(int)face->glyph->bitmap_top, maxDescent);
}
height_ = maxAscent + maxDescent; // calculate height_ for text
@ -163,7 +165,7 @@ void GLFT_Font::open(const std::string& filename, unsigned int size)
// create and zero the memory
unsigned char* image = new unsigned char[imageHeight * imageWidth];
std::memset(image, 0, imageHeight * imageWidth);
memset(image, 0, imageHeight * imageWidth);
// These are the position at which to draw the next glyph
size_t x = MARGIN;
@ -268,13 +270,13 @@ void GLFT_Font::drawText(float x, float y, const char *str, ...) const
char buf[1024];
va_start(args,str);
std::vsnprintf(buf, 1024, str, args); // avoid buffer overflow
vsnprintf(buf, 1024, str, args); // avoid buffer overflow
va_end(args);
glBindTexture(GL_TEXTURE_2D, texID_);
glPushMatrix();
glTranslated(x,y,0);
for(unsigned int i=0; i < std::strlen(buf); ++i)
for(unsigned int i=0; i < strlen(buf); ++i)
{
unsigned char ch( buf[i] - SPACE ); // ch-SPACE = DisplayList offset
// replace characters outside the valid range with undrawable
@ -329,7 +331,7 @@ std::ostream& GLFT_Font::beginDraw(float x, float y)
return ss_;
}
StreamFlusher GLFT_Font::endDraw()
StreamFlusher GLFT_Font::endDraw()
{
drawText(drawX_, drawY_, ss_.str()); // draw the string
ss_.str(""); // clear the buffer

View File

@ -1,14 +1,14 @@
// GLFT_Font (http://www.cs.rit.edu/~jpt2433/glftfont/)
// by James Turk (jpt2433@rit.edu)
// GLFT_Font (http://polimath.com/blog/code/glft_font/)
// by James Turk (james.p.turk@gmail.com)
// Based on work by Marijn Haverbeke (http://marijn.haverbeke.nl)
//
// Version 0.1 - Released 1 July 2005 - Initial Release
// Version 0.2 - Released 18 July 2005 - Added beginDraw/endDraw,
// Version 0.2.2 - Released 28 February 2011 - Fixed linux compilation.
// Version 0.2.1 - Released 2 March 2008 - Updated contact information.
// Version 0.2.0 - Released 18 July 2005 - Added beginDraw/endDraw,
// Changed vsprintf to vsnprintf
// Version 0.1.0 - Released 1 July 2005 - Initial Release
//
// $Id: GLFT_Font.hpp,v 1.1 2005/07/18 22:19:16 cozman Exp $
//
// Copyright (c) 2005, James Turk
// Copyright (c) 2005-2008, James Turk
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@ -39,7 +39,11 @@
#ifndef GLFT_FONT_HPP
#define GLFT_FONT_HPP
#ifdef __APPLE__
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>
#endif
#include <ft2build.h>
#include FT_FREETYPE_H

23
LICENSE Normal file
View File

@ -0,0 +1,23 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the GLFT_Font nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
UNAME := $(shell uname)
ifeq ($(UNAME), Darwin)
GL := -framework OpenGL
else
GL := -lGL -lXrandr
endif
test: test.cpp GLFT_Font.cpp
g++ GLFT_Font.cpp test.cpp -o test -Wall -pedantic -lglfw $(GL) -lfreetype -pthread `freetype-config --cflags`
glftfont.tar.gz:
tar -czf glftfont.tar.gz GLFT_Font.cpp GLFT_Font.hpp index.html README test.cpp Makefile

41
README
View File

@ -1,34 +1,9 @@
// GLFT_Font (http://www.cs.rit.edu/~jpt2433/glftfont/)
// by James Turk (jpt2433@rit.edu)
// Based on work by Marijn Haverbeke (http://marijn.haverbeke.nl)
//
// Version 0.1 - Released 1 July 2005
//
// Copyright (c) 2005, James Turk
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the GLFT_Font nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
GLFT_Font
by James Turk (james.p.turk@gmail.com)
Based on work by Marijn Haverbeke (http://marijn.haverbeke.nl)
$Id: README,v 1.1 2005/07/18 22:19:16 cozman Exp $
Version 0.2.2 - Released 28 February 2011 - Fixed linux compilation.
Version 0.2.1 - Released 2 March 2008 - Updated contact information.
Version 0.2.0 - Released 18 July 2005 - Added beginDraw/endDraw,
Changed vsprintf to vsnprintf
Version 0.1.0 - Released 1 July 2005 - Initial Release

View File

@ -1,55 +0,0 @@
<html>
<head><title>GLFT_Font</title></head>
<body>
<h1>GLFT_Font</h1>
<h2>About GLFT_Font</h2>
<p>
GLFT_Font is originally by <a href="mailto:jpt2433@rit.edu">James Turk</a>
although it is based on the work of
<a href="http://marijn.haverbeke.nl">Marijn Haverbeke</a>. GLFT_Font allows
programmers to use fonts in their OpenGL applications with great ease on any
platform for which both <a href="http://freetype.org">FreeType2</a> and
<a href="http://opengl.org">OpenGL</a> are available.
</p>
<h2>Obtaining GLFT_Font</h2>
<p>
The latest copy of GLFT_Font will be available via this website.
At the moment the latest version is <a href="glftfont-0.1.tar.gz">0.1</a>.
</p>
<h2>Using GLFT_Font</h2>
<p>
Using GLFT_Font is designed to be extremely simple. The simplest use is:
<hr />
<pre>
#include "GLFT_Font.h"
...
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
...
Font fnt("somefont.ttf", size);
...
fnt.drawText(x, y, "Hello World");
</pre>
<hr />
GLFT_Font also includes support for finding the width/height of a string and
drawText supports printf-style argument formatting.
</p>
<h2>Changelog</h2>
<p>
<ul>
<li> <a href="glftfont-0.1.tar.gz">Version 0.1</a> - 1 July 2005 - Initial Release </li>
</ul>
</p>
<hr />
<p><em>$Id: index.html,v 1.1 2005/07/18 22:19:16 cozman Exp $</em></p>
</body>
</html>

View File

@ -1,8 +1,7 @@
// This file is distributed along with GLFT_Font and is in the public domain.
// Compiled with g++ GLFT_Font.cpp test.cpp -o test -Wall -pedantic
// -lglfw -lGL -lfreetype
// -lglfw -lGL -pthread -lfreetype `freetype-config --cflags`
//
// $Id: test.cpp,v 1.1 2005/07/18 22:19:16 cozman Exp $
#include <GL/glfw.h>
#include "GLFT_Font.hpp"