FLTK學習-7-使用FLUID編程(5)

11.9 Image Labels

      ImageInactive域中的圖像文件的內容被寫入到.cxx文件中。如果多個構件共享相同的圖像,則只有一個拷貝被寫入。因爲圖像數據在生成的源碼中,所以你只需要分發C++的源碼即可而不需要圖像文件本身。

      然而圖像文件名保存在.fl文件中,所以在讀.fl文件時你需要圖像文件。圖像文件名路徑是相對於fl文件的路徑而不必放到當前路徑下,我們建議你要麼將圖像與fl文件放到同一目錄下要麼使用絕對路徑名。

所有文件類型的注意事項

Notes for All Image Types

      FLUID使用你的X服務器的默認圖像運行【??】。這可能是可以給出抖動圖像的8位圖像。在你的代碼中第一個窗口顯示之前加入代碼”Fl::visual(FL_RGB)”到你的實際程序中可能獲得更好的結果。所有使用同一幅圖像的構件共享相同的代碼和源X象圖。所以一旦你已經將一幅圖像放到的一個構件中,則將相同的圖像放入其他的構件中幾乎不費吹灰之力。

      如果你在FLUID正使用一幅圖像時編輯這幅圖像,那麼唯一使得FLUID能夠再次讀取圖像文件的方法是將圖像從使用它的所有構件中移除或者從fl文件中重新加載。

      不要仰仗FLTK對超出構件的圖像的裁剪行爲,因爲在將來的版本中這可能就不會奏效了。在標籤內部的裁剪可能就不會改變了。

      爲更精確的放置圖像,可以創建一個新的box構件,將圖像作爲標籤放入到其中。

XBM (X 位圖)文件

      FLUID讀取使用C源碼定義的位圖的X位圖文件【??】。有時文件保存的擴展名爲.h或者.bm而不是標準的.xbm

      FLUID用代碼來構造Fl_Bitmap圖像,並使用它作爲構件的標籤。在位圖中的位1使用構件標籤的顏色畫出。你可以在FLUID的構件屬性面板中改變這個顏色,位0是透明的。

      X分發中的位圖程序足夠編輯位圖的任務了。

XPM (X 象圖)文件

      FLUIDlibxpm庫一樣讀取X象圖文件。這些文件使用C源文件定義象圖,文件擴展名通常是.xpm

      FLUID用代碼來構造Fl_Pixmap圖像,並使用它作爲構件的標籤。構件的標籤顏色將不忽略,即使是兩種顏色的圖像也可以是位圖【??】。XPM文件可以標記一個單獨的顏色作爲透明色,FLTK使用這個信息來爲圖像生成一個透明掩膜。

      我們還沒有發現號的小圖標圖像編輯器,對於象圖我們使用過XPaintKDE圖標編輯器。

BMP文件

      FLUID讀取windowsBMP文件,BMP圖像經常作爲WIN32程序的圖標。FLUIDBMP文件轉爲XPM格式,並且使用Fl_VMP_Image圖像作爲構件標籤。對於透明的處理與XPM文件一樣,寫入源文件中的所有圖像數據都是未壓縮的,所以代碼文件可能比bmp文件大得多。

GIF文件

      FLUID讀取在HTML文檔中經常使用的GIF圖像,FLUIDGIF文件轉換爲XPM格式並使用Fl_GIF_Image圖像作爲構件的標籤。對於透明的處理與XPM文件一樣,寫入源文件中的所有圖像數據都是未壓縮的,所以代碼文件可能比gif文件大得多。只有第一幅GIF圖像是動態的【??】。

JPEG文件

      如果FLTK使用的JPEG支持編譯的,FLUID就可以讀取JPEG圖像文件,JPEG文件常用在數字圖像中,FLUID使用Fl_JPEG_Image圖像作爲構件標籤,將未壓縮的RGB或者灰度數據寫入源文件中。

PNG (Portable Network Graphics)文件

      如果FLTK使用了PNG支持編譯,則FLUID可以讀取經常在HTML文檔中用到的PNG圖像文件。FLUID使用Fl_PNG_Image圖像作爲構件標籤,將未壓縮的RGB或者灰度數據寫入源文件中。PNG圖像可以爲部分透明提供一個完整的alpha通道,FLTK在每個平臺上都盡力支持該功能。

11.10 FLUID的國際化

      FLUID支持構件標籤字符串的國際化(簡稱I18N)。偏好窗口提供了關於I18N的選項。

11.10.1 I18N方法

      FLUID支持關於三種方法用於I18N:什麼都不用、使用GUN gettext或者使用POSIX catgets。什麼都不使用的方法是默認的,僅僅將標籤字符串傳遞給構件構造函數。

      GUN gettext方法使用GUN gettext(或者一個相似的基於文本的I18N庫)在調用構件的構造函數之前返回一個本地字符串。

      POSIX catgets方法使用POSIX catgets函數在調用構件構造函數之前從消息目錄中返回一個編號的消息。

11.10.2 使用GNU gettext完成I18N

      FLUID中的GUN gettext對代碼的支持被限制在只能調用函數或者宏來返回本地標籤。你仍然需要調用setlocale()textdomain()或者bindtextdomain()來選擇合適的語言和消息文件。

      要使用GNU gettext打開偏好窗口,從Use:選擇器中選擇”GNU gettext”,兩個新的輸入域將出現,可以控制返回本地標籤字符串時包含的文件以及使用的函數或者宏名。

 

11.11 使用GNU gettext的國際化

      #include域控制I18N的包含頭文件,默認是GNU gettext的標準I18N文件<libintl.h>

      Function域控制返回本地消息的函數(或者宏),默認時gettext函數將被調用。

11.10.3 使用POSIX catgets完成I18N

      FLUIDPOSIX catgets的代碼支持允許你對所有的接口使用一個全局的消息文件或者對每個fl文件一個特殊的文件。你仍然需要調用setlocale()來選擇合適的語言。

要爲I18N使用POSIX catgets,打開偏好窗口,從Use:選擇器中選擇” POSIX catgets”,三個新的輸入域將出現,可以控制返回本地標籤字符串時的包含文件、目錄文件以及設置的編號。

11.12 使用POSIX catgetst實現國際化

#include域控制I18N的包含頭文件,默認是POSIX catgetst的標準I18N文件<nl_types.h>

File域控制返回本地消息時使用的目錄文件變量的名字【??】。默認時file域爲空強制fl文件中定義的所有窗口使用本地(靜態)的目錄文件。

Set域目錄文件中設置的編號。默認的設置爲1,很少需要做修改。

11.11 已知的缺陷

      可以使用#if 0#endif聲明塊來臨時封閉已經設計好的代碼,這可以有效的避免代碼塊的編譯,但是,該段生成的靜態代碼和數據(菜單項、圖像、包含聲明等)仍然會生成,而且可能引起編譯時警告。

 

【後記】:終於翻譯完了,本來翻譯了一半時就不想再做了,雖然自己英語水平很爛,但是感覺這手冊像是用英語的方言寫的,各種語法的不通,最後本着善始善終的原則總算把它翻譯完了。自己本來倒也不是爲了使用FLUID而翻譯的,FLUID是一個用來設計界面並且可以將界面裝換爲代碼的工具,翻譯這個手冊是爲了瞭解一下它都有些什麼功能,想參考參考它的源碼,從中吸取點營養。最終硬着頭皮翻譯完了,將就着看吧,很多地方自己也不懂。

完整的word附上:http://download.csdn.net/detail/ljbsdu/4704452 辛苦了這麼久,總得有點辛苦費,3個積分,沒有積分的可以聯繫我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章