mirror of
https://github.com/glest/glest-source.git
synced 2025-08-29 19:00:07 +02:00
- patch from Nebososo for 2 byte characters and font widths
This commit is contained in:
@@ -26,29 +26,36 @@ std::string Font::fontTypeName = "Times New Roman";
|
|||||||
// class FontMetrics
|
// class FontMetrics
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
FontMetrics::FontMetrics(){
|
FontMetrics::FontMetrics() {
|
||||||
widths= new float[Font::charCount];
|
widths= new float[Font::charCount];
|
||||||
height= 0;
|
height= 0;
|
||||||
|
|
||||||
for(int i=0; i<Font::charCount; ++i){
|
for(int i=0; i < Font::charCount; ++i) {
|
||||||
widths[i]= 0;
|
widths[i]= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FontMetrics::~FontMetrics(){
|
FontMetrics::~FontMetrics() {
|
||||||
delete [] widths;
|
delete [] widths;
|
||||||
widths = NULL;
|
widths = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
float FontMetrics::getTextWidth(const string &str) const{
|
float FontMetrics::getTextWidth(const string &str) const {
|
||||||
float width= 0.f;
|
float width= 0.f;
|
||||||
for(unsigned int i=0; i< str.size() && (int)i < Font::charCount; ++i){
|
for(unsigned int i=0; i< str.size() && (int)i < Font::charCount; ++i){
|
||||||
if(str[i] >= Font::charCount) {
|
if(str[i] >= Font::charCount) {
|
||||||
string sError = "str[i] >= Font::charCount, [" + str + "] i = " + intToStr(i);
|
string sError = "str[i] >= Font::charCount, [" + str + "] i = " + intToStr(i);
|
||||||
throw runtime_error(sError);
|
throw runtime_error(sError);
|
||||||
}
|
}
|
||||||
|
//Treat 2 byte characters as spaces
|
||||||
|
if(str[i] < 0) {
|
||||||
|
width+= widths[32];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
width+= widths[str[i]];
|
width+= widths[str[i]];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user