?? convertcolor.c
字號:
/****************************************************************************************
* 文件名:CONVERTCOLOR.C
* 功能:顏色值轉換程序。
* 作者:黃紹斌
* 日期:2004.02.26
* 備注:
****************************************************************************************/
#include "config.h"
#if CONVERTCOLOR_EN==1
/****************************************************************************
* 名稱:GUI_Color2Index_565()
* 功能:將RGB值轉換16位索引值。轉換后的值適用于64K色彩色液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(64K色,d15--d11為R值,d10--d5為G值,d4--d0為B值)
* 說明:
****************************************************************************/
uint16 GUI_Color2Index_565(uint32 colorRGB)
{ uint8 r, g, b;
b = ( colorRGB>>(0+3) ) & 0x1f; // 取B色的高5位
g = ( colorRGB>>(8+2) ) & 0x3f; // 取G色的高6位
r = ( colorRGB>>(16+3)) & 0x1f; // 取R色的高5位
return( (r<<11) + (g<<5) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Index2Color_565()
* 功能:將16位索引值轉換為RGB值。適用于64K色彩色液晶。
* 入口參數:index 16位索引值(64K色,d15--d11為R值,d10--d5為G值,d4--d0為B值)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_565(uint16 index)
{ uint32 r, g, b;
b = (index>>0) & 0x1f;
g = (index>>5) & 0x3f;
r = (index>>11) & 0x1f;
r = r * 255 / 31;
g = g * 255 / 63;
b = b * 255 / 31;
return( (r<<16) + (g<<8) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Color2Index_555()
* 功能:將RGB值轉換15位索引值。轉換后的值適用于32K色彩色液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(32K色,d14--d10為R值,d9--d5為G值,d4--d0為B值)
* 說明:
****************************************************************************/
uint16 GUI_Color2Index_555(uint32 colorRGB)
{ uint8 r, g, b;
b = ( colorRGB>>(0+3) ) & 0x1f;
g = ( colorRGB>>(8+3) ) & 0x1f;
r = ( colorRGB>>(16+3)) & 0x1f;
return( (r<<10) + (g<<5) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Index2Color_555()
* 功能:將15位索引值轉換為RGB值。適用于32K色彩色液晶。
* 入口參數:index 15位索引值(32K色,d14--d10為R值,d9--d5為G值,d4--d0為B值)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_555(uint16 index)
{ uint32 r, g, b;
b = (index>>0) & 0x1f;
g = (index>>5) & 0x1f;
r = (index>>10) & 0x1f;
r = r * 255 / 31;
g = g * 255 / 31;
b = b * 255 / 31;
return( (r<<16) + (g<<8) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Color2Index_444()
* 功能:將RGB值轉換12位索引值。轉換后的值適用于4096色偽彩液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(4096色,RRRRGGGGBBBB)
* 說明:
****************************************************************************/
uint16 GUI_Color2Index_444(uint32 colorRGB)
{ uint8 r,g,b;
b = ( colorRGB>>(0+4) ) & 0x0f;
g = ( colorRGB>>(8+4) ) & 0x0f;
r = ( colorRGB>>(16+4)) & 0x0f;
return ( (r<<8) + (g << 4) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Index2Color_444()
* 功能:將12位索引值轉換為RGB值。適用于4096色偽彩液晶。
* 入口參數:index 12位索引值(4096色,RRRRGGGGBBBB)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_444(uint16 index)
{ uint8 r,g,b;
b = (index >> 0) & 0x0f;
g = (index >> 4) & 0x0f;
r = (index >> 8) & 0x0f;
r = r * 17;
g = g * 17;
b = b * 17;
return ( (r<<16) + (g<<8) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Color2Index_332()
* 功能:將RGB值轉換8位索引值。轉換后的值適用于256色偽彩液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(256色,RRRGGGBB)
* 說明:
****************************************************************************/
uint8 GUI_Color2Index_332(uint32 colorRGB)
{ uint32 r, g, b;
b = (colorRGB>>0) & 0xff;
g = (colorRGB>>8) & 0xff;
r = (colorRGB>>16) & 0xff;
r = (r * 7 + 127) / 255;
g = (g * 7 + 127) / 255;
b = (b + 42) / 85;
return( (r<<5) + (g << 2) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Index2Color_332()
* 功能:將8位索引值轉換為RGB值。適用于256色偽彩液晶。
* 入口參數:index 8位索引值(256色,RRRGGGBB)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_233(uint8 index)
{ uint32 r, g, b;
r = (index >> 5) * 255 / 7;
g = ((index >> 3) & 7) * 255 / 7;
b = (index & 3) * 85;
return( (r<<16) + (g << 8) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Color2Index_222()
* 功能:將RGB值轉換8位索引值。轉換后的值適用于64色液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(64色,RRGGBB)
* 說明:
****************************************************************************/
uint8 GUI_Color2Index_222(uint32 colorRGB)
{ uint32 r, g, b;
b = (((colorRGB>>0) &255)+0x2a)/0x55;
g = (((colorRGB>>8) &255)+0x2a)/0x55;
r = (((colorRGB>>16)&255)+0x2a)/0x55;
return( (r<<4) + (g<<2) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Index2Color_222()
* 功能:將6位索引值轉換為RGB值。適用于64色液晶。
* 入口參數:index 6位索引值(64色,RRGGBB)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_222(uint8 index)
{ uint8 r, g, b;
b = ((index>>0)&3) * 0x55;
g = ((index>>2)&3) * 0x55;
r = ((index>>4)&3) * 0x55;
return( (r<<16) + (g<<8) + (b<<0) );
}
/****************************************************************************
* 名稱:GUI_Color2Index_111()
* 功能:將RGB值轉換3位索引值。轉換后的值適用于8色液晶或8級恢度液晶。
* 入口參數:ColorRGB RGB值,d23--d16為R值,d15--d8為G值,d7--d0為B值
* 出口參數:返回轉換值(8色,RGB)
* 說明:
****************************************************************************/
uint8 GUI_Color2Index_111(uint32 colorRGB)
{ uint8 r, g, b;
b = (colorRGB>>(0+7)) &1;
g = (colorRGB>>(8+7)) &1;
r = (colorRGB>>(16+7)) &1;
return( (r<<2) + (g<<1) + (b<<0) );
}
/****************************************************************************
* 名稱: GUI_Index2Color_111()
* 功能:將3位索引值轉換為RGB值。適用于8色液晶或8級恢度液晶。
* 入口參數:index 3位索引值(8色,RGB)
* 出口參數:返回值即為RGB值(d23--d16為R值,d15--d8為G值,d7--d0為B值)。
* 說明:
****************************************************************************/
uint32 GUI_Index2Color_111(uint8 Index)
{ uint8 r, g, b;
b = ((Index>>0)&1) * 0xff;
g = ((Index>>1)&1) * 0xff;
r = ((Index>>2)&1) * 0xff;
return( (r<<16) + (g<<8) + (b<<0) );
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -