今天沒事就把hge中文的(hgefontcn)修了一下..
去除了一些不要的東西..
這樣使得記憶體占用小了一大節...
以前用12號字要用15m左右的記憶體.
現在只需要9m了...
我直接貼**了...
原理去看我以前發的文章...
#pragma
once
#include
"hge.h
"#include
"hgesprite.h
"#include
<
iostream
>
class
hgefontcn
;struct
fontcn_head
;struct
fontcn_frame
;public
:hgefontcn(
const
char
*filename);
//根據字型檔案建立
~hgefontcn(
void
);void
render(
float
x, float
y, const
char
*string
);
//繪製字串
void
printf(
float
x, float
y, const
char
*format, ...);
//繪製格式字串
void
setcolor(dword col)
//設定字型顏色
void
setz(
float
z)
//設定z緩衝
dword getcolor()
const
//獲得顏色
float
getz()
const
//獲得z緩衝
float
getheight()
const
//獲得字型高度
float
getcnwidth()
const
float
getenwidth()
const
void
setblendmode(
intblend)
//設定混和模式
intgetblendmode()
const
//獲得混和模式
float
getstringwidth(
const
char
*string
) const
;float
getstringheight(
const
char
*string
) const
;private
:static
hge*
hge;
hgesprite
*sprfont;
//所有字模精靈
fontcn_frame fontframe[hz_h_max][hz_w_max];
//所有字元
float
fcnwidth;
//漢字寬度
float
fenwidth;
//ascii寬度
float
fheight;
//字元高度
char
txtbuffer[
512];
//文字快取
};inline
void
hgefontcn::fontcn_head::set(
char
*head,
const
char
*file, dword ncol, dword nrow, byte nfwidth, byte nfheight)
inline
void
hgefontcn::fontcn_frame::set(byte h, byte l, word fx, word fy)
#include
"hgefontcn.h
"#include
<
stdlib.h
>
#include
<
stdio.h
>
hge*
hgefontcn::hge =0
;hgefontcn::
~hgefontcn(
void
)hgefontcn::hgefontcn(
const
char
*filename)
if(strcmp(fonthead.strhead,
"[fontcn]"))
std::
string
imgfilename(fonthead.imgfile);
fcnwidth =(
float
)fonthead.ifontw;
fenwidth
=fcnwidth /2
+1;#ifndef _debug
fenwidth +=1
;#endif
fheight =(
float
)fonthead.ifonth;
char
szfullimgfile[_max_path];
char
drive[_max_drive];
char
dir[_max_dir];
char
fname[_max_fname];
char
ext[_max_ext];
_splitpath(filename, drive, dir, fname, ext );
sprintf(szfullimgfile,
"%s%s
", dir, imgfilename.c_str());
if((htexture
=hge
->
texture_load(szfullimgfile)) ==0
)float
texw =(
float
)hge
->
texture_getwidth(htexture,
true
);float
texh =(
float
)hge
->
texture_getheight(htexture,
true
);sprfont
=new
hgesprite(htexture, 0,
0, texw, texh);
fontcn_frame _frame;
while(!
feof(pfontfile))
else
if(hz0
==0xff
)else
continue
;
fontframe[hz0][hz1]
=_frame;
}fclose(pfontfile);
setblendmode(blend_colormul
|blend_alphablend
|blend_nozwrite);
}void
hgefontcn::render(
float
x, float
y, const
char
*string
)else
if(hz0
>=
hz_h_fix
&&hz0
<=
hz_h_end)
else
if(hz0
>=
ascii_fix
&&hz0
<
ascii_end)
else
string++;
}}void
hgefontcn::printf(
float
x, float
y, const
char
*format, ...)
float
hgefontcn::getstringwidth(
const
char
*string
) const
byte hz0 =*
(string
++), hz1 =*
string;if
(hz0
>=
hz_h_fix
&&hz0
<=
hz_h_end)
w +=
fcnwidth,
string++;
else
w +=
fenwidth;
}return
max(tw, w);
}float
hgefontcn::getstringheight(
const
char
*string
) const
return
_h;}
怪的地方有乙個.release和debug版的gdi字型竟然不一樣..而且差別非常大.
HGE中文顯示最新修改 070717
天沒事就把hge中文的 hgefontcn 修了一下.去除了一些不要的東西.這樣使得記憶體占用小了一大節.以前用12號字要用15m左右的記憶體.現在只需要9m了.我直接貼 了.原理去看我以前發的文章.pragma once include hge.h include hgesprite.h incl...
乙個在HGE下顯示中文的簡單類
最近剛剛開始學習hge,發現hge不支援中文顯示,為了可以顯示中文就模仿hge中的hgefont類寫了乙個擴充套件的hgefontcn類,在寫hgefontcn時沒有從hgefont派生,而是直接寫的,雖然內部結構與實現方法一樣,但還是將內容重寫了一邊,因為有幾個地方是需要判斷字串是否是漢字。配合h...
centos 7修改中文顯示
首先檢視自己當前使用的語言包 root master1 echo lang en us.utf 8可以看出為en us,即英文。安裝最新的語言包 root master1 yum install kde l10n chinese檢視中文語言包是否存在 root master1 locale a gr...