AGG 字型快取管理器

2021-05-26 03:17:16 字數 2156 閱讀 6259

每次都重新讀字模是很費時的,比如前面的例子,"c++" 裡的兩個'+' 就讀兩次字模,效率可以想象。

乙個好的辦法是把已讀出來的字模快取起來,下次再遇到這個字時就不用從字型引擎裡讀取了,agg提供的font_cache_manager類就是 負責這項工作的。

標頭檔案#include "agg_font_cache_manager.h"     型別

template

class font_cache_manager;

模板引數fontengine指定管理器所用的字型引擎。另外構造引數也是fontengine。

成員方法

const glyph_cache* glyph(unsigned glyph_code);

獲得字模並快取,glyph_cache類的定義是:

struct glyph_cache

;

path_adaptor_type&   path_adaptor();

字型引擎的path_adaptor_type例項

gray8_adaptor_type& gray8_adaptor();

gray8_scanline_type& gray8_scanline();

字型引擎的gray8_adaptor_type例項以及對應的scanline

mono_adaptor_type&   mono_adaptor();

mono_scanline_type& mono_scanline();

字型引擎的mono_adaptor_type例項以及對應的scanline

void init_embedded_adaptors(const glyph_cache* gl,

double x, double y,

double scale=1.0);

初始化上面的adaptor成員例項(與字型引擎的ren_type設定相關)

bool add_kerning(double* x, double* y);

調整座標

示例**1-作為rasterizer渲染:

顯示效果

agg::font_engine_win32_tt_int16 font(dc);

agg::font_cache_manager<

agg::font_engine_win32_tt_int16

> font_manager(font);

font.height(72.0);

font.width(0);

font.italic(true);

font.flip_y(true);

font.hinting(true);

font.transform(agg::trans_affine_rotation(agg::deg2rad(4.0)));

font.create_font("宋體",agg::glyph_ren_agg_gray8);

double x=10, y=72; //起始位置

wchar_t *text = l"c++程式設計網";

// 畫所有字元

for(;*text;text++) }

示例**2-作為頂點源渲染:

typedef agg::font_engine_win32_tt_int16 fe_type;

fe_type font(getdc(0));

typedef agg::font_cache_managerfcman_type;

fcman_type font_manager(font);

font.height(72.0);

font.width(0);

font.italic(true);

font.flip_y(true);

font.hinting(true);

font.transform(agg::trans_affine_rotation(agg::deg2rad(4.0)));

font.create_font("宋體",agg::glyph_ren_outline);

double x=10, y=72; //起始位置

wchar_t *text = l"c++程式設計網";

// 畫所有字元

for(;*text;text++) }

顯示效果

布局管理器 網格袋布局管理器

網格袋布局管理器中的約束條件constrains中有如下字段需要設定 1 constrains.gridx和constrains.gridy 這兩個欄位僅用於指定元件的起始網格座標。2 constrains.gridwidth和constrains.gridheight 這兩個字段用於指定元件所佔網...

儲存管理器

cpu配置儲存管理器 cpu讀操作發命令給儲存管理器,儲存管理器根據配置讀取資料 nand flash啟動方式,開機片內sram拷貝nand flash前4k執行,在這4k的程式裡需要完成sram sdram跳轉 s3c2440有8個bank,即8個片選訊號,直連可以接8個記憶體類外設 sdram,...

布局管理器

jframe 內容面板在預設的情況下自動使用邊界布局管理器。1.邊界布局 borderlayout 所謂的borderlayout 就是把邊界劃分為東西南北中,南北要貫通,中間最大,不僅指地方最大,也指權利最大,當東西南北不存在時可占領他們,也就是說中間是可以占領周邊的,但周邊是絕不能占領中間的。邊...