亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtfdecoder.cpp

?? 此文件為RTF文件轉換為TXT文件的解碼程序。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************************************/    /*                             Modification  History                                        *//*   By Whom            When                     For What                                   *//********************************************************************************************/#include "stdafx.h"#include "RtfDecoder.h"
int Charset2Cpg[256];

// Property descriptions
PROP rgprop [ipropMax] = {
    actnByte,   propChp,    offsetof(CHP, fBold),       // ipropBold
		actnByte,   propChp,    offsetof(CHP, fItalic),     // ipropItalic
		actnByte,   propChp,    offsetof(CHP, fUnderline),  // ipropUnderline
		actnWord,   propPap,    offsetof(PAP, xaLeft),      // ipropLeftInd
		actnWord,   propPap,    offsetof(PAP, xaRight),     // ipropRightInd
		actnWord,   propPap,    offsetof(PAP, xaFirst),     // ipropFirstInd
		actnWord,   propSep,    offsetof(SEP, cCols),       // ipropCols
		actnWord,   propSep,    offsetof(SEP, xaPgn),       // ipropPgnX
		actnWord,   propSep,    offsetof(SEP, yaPgn),       // ipropPgnY
		actnWord,   propDop,    offsetof(DOP, xaPage),      // ipropXaPage
		actnWord,   propDop,    offsetof(DOP, yaPage),      // ipropYaPage
		actnWord,   propDop,    offsetof(DOP, xaLeft),      // ipropXaLeft
		actnWord,   propDop,    offsetof(DOP, xaRight),     // ipropXaRight
		actnWord,   propDop,    offsetof(DOP, yaTop),       // ipropYaTop
		actnWord,   propDop,    offsetof(DOP, yaBottom),    // ipropYaBottom
		actnWord,   propDop,    offsetof(DOP, pgnStart),    // ipropPgnStart
		actnByte,   propSep,    offsetof(SEP, sbk),         // ipropSbk
		actnByte,   propSep,    offsetof(SEP, pgnFormat),   // ipropPgnFormat
		actnByte,   propDop,    offsetof(DOP, fFacingp),    // ipropFacingp
		actnByte,   propDop,    offsetof(DOP, fLandscape),  // ipropLandscape
		actnByte,   propPap,    offsetof(PAP, just),        // ipropJust
		actnSpec,   propPap,    0,                          // ipropPard
		actnSpec,   propChp,    0,                          // ipropPlain
		actnSpec,   propSep,    0,                          // ipropSectd
};

// Keyword descriptions
SYM rgsymRtf[] = {
	//  keyword     dflt    fPassDflt   kwd         idx
	    "b",        1,      fFalse,     kwdProp,    ipropBold,
		"u",        1,      fFalse,     kwdProp,    ipropUnderline,
		"i",        1,      fFalse,     kwdProp,    ipropItalic,
		"li",       0,      fFalse,     kwdProp,    ipropLeftInd,
		"ri",       0,      fFalse,     kwdProp,    ipropRightInd,
		"fi",       0,      fFalse,     kwdProp,    ipropFirstInd,
		"cols",     1,      fFalse,     kwdProp,    ipropCols,
		"sbknone",  sbkNon, fTrue,      kwdProp,    ipropSbk,
		"sbkcol",   sbkCol, fTrue,      kwdProp,    ipropSbk,
		"sbkeven",  sbkEvn, fTrue,      kwdProp,    ipropSbk,
		"sbkodd",   sbkOdd, fTrue,      kwdProp,    ipropSbk,
		"sbkpage",  sbkPg,  fTrue,      kwdProp,    ipropSbk,
		"pgnx",     0,      fFalse,     kwdProp,    ipropPgnX,
		"pgny",     0,      fFalse,     kwdProp,    ipropPgnY,
		"pgndec",   pgDec,  fTrue,      kwdProp,    ipropPgnFormat,
		"pgnucrm",  pgURom, fTrue,      kwdProp,    ipropPgnFormat,
		"pgnlcrm",  pgLRom, fTrue,      kwdProp,    ipropPgnFormat,
		"pgnucltr", pgULtr, fTrue,      kwdProp,    ipropPgnFormat,
		"pgnlcltr", pgLLtr, fTrue,      kwdProp,    ipropPgnFormat,
		"qc",       justC,  fTrue,      kwdProp,    ipropJust,
		"ql",       justL,  fTrue,      kwdProp,    ipropJust,
		"qr",       justR,  fTrue,      kwdProp,    ipropJust,
		"qj",       justF,  fTrue,      kwdProp,    ipropJust,
		"paperw",   12240,  fFalse,     kwdProp,    ipropXaPage,
		"paperh",   15480,  fFalse,     kwdProp,    ipropYaPage,
		"margl",    1800,   fFalse,     kwdProp,    ipropXaLeft,
		"margr",    1800,   fFalse,     kwdProp,    ipropXaRight,
		"margt",    1440,   fFalse,     kwdProp,    ipropYaTop,
		"margb",    1440,   fFalse,     kwdProp,    ipropYaBottom,
		"pgnstart", 1,      fTrue,      kwdProp,    ipropPgnStart,
		"facingp",  1,      fTrue,      kwdProp,    ipropFacingp,
		"landscape",1,      fTrue,      kwdProp,    ipropLandscape,
		"par",      0,      fFalse,     kwdChar,    0x0a,
		"\0x0a",    0,      fFalse,     kwdChar,    0x0a,
		"\0x0d",    0,      fFalse,     kwdChar,    0x0a,
		"tab",      0,      fFalse,     kwdChar,    0x09,
		"ldblquote",0,      fFalse,     kwdChar,    '"',
		"rdblquote",0,      fFalse,     kwdChar,    '"',
		"bin",      0,      fFalse,     kwdSpec,    ipfnBin,
		"*",        0,      fFalse,     kwdSpec,    ipfnSkipDest,
		"'",        0,      fFalse,     kwdSpec,    ipfnHex,
		"author",   0,      fFalse,     kwdDest,    idestSkip,
		"buptim",   0,      fFalse,     kwdDest,    idestSkip,
		"colortbl", 0,      fFalse,     kwdDest,    idestSkip,
		"comment",  0,      fFalse,     kwdDest,    idestSkip,
		"creatim",  0,      fFalse,     kwdDest,    idestSkip,
		"doccomm",  0,      fFalse,     kwdDest,    idestSkip,
		//cjg add
		"fcharset",  0,      fFalse,    kwdSpec,    idestSkip,
		
		"fonttbl",  0,      fFalse,     kwdDest,    idestSkip,
		"footer",   0,      fFalse,     kwdDest,    idestSkip,
		"footerf",  0,      fFalse,     kwdDest,    idestSkip,
		"footerl",  0,      fFalse,     kwdDest,    idestSkip,
		"footerr",  0,      fFalse,     kwdDest,    idestSkip,
		"footnote", 0,      fFalse,     kwdDest,    idestSkip,
		"ftncn",    0,      fFalse,     kwdDest,    idestSkip,
		"ftnsep",   0,      fFalse,     kwdDest,    idestSkip,
		"ftnsepc",  0,      fFalse,     kwdDest,    idestSkip,
		"header",   0,      fFalse,     kwdDest,    idestSkip,
		"headerf",  0,      fFalse,     kwdDest,    idestSkip,
		"headerl",  0,      fFalse,     kwdDest,    idestSkip,
		"headerr",  0,      fFalse,     kwdDest,    idestSkip,
		"info",     0,      fFalse,     kwdDest,    idestSkip,
		"keywords", 0,      fFalse,     kwdDest,    idestSkip,
		"operator", 0,      fFalse,     kwdDest,    idestSkip,
		"pict",     0,      fFalse,     kwdDest,    idestSkip,
		"printim",  0,      fFalse,     kwdDest,    idestSkip,
		"private1", 0,      fFalse,     kwdDest,    idestSkip,
		"revtim",   0,      fFalse,     kwdDest,    idestSkip,
		"rxe",      0,      fFalse,     kwdDest,    idestSkip,
		"stylesheet",   0,      fFalse,     kwdDest,    idestSkip,
		"subject",  0,      fFalse,     kwdDest,    idestSkip,
		"tc",       0,      fFalse,     kwdDest,    idestSkip,
		"title",    0,      fFalse,     kwdDest,    idestSkip,
		"txe",      0,      fFalse,     kwdDest,    idestSkip,
		"xe",       0,      fFalse,     kwdDest,    idestSkip,
		"{",        0,      fFalse,     kwdChar,    '{',
		"}",        0,      fFalse,     kwdChar,    '}',
		"\\",       0,      fFalse,     kwdChar,    '\\'
};

class NULL_CLASS
{
public:
	NULL_CLASS()
	{
		memset(Charset2Cpg,-1,sizeof(Charset2Cpg));
		Charset2Cpg[0]=1252;		//ANSI_CHARSET
		Charset2Cpg[2]=936;			//ANSI_CHARSET
		Charset2Cpg[128]=932;		//SHIFTJIS_CHARSET
		Charset2Cpg[129]=949;		//HANGUL_CHARSET
		Charset2Cpg[134]=936;		//GB2312_CHARSET
		Charset2Cpg[136]=950;		//CHINESEBIG5_CHARSET
		Charset2Cpg[161]=1253;		//GREEK_CHARSET
		Charset2Cpg[162]=1254;		//TURKISH_CHARSET
		Charset2Cpg[177]=1255;		//HEBREW_CHARSET
		Charset2Cpg[178]=1256;		//ARABIC_CHARSET
		Charset2Cpg[186]=1257;		//BALTIC_CHARSET
		Charset2Cpg[204]=1251;		//RUSSIAN_CHARSET
		Charset2Cpg[222]=874;		//THAI_CHARSET
		Charset2Cpg[238]=1250;		//EE_CHARSET
		Charset2Cpg[255]=1252;		//OEM_CHARSET
	}
	~NULL_CLASS()
	{}
}aa;


CRtfDecoder::CRtfDecoder(CPublicResource *ps):
			CDecoderBase(ps)
{
	coderName="RTF";
	version=0x0100;
	m_cGroup=0;
	m_cbBin=0;
	m_fSkipDestIfUnk=fFalse;
	m_lParam=0;
	m_previousparam=-1;
	m_midbuflen=0;
	m_outbuflen=0;
	m_curCharset=0;
	m_curCodePage=-1;
	m_previousCodeP=-1;
	m_firstentry=true;
	rds=rdsNorm;
	ris=risNorm;
	memset(&chp,0,sizeof(CHP));
	memset(&pap,0,sizeof(PAP));
	memset(&sep,0,sizeof(SEP));
	memset(&dop,0,sizeof(DOP));
	psave=NULL;
	isymMax = sizeof(rgsymRtf) / sizeof(SYM);
	p_midbuf=new unsigned char[MIDBUFSIZE];
	p_outbuf=new unsigned char[OUTBUFSIZE];
	memset(p_midbuf,0,MIDBUFSIZE);
	memset(p_outbuf,0,OUTBUFSIZE);
	memset(allCharset,0,sizeof(allCharset));

}

CRtfDecoder::~CRtfDecoder()
{
	if(p_midbuf)delete p_midbuf;
	p_midbuf=NULL;
	if(p_outbuf)delete p_outbuf;
	p_outbuf=NULL;
}
// ecApplyPropChange
// Set the property identified by _iprop_ to the value _val_.
int CRtfDecoder::ecApplyPropChange(IPROP iprop, int val)
{
    char *pb;

    if (rds == rdsSkip)                 // If we're skipping text,
        return ecOK;                    // don't do anything.

    switch (rgprop[iprop].prop)
    {
    case propDop:
        pb = (char *)&dop;
        break;
    case propSep:
        pb = (char *)&sep;
        break;
    case propPap:
        pb = (char *)&pap;
        break;
    case propChp:
        pb = (char *)&chp;
        break;
    default:
        if (rgprop[iprop].actn != actnSpec)
            return ecBadTable;
        break;
    }
    switch (rgprop[iprop].actn)
    {
    case actnByte:
        pb[rgprop[iprop].offset] = (unsigned char) val;
        break;
    case actnWord:
        (*(int *) (pb+rgprop[iprop].offset)) = val;
        break;
    case actnSpec:
        return ecParseSpecialProperty(iprop, val);
        break;
    default:
        return ecBadTable;
    }
    return ecOK;
}

// ecParseSpecialProperty
// Set a property that requires code to evaluate.
int CRtfDecoder::ecParseSpecialProperty(IPROP iprop, int val)
{
    switch (iprop)
    {
    case ipropPard:
        memset(&pap, 0, sizeof(pap));
        return ecOK;
    case ipropPlain:
        memset(&chp, 0, sizeof(chp));
        return ecOK;
    case ipropSectd:
        memset(&sep, 0, sizeof(sep));
        return ecOK;
    default:
        return ecBadTable;
    }
    return ecBadTable;
}

// ecTranslateKeyword.
// Search rgsymRtf for szKeyword and evaluate it appropriately.
// Inputs:
// szKeyword:   The RTF control to evaluate.
// param:       The parameter of the RTF control.
// fParam:      fTrue if the control had a parameter; (that is, if param is valid)
//              fFalse if it did not.
int CRtfDecoder::ecTranslateKeyword(char *szKeyword, int param, bool fParam)
{
    int isym;
	
	if(fParam)
	{
		if(!strcmp(szKeyword,"f"))
		{
			if(param>m_previousparam)
			{
				m_previousparam=param;
			}
			else
			{
				m_curCharset=allCharset[param];
				m_curCodePage=Charset2Cpg[m_curCharset];
				ecMidBuftoOutBuf();
				m_previousCodeP=m_curCodePage;
			}
		}
		if(!strcmp(szKeyword,"fcharset"))
		{
			allCharset[m_previousparam]=param;
		}
	}
    // search for szKeyword in rgsymRtf
	
    for (isym = 0; isym < isymMax; isym++)
        if (strcmp(szKeyword, rgsymRtf[isym].szKeyword) == 0)
            break;
    if (isym == isymMax)            // control word not found
    {
        if (m_fSkipDestIfUnk)         // if this is a new destination
            rds = rdsSkip;          // skip the destination
                                    // else just discard it
        m_fSkipDestIfUnk = fFalse;
        return ecOK;
    }
    // found it!  use kwd and idx to determine what to do with it.

    m_fSkipDestIfUnk = fFalse;
    switch (rgsymRtf[isym].kwd)
    {
    case kwdProp:
        if (rgsymRtf[isym].fPassDflt || !fParam)
            param = rgsymRtf[isym].dflt;
        return ecApplyPropChange((IPROP)rgsymRtf[isym].idx, param);
    case kwdChar:
        return ecParseChar(rgsymRtf[isym].idx);
    case kwdDest:
        return ecChangeDest((IDEST)rgsymRtf[isym].idx);
    case kwdSpec:
        return ecParseSpecialKeyword((IPFN)rgsymRtf[isym].idx);
    default:
        return ecBadTable;
    }
    return ecBadTable;
}

// ecChangeDest
// Change to the destination specified by idest.
// There's usually more to do here than this...
int CRtfDecoder::ecChangeDest(IDEST idest)
{
    if (rds == rdsSkip)             // if we're skipping text,
        return ecOK;                // don't do anything

    rds = rdsSkip ;
	/*switch (idest)
    {
    default:
        rds = rdsSkip;              // when in doubt, skip it...
        break;
    }*/
    return ecOK;
}

//ecEndGroupAction
// The destination specified by rds is coming to a close.
// If there's any cleanup that needs to be done, do it now.
int CRtfDecoder::ecEndGroupAction(RDS rds)
{
    return ecOK;
}

// ecParseSpecialKeyword
// Evaluate an RTF control that needs special processing.
int CRtfDecoder::ecParseSpecialKeyword(IPFN ipfn)
{
    if (rds == rdsSkip && ipfn != ipfnBin)  // if we're skipping, and it's not
        return ecOK;                        // the \bin keyword, ignore it.
    switch (ipfn)
    {
    case ipfnBin:
        ris = risBin;
        m_cbBin = m_lParam;
        break;
    case ipfnSkipDest:
        m_fSkipDestIfUnk = fTrue;
        break;
    case ipfnHex:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨porny丨中文| 一本一道波多野结衣一区二区| 日本久久电影网| 亚洲天堂精品视频| 欧美综合欧美视频| 午夜一区二区三区视频| 欧美乱熟臀69xxxxxx| 免费看精品久久片| 精品福利av导航| 波多野结衣的一区二区三区| 最新热久久免费视频| 欧美图片一区二区三区| 丝袜亚洲精品中文字幕一区| 欧美tickle裸体挠脚心vk| 国产成人精品影视| 亚洲综合免费观看高清完整版在线 | av在线不卡网| 亚洲麻豆国产自偷在线| 欧美精品久久天天躁| 国产一区二区三区国产| 亚洲美女免费视频| 欧美一区二区三区免费在线看| 国产一区在线观看视频| 亚洲欧美日韩国产综合在线| 7777女厕盗摄久久久| 国产剧情av麻豆香蕉精品| 亚洲摸摸操操av| 日韩免费视频一区| 99久久综合99久久综合网站| 午夜激情久久久| 国产精品沙发午睡系列990531| 欧美三区在线观看| 国产精品资源网| 亚洲国产aⅴ天堂久久| 亚洲最新视频在线播放| 欧美mv和日韩mv的网站| 色综合色狠狠天天综合色| 久久激情五月激情| 亚洲激情自拍偷拍| 久久久不卡影院| 欧美日韩日本视频| gogo大胆日本视频一区| 久久成人免费电影| 亚洲午夜久久久久久久久电影院 | 欧美xxxxx牲另类人与| 99re成人精品视频| 国产精品自在欧美一区| 日韩av在线免费观看不卡| 一色桃子久久精品亚洲| 久久久久久亚洲综合| 欧美欧美欧美欧美首页| 色诱亚洲精品久久久久久| 国产精品一级黄| 蜜桃久久久久久| 亚洲成a人片在线观看中文| 国产精品家庭影院| 国产欧美一区二区精品忘忧草| 91精品国产免费| 欧美性videosxxxxx| 99热在这里有精品免费| 国产精品911| 国产在线精品一区二区| 麻豆国产精品视频| 男人的天堂亚洲一区| 香蕉成人伊视频在线观看| 亚洲男人的天堂网| 亚洲人亚洲人成电影网站色| 国产精品全国免费观看高清| 国产三级精品三级| 国产亚洲成av人在线观看导航| 欧美刺激脚交jootjob| 欧美一级高清片在线观看| 在线播放91灌醉迷j高跟美女| 色94色欧美sute亚洲线路一久| 成人午夜又粗又硬又大| 国产成人精品亚洲日本在线桃色| 久久99国产精品尤物| 精东粉嫩av免费一区二区三区| 久久精品国产亚洲5555| 裸体一区二区三区| 久久99国产精品麻豆| 国产一区二区主播在线| 国产成人8x视频一区二区| 国产老女人精品毛片久久| 国产成人精品免费一区二区| 国产成人av电影| 91免费版pro下载短视频| 91久久线看在观草草青青| 精品视频色一区| 欧美一区二区三区男人的天堂| 日韩一级片在线播放| www国产成人| 国产精品久久三区| 一区二区在线观看av| 日韩精品乱码av一区二区| 麻豆国产欧美日韩综合精品二区| 国产乱码一区二区三区| www.成人网.com| 欧美日韩亚洲国产综合| 欧美成人精品3d动漫h| 欧美国产亚洲另类动漫| 一区二区三区中文在线| 日韩av成人高清| 国内精品久久久久影院薰衣草 | 亚洲地区一二三色| 日本午夜一区二区| 国产99精品国产| 色婷婷亚洲精品| 欧美一级黄色录像| 亚洲欧洲av在线| 日韩中文字幕91| 成人综合婷婷国产精品久久蜜臀| 91蜜桃在线观看| 欧美成人福利视频| 亚洲日本护士毛茸茸| 久久精品国产77777蜜臀| 99久久精品免费看国产| 欧美一区二区女人| 中文字幕va一区二区三区| 五月开心婷婷久久| 成人免费视频caoporn| 欧美放荡的少妇| 中文字幕一区二区在线播放| 日韩高清一级片| 99视频精品全部免费在线| 精品伦理精品一区| 亚洲最大成人网4388xx| 国产电影一区二区三区| 欧美性一二三区| 国产精品色噜噜| 精品一区二区在线观看| 欧美日韩国产一级| 亚洲天堂a在线| 国产精品影音先锋| 欧美一级片在线| 亚洲一区二区四区蜜桃| 成人高清视频在线| 久久综合九色欧美综合狠狠| 亚洲国产成人av好男人在线观看| 国产乱理伦片在线观看夜一区| 欧美精品乱人伦久久久久久| 亚洲女人的天堂| 成人午夜在线播放| 久久久久久久久久久电影| 人禽交欧美网站| 欧美日韩另类一区| 一区二区在线观看视频在线观看| 国产a精品视频| 久久日韩粉嫩一区二区三区| 青青青伊人色综合久久| 欧美精品乱码久久久久久| 一区二区不卡在线播放| 91丝袜呻吟高潮美腿白嫩在线观看| 国产午夜精品在线观看| 国产伦精一区二区三区| 日韩女同互慰一区二区| 日本vs亚洲vs韩国一区三区| 欧美日韩国产高清一区二区三区 | 亚洲一区精品在线| 色偷偷88欧美精品久久久| 欧美国产禁国产网站cc| 国产乱码精品一区二区三| 日韩精品一区二区三区在线播放| 视频一区欧美精品| 欧美日韩国产片| 日韩精品1区2区3区| 555夜色666亚洲国产免| 全国精品久久少妇| 日韩视频一区二区在线观看| 麻豆91在线播放| 久久品道一品道久久精品| 国产乱子轮精品视频| 国产欧美视频一区二区| 成人免费视频app| 亚洲视频1区2区| 欧美性生交片4| 日韩成人免费电影| 精品久久久久久无| 国产精品一区二区久久不卡| 中文成人综合网| 色综合天天在线| 亚洲v精品v日韩v欧美v专区| 欧美老年两性高潮| 九一九一国产精品| 国产精品天天看| 欧洲一区在线电影| 青青草国产成人av片免费| wwwwww.欧美系列| 成人av综合在线| 亚洲成人激情综合网| 欧美大白屁股肥臀xxxxxx| 国产风韵犹存在线视精品| 亚洲欧美日韩国产另类专区| 欧美日韩亚洲综合一区| 九九在线精品视频| 国产精品国产三级国产有无不卡| 欧美性高清videossexo| 狠狠色丁香久久婷婷综合丁香| 国产精品成人免费精品自在线观看| 91福利社在线观看|