268 lines
9.5 KiB
C
268 lines
9.5 KiB
C
|
#ifndef _CDX_SUBRENDER_H__
|
||
|
#define _CDX_SUBRENDER_H__
|
||
|
|
||
|
#if 0
|
||
|
enum
|
||
|
{
|
||
|
SUB_RENDER_ALIGN_NONE = 0,
|
||
|
SUB_RENDER_HALIGN_LEFT = 1,
|
||
|
SUB_RENDER_HALIGN_CENTER = 2,
|
||
|
SUB_RENDER_HALIGN_RIGHT = 3,
|
||
|
SUN_RENDER_HALIGN_MASK = 0x0000000f,
|
||
|
SUB_RENDER_VALIGN_TOP = (1 << 4),
|
||
|
SUB_RENDER_VALIGN_CENTER = (2 << 4),
|
||
|
SUB_RENDER_VALIGN_BOTTOM = (3 << 4),
|
||
|
SUN_RENDER_VALIGN_MASK = 0x000000f0
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
SUB_RENDER_STYLE_NONE = 0,
|
||
|
SUB_RENDER_STYLE_BOLD = 1 << 0,
|
||
|
SUB_RENDER_STYLE_ITALIC = 1 << 1,
|
||
|
SUB_RENDER_STYLE_UNDERLINE = 1 << 2,
|
||
|
SUB_RENDER_STYLE_STRIKETHROUGH = 1 << 3
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
SUB_CHARSET_BITMAP = -2,
|
||
|
SUB_CHARSET_UNKNOWN = -1,
|
||
|
SUB_CHARSET_BIG5 = 0,
|
||
|
SUB_CHARSET_BIG5_HKSCS = 1,
|
||
|
SUB_CHARSET_BOCU_1 = 2,
|
||
|
SUB_CHARSET_CESU_8 = 3,
|
||
|
SUB_CHARSET_CP864 = 4,
|
||
|
SUB_CHARSET_EUC_JP = 5,
|
||
|
SUB_CHARSET_EUC_KR = 6,
|
||
|
SUB_CHARSET_GB18030 = 7,
|
||
|
SUB_CHARSET_GBK = 8,
|
||
|
SUB_CHARSET_HZ_GB_2312 = 9,
|
||
|
SUB_CHARSET_ISO_2022_CN = 10,
|
||
|
SUB_CHARSET_ISO_2022_CN_EXT = 11,
|
||
|
SUB_CHARSET_ISO_2022_JP = 12,
|
||
|
SUB_CHARSET_ISO_2022_KR = 13,
|
||
|
SUB_CHARSET_ISO_8859_1 = 14,
|
||
|
SUB_CHARSET_ISO_8859_10 = 15,
|
||
|
SUB_CHARSET_ISO_8859_13 = 16,
|
||
|
SUB_CHARSET_ISO_8859_14 = 17,
|
||
|
SUB_CHARSET_ISO_8859_15 = 18,
|
||
|
SUB_CHARSET_ISO_8859_16 = 19,
|
||
|
SUB_CHARSET_ISO_8859_2 = 20,
|
||
|
SUB_CHARSET_ISO_8859_3 = 21,
|
||
|
SUB_CHARSET_ISO_8859_4 = 22,
|
||
|
SUB_CHARSET_ISO_8859_5 = 23,
|
||
|
SUB_CHARSET_ISO_8859_6 = 24,
|
||
|
SUB_CHARSET_ISO_8859_7 = 25,
|
||
|
SUB_CHARSET_ISO_8859_8 = 26,
|
||
|
SUB_CHARSET_ISO_8859_9 = 27,
|
||
|
SUB_CHARSET_KOI8_R = 28,
|
||
|
SUB_CHARSET_KOI8_U = 29,
|
||
|
SUB_CHARSET_MACINTOSH = 30,
|
||
|
SUB_CHARSET_SCSU = 31,
|
||
|
SUB_CHARSET_SHIFT_JIS = 32,
|
||
|
SUB_CHARSET_TIS_620 = 33,
|
||
|
SUB_CHARSET_US_ASCII = 34,
|
||
|
SUB_CHARSET_UTF_16 = 35,
|
||
|
SUB_CHARSET_UTF_16BE = 36,
|
||
|
SUB_CHARSET_UTF_16LE = 37,
|
||
|
SUB_CHARSET_UTF_32 = 38,
|
||
|
SUB_CHARSET_UTF_32BE = 39,
|
||
|
SUB_CHARSET_UTF_32LE = 40,
|
||
|
SUB_CHARSET_UTF_7 = 41,
|
||
|
SUB_CHARSET_UTF_8 = 42,
|
||
|
SUB_CHARSET_WINDOWS_1250 = 43,
|
||
|
SUB_CHARSET_WINDOWS_1251 = 44,
|
||
|
SUB_CHARSET_WINDOWS_1252 = 45,
|
||
|
SUB_CHARSET_WINDOWS_1253 = 46,
|
||
|
SUB_CHARSET_WINDOWS_1254 = 47,
|
||
|
SUB_CHARSET_WINDOWS_1255 = 48,
|
||
|
SUB_CHARSET_WINDOWS_1256 = 49,
|
||
|
SUB_CHARSET_WINDOWS_1257 = 50,
|
||
|
SUB_CHARSET_WINDOWS_1258 = 51,
|
||
|
SUB_CHARSET_X_DOCOMO_SHIFT_JIS_2007 = 52,
|
||
|
SUB_CHARSET_X_GSM_03_38_2000 = 53,
|
||
|
SUB_CHARSET_X_IBM_1383_P110_1999 = 54,
|
||
|
SUB_CHARSET_X_IMAP_MAILBOX_NAME = 55,
|
||
|
SUB_CHARSET_X_ISCII_BE = 56,
|
||
|
SUB_CHARSET_X_ISCII_DE = 57,
|
||
|
SUB_CHARSET_X_ISCII_GU = 58,
|
||
|
SUB_CHARSET_X_ISCII_KA = 59,
|
||
|
SUB_CHARSET_X_ISCII_MA = 60,
|
||
|
SUB_CHARSET_X_ISCII_OR = 61,
|
||
|
SUB_CHARSET_X_ISCII_PA = 62,
|
||
|
SUB_CHARSET_X_ISCII_TA = 63,
|
||
|
SUB_CHARSET_X_ISCII_TE = 64,
|
||
|
SUB_CHARSET_X_ISO_8859_11_2001 = 65,
|
||
|
SUB_CHARSET_X_JAVAUNICODE = 66,
|
||
|
SUB_CHARSET_X_KDDI_SHIFT_JIS_2007 = 67,
|
||
|
SUB_CHARSET_X_MAC_CYRILLIC = 68,
|
||
|
SUB_CHARSET_X_SOFTBANK_SHIFT_JIS_2007 = 69,
|
||
|
SUB_CHARSET_X_UNICODEBIG = 70,
|
||
|
SUB_CHARSET_X_UTF_16LE_BOM = 71,
|
||
|
SUB_CHARSET_X_UTF16_OPPOSITEENDIAN = 72,
|
||
|
SUB_CHARSET_X_UTF16_PLATFORMENDIAN = 73,
|
||
|
SUB_CHARSET_X_UTF32_OPPOSITEENDIAN = 74,
|
||
|
SUB_CHARSET_X_UTF32_PLATFORMENDIAN = 75
|
||
|
};
|
||
|
|
||
|
enum SUB_ALIGNMENT
|
||
|
{
|
||
|
SUB_ALIGNMENT_UNKNOWN = -1,
|
||
|
SUB_ALIGNMENT_MIDDLE = 0,
|
||
|
SUB_ALIGNMENT_LEFT = 1,
|
||
|
SUB_ALIGNMENT_RIGHT = 2,
|
||
|
SUB_ALIGNMENT_
|
||
|
};
|
||
|
|
||
|
|
||
|
enum SUB_FONTSTYLE
|
||
|
{
|
||
|
SUB_FONT_UNKNOWN = -1,
|
||
|
SUB_FONT_EPILOG = 0,
|
||
|
SUB_FONT_VERDANA = 1,
|
||
|
SUB_FONT_GEORGIA = 2,
|
||
|
SUB_FONT_ARIAL = 3,
|
||
|
SUB_FONT_TIMES_NEW_ROMAN = 4,
|
||
|
SUB_FONT_
|
||
|
};
|
||
|
enum
|
||
|
{
|
||
|
SUB_RENDER_EFFECT_NONE = 0,
|
||
|
SUB_RENDER_EFFECT_SCROLL_UP = 1,
|
||
|
SUB_RENDER_EFFECT_SCROLL_DOWN = 2,
|
||
|
SUB_RENDER_EFFECT_BANNER_LTOR = 3,
|
||
|
SUB_RENDER_EFFECT_BANNER_RTOL = 4,
|
||
|
SUB_RENDER_EFFECT_MOVE = 5,
|
||
|
SUB_RENDER_EFFECT_KARAOKE = 6,
|
||
|
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
SUB_RENDER_ALIGN_NONE = 0,
|
||
|
SUB_RENDER_HALIGN_LEFT = 1,
|
||
|
SUB_RENDER_HALIGN_CENTER = 2,
|
||
|
SUB_RENDER_HALIGN_RIGHT = 3,
|
||
|
SUN_RENDER_HALIGN_MASK = 0x0000000f,
|
||
|
SUB_RENDER_VALIGN_TOP = (1 << 4),
|
||
|
SUB_RENDER_VALIGN_CENTER = (2 << 4),
|
||
|
SUB_RENDER_VALIGN_BOTTOM = (3 << 4),
|
||
|
SUN_RENDER_VALIGN_MASK = 0x000000f0
|
||
|
};
|
||
|
|
||
|
|
||
|
enum SUBTITLE_DISP_POSITION
|
||
|
{
|
||
|
SUB_DISPPOS_DEFAULT = 0,
|
||
|
SUB_DISPPOS_BOT_LEFT = SUB_RENDER_VALIGN_BOTTOM+SUB_RENDER_HALIGN_LEFT,
|
||
|
SUB_DISPPOS_BOT_MID = SUB_RENDER_VALIGN_BOTTOM+SUB_RENDER_HALIGN_CENTER,
|
||
|
SUB_DISPPOS_BOT_RIGHT = SUB_RENDER_VALIGN_BOTTOM+SUB_RENDER_HALIGN_RIGHT,
|
||
|
SUB_DISPPOS_MID_LEFT = SUB_RENDER_VALIGN_CENTER+SUB_RENDER_HALIGN_LEFT,
|
||
|
SUB_DISPPOS_MID_MID = SUB_RENDER_VALIGN_CENTER+SUB_RENDER_HALIGN_CENTER,
|
||
|
SUB_DISPPOS_MID_RIGHT = SUB_RENDER_VALIGN_CENTER+SUB_RENDER_HALIGN_RIGHT,
|
||
|
SUB_DISPPOS_TOP_LEFT = SUB_RENDER_VALIGN_TOP +SUB_RENDER_HALIGN_LEFT,
|
||
|
SUB_DISPPOS_TOP_MID = SUB_RENDER_VALIGN_TOP +SUB_RENDER_HALIGN_CENTER,
|
||
|
SUB_DISPPOS_TOP_RIGHT = SUB_RENDER_VALIGN_TOP +SUB_RENDER_HALIGN_RIGHT,
|
||
|
SUB_DISPPOS_
|
||
|
};
|
||
|
|
||
|
enum SUB_ENCODING_TYPE
|
||
|
{
|
||
|
SUB_ENCODING_UNKNOWN = SUB_CHARSET_UNKNOWN, // unknown subtitle encode type
|
||
|
SUB_ENCODING_NONE = SUB_CHARSET_UNKNOWN, // none subtitle bitstream
|
||
|
SUB_ENCODING_BITMAP = SUB_CHARSET_BITMAP, // subtitle encode type is bitmap, 4 colors supported.
|
||
|
SUB_ENCODING_UTF8 = SUB_CHARSET_UTF_8, // subtitle encode type is UTF8
|
||
|
SUB_ENCODING_GB2312 = SUB_CHARSET_HZ_GB_2312, // subtitle encode type is GB2312
|
||
|
SUB_ENCODING_UTF16LE = SUB_CHARSET_UTF_16LE, // subtitle encode type is UTF16-LE
|
||
|
SUB_ENCODING_UTF16BE = SUB_CHARSET_UTF_16BE, // subtitle encode type is UTF16-BE
|
||
|
SUB_ENCODING_UTF32LE = SUB_CHARSET_UTF_32LE, // subtitle encode type is UTF32-LE
|
||
|
SUB_ENCODING_UTF32BE = SUB_CHARSET_UTF_32BE, // subtitle encode type is UTF32-BE
|
||
|
SUB_ENCODING_BIG5 = SUB_CHARSET_BIG5, // subtitle encode type is BIG5
|
||
|
SUB_ENCODING_GBK = SUB_CHARSET_GBK, // subtitle encode type is GBK
|
||
|
SUB_ENCODING_ANSI = SUB_CHARSET_UTF_8, // subtitle encode type is text, unknown character encode type
|
||
|
SUB_ENCODING_
|
||
|
};
|
||
|
|
||
|
|
||
|
enum SUB_MODE
|
||
|
{
|
||
|
SUB_MODE_TEXT = 0,
|
||
|
SUB_MODE_BITMAP = 1,
|
||
|
SUB_MODE_
|
||
|
};
|
||
|
|
||
|
#if 1
|
||
|
#define SUB_MAX_KARAOKE_EFFECT_NUM 16
|
||
|
|
||
|
typedef struct SUBTITLE_KARAKO_EFFECT_INF
|
||
|
{
|
||
|
unsigned int karakoSectionNum;
|
||
|
unsigned int karaKoSectionStartTime[SUB_MAX_KARAOKE_EFFECT_NUM];
|
||
|
unsigned int karaKoSectionLen[SUB_MAX_KARAOKE_EFFECT_NUM];
|
||
|
unsigned int karaKoSectionColor[SUB_MAX_KARAOKE_EFFECT_NUM];
|
||
|
}sub_karako_effect_inf;
|
||
|
#endif
|
||
|
typedef struct SUBTITLE_ITEM_INF //the information of each subItem
|
||
|
{
|
||
|
unsigned char subMode; //0: SUB_MODE_TEXT; 1: SUB_MODE_BITMAP
|
||
|
int startx; // the invalid value is -1
|
||
|
int starty; // the invalid value is -1
|
||
|
int endx; // the invalid value is -1
|
||
|
int endy; // the invalid value is -1
|
||
|
int subDispPos; // the disply position of the subItem
|
||
|
int startTime; // the start display time of the subItem
|
||
|
int endTime; // the end display time of the subItem
|
||
|
unsigned char* subTextBuf; // the data buffer of the text subtitle
|
||
|
unsigned char* subBitmapBuf; // the data buffer of the bitmap subtitle
|
||
|
unsigned int subTextLen; // the length of the text subtitle
|
||
|
unsigned int subPicWidth; // the width of the bitmap subtitle
|
||
|
unsigned int subPicHeight; // the height of the bitmap subtitle
|
||
|
unsigned char alignment; // the alignment of the subtitle
|
||
|
signed char encodingType; // the encoding tyle of the text subtitle
|
||
|
void* nextSubItem; // the information of the next subItem
|
||
|
unsigned char dispBufIdx; // the diplay index of the sub
|
||
|
|
||
|
unsigned int subScaleWidth; // the scaler width of the bitmap subtitle
|
||
|
unsigned int subScaleHeight; // the scaler height of the bitmap subtitle
|
||
|
|
||
|
unsigned char subHasFontInfFlag;
|
||
|
unsigned char fontStyle; // the font style of the text subtitle
|
||
|
signed char fontSize; // the font size of the text subtile
|
||
|
unsigned int primaryColor;
|
||
|
unsigned int secondaryColor;
|
||
|
//unsigned int outlineColour;
|
||
|
//unsigned int backColour;
|
||
|
unsigned int subStyle; // the bold flag,the italic flag, or the underline flag
|
||
|
int subEffectFlag;
|
||
|
unsigned int effectStartxPos;
|
||
|
unsigned int effectEndxPos;
|
||
|
unsigned int effectStartyPos;
|
||
|
unsigned int effectEndyPos;
|
||
|
unsigned int effectTimeDelay;
|
||
|
sub_karako_effect_inf *subKarakoEffectInf;
|
||
|
}sub_item_inf;
|
||
|
|
||
|
|
||
|
enum SUB_DATA_STRUCT
|
||
|
{
|
||
|
SUB_DATA_STRUCT_ARGB = 0,
|
||
|
SUB_DATA_STRUCT_RGBA = 1,
|
||
|
SUB_DATA_STRUCT_BGRA = 2,
|
||
|
SUB_DATA_STRUCT_ABGR = 3,
|
||
|
SUB_DATA_STRUCT_
|
||
|
};
|
||
|
|
||
|
int SubRenderCreate();
|
||
|
int SubRenderDestory();
|
||
|
int SubRenderDraw(sub_item_inf *sub_info);
|
||
|
int SubRenderShow();
|
||
|
int SubRenderHide(unsigned int systemTime, int* hasSubShowFlag);
|
||
|
|
||
|
int SubRenderSetZorderTop();
|
||
|
int SubRenderSetZorderBottom();
|
||
|
|
||
|
#endif
|