From c3793d0cfb0d8992305f0f831d97705517b279cf Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Mon, 3 May 2010 06:16:32 +0000 Subject: [PATCH] Added initial code changes to support Chinese Fonts --- mk/windoze/Glest.suo | Bin 248832 -> 261632 bytes source/glest_game/main/main.cpp | 13 ++ source/shared_lib/include/graphics/font.h | 111 ++++++++++++++++++ .../shared_lib/include/platform/sdl/gl_wrap.h | 5 + source/shared_lib/sources/graphics/font.cpp | 5 +- .../sources/platform/sdl/gl_wrap.cpp | 7 +- 6 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 source/shared_lib/include/graphics/font.h diff --git a/mk/windoze/Glest.suo b/mk/windoze/Glest.suo index c19b4b8b046dd4ef98d5d7b06be1a899040fed71..66b5de973f3692e56d0e78c99a8ebfb808c9d82f 100755 GIT binary patch delta 22639 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 delta 10786 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 +#include "font.h" #include "leak_dumper.h" using namespace std; using namespace Shared::Platform; using namespace Shared::Util; +using namespace Shared::Graphics; 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__); + // 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(false); diff --git a/source/shared_lib/include/graphics/font.h b/source/shared_lib/include/graphics/font.h new file mode 100644 index 00000000..cea90459 --- /dev/null +++ b/source/shared_lib/include/graphics/font.h @@ -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 + +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 diff --git a/source/shared_lib/include/platform/sdl/gl_wrap.h b/source/shared_lib/include/platform/sdl/gl_wrap.h index 0c7cdd6e..d58b13c1 100644 --- a/source/shared_lib/include/platform/sdl/gl_wrap.h +++ b/source/shared_lib/include/platform/sdl/gl_wrap.h @@ -61,6 +61,11 @@ public: // 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 createGlFontOutlines(uint32 &base, const string &type, int width, float depth, int charCount, FontMetrics &metrics); const char *getPlatformExtensions(const PlatformContextGl *pcgl); diff --git a/source/shared_lib/sources/graphics/font.cpp b/source/shared_lib/sources/graphics/font.cpp index 748b8bca..485942e2 100644 --- a/source/shared_lib/sources/graphics/font.cpp +++ b/source/shared_lib/sources/graphics/font.cpp @@ -48,11 +48,12 @@ float FontMetrics::getHeight() const{ // class Font // =============================================== -const int Font::charCount= 256; +int Font::charCount= 256; +std::string Font::fontTypeName = "Times New Roman"; Font::Font(){ inited= false; - type= "Times New Roman"; + type= fontTypeName; width= 400; } diff --git a/source/shared_lib/sources/platform/sdl/gl_wrap.cpp b/source/shared_lib/sources/platform/sdl/gl_wrap.cpp index e7545a7d..a609ea35 100644 --- a/source/shared_lib/sources/platform/sdl/gl_wrap.cpp +++ b/source/shared_lib/sources/platform/sdl/gl_wrap.cpp @@ -193,8 +193,8 @@ void createGlFontBitmaps(uint32 &base, const string &type, int size, int width, if(systemFontList.size() == 0) { LOGFONT lf; //POSITION pos; - - lf.lfCharSet = ANSI_CHARSET; + //lf.lfCharSet = ANSI_CHARSET; + lf.lfCharSet = (BYTE)charSet; lf.lfFaceName[0]='\0'; HDC hDC = wglGetCurrentDC(); @@ -222,9 +222,8 @@ void createGlFontBitmaps(uint32 &base, const string &type, int size, int width, } } - 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, DEFAULT_PITCH| (useRealFontName.c_str() ? FF_DONTCARE:FF_SWISS), useRealFontName.c_str());