forked from mia/Aegisub
Make a few parameters in gl_text const references
Originally committed to SVN as r4252.
This commit is contained in:
parent
47beda4c89
commit
ae82498273
2 changed files with 16 additions and 86 deletions
|
@ -48,42 +48,27 @@
|
||||||
#include "gl_text.h"
|
#include "gl_text.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
|
|
||||||
/// @brief Constructor
|
|
||||||
///
|
|
||||||
OpenGLText::OpenGLText() {
|
OpenGLText::OpenGLText() {
|
||||||
r = g = b = a = 1.0f;
|
r = g = b = a = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Destructor
|
|
||||||
///
|
|
||||||
OpenGLText::~OpenGLText() {
|
OpenGLText::~OpenGLText() {
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Reset
|
/// @brief Reset
|
||||||
///
|
|
||||||
void OpenGLText::Reset() {
|
void OpenGLText::Reset() {
|
||||||
textures.clear();
|
textures.clear();
|
||||||
glyphs.clear();
|
glyphs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Get instance
|
/// @brief Get instance
|
||||||
/// @return
|
/// @return
|
||||||
///
|
|
||||||
OpenGLText& OpenGLText::GetInstance() {
|
OpenGLText& OpenGLText::GetInstance() {
|
||||||
static OpenGLText instance;
|
static OpenGLText instance;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Set font
|
/// @brief Set font
|
||||||
/// @param face
|
/// @param face
|
||||||
/// @param size
|
/// @param size
|
||||||
|
@ -108,8 +93,6 @@ void OpenGLText::DoSetFont(wxString face,int size,bool bold,bool italics) {
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Set colour
|
/// @brief Set colour
|
||||||
/// @param col
|
/// @param col
|
||||||
/// @param alpha
|
/// @param alpha
|
||||||
|
@ -121,14 +104,11 @@ void OpenGLText::DoSetColour(wxColour col,float alpha) {
|
||||||
a = alpha;
|
a = alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Print
|
/// @brief Print
|
||||||
/// @param text
|
/// @param text
|
||||||
/// @param x
|
/// @param x
|
||||||
/// @param y
|
/// @param y
|
||||||
///
|
void OpenGLText::DoPrint(const wxString &text,int x,int y) {
|
||||||
void OpenGLText::DoPrint(wxString text,int x,int y) {
|
|
||||||
// Set OpenGL
|
// Set OpenGL
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
@ -150,15 +130,8 @@ void OpenGLText::DoPrint(wxString text,int x,int y) {
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief Draw a string at (x,y)
|
||||||
|
void OpenGLText::DrawString(const wxString &text,int x,int y) {
|
||||||
/// @brief Draw a string
|
|
||||||
/// @param text
|
|
||||||
/// @param x
|
|
||||||
/// @param y
|
|
||||||
/// @return
|
|
||||||
///
|
|
||||||
void OpenGLText::DrawString(wxString text,int x,int y) {
|
|
||||||
// Variables
|
// Variables
|
||||||
size_t len = text.Length();
|
size_t len = text.Length();
|
||||||
OpenGLTextGlyph glyph;
|
OpenGLTextGlyph glyph;
|
||||||
|
@ -186,16 +159,11 @@ void OpenGLText::DrawString(wxString text,int x,int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Calculate text extent
|
/// @brief Calculate text extent
|
||||||
/// @param text
|
/// @param text Text to get the extents of
|
||||||
/// @param w
|
/// @param w [out] Width
|
||||||
/// @param h
|
/// @param h [out] Height
|
||||||
/// @return
|
void OpenGLText::DoGetExtent(const wxString &text,int &w,int &h) {
|
||||||
///
|
|
||||||
void OpenGLText::DoGetExtent(wxString text,int &w,int &h) {
|
|
||||||
// Variables
|
|
||||||
size_t len = text.Length();
|
size_t len = text.Length();
|
||||||
OpenGLTextGlyph glyph;
|
OpenGLTextGlyph glyph;
|
||||||
lineHeight = 0;
|
lineHeight = 0;
|
||||||
|
@ -229,12 +197,9 @@ void OpenGLText::DoGetExtent(wxString text,int &w,int &h) {
|
||||||
h = dy+lineHeight;
|
h = dy+lineHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Get a glyph
|
/// @brief Get a glyph
|
||||||
/// @param i
|
/// @param i
|
||||||
/// @return
|
/// @return
|
||||||
///
|
|
||||||
OpenGLTextGlyph OpenGLText::GetGlyph(int i) {
|
OpenGLTextGlyph OpenGLText::GetGlyph(int i) {
|
||||||
glyphMap::iterator res = glyphs.find(i);
|
glyphMap::iterator res = glyphs.find(i);
|
||||||
|
|
||||||
|
@ -245,12 +210,8 @@ OpenGLTextGlyph OpenGLText::GetGlyph(int i) {
|
||||||
return CreateGlyph(i);
|
return CreateGlyph(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Create a glyph
|
/// @brief Create a glyph
|
||||||
/// @param n
|
/// @param n
|
||||||
/// @return
|
|
||||||
///
|
|
||||||
OpenGLTextGlyph OpenGLText::CreateGlyph(int n) {
|
OpenGLTextGlyph OpenGLText::CreateGlyph(int n) {
|
||||||
// Create glyph
|
// Create glyph
|
||||||
OpenGLTextGlyph glyph;
|
OpenGLTextGlyph glyph;
|
||||||
|
@ -277,12 +238,9 @@ OpenGLTextGlyph OpenGLText::CreateGlyph(int n) {
|
||||||
return glyph;
|
return glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Texture constructor
|
/// @brief Texture constructor
|
||||||
/// @param w
|
/// @param w
|
||||||
/// @param h
|
/// @param h
|
||||||
///
|
|
||||||
OpenGLTextTexture::OpenGLTextTexture(int w,int h) {
|
OpenGLTextTexture::OpenGLTextTexture(int w,int h) {
|
||||||
using std::max;
|
using std::max;
|
||||||
// Properties
|
// Properties
|
||||||
|
@ -307,10 +265,6 @@ OpenGLTextTexture::OpenGLTextTexture(int w,int h) {
|
||||||
if (glGetError()) throw _T("Internal OpenGL text renderer error: Could not allocate Text Texture");
|
if (glGetError()) throw _T("Internal OpenGL text renderer error: Could not allocate Text Texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Texture destructor
|
|
||||||
///
|
|
||||||
OpenGLTextTexture::~OpenGLTextTexture() {
|
OpenGLTextTexture::~OpenGLTextTexture() {
|
||||||
if (tex) {
|
if (tex) {
|
||||||
glDeleteTextures(1,&tex);
|
glDeleteTextures(1,&tex);
|
||||||
|
@ -318,12 +272,9 @@ OpenGLTextTexture::~OpenGLTextTexture() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Can fit a glyph in it?
|
/// @brief Can fit a glyph in it?
|
||||||
/// @param glyph
|
/// @param glyph
|
||||||
/// @return
|
/// @return
|
||||||
///
|
|
||||||
bool OpenGLTextTexture::TryToInsert(OpenGLTextGlyph &glyph) {
|
bool OpenGLTextTexture::TryToInsert(OpenGLTextGlyph &glyph) {
|
||||||
// Get size
|
// Get size
|
||||||
int w = glyph.w;
|
int w = glyph.w;
|
||||||
|
@ -350,11 +301,8 @@ bool OpenGLTextTexture::TryToInsert(OpenGLTextGlyph &glyph) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Insert
|
/// @brief Insert
|
||||||
/// @param glyph
|
/// @param glyph
|
||||||
///
|
|
||||||
void OpenGLTextTexture::Insert(OpenGLTextGlyph &glyph) {
|
void OpenGLTextTexture::Insert(OpenGLTextGlyph &glyph) {
|
||||||
// Glyph data
|
// Glyph data
|
||||||
wxString str = wxChar(glyph.value);
|
wxString str = wxChar(glyph.value);
|
||||||
|
@ -378,9 +326,7 @@ void OpenGLTextTexture::Insert(OpenGLTextGlyph &glyph) {
|
||||||
dc.SetFont(OpenGLText::GetFont());
|
dc.SetFont(OpenGLText::GetFont());
|
||||||
dc.SetTextForeground(wxColour(255,255,255));
|
dc.SetTextForeground(wxColour(255,255,255));
|
||||||
dc.DrawText(str,0,0);
|
dc.DrawText(str,0,0);
|
||||||
//bmp.SaveFile(wxString::Format(_T("glyph%i.bmp"),glyph.value),wxBITMAP_TYPE_BMP);
|
|
||||||
wxImage img = bmp.ConvertToImage();
|
wxImage img = bmp.ConvertToImage();
|
||||||
//img.SaveFile(str + _T(".bmp"));
|
|
||||||
|
|
||||||
// Convert to alpha
|
// Convert to alpha
|
||||||
int imgw = img.GetWidth();
|
int imgw = img.GetWidth();
|
||||||
|
@ -403,12 +349,9 @@ void OpenGLTextTexture::Insert(OpenGLTextGlyph &glyph) {
|
||||||
if (glGetError()) throw _T("Internal OpenGL text renderer error: Error uploading glyph data to video memory.");
|
if (glGetError()) throw _T("Internal OpenGL text renderer error: Error uploading glyph data to video memory.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief Draw a glyph at (x,y)
|
||||||
|
|
||||||
/// @brief Draw a glyph
|
|
||||||
/// @param x
|
/// @param x
|
||||||
/// @param y
|
/// @param y
|
||||||
///
|
|
||||||
void OpenGLTextGlyph::Draw(int x,int y) {
|
void OpenGLTextGlyph::Draw(int x,int y) {
|
||||||
// Store matrix and translate
|
// Store matrix and translate
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
@ -437,22 +380,15 @@ void OpenGLTextGlyph::Draw(int x,int y) {
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Glyph Destructor
|
|
||||||
///
|
|
||||||
OpenGLTextGlyph::~OpenGLTextGlyph() {
|
OpenGLTextGlyph::~OpenGLTextGlyph() {
|
||||||
if (tempBmp) delete tempBmp;
|
if (tempBmp) delete tempBmp;
|
||||||
tempBmp = NULL;
|
tempBmp = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
wxBitmap *OpenGLTextGlyph::tempBmp = NULL;
|
wxBitmap *OpenGLTextGlyph::tempBmp = NULL;
|
||||||
|
|
||||||
/// @brief DOCME
|
/// @brief DOCME
|
||||||
///
|
|
||||||
void OpenGLTextGlyph::GetMetrics() {
|
void OpenGLTextGlyph::GetMetrics() {
|
||||||
// Glyph data
|
// Glyph data
|
||||||
wxCoord desc,lead;
|
wxCoord desc,lead;
|
||||||
|
@ -462,11 +398,7 @@ void OpenGLTextGlyph::GetMetrics() {
|
||||||
if (!tempBmp) tempBmp = new wxBitmap(16,16,24);
|
if (!tempBmp) tempBmp = new wxBitmap(16,16,24);
|
||||||
|
|
||||||
// Get text extents
|
// Get text extents
|
||||||
{
|
wxMemoryDC dc(*tempBmp);
|
||||||
wxMemoryDC dc(*tempBmp);
|
dc.SetFont(OpenGLText::GetFont());
|
||||||
dc.SetFont(OpenGLText::GetFont());
|
dc.GetTextExtent(str,&w,&h,&desc,&lead);
|
||||||
dc.GetTextExtent(str,&w,&h,&desc,&lead);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -187,9 +187,9 @@ private:
|
||||||
static OpenGLText& GetInstance();
|
static OpenGLText& GetInstance();
|
||||||
void DoSetFont(wxString face,int size,bool bold,bool italics);
|
void DoSetFont(wxString face,int size,bool bold,bool italics);
|
||||||
void DoSetColour(wxColour col,float alpha);
|
void DoSetColour(wxColour col,float alpha);
|
||||||
void DoPrint(wxString text,int x,int y);
|
void DoPrint(const wxString &text,int x,int y);
|
||||||
void DrawString(wxString text,int x,int y);
|
void DrawString(const wxString &text,int x,int y);
|
||||||
void DoGetExtent(wxString text,int &w,int &h);
|
void DoGetExtent(const wxString &text,int &w,int &h);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -217,14 +217,12 @@ public:
|
||||||
/// @param x
|
/// @param x
|
||||||
/// @param y
|
/// @param y
|
||||||
///
|
///
|
||||||
static void Print(wxString text,int x,int y) { GetInstance().DoPrint(text,x,y); }
|
static void Print(const wxString &text,int x,int y) { GetInstance().DoPrint(text,x,y); }
|
||||||
|
|
||||||
/// @brief DOCME
|
/// @brief DOCME
|
||||||
/// @param text
|
/// @param text
|
||||||
/// @param w
|
/// @param w
|
||||||
/// @param h
|
/// @param h
|
||||||
///
|
///
|
||||||
static void GetExtent(wxString text,int &w,int &h) { GetInstance().DoGetExtent(text,w,h); }
|
static void GetExtent(const wxString &text,int &w,int &h) { GetInstance().DoGetExtent(text,w,h); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue