------------------------------------------------------------------------
    AhCc[쐬}jA

    for D-Pixed

    1996-2000 Copyright(C) DOIchan!

         doichan@bigfoot.com
         http://www.bigfoot.com/~doichan/

    LAST_MODIFIED    2000/4/28
-------------------------------------------------------------------------

̃hLǵCG`\tgCD-Pixed̃AhCc[쐬邽߂̃}jAłD̃t@CD-PixedpD-Pixed{̂ɕtt@CłD̃hLgǂŁCD-PixedṕCtB^AhCCt@CRo[^쐬邱Ƃł܂D

    PD͂߂
D-Pixedɂ́CAhCC^[tF[XpӂĂāC
[U[CRɋ@\ǉ邱Ƃł悤ɂȂĂ܂D
ǉł@\́C
E摜ւ̃tB^
E摜t@C̃[h
E摜t@Cւ̕ۑ
E摜ւ̕`
4ނłD
ł́C3ނ̃AhCc[̍쐬@ɂĐĂ܂D

D-Pixedp̃AhCc[쐬ɂ́Ĉ悤ȊKvɂȂ܂D
EWindows95܂WindowsNT
E32rbg̃RpCJŁCckk̍쐬ł
  ib^b{{j
EvO~Om
Edp_add.hiD-Pixedɕtj

܂CD-Pixed̃AhC͂ckǩ`Œ񋟂܂D
ckk쐬łJKvłD

܂Cȍ~Cb^b{{gpẴAhC쐬ɂ
Ă܂D
Delphiǵ̕Cꂼ̊ɍ킹ēǂݑւĂD


    QD{TO
D-Pixed̃AhĆCckǩ`Œ񋟂܂D
1̂ckk̒ɂ́C1̃AhC̋@\Lq܂D
ckk̒ɂ́Cꂼ̃AhC̎ނɂāCK
ʂȖÓCAhCp̊֐KvɂȂ܂DiR͂QƁj
̂قɁCKCAhC̏𓾂邽߂̊֐KvɂȂ܂D
AhCc[ɂ́CKCQ̊֐KvŁC
́Cb̌ĂяoKgpC
ckkCGNX|[gȂ΂Ȃ܂D
ɁCb^b{{ȊǑgpꍇ͕KĂD

܂CAhCc[쐬ꍇCD-Pixedt
dp_add.h
CN[h܂D
ȉ̃hLgƂ킹ĎQƂĂD
܂Cg̊Jɍ킹āC
dp_add.hRɏČ\łD

    RDAhC֐ƁC
AhCc[ɂ́CʂȖO̊֐KvɂȂ܂D
5ނ̊֐܂D
EDPGetInfo
    AhC֐DiKKvj
EDPEncode
    摜ۑ֐
EDPDecode
    摜ǂݍݏ֐
EDPFilter
    tB^֐
EDPFilterSetup  (ȗ)
    tB^ݒ֐
EDPPen
    `p̏֐

DPGetInfo֐́Cǂ̃AhCc[ɂKPKvɂȂ܂D
Ƃ́CAhCc[ɂāC4̂̂P̊֐KvłD

ȉɁCꂼ̊֐ɂĐĂ܂D

iPjDPGetInfo
AhCc[̏D-Pixedɒm点邽߂Ɏgp܂D
̊֐ȂƁCD-Pixed́CAhCc[F܂D

֐̒`
BOOL DPGetInfo(DP_ADDININFO*);

֐͐ꍇCTRUEԂ܂D


Lq邽߂̍\̂łD
D-PixedC|C^n̂ŁC
AhCc[ŁC݂܂D

typedef struct _dp_addin_info__ {
    DWORD dwSize;
    DWORD dwType;
    LPSTR name;
    LPSTR description;
    LPSTR defExt;
    LPSTR copyright;
    LPSTR version;
    LPSTR addinDescription;
}DP_ADDININFO;

dwSize                  \̂̃TCYDύXȂłD
dwType                  AhCc[̎ނw肵܂D
                        ȉ̂ꂩw肵܂D
                            DPADDIN_ENCODER      摜ۑ
                            DPADDIN_DECODER      摜[h
                            DPADDIN_FILTER       tB^
                            DPADDIN_PEN          `c[
                        ܂CyAhC̏ꍇC̒l̑gݍ킹ɁC
                        ̃oɒǉł܂D
                            DPADDIN_PEN_ENABLEMODE
                                D-Pixed 2.08蓱ꂽC``I[h
                                gpăAhCłC`s܂D
                            DPADDIN_PEN_DISABLEFREEMODE
                                [hIŁCt[`惂[hgps\
                                ɂ܂D
                            DPADDIN_PEN_ENABLEPENMOVE
                                }EXړ̃y`̕\
                                D-PixedɔC܂D
                        ̐ݒ́CAhCc[̎ނƁCnqƂāC
                        w肵܂D
name                    AhCc[̖Õ̕|C^łD
                        tB^̏ꍇj[ɕ\܂D
                        ܂CAhCɂĂŁC^CgɎgp܂D
description             encoder/decoder̂ƂɁCt@C^Cv̐
                        gp镶̃|C^łD
                        ܂C`c[AhCŁCXe[^Xo[ɕ\
                        ɂȂ܂D
defExt                  encoder/decoderŎgpt@C̃ftHg
                        gq̃|C^łD
copyright               쌠\Ɏgp镶̃|C^łD
version                 o[Wԍ̃̕|C^łD
addinDescription        AhCc[̐̃̕|C^łD

DPGetInfo֐ł́Cȏ̏D-Pixedɓn܂D
dwType̒lɂāCP̃AhC֐KvɂȂ܂D

iQjDPEncode
摜Ct@Cɕۑ܂D

֐̒`
BOOL DPEncode(LPCSTR lpszFile,DP_ENCDECINFO *pInfo);

֐͐ƂTRUEԂ܂D


lpszFile      ۑt@C̃̕|C^łD
              AhCŃt@CI[vCnhǗC
              gCt@CĂD
pInfo         摜Ɋւ񂪊i[Ăobt@̃|C^łD
              ȉ̃f[^łD

typedef struct _dp_encdecinfo__ {
    DWORD dwSize;
    DWORD dwFlag;
    int keyColor;
    int bgColor;
    DWORD nPicture;
    LPBITMAPINFOHEADER *pDibBuf;
    LPBYTE *pBitBuf;
}DP_ENCDECINFO;

dwSize          \̂̃TCYłD
dwFlag          f[^̏̓tOłD
                    DPDECENC_SEPARATED     DIBwb_Ǝۂ̃f[^
                                           Ă܂D
                                           ɃZbgĂ܂D
                    DPDECENC_KEYCOLOR      FLłD
                    DPDECENC_BACKGROUNDCOLOR    wiFLłD
keyColor        F̃pbgԍłD
bgColor         wiF̃pbgԍłD
nPicture        ƂđĂ摜̖łD
                ŒłQłD
                KC摜́CSẴCd˂Ƃ̉摜PƁC
                ɑāCSẴCʁXɊi[܂D
pDibBuf         DIB̃wb_ւ̃|C^i[obt@łD
                nPictureŎw肳ꂽi[܂D
pBitBuf         DIB̎ۂ̃f[^ւ̃|C^̃obt@łD
                encodeȑꍇ́Cwb_ƁCۂ̃f[^Ał͂Ȃ̂
                ӂĂD

擪̂chaɑSẴCd˂ꂽ̉摜Ă܂D
P݂̂t@Cɕۑꍇ́C̐擪̉摜݂̂悤ɂ܂D
chãwb_̌`ȂǂɂẮC
Win32 APĨ}jAȂǂQƂĂD

܂CpbǵCSẴCœŁC
chawb_ɘAĊi[Ă܂D

iRjDPDecode
摜Ct@Cǂݍ݂܂D

֐̒`
BOOL DPDecode(LPCSTR lpszFile,DP_ENCDECINFO *pInfo);

֐͐ƂTRUEԂ܂D


lpszFile      ǂݍރt@C̃̕|C^łD
              AhCŃt@CI[vCnhǗC
              gCt@CĂD
pInfo         摜Ɋւ񂪊i[Ăobt@̃|C^łD
              ȉ̃f[^łD

typedef struct _dp_encdecinfo__ {
    DWORD dwSize;
    DWORD dwFlag;
    int keyColor;
    int bgColor;
    DWORD nPicture;
    LPBITMAPINFOHEADER *pDibBuf;
    LPBYTE *pBitBuf;
}DP_ENCDECINFO;

dwSize          \̂̃TCYłD
dwFlag          f[^̏tOłD
                    DPDECENC_SEPARATED     DIBwb_Ǝۂ̃f[^
                                           Ă܂D
                                           ȂׂCɘA܂D
                    DPDECENC_KEYCOLOR      FLłD
                    DPDECENC_BACKGROUNDCOLOR    wiFLłD
keyColor        F̃pbgԍłD
bgColor         wiF̃pbgԍłD
nPicture        摜̖w肵܂D
                ʏPw肵܂D
pDibBuf         DIB̃wb_ւ̃|C^i[obt@łD
                chãwb_ɂ̓pbgA܂D
                Decoderł́CȂׂCۂ̃f[^ɘA܂D
                ȂCpbǵCKQTUFpӂ܂D
pBitBuf         DIB̎ۂ̃f[^ւ̃|C^̃obt@łD
                f[^A邵ȂɊւ炸CKw肵܂D
                Aꍇ́C
                pDibBuf + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)
                ŋ߂āCi[ĂD

pDibBufсCpBitBuf̗̃obt@́C
AhCŁCnPictureC̈mۂĂD
܂C摜̃f[^AhCŁCmۂ܂D
̃̊mۂɂ́Cnhł͂ȂC|C^𓾂@
mۂĂD
܂C
GlobalAlloc֐gpꍇCGPTR (GMEM_FIXED)w肵Ċmۂ܂D
܂Cmalloc ̂b̕W֐CnewgpĂ\܂D

܂Cobt@̃TCY͂RQrbgłD
chawb_Ƀf[^AȂꍇłCK̃f[^pӂĂD

ȂCtJ[̃rbg}bvƂēnƂł悤ɂȂĂ܂D
̏ꍇpbg͕Kv܂D
D-PixedŌF̏s܂DiPڂ̂݁j

iSjDPFilter
摜ɂ܂܂Ȍʂ܂D

֐̒`
BOOL DPFilter(DP_FILTERINFO *);

֐͐ꍇTRUEԂ܂D


ȉ́CtB^pC摜̃|C^n܂D
xɓn閇͕KPłD

typedef struct _dp_filteraddin_struct {
    DWORD dwSize;
    LPBITMAPINFOHEADER pDib;
    BYTE *pBits;
    BYTE *pMaskBits;
    LPBITMAPINFOHEADER pRefDib;
    BYTE *pRefBits;
    DWORD dwFlag;
    HWND hwndDIB;
    int leftColor;
    int rightColor;
    int keyColor;
    int bgColor;
    int mix;
    int selectedSx;
    int selectedSy;
    int selectedWidth;
    int selectedHeight;
}DP_FILTERINFO;

dwSize       \̂̃TCYłD
pDib         chãwb_łD
pBits        cha̎ۂ̃f[^̐擪̃|C^łD
             ł́Cchãwb_ƁCf[^͘AĂ܂D
pMaksBits    }XNLȂƂCchaɎgp}XN摜łD
             }XN摜́CWbpp̉摜ŁCsNZÔƂC}XN
             ׂ摜łDȊÔƂ̓}XN܂D
             }XN摜̃TCÝCpDib̎̂ƓłD
pRefDib      tB^ɎgpQƗp̂chałD
             QƂcháCSẴCΏۂƂƂC
             SẴCd˂Ԃ̉摜܂D
             ܂CȊÔƂ́CpDib̃Rs[(pDibƂ͕ʂ̂)܂D
             ̃f[^cȂƂƂɎgp܂D
pRefBits     QƗpcha̎ۂ̃f[^̐擪łD
             chawb_ɘAĂ܂D
dwFlag       ̑gݍ킹łD
                DPFILTER_MASKPLANE     pDib摜̓}XN摜łD
                                       ̏ꍇCtB^Ƃɂ́C
                                       pbgԍ́C
                                       OƁCQTT݂̂gpł܂D
                                       ܂C̎CpMaksBitsNULLɂȂ܂
                DPFILTER_MASKON        }XNLłD
                                       AhCł́CpMaksBitsgp
                                       }XNKv܂D
                DPFILTER_USEKEYCOLOR   FLłD
                DPFILTER_SELECTED      ̈悪IĂ܂D
                                       selectedSx,selectedSy,
                                       selectedWidth,selectedHeight
                                       ɑÏ̒lZbg܂D
                                       ̃tOZbgĂȂꍇ
                                       摜ŜΏۂƂȂ܂D
                                       ĩtOZbgĂȂƂ́C
                                         ̒l͂OɂȂĂ܂Dj
                DPFILTER_CURRENTIMAGE  ANeBuȃCłD
hwndDIB      摜\ĂEBhẼnhłD
leftColor    D-PixedōɑIĂFłD
rightColor   D-PixedŉEɑIĂFłD
keyColor     FłD
bgColor      wiFłD
mix          ̐FƁCE̐F̍w肵܂D
             FE = 16 - mix : mix
             ƂȂ܂D(0 <= mix <= 16 łDj
selectedSx   Ï̍̂wWlłD
             ȉCselected́CdwFlagDPFILTER_SELECTEDZbgĂ
             ꍇ݂̂ɃZbgĂ܂D
             ȊȌꍇ͉摜ŜΏۂƂC
             ̃TCÝCchãwb_瓾܂D
selectedSy   Ï̍̂xWlłD
selectedWidth   Ï̕łD
selectedHeight  Ï̍łD

̃CꍇŁCSẴCΏۂɂĂƂC
tB^ɂ́C̃C珇ɂPn܂D
AhCł́Cǂ̃Cӎɓ悤ɏ邱ƂɂȂ܂D

iTjDPFilterSetup
tB^̐ݒs߂̊֐łD

֐̒`
BOOL DPFilterSetup(HWND hWnd);


hWndɂ́CD-Pixed̃CEBhẼnhĂ܂D
_CAO{bNXgpꍇɁCeEBhEƂĎgp܂D

߂l
tB^̐ݒ肪ꍇ́CTRUEԂ܂D
sꍇC[U[LZꍇ́CFALSEԂ܂D

̊֐́CtB^̏sO(DPFilter֐Ă΂O)ɁC
Ă΂֐ŁCtB^Ŏgpp[^[U[ɁC
͂CtB^̏̊mF̃bZ[W\肷̂
gp܂D
̊֐́C̃CɂāCtB^ꍇɂ́Cŏ
1񂾂Ă΂܂D
̊֐͏ȗ邱Ƃł܂D


iUjDPPen
摜ɕ`s߂̃AhCc[łD

֐̒`
LONG DPPen(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam,DP_PENINFO *pInfo);


摜̕ҏWEBhE󂯎bZ[WƁC̃p[^
̂܂ܓn܂D
摜̕ҏWEBhEƂ́CD-Pixedł̎ۂɊG̕\Ă
̃EBhEŁCt[EBhEł͂܂D
iŌt[EBhÉClchqEBhEj
t[EBhE擾ꍇ́CGetParent(hWnd); Ƃ܂D
t[EBhEɃbZ[W𑗂Ct[EBhẼnh
gāC낢ȏs肷΁C
yAhC̃C^[tF[XgĎqvZXIȃAhCc[
邱Ƃł邩܂D

ɁC`c[p̏\̂ɑ܂DȉɁC܂D

typedef struct _dp_penaddin_struct {
    DWORD dwSize;
    LPBITMAPINFOHEADER pDib;
    BYTE *pBits;
    BYTE *pMaskBits;
    BYTE *pOffscreen;
    LPBITMAPINFOHEADER pPenDib;
    BYTE *pPenBits;
    DWORD dwFlag;
    int leftColor;
    int rightColor;
    int keyColor;
    int bgColor;
    int mix;
    LONG x;
    LONG y;
    RECT redrawRect;
    HDC hdc;
    HANDLE reserved;
    BYTE *pAreaBits;
    RECT areaRect;
}DP_PENINFO;

dwSize          \̂̃TCYłD
pDib            摜̂chã|C^łD
pBits           ۂ̉摜̃f[^̐擪̃|C^łD
pMaskBits       }XÑf[^̐擪̃|C^łD}XÑTCÝC
                pDibƓłD܂C}XNɂẮC
                tB^QƂĂD
pOffscreen      摜\̂ɎgpĂItXN[obt@
                f[^̐擪̃|C^łD
                TCÝCpDibƓłD
                ɂ́CSẴCd˂摜Ă܂D
                `悵ȂƂ̃yȂǂ\ƂɎgp܂D
pPenDib         [ȖIŷchã|C^łD
pPenBits        ỹf[^̐擪̃|C^łD
                ýC8rbĝchaŁCɃTCÝC32x32łD
                ýCO̕`悵CQTT͕̕`悵܂D
dwFlag          tOłD̑gݍ킹Ă܂D
                DPWF_MASKON                   }XNLłD
                DPWF_MASK                     ݃}XNv[ҏWłD
                                              }XNv[ł͂O255ȊO
                                              `悵Ă͂܂D
                DPWF_USETRANSPARENTCOLOR      FLłD

                ܂C`c[CD-Pixedɏ߂ƂCtO
                ̒l̑gݍ킹Zbgł܂D
                DPWF_WANTREDRAW               ĕ`悷邱Ƃv܂D
                                              redrawRecto͈̎͂
                                              ĕ`悳܂D
                DPWF_SETPALETTE               Add-InŃpbgIƂ
                                              Zbg܂D
                                              VlCleftColor ܂́C
                                              rightColoroɃZbg܂D
                DPWF_SETMIX                   Add-InōύXƂ
                                              Zbg܂D
                                              mixoɐVlZbg܂
                DPWF_NOINVALIDATE             ItXN[D-Pixed
                                              XVȂ悤ɂ܂D
                                              DPWF_WANTREDRAWƑgݍ킹
                                              gp܂D
leftColor       ̐FɑIĂpbgCfbNXłD
rightColor      E̐FɑIĂpbgCfbNXłD
keyColor        FłD
bgColor         wiFłD
mix             ƉE̍\܂D(0-16)
x               [U}EXNbNƂ́C摜ɂwWlłD
y               [U}EXNbNƂ́C摜ɂxWlłD
redrawRect      dwFlagoDPWF_WANTREDRAWw肵ƂɁCĕ`悳
                ̈w肵܂D
                ̈́C̍WlƁCE̍Wlw肵܂D
hdc             ҏWEBhẼfoCXReLXg̃nhłD
                ύXꍇCK̏Ԃɖ߂ĂD
reserved        \̈łDgpĂ͂܂DiNULLł͂Ȃ)
pAreaBits       D-Pixed̕`惂[hgpƂɁC~C`̈Ȃǂ
                p^[i[Ăobt@łD
                ̃obt@́CWrbĝcha`ŁC
                chãTCÝCpDibo̎̂ƓłD
                `悷ׂ́COC`悵Ă͂Ȃ́C
                QTTi[Ă܂D
                ܂C̑ΏۂƂȂ̈́CareaRectoɂ
                Ă܂D
areaRect        `惂[hwŁCpAreaBitsɊi[Ăp^[
                ̑ΏۂƂȂ`̈܂D
                ̃oɂ́C`̈́Cp̍WlƁC
                ƍi[Ă܂D

DPPen֐́CSẴbZ[WŌĂ΂킯ł͂܂D
ȉWindowsW̃bZ[WƁCD-PixedŗL̃bZ[ŴƂC
Ăяo܂D

WindowsWbZ[W
WM_LBUTTONDOWN,WM_RBUTTONDOWN,WM_LBUTTONUP,WM_RBUTTONUP,WM_MOUSEMOVE,
WM_KEYDOWN,WM_KEYUP,WM_CHAR,WM_SETFOCUS,WM_KILLFOCUS

D-PixedŗLbZ[Wiʒm݂̂ŁCwParam,lParam͎gp܂D)
DPWM_ACTIVATE
    ҏWEBhEANeBu܂D
DPWM_PALETTECHANGED
    pbgύX܂D
DPWM_SELECTPALETTE
    [U[pbgI܂D
DPWM_COMMANDCHANGED
    ʂ̕`c[I܂D
DPWM_COMMANDSELECTED
    VIꂽ`c[ɑ܂D

܂C`c[Add-InCD-Pixedɑ邱Ƃ̂ł郁bZ[W
܂D
̃bZ[ẂCDPPen֐̈hWndɑ΂āC邱Ƃł܂D

DPWM_DISPMESSAGE
    D-Pixed̃Xe[^Xo[ɕ\܂D
    wParam....\{bNX̔ԍ(0`2)
              ʏC1ԂɌ݂̏Ԃ\C2Ԃ⏕IɎgp܂D
              0Ԃ́C`c[̐\Ă܂D
              3Ԃ̓ANeBuȃC̕\ɎĝŎgpȂłD
    lParam....(LPCSTR)   \镶̃|C^łD

DPWM_DIB2SCREEN
    DIB̍WlXN[WiNCAgWjɕϊ܂D
    wParam....(LONG *)  XW̃obt@̃|C^łD
    lParam....(LONG *)  YW̃obt@̃|C^łD

DPWM_SCREEN2DIB
    XN[WiNCAgWjCDIB̍Wlɕϊ܂D
    wParam....(LONG *)  XW̃obt@̃|C^łD
    lParam....(LONG *)  YW̃obt@̃|C^łD

DPWM_UPDATEOFFSCREEN
    ItXN[XV܂D
    ItXN[ɂ́CD-PixedőSẴCd˂摜쐬܂D
    lParam....(RECT *)  XV̈RECT\̂̃|C^łD
              ̈́C̍WlƁCE̍Wlw肵܂D
              NULLw肵ꍇCŜXV܂D

DPWM_BLTOFFSCREEN
    ItXN[fBXv[ɓ]܂D
    lParam....(RECT *)  ]`̈RECT\̂̃|C^łD
              ̈́C̍WlƁCE̍Wlw肵܂D
              ODPWM_UPDATEOFFSCREENǂ񂾏ꍇɌNULL
              wł܂D̏ꍇCDPWM_UPDATEOFFSCREEN
              XV̈悪C]̈ɂȂ܂D

DPWM_PALETTEUPDATE
	AhCŃpbgύXƂʒm܂D

܂C`c[AhCɂ́C\[XȊOɁC\[XKvɂȂ܂D
iȂĂ삵܂CȂׂpӂĂDj
c[o[ɕ\C{^̃rbg}bvƁCJ[\łD

rbg}bv́C16F̃rbg}bvŁCTCÝC20x20gp܂D
rbg}bṽ\[X́C"PEN_BUTTON"ɂĂD

܂C`c[ŁCJ[\ύXꍇ́C
J[\\[Xɓ܂D
J[\̃\[X́C"PEN_CURSOR"ɂĂD



ȏ̋LqŁCcháCSbottom-up DIBiʏDIBƎvĂjłDfR[_̏ꍇɂCKbottom-up DIBɂȂ悤ɂĂD


    SDAhC̗
ȒPȃAhC̗ȉɎ܂D

iPjGR[_
ȒPɂ邽߁CQTUF̃rbg}bv̕ۑ̗܂D
P݂̂ۑ̂ŁC擪݂̂܂D

BOOL _export DPEncode(LPCSTR fileName,DP_ENCDECINFO *pInfo)
{
    HANDLE hFile;
    BITMAPFILEHEADER bmHead;
    DWORD d,size;

    bmHead.bfType = ('B' | ((WORD)'M' << 8))
    bmHead.bfReserved1 = 0;
    bmHead.bfReserved2 = 0;
    bmHead.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + 
                    (DWORD)sizeof(BITMAPINFOHEADER) + 
                    (DWORD)256 * (DWORD)sizeof(RGBQUAD);
    size = pInfo->pDibBuf[0]->biWidth;
    size += 3;
    size &= 0xfffffffc;
    size *= pInfo->pDibBuf[0]->biHeight;
    bmHead.size = size + bmHead.bfOffbits;

    hFile = CreateFile(fileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
                        FILE_ATTRIBUTE_ARCHIVE,NULL);

    if(hFile == INVALID_HANDLE_VALUE)
        return FALSE;

    /*wb_*/
    WriteFile(hFile,&bmHead,sizeof(BITMAPFILEHEADER),&d,NULL);

    WriteFile(hFile,pInfo->pDibBuf[0],
                sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD),&d,NULL);

    /*{̏*/
    WriteFile(hFile,pInfo->pBitBuf[0],size,&d,NULL);

    CloseHandle(hFile);

    return TRUE;
}

iQjfR[_
ȒPɂ邽߁CQTUF̃rbg}bvǂݍ݂܂D
chawb_ɘAf[^œǂݍ݂܂D

BOOL _export DPDecode(LPCSTR fileName,DP_ENCDECINFO *pInfo)
{
    HANDLE hFile;
    BITMAPFILEHEADER bmHead;
    DWORD size,d;

    pInfo->nPicture = 1;
    pInfo->pDibBuf = (LPBITMAPINFOHEADER *)GlobalAlloc(GPTR,sizeof(LPBITMAPINFOHEADER));
    pInfo->pBitBuf = (LPBYTE *)GlobalAlloc(GPTR,sizeof(LPBYTE));

    hFile = CreateFile(fileName,GENERIC_READ,0,NULL,OPEN_EXISTING,
                        FILE_ATTRIBUTE_ARCHIVE,NULL);

    ReadFile(hFile,&bmHead,sizeof(BITMAPFILEHEADER),&d,NULL);

    ReadFile(hFile,pInfo->pDibBuf[0],
                (bmHead.bfSize - sizeof(BITMAPFILEHEADER)),&d,NULL);

    pInfo->pBitBuf[0] = ((BYTE*)(pInfo->pDibBuf[0] + 1) + 256*sizeof(RGBQUAD));

    pInfo->dwFlag = 0;

    return TRUE;
}

iRjtB^
ɑIFEɑIFɕϊtB^łD

BOOL _export DPFilter(DP_FILTERINFO *pInfo)
{
    BYTE *pData;
    BYTE *pMask;
    DWORD pitch;
    LONG width,height,i,j,offset;

    pitch = pInfo->pDib->biWidth;
    pitch += 3;
    pitch &= 0xfffffffc;

    pData = pInfo->pBits;

    if(pInfo->dwFlag & DPFILTER_SELECTED){
        width = pInfo->selectedWidth;
        height = pInfo->selectedHeight;

        offset = (pInfo->pDib->biHeight - 1 - pInfo->selectedSy) * pitch + pInfo->selectedSx;
    }
    else{
        width = pInfo->pDib->biWidth;
        height = pInfo->pDib->biHeight;

        offset = (pInfo->pDib->biHeight - 1) * pitch;
    }
    pData += offset;

    if((pInfo->dwFlag & DPFILTER_MASKON) && (pInfo->dwFlag & DPFILTER_MASKPLANE) == 0){
        pMask = pInfo->pMaskBits;
        pMask += offset;

        for(i=0;i<height;i++){
            for(j=0;j<width;j++){
                if(*(pData + j) == pInfo->leftColor && *(pMask + j) != 0)
                    *(pData + j) = pInfo->rightColor;
            }
            pData -= pitch;
            pMask -= pitch;
        }
    }
    else{
        for(i=0;i<height;i++){
            for(j=0;j<width;j++){
                if(*(pData + j) == pInfo->leftColor)
                    *(pData + j) = pInfo->rightColor;
            }
            pData -= pitch;
        }
    }

    return TRUE;
}

iSj֐̗
̂悤Ȃ̂ɂȂ܂D

BOOL _export DPGetInfo(DP_ADDININFO *pInfo)
{
    pInfo->dwType = DPADDIN_FILTER;
    pInfo->name = "F(E)";
    pInfo->copyright = "1996 (C) DOIchan!";
    pInfo->version = "1.00";
    pInfo->addinDescription = "̐FE̐FɕύX";

    return TRUE;
}

BOOL _export DPGetInfo(DP_ADDININFO *pInfo)
{
    pInfo->dwType = DPADDIN_DECODER;
    pInfo->name = "fR[h̗";
    pInfo->copyright = "1996(C) DOIchan!";
    pInfo->addinDescription = "fR[_̗łD";
    pInfo->version = "1.00";
    pInfo->description = "DIB256F";
    pInfo->defExt = "bmp";

    return TRUE;
}


     TD̑

AhCc[̍쐬Ɋւ鎿Ȃǂ́CSe-mailŎ󂯕t܂D
doichan@bigfoot.com
Ŏ󂯕tĂ܂D
܂CAhCc[ȂׂCɋĂD
z[y[WŁCAhCc[ЉC
_E[hł悤ɂƎv܂D
낵˂܂D

