FTGL crap
This commit is contained in:
parent
03691c11ab
commit
fc6ce7335c
@ -5,7 +5,7 @@
|
||||
# James Turk (jpt2433@rit.edu)
|
||||
#
|
||||
# Version:
|
||||
# $Id: SConstruct,v 1.12 2005/06/11 05:28:41 cozman Exp $
|
||||
# $Id: SConstruct,v 1.13 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
import os,os.path
|
||||
import glob
|
||||
@ -74,7 +74,7 @@ header.close()
|
||||
BuildDir('build', 'src', duplicate=0)
|
||||
|
||||
lib = env.Library(os.path.join('lib',LIBRARY), source=SRC_FILES,
|
||||
CPPPATH = 'include', CPPFLAGS = '-Wall -pedantic')
|
||||
CPPPATH = ['include', '/usr/include/freetype2/'], CPPFLAGS = '-Wall -pedantic')
|
||||
env.Alias(LIBRARY,lib)
|
||||
env.Default(LIBRARY)
|
||||
|
||||
@ -89,8 +89,8 @@ test_srcs = glob.glob( os.path.join('test', '*_test.cpp') )
|
||||
|
||||
for test_src in test_srcs:
|
||||
test_name = test_src.replace('_test.cpp','')
|
||||
tests.append(env.Program(test_name, source=test_src, CPPPATH = INC_DIRS,
|
||||
tests.append(env.Program(test_name, source=test_src, CPPPATH = INC_DIRS+['/usr/include/freetype2/'],
|
||||
LIBPATH='./lib', CPPFLAGS = '-Wall -pedantic',
|
||||
LIBS=['photon',OAL_LIB,'glfw',OGL_LIB,GLU_LIB,'physfs','corona']))
|
||||
LIBS=['photon',OAL_LIB,'glfw',OGL_LIB,GLU_LIB,'physfs','corona','freetype','ftgl']))
|
||||
env.Alias('test',tests)
|
||||
|
||||
|
@ -27,9 +27,11 @@
|
||||
#include "util/filesys/filesys.hpp"
|
||||
#include "video/Pen.hpp"
|
||||
#include "video/Image.hpp"
|
||||
#include "video/FontResourceManager.hpp"
|
||||
#include "video/Texture.hpp"
|
||||
#include "video/Color.hpp"
|
||||
#include "video/TextureResourceManager.hpp"
|
||||
#include "video/VideoCore.hpp"
|
||||
#include "video/Font.hpp"
|
||||
|
||||
#endif // PHOTON_HPP
|
||||
|
86
include/video/Font.hpp
Normal file
86
include/video/Font.hpp
Normal file
@ -0,0 +1,86 @@
|
||||
//This file is part of Photon (http://photon.sourceforge.net)
|
||||
//Copyright (C) 2004-2005 James Turk
|
||||
//
|
||||
// Author:
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: Font.hpp,v 1.1 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#ifndef PHOTON_VIDEO_FONT_HPP
|
||||
#define PHOTON_VIDEO_FONT_HPP
|
||||
|
||||
#include "video/FontResourceManager.hpp"
|
||||
#include "ResourceManaged.hpp"
|
||||
|
||||
namespace photon
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
// Class: Font
|
||||
// Simple OO wrapper around a TrueType font that can be drawn to textures and
|
||||
// rendered via OpenGL.
|
||||
//
|
||||
// Since Font is a child of <ResourceManaged>, all memory management is
|
||||
// taken care of.
|
||||
//
|
||||
// Operators:
|
||||
// - Font = Font
|
||||
// - bool : True if font is loaded, false if not.
|
||||
// - ostream& << Font
|
||||
class Font: public ResourceManaged<FontResourceManager>
|
||||
{
|
||||
|
||||
// Group: (Con/De)structors
|
||||
public:
|
||||
|
||||
|
||||
// Function: Font
|
||||
// Default constructor, initalizes internal state of Font.
|
||||
Font();
|
||||
|
||||
// Function: Font
|
||||
// Copy constructor, copies another Font.
|
||||
//
|
||||
// Parameters:
|
||||
// rhs - Font to construct copy of.
|
||||
Font(const Font &rhs);
|
||||
|
||||
// Function: Font
|
||||
// Initializing constructor, loads Font via call to <open>.
|
||||
//
|
||||
// Parameters:
|
||||
// name - Name of the Font <Resource> to open.
|
||||
//
|
||||
// See Also:
|
||||
// <open>
|
||||
Font(const std::string& name);
|
||||
|
||||
// Group: General
|
||||
public:
|
||||
|
||||
// Function: open
|
||||
// Opens an TrueType font.
|
||||
//
|
||||
// Loading is done via FTGL.
|
||||
//
|
||||
// Parameters:
|
||||
// name - Name of the Font <Resource> to open.
|
||||
void open(const std::string& name);
|
||||
|
||||
Font& operator=(const Font &rhs);
|
||||
operator bool() const;
|
||||
|
||||
// Group: Writing
|
||||
public:
|
||||
void write(const std::string& str);
|
||||
|
||||
private:
|
||||
FTFont* font_;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif //PHOTON_VIDEO_FONT_HPP
|
42
include/video/FontResourceManager.hpp
Normal file
42
include/video/FontResourceManager.hpp
Normal file
@ -0,0 +1,42 @@
|
||||
//This file is part of Photon (http://photon.sourceforge.net)
|
||||
//Copyright (C) 2004-2005 James Turk
|
||||
//
|
||||
// Author:
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: FontResourceManager.hpp,v 1.1 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#ifndef PHOTON_VIDEO_FONTRESOURCEMANAGER_HPP
|
||||
#define PHOTON_VIDEO_FONTRESOURCEMANAGER_HPP
|
||||
|
||||
#include "ResourceManager.hpp"
|
||||
|
||||
#include "FTGL/FTGL.h"
|
||||
#include "FTGL/FTFont.h"
|
||||
|
||||
namespace photon
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
class FontResource : public Resource
|
||||
{
|
||||
public:
|
||||
FTFont* font;
|
||||
};
|
||||
|
||||
class FontResourceManager : public ResourceManager<FontResource>
|
||||
{
|
||||
public:
|
||||
void getFontData(const std::string& name, FTFont*& font);
|
||||
|
||||
private:
|
||||
virtual void loadResource(FontResource &res, const std::string& name);
|
||||
virtual void freeResource(FontResource &res);
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif //PHOTON_VIDEO_FONTRESOURCEMANAGER_HPP
|
59
src/video/Font.cpp
Normal file
59
src/video/Font.cpp
Normal file
@ -0,0 +1,59 @@
|
||||
//This file is part of Photon (http://photon.sourceforge.net)
|
||||
//Copyright (C) 2004-2005 James Turk
|
||||
//
|
||||
// Author:
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: Font.cpp,v 1.1 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#include "video/Font.hpp"
|
||||
|
||||
|
||||
namespace photon
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
Font::Font()
|
||||
{ }
|
||||
|
||||
Font::Font(const Font &rhs) :
|
||||
ResourceManaged<FontResourceManager>(rhs)
|
||||
{
|
||||
resMgr_.getFontData(getName(), font_);
|
||||
}
|
||||
|
||||
Font::Font(const std::string& name)
|
||||
{
|
||||
open(name);
|
||||
}
|
||||
|
||||
void Font::open(const std::string& name)
|
||||
{
|
||||
ResourceManaged<FontResourceManager>::open(name);
|
||||
resMgr_.getFontData(getName(), font_);
|
||||
}
|
||||
|
||||
Font& Font::operator=(const Font &rhs)
|
||||
{
|
||||
if(&rhs != this)
|
||||
{
|
||||
ResourceManaged<FontResourceManager>::operator=(rhs);
|
||||
resMgr_.getFontData(getName(), font_);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Font::operator bool() const
|
||||
{
|
||||
return font_ != 0;
|
||||
}
|
||||
|
||||
void Font::write(const std::string& str)
|
||||
{
|
||||
font_->Render(str.c_str());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
52
src/video/FontResourceManager.cpp
Normal file
52
src/video/FontResourceManager.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
//This file is part of Photon (http://photon.sourceforge.net)
|
||||
//Copyright (C) 2004-2005 James Turk
|
||||
//
|
||||
// Author:
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: FontResourceManager.cpp,v 1.1 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#include "video/FontResourceManager.hpp"
|
||||
|
||||
#include "util/FileBuffer.hpp"
|
||||
|
||||
#include "FTGL/FTGLTextureFont.h"
|
||||
|
||||
|
||||
namespace photon
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
void FontResourceManager::getFontData(const std::string& name, FTFont*& font)
|
||||
{
|
||||
FontResource resource( getResource(name) );
|
||||
font = resource.font;
|
||||
}
|
||||
|
||||
void FontResourceManager::loadResource(FontResource &res,
|
||||
const std::string& path)
|
||||
{
|
||||
util::FileBuffer buf(path);
|
||||
|
||||
std::vector<ubyte> data = buf.getData();
|
||||
|
||||
//res.font = new FTGLTextureFont((ubyte*)&data[0],data.size());
|
||||
res.font = new FTGLTextureFont("/usr/share/fonts/truetype/freefont/FreeMono.ttf");
|
||||
|
||||
if(!res.font || res.font->Error() != 0)
|
||||
{
|
||||
throw APIError("Failed to create FTGLTextureFont");
|
||||
}
|
||||
|
||||
assert( res.font->FaceSize(6) );
|
||||
}
|
||||
|
||||
void FontResourceManager::freeResource(FontResource &res)
|
||||
{
|
||||
delete res.font;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: VideoCore.cpp,v 1.5 2005/06/27 04:24:16 cozman Exp $
|
||||
// $Id: VideoCore.cpp,v 1.6 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#include "video/VideoCore.hpp"
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
|
||||
#include "GL/gl.h"
|
||||
#include "GL/glu.h"
|
||||
#include "FTGL/FTLibrary.h"
|
||||
|
||||
namespace photon
|
||||
{
|
||||
@ -24,6 +25,7 @@ VideoCore::VideoCore() :
|
||||
viewportWidth_(0), viewportHeight_(0)
|
||||
{
|
||||
initOpenGL();
|
||||
FTLibrary::Instance().Error(); // ignoring error, fix this
|
||||
}
|
||||
|
||||
VideoCore::~VideoCore()
|
||||
|
88
test/Font_test.cpp
Normal file
88
test/Font_test.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
//This file is part of Photon (http://photon.sourceforge.net)
|
||||
//Copyright (C) 2004-2005 James Turk
|
||||
//
|
||||
// Author:
|
||||
// James Turk (jpt2433@rit.edu)
|
||||
//
|
||||
// Version:
|
||||
// $Id: Font_test.cpp,v 1.1 2005/06/29 04:30:40 cozman Exp $
|
||||
|
||||
#include "photon.hpp"
|
||||
using namespace photon;
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
// This is a simple framework for writing extremely simple Photon applications
|
||||
// it simply displays a blank window and the framerate in the titlebar of
|
||||
// the created window. This is meant to show basic interaction between the
|
||||
// user and the more common features of the AppCore and the Kernel.
|
||||
|
||||
class MainTask : public Task
|
||||
{
|
||||
|
||||
public:
|
||||
MainTask() :
|
||||
Task("MainTask"),
|
||||
app(AppCore::getInstance()),
|
||||
video(video::VideoCore::getInstance())
|
||||
{
|
||||
LogSinkPtr csp( new ConsoleSink("console") );
|
||||
log.addSink(csp);
|
||||
|
||||
video.setOrthoView(800,600);
|
||||
|
||||
video::Font::addResource("font","data/arial.ttf");
|
||||
|
||||
font.open("font");
|
||||
}
|
||||
|
||||
void update()
|
||||
{
|
||||
static double t=0;
|
||||
|
||||
if(app.getTime() - t > 1.0)
|
||||
{
|
||||
app.setTitle("FPS: " +
|
||||
boost::lexical_cast<std::string>(app.getFramerate()) );
|
||||
t = app.getTime();
|
||||
}
|
||||
|
||||
video.clear();
|
||||
|
||||
glColor4ub(255,0,0,255);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glScaled(1.0/.75,1,1);
|
||||
font.write("he");
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(0,0); glVertex2f(150,200);
|
||||
glTexCoord2f(1,0); glVertex2f(300,350);
|
||||
glTexCoord2f(1,1); glVertex2f(150,300);
|
||||
glTexCoord2f(0,1); glVertex2f(200,350);
|
||||
glEnd();
|
||||
glColor4ub(255,255,255,255);
|
||||
}
|
||||
|
||||
private:
|
||||
video::Font font;
|
||||
|
||||
Log log;
|
||||
AppCore& app;
|
||||
video::VideoCore& video;
|
||||
};
|
||||
|
||||
class ImageTest : public Application
|
||||
{
|
||||
public:
|
||||
|
||||
int main(const StrVec& args)
|
||||
{
|
||||
AppCore::getInstance().createDisplay(800,600,32,0,0,false);
|
||||
|
||||
Kernel::getInstance().addTask(TaskPtr(new MainTask()));
|
||||
|
||||
Kernel::getInstance().run();
|
||||
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
ENTRYPOINT(ImageTest)
|
Loading…
Reference in New Issue
Block a user