2008年2月14日 星期四

[轉貼]XPM格式

該文翻譯自XPM: Summary from the Encyclopedia of Graphics File Formats


XPM文件的基本結構是
/* XPM */
static char *
[] = {




};


其中Values部分相當于圖像文件的文件頭,它由
<width><height><numcolors><cpp>[<x_hotspot><y_hotspot>] [ XPMEXT ]
構成,其中x_hotspot,y_hotspot,XPMEXT是可選的。
width:圖像的寬度,像素為單位
height:圖像的高度,像素為單位
numcolors:顏色數
cpp:每個像素占用的字符長度
x_hotspot:熱點的X軸位置
y_hotspot:熱點的Y軸位置

Colors部分定義的是調色板的信息,它由


<character>{ <key><color>} { <key><color>}構成

character是顏色索引值,key是關鍵字,color是顏色值
key可以有以下幾種選項:
m:單色
s:符號名稱
g4:4級灰度
g:灰度
c:彩色
color也可以由以下幾種構成:
顏色名稱
#開頭的十六進制數表示RGB空間顏色值
%開頭的十六禁止數表示HSV空間顏色值
符號名稱
字符串NONE,表示該顏色是透明色

Pixels部分表示實際的像素,全部采用調色板中定義的索引,由等同于圖像像素高度的行構成。

Extension部分可以自己定義一些圖像附件信息,如作者,標題等,形如
XPMEXT

<extension_name><extension_data_string>單行的擴展
XPMEXT
<extension_name>
<extension_data_string1>

<extension_data_string2><xmp></xmp>

多行的擴展
Extension部分必須以XPMENDEXT標志結束。
例子如下:
/* XPM */

static char * plaid[] =
{
/* plaid pixmap */
/* width height ncolors chars_per_pixel */
"22 22 4 2 0 0 XPMEXT",
/* colors */
" c red m white s light_color",
"Y c green m black s ines_in_mix",
"+ c yellow m white s lines_in_dark ",
"x m black s dark_color ",
/* pixels */
"x x x x x x x x x x x x + x x x x x ",
" x x x x x x x x x x x x x x x x ",
"x x x x x x x x x x x x + x x x x x ",
" x x x x x x x x x x x x x x x x ",
"x x x x x x x x x x x x + x x x x x ",
"Y Y Y Y Y x Y Y Y Y Y + x + x + x + x + x + ",
"x x x x x x x x x x x x + x x x x x ",
" x x x x x x x x x x x x x x x x ",
"x x x x x x x x x x x x + x x x x x ",
" x x x x x x x x x x x x x x x x ",
"x x x x x x x x x x x x + x x x x x ",
" x x x x Y x x x ",
" x x x Y x x ",
" x x x x Y x x x ",
" x x x Y x x ",
" x x x x Y x x x ",
"x x x x x x x x x x x x x x x x x x x x x x ",
" x x x x Y x x x ",
" x x x Y x x ",
" x x x x Y x x x ",
" x x x Y x x ",
" x x x x Y x x x ",
"XPMEXT ext1 data1",
"XPMEXT ext2",
"data2_1",
"data2_2",
"XPMEXT ext3",
"data3",
"XPMEXT",
"data4",
"XPMENDEXT"
};

顯示結果,請將上面部份複製下來,開記事本另存成xpm檔試試就知道。

沒有留言: