Added initial code changes to support Chinese Fonts
This commit is contained in:
parent
677da7f9d5
commit
c3793d0cfb
Binary file not shown.
|
@ -28,12 +28,14 @@
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
#include "simple_threads.h"
|
#include "simple_threads.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include "font.h"
|
||||||
|
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace Shared::Platform;
|
using namespace Shared::Platform;
|
||||||
using namespace Shared::Util;
|
using namespace Shared::Util;
|
||||||
|
using namespace Shared::Graphics;
|
||||||
|
|
||||||
namespace Glest{ namespace Game{
|
namespace Glest{ namespace Game{
|
||||||
|
|
||||||
|
@ -319,6 +321,17 @@ int glestMain(int argc, char** argv){
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
// 256 for English
|
||||||
|
// 30000 for Chinese
|
||||||
|
Font::charCount = config.getInt("FONT_CHARCOUNT",intToStr(256).c_str());
|
||||||
|
Font::fontTypeName = config.getString("FONT_TYPENAME","Times New Roman");
|
||||||
|
// Example values:
|
||||||
|
// DEFAULT_CHARSET (English) = 1
|
||||||
|
// GB2312_CHARSET (Chinese) = 134
|
||||||
|
Shared::Platform::charSet = config.getInt("FONT_CHARSET",intToStr(DEFAULT_CHARSET).c_str());
|
||||||
|
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Font::charCount = %d, Font::fontTypeName [%s] Shared::Platform::charSet = %d\n",__FILE__,__FUNCTION__,__LINE__,Font::charCount,Font::fontTypeName.c_str(),Shared::Platform::charSet);
|
||||||
|
|
||||||
//showCursor(config.getBool("Windowed"));
|
//showCursor(config.getBool("Windowed"));
|
||||||
showCursor(false);
|
showCursor(false);
|
||||||
|
|
||||||
|
|
111
source/shared_lib/include/graphics/font.h
Normal file
111
source/shared_lib/include/graphics/font.h
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
// ==============================================================
|
||||||
|
// This file is part of Glest Shared Library (www.glest.org)
|
||||||
|
//
|
||||||
|
// Copyright (C) 2001-2008 Martiño Figueroa
|
||||||
|
//
|
||||||
|
// You can redistribute this code and/or modify it under
|
||||||
|
// the terms of the GNU General Public License as published
|
||||||
|
// by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version
|
||||||
|
// ==============================================================
|
||||||
|
|
||||||
|
#ifndef _SHARED_GRAPHICS_FONT_H_
|
||||||
|
#define _SHARED_GRAPHICS_FONT_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using std::string;
|
||||||
|
|
||||||
|
namespace Shared{ namespace Graphics{
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class FontMetrics
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
class FontMetrics{
|
||||||
|
private:
|
||||||
|
float *widths;
|
||||||
|
float height;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FontMetrics();
|
||||||
|
~FontMetrics();
|
||||||
|
|
||||||
|
void setWidth(int i, float width) {widths[i]= width;}
|
||||||
|
void setHeight(float height) {this->height= height;}
|
||||||
|
|
||||||
|
float getTextWidth(const string &str) const;
|
||||||
|
float getHeight() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class Font
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
class Font{
|
||||||
|
public:
|
||||||
|
static int charCount;
|
||||||
|
static std::string fontTypeName;
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum Width{
|
||||||
|
wNormal= 400,
|
||||||
|
wBold= 700
|
||||||
|
};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
string type;
|
||||||
|
int width;
|
||||||
|
bool inited;
|
||||||
|
FontMetrics metrics;
|
||||||
|
|
||||||
|
public:
|
||||||
|
//constructor & destructor
|
||||||
|
Font();
|
||||||
|
virtual ~Font(){};
|
||||||
|
virtual void init()=0;
|
||||||
|
virtual void end()=0;
|
||||||
|
|
||||||
|
//get
|
||||||
|
string getType() const {return type;}
|
||||||
|
int getWidth() const {return width;}
|
||||||
|
const FontMetrics *getMetrics() const {return &metrics;}
|
||||||
|
|
||||||
|
//set
|
||||||
|
void setType(string type) {this->type= type;}
|
||||||
|
void setWidth(int width) {this->width= width;}
|
||||||
|
};
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class Font2D
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
class Font2D: public Font{
|
||||||
|
protected:
|
||||||
|
int size;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Font2D();
|
||||||
|
|
||||||
|
int getSize() const {return size;}
|
||||||
|
void setSize(int size) {this->size= size;}
|
||||||
|
};
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class Font3D
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
class Font3D: public Font{
|
||||||
|
protected:
|
||||||
|
float depth;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Font3D();
|
||||||
|
|
||||||
|
float getDepth() const {return depth;}
|
||||||
|
void setDepth(float depth) {this->depth= depth;}
|
||||||
|
};
|
||||||
|
|
||||||
|
}}//end namespace
|
||||||
|
|
||||||
|
#endif
|
|
@ -61,6 +61,11 @@ public:
|
||||||
// Global Fcs
|
// Global Fcs
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
|
// Example values:
|
||||||
|
// DEFAULT_CHARSET (English) = 1
|
||||||
|
// GB2312_CHARSET (Chinese) = 134
|
||||||
|
static DWORD charSet = DEFAULT_CHARSET;
|
||||||
|
|
||||||
void createGlFontBitmaps(uint32 &base, const string &type, int size, int width, int charCount, FontMetrics &metrics);
|
void createGlFontBitmaps(uint32 &base, const string &type, int size, int width, int charCount, FontMetrics &metrics);
|
||||||
void createGlFontOutlines(uint32 &base, const string &type, int width, float depth, int charCount, FontMetrics &metrics);
|
void createGlFontOutlines(uint32 &base, const string &type, int width, float depth, int charCount, FontMetrics &metrics);
|
||||||
const char *getPlatformExtensions(const PlatformContextGl *pcgl);
|
const char *getPlatformExtensions(const PlatformContextGl *pcgl);
|
||||||
|
|
|
@ -48,11 +48,12 @@ float FontMetrics::getHeight() const{
|
||||||
// class Font
|
// class Font
|
||||||
// ===============================================
|
// ===============================================
|
||||||
|
|
||||||
const int Font::charCount= 256;
|
int Font::charCount= 256;
|
||||||
|
std::string Font::fontTypeName = "Times New Roman";
|
||||||
|
|
||||||
Font::Font(){
|
Font::Font(){
|
||||||
inited= false;
|
inited= false;
|
||||||
type= "Times New Roman";
|
type= fontTypeName;
|
||||||
width= 400;
|
width= 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -193,8 +193,8 @@ void createGlFontBitmaps(uint32 &base, const string &type, int size, int width,
|
||||||
if(systemFontList.size() == 0) {
|
if(systemFontList.size() == 0) {
|
||||||
LOGFONT lf;
|
LOGFONT lf;
|
||||||
//POSITION pos;
|
//POSITION pos;
|
||||||
|
//lf.lfCharSet = ANSI_CHARSET;
|
||||||
lf.lfCharSet = ANSI_CHARSET;
|
lf.lfCharSet = (BYTE)charSet;
|
||||||
lf.lfFaceName[0]='\0';
|
lf.lfFaceName[0]='\0';
|
||||||
|
|
||||||
HDC hDC = wglGetCurrentDC();
|
HDC hDC = wglGetCurrentDC();
|
||||||
|
@ -222,9 +222,8 @@ void createGlFontBitmaps(uint32 &base, const string &type, int size, int width,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HFONT font= CreateFont(
|
HFONT font= CreateFont(
|
||||||
size, 0, 0, 0, width, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
|
size, 0, 0, 0, width, FALSE, FALSE, FALSE, charSet,
|
||||||
OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
|
OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
|
||||||
DEFAULT_PITCH| (useRealFontName.c_str() ? FF_DONTCARE:FF_SWISS), useRealFontName.c_str());
|
DEFAULT_PITCH| (useRealFontName.c_str() ? FF_DONTCARE:FF_SWISS), useRealFontName.c_str());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user