青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
終于把SmartGUi庫寫了一半,基本的架子算是搭起來了
現在我打算編寫博客邊做開發
雖然說之前也做過GUI,但是這次還是想把這個做好點(要是一不小心和CEGUI或者MYGUI起名那就不錯了哈哈)

先說GUI字體接口吧
需要說在的 這個庫的定位是與具體渲染機器無關
那么我們就需要一個與具體渲染有關的插件了

很顯然,對于GUI來說主要有3個部分
1.紋理/位圖
2.字體
3.基本圖元的繪制
當然還有其他...

下面這是基本字體的抽象基類
CORE_BEGIN_NAMESPACE

class GUI_EXPORT GFont : public Object
{
public:
    
const static int LEFT = -1;
    
const static int TOP = -1;
    
const static int CENTER = 0;
    
const static int RIGHT = 1;
    
const static int BOTTOM = 1;
public:
    
virtual ~GFont();
    
virtual gstring GetFileName()const = 0;
    
virtual int GetFontSize() = 0;
    
virtual int GetLineHeight() const = 0;
    
virtual int GetWidth(const gstring& text) const = 0;
    
virtual int GetHitCharIndex(const gstring& text,float offset)const = 0;
    
virtual void  Render(const gstring& text,const Recti& area,\
        
int halignment = CENTER,\
        
int valignment = CENTER,\
        
bool oneline = true= 0;
    DECLARE_OBJECT(GFont)
};

CORE_END_NAMESPACE

函數功能基本都看的懂
需要說明的是
1.GetHitCharIndex是本文給定偏移對于的字符標號
2.這里并沒有提供一個渲染給定文本在給定位置的功能,反而提供了一個更為貼心的Render渲染文本于給定矩形-可以指定對其方式和是否為多行渲染
3.這里還沒有提供一些更為復雜的字體性質,比如斜體,下劃線,粗體等等

一個相關的字體工廠對象如下:
CORE_BEGIN_NAMESPACE

class GUI_EXPORT GFontFactory : public Object
{
public:
    
virtual ~GFontFactory();
    
virtual boost::shared_ptr<GFont> CreateFont(const gstring& font,int size) = 0
    DECLARE_OBJECT(GFontFactory) 
};

CORE_END_NAMESPACE
這個沒什么說的,根據字體文件和字體大小生成字體指針一枚
還有一個相關對象是FontManager
接口如下:
CORE_BEGIN_NAMESPACE

class GUI_EXPORT GFontManager:
public Manager<boost::shared_ptr<GFont> >,
public GSerializer
{
public:
    
bool AddFont(const gstring& name,const gstring& font,int size,bool del = false);
    gstring GetSerializerTag(){
return "fontlist";}
    
bool Load(boost::shared_ptr<XMLNode> node);
    
bool Save(boost::shared_ptr<XMLDocument> doc,boost::shared_ptr<XMLNode>& node);
apiuse
    
void SetFontFactory(boost::shared_ptr<GFontFactory> factory);
private:
    boost::shared_ptr
<GFontFactory> factory;
    DEFINE_SINGLETON(GFontManager)
};

CORE_END_NAMESPACE

1.顯然字體管理器是一個單件
2.函數SetFontFactory()是提供給插件設置具體的字體工廠的,所以這里有一個標記apiuse
3.函數GetSerializerTag,Load,Save是從對那象GSerializer繼承來的,目的就是提供字體的序列化和反序列化動作-我們的GUI是要盡可能做到自動化的

在SmartGUI中,字體系統基本上就由這三個對象,以后樣子改動不會太大了,也許只會增加函數接口而已

另外這個字體系統從設計模式的角度看是很容易理解的

----------------------------------------------------------標記
接口總比實現重要些.

posted on 2011-06-08 19:39 ccsdu2009 閱讀(2229) 評論(1)  編輯 收藏 引用 所屬分類: Game引擎
Comments
  • # re: SmartGUI庫字體接口
    陳梓瀚(vczh)
    Posted @ 2011-06-09 10:26
    你最后會發現一個真正的字體類是要負責繪圖的,因為游戲里面的字體跟windows的字體并不總是一樣的,因為你可以選擇用預先做好的圖片來做文字什么的。  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费在线播放| 国产综合色在线| 午夜精彩国产免费不卡不顿大片| 亚洲精品乱码久久久久久久久| 久久久久网址| 欧美成ee人免费视频| 欧美黑人国产人伦爽爽爽| 亚洲国产一区在线| 亚洲网址在线| 欧美日韩国产一区精品一区 | 亚洲美女精品久久| 亚洲免费不卡| 午夜激情亚洲| 欧美成人精品福利| 国产精品毛片大码女人| 国内精品久久久久久久97牛牛| 一区二区三区在线观看欧美| 亚洲日韩欧美视频| 欧美在线视频不卡| 亚洲激情小视频| 亚洲免费视频在线观看| 久热精品视频在线观看一区| 欧美日韩午夜剧场| 国内成+人亚洲| 亚洲精品乱码久久久久久蜜桃91| 正在播放欧美视频| 久久久久久久一区| 亚洲国产欧美一区| 午夜在线播放视频欧美| 欧美大片一区| 韩国精品在线观看| 亚洲综合日本| 亚洲国产日韩欧美在线动漫| 欧美在线视频免费观看| 欧美日韩在线大尺度| 伊人精品视频| 欧美一级成年大片在线观看| 亚洲激情亚洲| 久久综合久久综合久久| 国产日产亚洲精品| 一区二区三区视频在线观看| 免费试看一区| 欧美在线视频在线播放完整版免费观看| 欧美成人亚洲| 精品成人国产在线观看男人呻吟| 亚洲欧美国产精品专区久久| 亚洲日韩欧美视频一区| 蜜桃av一区二区| 狠狠色丁香婷婷综合久久片| 午夜精品影院| 夜夜嗨av一区二区三区免费区| 免费不卡亚洲欧美| 在线观看日韩一区| 欧美阿v一级看视频| 久久九九久精品国产免费直播| 国产伦精品一区二区三区视频孕妇 | 欧美福利视频在线| 在线播放国产一区中文字幕剧情欧美 | 亚洲天堂男人| 亚洲欧美一区二区视频| 亚洲素人在线| 欧美视频在线观看 亚洲欧| 99re在线精品| 最新日韩精品| 欧美日韩福利在线观看| 99国产精品99久久久久久| 91久久精品久久国产性色也91| 美日韩在线观看| 亚洲日韩欧美视频一区| 亚洲高清久久久| 欧美电影免费观看大全| 亚洲精品在线一区二区| 亚洲精品视频免费观看| 欧美午夜不卡视频| 香蕉成人久久| 久久久久欧美| 亚洲三级国产| 一片黄亚洲嫩模| 国产日韩欧美亚洲一区| 麻豆久久精品| 欧美日韩国产精品专区| 性欧美xxxx大乳国产app| 香港成人在线视频| 亚洲国产高清一区| 亚洲黄色有码视频| 欧美日韩在线视频首页| 欧美一区二区三区婷婷月色| 久久久久久久999| 一区二区精品在线| 香蕉av福利精品导航| 亚洲经典自拍| 亚洲一区二区成人| 亚洲国产日韩欧美| 亚洲一级二级在线| 亚洲第一黄色网| 日韩亚洲国产欧美| 国内精品久久久久久久97牛牛| 亚洲黄色影院| 国产偷自视频区视频一区二区| 欧美国产精品人人做人人爱| 国产精品免费看久久久香蕉| 欧美91大片| 国产精品久久久久久久久搜平片| 久久不射中文字幕| 欧美 日韩 国产在线 | 久久久精品午夜少妇| 欧美激情乱人伦| 欧美诱惑福利视频| 欧美剧在线观看| 另类酷文…触手系列精品集v1小说| 欧美精品18| 麻豆精品传媒视频| 国产精品色婷婷久久58| 亚洲国产精品国自产拍av秋霞| 国产视频亚洲| 亚洲一区二区三区四区中文| 99国内精品久久久久久久软件| 久久嫩草精品久久久精品| 久久精品av麻豆的观看方式| 欧美视频精品在线观看| 欧美激情一区二区三区全黄| 国产真实久久| 欧美日韩免费一区| 久久精品理论片| 久久久噜噜噜久噜久久| 午夜精品久久| 欧美日韩一区精品| 亚洲精品久久久蜜桃| 在线精品观看| 欧美一级片久久久久久久| 亚洲专区欧美专区| 欧美日韩中国免费专区在线看| 亚洲国产精品传媒在线观看| 伊伊综合在线| 久久精品国产999大香线蕉| 欧美一区二区视频在线观看| 国产乱码精品一区二区三区忘忧草| 99视频精品免费观看| 一区二区三区你懂的| 欧美另类高清视频在线| 亚洲看片免费| 亚洲一区日韩| 欧美色综合天天久久综合精品| 亚洲精品小视频在线观看| 亚洲视频在线播放| 国产精品久久久久久久久久免费| 日韩一区二区福利| 亚洲欧美制服另类日韩| 国产亚洲成av人片在线观看桃| 午夜久久tv| 久久在线观看视频| 亚洲国产福利在线| 欧美成人中文字幕| 99视频一区二区三区| 久久er精品视频| 有码中文亚洲精品| 欧美另类69精品久久久久9999| 亚洲视频在线观看三级| 久久伊人亚洲| 一本色道久久综合狠狠躁的推荐| 欧美性做爰毛片| 久久国产手机看片| 91久久夜色精品国产网站| 亚洲尤物精选| 在线播放国产一区中文字幕剧情欧美| 麻豆成人小视频| 99这里只有久久精品视频| 久久精品国产清高在天天线| 91久久精品美女| 国产精品自拍小视频| 欧美成年网站| 午夜一级在线看亚洲| 欧美激情第1页| 性欧美大战久久久久久久免费观看| 伊伊综合在线| 国产精品高潮在线| 久久综合色88| 亚洲专区免费| 91久久精品一区| 久久久久久久久久久一区 | 国产综合在线看| 欧美日韩蜜桃| 久久久久国色av免费观看性色| 亚洲人体一区| 久久综合一区| 亚洲先锋成人| 亚洲国产小视频在线观看| 国产精品推荐精品| 久久精品成人一区二区三区| 亚洲日本欧美在线| 欧美精品一区二区三区蜜桃 | 一区二区欧美日韩视频| 久久先锋影音av| 亚洲自拍16p| 亚洲看片一区| 亚洲二区在线视频| 国产一区二区三区久久久| 国产精品对白刺激久久久| 免费成人高清在线视频| 久久精品免费观看|