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

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

?? rtfactn.c

?? 一個可以代開寫字板RTF格式的小程序
?? C
字號:
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
#include "rtftype.h"
#include "rtfdecl.h"

// RTF parser tables

// 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,
    "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,    '\\'
    };
int isymMax = sizeof(rgsymRtf) / sizeof(SYM);

//
// %%Function: ecApplyPropChange
//
// Set the property identified by _iprop_ to the value _val_.
//
//

int
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;
}

//
// %%Function: ecParseSpecialProperty
//
// Set a property that requires code to evaluate.
//

int
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;
}

//
// %%Function: ecTranslateKeyword.
//
// Step 3.
// 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
ecTranslateKeyword(char *szKeyword, int param, bool fParam)
{
    int isym;

    // 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 (fSkipDestIfUnk)         // if this is a new destination
            rds = rdsSkip;          // skip the destination
                                    // else just discard it
        fSkipDestIfUnk = fFalse;
        return ecOK;
    }

    // found it!  use kwd and idx to determine what to do with it.

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

//
// %%Function: ecChangeDest
//
// Change to the destination specified by idest.
// There's usually more to do here than this...
//

int
ecChangeDest(IDEST idest)
{
    if (rds == rdsSkip)             // if we're skipping text,
        return ecOK;                // don't do anything

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

//
// %%Function: 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
ecEndGroupAction(RDS rds)
{
    return ecOK;
}

//
// %%Function: ecParseSpecialKeyword
//
// Evaluate an RTF control that needs special processing.
//

int
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;
        cbBin = lParam;
        break;
    case ipfnSkipDest:
        fSkipDestIfUnk = fTrue;
        break;
    case ipfnHex:
		ris = risHex;
		break;
    default:
        return ecBadTable;
    }
    return ecOK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍网| 国产精品久久久久久久浪潮网站| 丁香五精品蜜臀久久久久99网站| 麻豆极品一区二区三区| 五月激情丁香一区二区三区| 午夜视黄欧洲亚洲| 香蕉久久一区二区不卡无毒影院| 亚洲国产视频一区| 亚洲高清三级视频| 日本不卡视频在线| 久久精品国产一区二区三 | 日韩免费高清视频| 日韩一区二区精品| 久久久久久久精| 亚洲欧美日韩在线不卡| 一区二区三区欧美在线观看| 亚洲在线中文字幕| 蜜桃传媒麻豆第一区在线观看| 久久精品国产网站| 波多野洁衣一区| 欧美怡红院视频| 日韩精品一区国产麻豆| 久久蜜桃一区二区| 亚洲精品乱码久久久久久| 亚洲成人综合在线| 国产精品亚洲а∨天堂免在线| 成人国产精品免费网站| 欧美日韩久久久久久| 欧美精品一区二区在线播放| 国产精品素人一区二区| 亚洲国产婷婷综合在线精品| 国产综合久久久久久久久久久久| av电影在线观看一区| 欧美一区二区三区在线电影| 国产精品毛片高清在线完整版| 亚洲制服丝袜av| 国产福利91精品一区| 欧洲生活片亚洲生活在线观看| 欧美一区二区成人6969| 亚洲视频一区二区免费在线观看| 日韩激情av在线| 99国产精品一区| 欧美变态tickling挠脚心| 亚洲乱码国产乱码精品精98午夜| 久久精品国产在热久久| 欧美私人免费视频| 日本一区二区免费在线观看视频| 婷婷综合久久一区二区三区| www.爱久久.com| 日韩精品一区二区三区视频在线观看| 亚洲天堂久久久久久久| 国产又粗又猛又爽又黄91精品| 欧美日韩一区久久| 亚洲另类中文字| 国产成人综合精品三级| 欧美一激情一区二区三区| 又紧又大又爽精品一区二区| 国产精品一区一区| 精品国产乱码久久久久久牛牛| 一区二区三区四区不卡在线 | 亚洲人成影院在线观看| 精品制服美女丁香| 欧美美女直播网站| 一区二区三区四区中文字幕| 国产成人av电影免费在线观看| 日韩三级.com| 日韩电影免费在线| 制服丝袜激情欧洲亚洲| 亚洲成av人片在线| 欧美在线不卡一区| 夜夜嗨av一区二区三区四季av | 一区二区三区免费| 色综合视频在线观看| 国产精品久久毛片av大全日韩| 国产91精品久久久久久久网曝门| 精品粉嫩超白一线天av| 国内精品嫩模私拍在线| 欧美v亚洲v综合ⅴ国产v| 亚洲成人一区在线| 91麻豆精品久久久久蜜臀| 午夜天堂影视香蕉久久| 91麻豆精品国产综合久久久久久| 日韩电影免费在线观看网站| 91.com视频| 激情五月播播久久久精品| 欧美大片一区二区| 国产真实乱对白精彩久久| 久久久久综合网| www.66久久| 亚洲激情av在线| 欧美亚洲一区二区在线| 全国精品久久少妇| 国产欧美一区二区三区在线老狼| 粉嫩av一区二区三区| 亚洲激情一二三区| 日韩一级免费一区| 国产成人精品亚洲日本在线桃色 | 亚洲大片在线观看| 日韩欧美中文字幕一区| 国产不卡在线视频| 亚洲图片自拍偷拍| 日韩欧美国产电影| 成人av在线看| 亚洲成av人片一区二区三区| www久久久久| 91亚洲国产成人精品一区二三| 亚洲国产综合人成综合网站| 欧美精品一区二区三区久久久 | 麻豆精品视频在线观看视频| 久久久无码精品亚洲日韩按摩| 91在线观看下载| 热久久免费视频| 亚洲精品一二三区| 日韩精品一区二区三区蜜臀| 91尤物视频在线观看| 免费成人在线网站| 国产精品成人免费精品自在线观看| 欧美天堂一区二区三区| 丁香天五香天堂综合| 舔着乳尖日韩一区| 日韩一区欧美一区| 精品精品国产高清a毛片牛牛 | 亚洲第一av色| 国产精品欧美经典| 日韩一区二区免费在线电影| 91蜜桃婷婷狠狠久久综合9色| 狂野欧美性猛交blacked| 亚洲综合在线观看视频| 久久久精品影视| 91精品国产综合久久国产大片| 成人av影视在线观看| 精品一区二区三区在线播放 | 成人免费在线观看入口| 精品久久久久av影院| 欧美肥大bbwbbw高潮| 91国偷自产一区二区三区成为亚洲经典 | 亚洲综合999| 亚洲免费观看高清完整版在线| www国产亚洲精品久久麻豆| 日韩一级高清毛片| 制服丝袜成人动漫| 欧美电影一区二区三区| 欧美亚洲日本一区| 在线观看欧美日本| 在线视频中文字幕一区二区| av动漫一区二区| 91丝袜国产在线播放| 久久国产免费看| 亚洲色图视频网| 欧美精品亚洲二区| 欧美巨大另类极品videosbest| 成人免费视频一区二区| 日韩精品一级二级| 免费av成人在线| 亚洲一区在线观看免费观看电影高清| 国产精品免费视频网站| 精品国产乱码久久久久久夜甘婷婷| 日韩欧美一区在线观看| 欧美日韩在线三级| 在线观看日韩av先锋影音电影院| 从欧美一区二区三区| 97久久超碰国产精品| 成人v精品蜜桃久久一区| 国产美女一区二区三区| 日韩国产一二三区| 久久丁香综合五月国产三级网站| 亚洲成人免费视| 一区二区三区四区激情 | 中文字幕国产精品一区二区| 精品免费99久久| 国产精品每日更新| 国产精品久久久久aaaa| 国产精品毛片无遮挡高清| 国产午夜精品久久| 亚洲黄一区二区三区| 一区二区高清在线| 一区二区三区在线观看国产| 成人午夜又粗又硬又大| 91国产精品成人| 欧美日韩激情一区二区三区| 欧美吞精做爰啪啪高潮| 69久久夜色精品国产69蝌蚪网| 久久精品综合网| 国产精品久久久久三级| 亚洲欧洲日产国产综合网| 日韩毛片在线免费观看| 日本va欧美va瓶| 国产不卡在线视频| 不卡一区二区在线| 日韩一区二区中文字幕| 久久久久久久国产精品影院| 国产精品理论在线观看| 一区二区在线看| 国产乱码精品1区2区3区| av成人动漫在线观看| 在线免费观看日本欧美| 欧美无砖砖区免费| 国产免费成人在线视频| 亚洲综合成人在线| 精品系列免费在线观看|