Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dfrview0.c c source code for bitmap viewer

3 views
Skip to first unread message

ericmatteson...@hotmail.com

unread,
May 28, 2008, 11:57:58 PM5/28/08
to
Wednesday May 28,2008
This bitmap picture viewer program is written in c
for the Microsoft Windows Win32 API
for viewing *.bmp files in monochrome
one bit per pixel mode.
This program listing also provides
an important example of how to use the
Win32 API including the GDI */
// This is the first line of this program
// dfrview0.c Bitmap picture viewer program
// copyright C 2008 by Eric Matteson
// permission is hereby granted to copy this
// source code file dfrview0.c and to publish
// it on the Internet and to use it at
// least for non-profit use.
// This free software comes with no warranty and
// can CRASH at any time. Attempting to read
// a non-dib file or one that is too big
// or any non-proper bitmap can crash this
// program because of lack of saftey checking.
// This dfrview0.c is used to display DIB
// bitmap files as monochome pictures
// on screen and runs on genuine Microsoft
// Windows 98 SE or equivalent.
// name is dfrview0.c if beemode == 0
// name is dfrview1.c if beemode == 1
// dfrview0.c
#include <windows.h>
#define bigsize 31000
#define swiftboatsiz 4096
// ------------- global variables
// beemode = 0 for one bit per pixel
// beemode = 1 for four bits per pixel
const int beemode = 0;
// --------- beemode
const int thouelsz = 16;
int vgaboat[] = {0,2,8,7,10,15};
int mfror[] = {-128,64,32,16,8,4,2,1};
int mfrand[] = {127,-65,-33,-17,-9,-5,-3,-2};
int threlizt[384];
long comfp;
int biwidth,biheight,bibitcount,awi,aht,biclrused;
int onetofive,prvtofive,prvtofour;
int gmode,gdriver;
int ab;
int lagcmp;
int crashvalue;
int thintel[288];
char cfn[80];
char cft[80];
char cgt[80];
char ct[1024];
char fonthold[1024];
char deeray[184];
char beeray[184];
char laa[bigsize];
// adding keyboard callback variables
int ikeypos;
int freddyisnext,dagrajumpnow;
int colorfrog[5];
char thouname[16384];
int thoumany,thousub;
// windows specific top
int keepvalue,updown,curkey;
int swiftboatpos,swiftboatfln;
int swiftoarwid,swiftoarbase;
char swiftboatvet[swiftboatsiz];
RECT revl;
RECT tevl;
WIN32_FIND_DATA findlast;
char jasonsname[]="dfrview0.c\0";
char scotsname[]="dfrview0.c\0";
// windows specific global bottom
char agfn[480];
char jtextline[80];
int swift640,swift480;
// moved from callback
int nkeyvai,rnallow;
char* argv;
// tttttttttttttt
char** argvi;
int argc;
char ckeyvac;
// tttttttttttttt
long divlodl(long lnumer,
long ldenom,int nzsrem);
int divmodi(int jnumer,int jdenom,
int nzjrem);
void fslone(int* fsld,long fslterm);
char fonone(long fnlterm);
void el(int,int,long,long,long,long);
void sixthin(int* sixtel,int sixrox,
int sixroy,char* sixchr);
void thinbrint(int* vixtel,int tbrxo,
int tbryo,int vixroy,int hgn);
void crzdrint(char* zdline,int yrown,
int otfv,int zbham);
void numberprn(char* wrntext,int nrx,
int nrw,int nrb,int rvalue);
void stringfill(char* fillable,char* parfill);
int ifromba(char* jifrb,int jssrb);
int ifrombv(char jjfr);
int revercram(char* fourcb,int revtwofour);
int onedex(char eightpixes,int zsevensel);
int fourdex(char twopixres,int twoparts);
int hbytesrln(int hbpixwid,int hbbitcount);
int scalereq(int scwid,int schgt,
int allowwid,int allowhgt);
int ctblsiz(int bibitctbs,int biclrusedct);
char oneread(int orh);
void estore(int esbase,int esctr,int eslimit,
int escolordex,int eszurnorm);
void readpixline(int anh);
int pixaverage(int tnysub,int tnyscale,
int untinywidth,int paztwo,int pafac);
int rawwh(int rhln,int rhsel,int hanrh);
void deepoke(int povub,int poval);
void monfr16(char* cmon,char* cd16,int mvb);
void qbwrite(int wox,int woy,int whh);
void drawline(int tyln,int lln,int hans);
int groupread(int gmanyb,int gmanys,int grf);
void drawpaged(int cphn,int pagehan);
int nhexfroma(int hfpos,char* hfsrc);
void deehdr(int dhstartpos,int dhwidth,
char* dhadd);
int csstlen(char* cslbe,int imgmaxl);
void jcfncopy(char* jcdy,char* jcsy,
int scfnmaxl);
// adding keyboard callback functions list
int nzgotkeyline(int nextkey);
void cafnropy(char* radest,char* rasrc,
int radirz,int rasub,int ramaxwid);
void drawpageb(int wragehab);
void rkeyproc(int kbvala);
int bthreshcalc(int* arthre,int* bthrein);
// -------------------------------------
char rswiftboat(int hswift);
int isdoskey(int warg,int snz);
void fixrect(RECT* rfixable);
LRESULT CALLBACK WindowProc(HWND cbhwnd,
UINT cbmessage,
WPARAM cbwparam,LPARAM cblparam);
// end of declarations
void crash(int craheeb)
{
// temporary subroutine crash
int crazsub,crasnot;
crazsub=0-1048576;
crashvalue=craheeb;
crasnot=fonthold[crazsub];
}
// bottom of temporary subroutine crash
char oneread(int orh)
{
char* onerecad;
char onerecord;
unsigned long redundn;
onerecad = &onerecord;
onerecord=rswiftboat(orh);
comfp=comfp+1;
return onerecord;
}
// REM bitmap header
// REM 0 00 2 "BM"
// REM 02 4 bfsize
// REM 06 2 2r1
// REM 08 2 2r2
// REM 0a 4 bfoffbits to start of bitmap
// REM 0e 4 bisize of header
// REM 18 12 4 biwidth IN PIXELS
// REM 22 16 4 biheight IN PIXELS
// REM 1a 2 biplanes srt to 0001
// REM 28 1c 2 bibitcount = {1,4,8,24}
// REM 1e 4 bicompression must be 0 for normal
// REM 22 4 bisize size of image or 0
// REM 26 4 bixpelspermeter
// REM 2a 4 biypelspermeter
// REM 46 2e 4 biclrused is number of colors
// used while > 0 AND [1C]=8
// REM 32 4 biclrimportant or 0
// REM 54 36 4*[1C] or 0 for [1C]==24
// COLORTABLE BGR0 BGR0
// REM bitmap is in upside down format after
// colortable each line of dwords
int divmodi(int jnumer,int jdenom,int nzjrem)
{
int resmodi,jprod,jrem,jfrac;
jfrac=jnumer/jdenom;
jprod=jdenom*jfrac;
jrem=jnumer-jprod;
if(jrem < 0)
{
jfrac=jfrac-1;
jprod=jdenom*jfrac;
jrem=jnumer-jprod;
}
resmodi=jfrac;
if(nzjrem != 0)resmodi=jrem;
return resmodi;
}
// int above long below
long divlodl(long lnumer,long ldenom,int nzsrem)
{
long lresmodi,ljprod,ljrem,ljfrac;
ljfrac=lnumer/ldenom;
ljprod=ldenom*ljfrac;
ljrem=lnumer-ljprod;
if(ljrem < 0)
{
ljfrac=ljfrac-1;
ljprod=ldenom*ljfrac;
ljrem=lnumer-ljprod;
}
lresmodi=ljfrac;
if(nzsrem != 0)lresmodi=ljrem;
return lresmodi;
}
void fslone(int* fsld,long fslterm)
{
long fslbase,fslnumer,fslfrac,fslrem;
int islctr,ixlrem;
islctr=10;
fslbase=(long)islctr;
fslnumer=fslterm;
islctr=5;
while(islctr >= 0)
{
fslfrac=divlodl(fslnumer,fslbase,0);
fslrem=divlodl(fslnumer,fslbase,1);
fslnumer=fslfrac;
ixlrem=(int)fslrem;
*(fsld+islctr)=ixlrem;
islctr=islctr-1;
}
*(fsld+6)=0;
*(fsld+7)=0;
}
char fonone(long fnlterm)
{
int mfectr,mferes;
int fonb[8];
char afononeres;
fslone(fonb,fnlterm);
mferes=0;
mfectr=0;
while(mfectr < 8)
{
mferes=mferes+mferes;
mferes=mferes+fonb[mfectr];
mfectr=mfectr+1;
}
afononeres=(char)mferes;
return afononeres;
}
void el(int ab,int au,long t1,long t2,
long t3,long t4)
{
int elibase,elobase,elopar,elistep;
if((au>=10)&&(au<=17))
{
elibase=(ab-1000)+(au-10);
elistep=0;
}
if((au>=20)&&(au<=27))
{
elibase=(ab-1000)+(au-20);
elistep=32;
}
elibase=elibase*8;
elobase=(divmodi(elibase,64,0))*64;
elopar=divmodi(elibase,64,63);
elobase=elobase+divmodi(elopar,8,0);
elobase=elobase+elistep;
fonthold[elobase]=fonone(t1);
fonthold[elobase+8]=fonone(t2);
fonthold[elobase+16]=fonone(t3);
fonthold[elobase+24]=fonone(t4);
// fonthold[elobase+32]=fonone(t5);
// fonthold[elobase+40]=fonone(t6);
// fonthold[elobase+48]=fonone(t7);
// fonthold[elobase+56]=fonone(t8);
}
void sixthin(int* sixtel,int sixrox,
int sixroy,char* sixchr)
{
int tixprod,sixbhr,tixctr,tiyprod;
int tiyres,tiyrem,tixbase;
char rychr;
rychr = *(sixchr+sixrox);
sixbhr = (int)rychr;
tixctr=0;
tiyprod=(sixbhr*8)+sixroy;
// sixrox is location within *sixchr of
// character
// sixroy is line number within
// individual text line 0-6
rychr = fonthold[tiyprod];
tiyres = (int)rychr;
tixbase=sixrox*6;
while(tixctr < 6)
{
tixprod=tixbase+tixctr;
tiyres=tiyres+tiyres;
tiyrem=15;
if(tiyres > 255)
{
tiyres=tiyres-256;
tiyrem=0;
}
thintel[tixprod]=tiyrem;
tixctr=tixctr+1;
}
}
void thinbrint(int* vixtel,int tbrxo,
int tbryo,int vixroy,int hgn)
{
int thibctr,brictr,brival,thibase,thisub;
thibctr=0;
while(thibctr < 18)
{
thibase=thibctr*16;
brictr=0;
while(brictr < 16)
{
thisub=thibase+brictr;
brival = *(vixtel+thisub);
deepoke(brictr,brival);
brictr=brictr+1;
}
qbwrite((tbrxo+thibase),(tbryo+vixroy),hgn);
thibctr=thibctr+1;
}
}
void crzdrint(char* zdline,int yrown,
int otfv,int zbham)
{
int zddyh,yrzctr,yrzbase,zddxo;
int zddyo,xrtctr;
zddyh=rawwh(otfv,2,zbham);
zddxo=rawwh(otfv,3,zbham);
zddyo=rawwh(otfv,4,zbham);
yrzbase=yrown+7;
if((yrzbase<zddyh)&&(rawwh(otfv,1,zbham)>=288))
{
yrzbase=zddyo+yrown;
yrzctr=0;
while(yrzctr < 7)
{
xrtctr=0;
while(xrtctr < 48)
{
sixthin(thintel,xrtctr,yrzctr,zdline);
xrtctr=xrtctr+1;
}
thinbrint(thintel,zddxo,yrzbase,yrzctr,zbham);
yrzctr=yrzctr+1;
}
}
}
void numberprn(char* wrntext,int nrx,
int nrw,int nrb,int rvalue)
{
int slcnudig[18];
int nbctr,nbtran,rcalue,slcnusub,rcnext;
char cbtran;
nbctr=nrw;
rcalue=rvalue;
if(rvalue < 0)rcalue=0-(rvalue+1);
while(nbctr > 0)
{
slcnusub=nbctr-1;
nbtran=divmodi(rcalue,nrb,1);
rcnext=divmodi(rcalue,nrb,0);
if(rvalue < 0)nbtran=(nrb-1)-nbtran;
rcalue=rcnext;
slcnudig[slcnusub]=nbtran;
nbctr=slcnusub;
}
nbctr=0;
while(nbctr < nrw)
{
slcnusub=nbctr+nrx-1;
nbtran=slcnudig[nbctr]+48;
if(nbtran > 57)nbtran=nbtran+39;
cbtran=(char)nbtran;
*(wrntext + slcnusub)=cbtran;
nbctr=nbctr+1;
}
}
void stringfill(char* fillable,char* parfill)
{
int gfillctr,gfillnext;
char gfillchr;
gfillctr=0;
gfillnext=0;
gfillchr='A';
while((gfillctr < 45)&&(gfillchr != '!'))
{
gfillnext=gfillctr+1;
gfillchr = *(parfill + gfillctr);
if(gfillchr == '\0')gfillchr = '!';
if(gfillchr != '!')
{
*(fillable + gfillctr)=gfillchr;
}
gfillctr=gfillnext;
}
gfillctr=gfillnext-1;
gfillchr = '\40';
while(gfillctr < 48)
{
*(fillable + gfillctr)=gfillchr;
gfillctr=gfillctr+1;
}
}
// ++++++++++++++++++++++++++++++++
int ifromba(char* jifrb,int jssrb)
{
int ifrbres;
char jifrbt;
jifrbt = *(jifrb+jssrb);
ifrbres = (int)jifrbt;
if(ifrbres < 0)ifrbres=ifrbres+256;
return ifrbres;
}
int ifrombv(char jjfr)
{
int ibvres;
ibvres=(int)jjfr;
if(ibvres < 0)ibvres=ibvres+256;
return ibvres;
}
int revercram(char* fourcb,int revtwofour)
{
int reverseii,reverseav,reverctra,reversepr;
reverseii=0;
reversepr=1;
reverctra=0;
while(reverctra < revtwofour)
{
reverseav=ifromba(fourcb,reverctra);
if(ifromba(fourcb,(revtwofour-1))>127)
{
reverseav=255-reverseav;
}
reverseii=reverseii+(reversepr*reverseav);
reversepr=reversepr*256;
reverctra=reverctra+1;
}
if(ifromba(fourcb,(revtwofour-1))>127)
{
reverseii=(0-1)-reverseii;
}
return reverseii;
}
int onedex(char eightpixes,int zsevensel)
{
int sevenmanysr,eightpixsr,onedexres,sevenctr;
sevenmanysr=7-zsevensel;
eightpixsr=ifrombv(eightpixes);
if(sevenmanysr > 0)
{
sevenctr=0;
while(sevenctr < sevenmanysr)
{
onedexres=divmodi(eightpixsr,2,0);
eightpixsr=onedexres;
sevenctr=sevenctr+1;
}
}
onedexres=4*divmodi(eightpixsr,2,1);
return onedexres;
}
int fourdex(char twopixres,int twoparts)
{
int isonesr,twopixsr,fourdexres,onectr;
isonesr=1-twoparts;
twopixsr=ifrombv(twopixres);
if(isonesr > 0)
{
onectr=0;
while(onectr < isonesr)
{
fourdexres=divmodi(twopixsr,16,0);
twopixsr=fourdexres;
onectr=onectr+1;
}
}
fourdexres=4*divmodi(twopixsr,16,15);
return fourdexres;
}
int hbytesrln(int hbpixwid,int hbbitcount)
{
int hbytesrlr;
hbytesrlr=hbpixwid*3;
if(hbbitcount==1)hbytesrlr=divmodi((hbpixwid+7),8,0);
if(hbbitcount==4)hbytesrlr=divmodi((hbpixwid+1),2,0);
if(hbbitcount==8)hbytesrlr=hbpixwid;
return hbytesrlr;
}
int scalereq(int scwid,int schgt,
int allowwid,int allowhgt)
{
int scalereqres,iallowwid,iallowhgt;
iallowwid=allowwid;
iallowhgt=allowhgt;
scalereqres=1;
if((scwid>iallowwid)||(schgt>iallowhgt))
{
while((scwid>iallowwid)||(schgt>iallowhgt))
{
scalereqres=scalereqres+1;
iallowwid=allowwid*scalereqres;
iallowhgt=allowhgt*scalereqres;
}
}
return scalereqres;
}
int ctblsiz(int bibitctbs,
int biclrusedct)
{
int ctblsizeres;
ctblsizeres=0;
if(bibitctbs == 1)ctblsizeres=8;
if(bibitctbs == 4)ctblsizeres=64;
if((bibitctbs==8)&&(biclrusedct==0))ctblsizeres=1024;
if((bibitctbs==8)&&(biclrusedct>=2))
{
ctblsizeres=biclrusedct*4;
}
return ctblsizeres;
}
void estore(int esbase,int esctr,int eslimit,
int escolordex,int eszurnorm)
{
int esfirstdest,eectr,esii;
char ess;
esfirstdest=(esbase+esctr)*3;
eectr=0;
if(esctr < eslimit)
{
if(eszurnorm == 0)
{
while(eectr < 3)
{
esii=ifromba(ct,(eectr+escolordex));
if(esii > 127)esii=esii-256;
ess=(char)esii;
laa[esfirstdest+eectr]=ess;
eectr=eectr+1;
}
}
if(eszurnorm > 0)
{
esii=escolordex;
if(esii > 127)esii=esii-256;
ess=(char)esii;
laa[esfirstdest+eszurnorm-1]=ess;
}
}
}
void readpixline(int anh)
{
int rdex,repixctr,rebytectr;
int rebytelimit,cscale,gsbase,ilopct;
char rll;
gsbase=0;
cscale=scalereq(biwidth,biheight,awi,aht);
while(cscale > 0)
{
repixctr=0;
rebytectr=0;
rebytelimit=hbytesrln(biwidth,bibitcount);
while(rebytectr < rebytelimit)
{
ilopct=0;
if(bibitcount == 1)
{
rll=oneread(anh);
rebytectr=rebytectr+1;
while(ilopct < 8)
{
rdex=onedex(rll,ilopct);
estore(gsbase,repixctr,biwidth,rdex,0);
repixctr=repixctr+1;
ilopct=ilopct+1;
}
}
if(bibitcount == 4)
{
rll=oneread(anh);
rebytectr=rebytectr+1;
while(ilopct < 2)
{
rdex=fourdex(rll,ilopct);
estore(gsbase,repixctr,biwidth,rdex,0);
repixctr=repixctr+1;
ilopct=ilopct+1;
}
}
if(bibitcount == 8)
{
rll=oneread(anh);
rebytectr=rebytectr+1;
rdex=(int)rll;
if(rdex < 0)rdex=rdex+256;
ilopct=rdex*4;
estore(gsbase,repixctr,biwidth,ilopct,0);
repixctr=repixctr+1;
}
if(bibitcount == 24)
{
while(ilopct < 3)
{
rll=oneread(anh);
rebytectr=rebytectr+1;
rdex=(int)rll;
if(rdex < 0)rdex=rdex+256;
ilopct=ilopct+1;
estore(gsbase,repixctr,biwidth,rdex,ilopct);
}
repixctr=repixctr+1;
}
}
rdex=rebytelimit+3;
ilopct=divmodi(rdex,4,0);
rdex=ilopct*4;
ilopct=rdex-rebytelimit;
if(ilopct > 0)
{
while(ilopct > 0)
{
rll=oneread(anh);
ilopct=ilopct-1;
}
}
gsbase=gsbase+biwidth;
cscale=cscale-1;
}
}
int pixaverage(int tnysub,int tnyscale,
int untinywidth,int paztwo,int pafac)
{
int tnydenom,tnyfrac,tnysum,paterm;
int paolopct,pamedct;
int pabase,paparsub;
char pagot;
tnydenom=tnyscale*tnyscale*pafac;
pabase=0;
tnysum=0;
paolopct=0;
while(paolopct < tnyscale)
{
pamedct=0;
while(pamedct < tnyscale)
{
paparsub=(((tnysub*tnyscale)+pabase+pamedct)*3);
paparsub=paparsub+paztwo;
pagot=laa[paparsub];
paterm = (int)pagot;
if(paterm < 0)paterm=paterm+256;
tnysum=tnysum+paterm;
pamedct=pamedct+1;
}
pabase=pabase+untinywidth;
paolopct=paolopct+1;
}
tnyfrac=divmodi(tnysum,tnydenom,0);
return tnyfrac;
}
int rawwh(int rhln,int rhsel,int hanrh)
{
int rhres,rhdl,rhdw,rhex;
int rha[23];
rha[10]=16*divmodi((swift640-16),16,0);
rha[11]=swift480-32;
rha[12]=1;
if(rhln < 5)rha[12]=2;
rhdl=rha[10];
rhdw=rha[12]*16;
rhex=divmodi(rhdl,rhdw,0);
rha[1]=rhex*16;
rhdw=rha[12];
rhdl=rha[11];
rha[2]=divmodi(rhdl,rhdw,0);
rha[3]=rha[1];
rha[4]=rha[2];
if((rhln==5)||(rhln==1)||(rhln==9))
{
rha[3]=0;
rha[4]=0;
}
if(rhln==3)rha[3]=0;
if(rhln==2)rha[4]=0;
rhres=rha[rhsel];
return rhres;
}
void deepoke(int povub,int poval)
{
int posub,pozurone,pogot,ponext;
char pocot;
posub=divmodi(povub,2,0)+118;
pozurone=divmodi(povub,2,1);
pocot=deeray[posub];
pogot=(int)pocot;
if(pogot < 0)pogot=pogot+256;
if(pozurone>0)ponext=(divmodi(pogot,16,0)*16)+poval;
if(pozurone==0)
{
ponext=divmodi(pogot,16,15)+(16*poval);
}
if(ponext > 127)ponext=ponext-256;
pocot=(char)ponext;
deeray[posub]=pocot;
}
// top of questionable area
void monfr16(char* cmon,char* cd16,int mvb)
{
// convert 4-bit color to 1-bit color bitmap
int rem16,sub16,rem2,sub2,mata16;
char mata2;
rem16 = mvb & 1;
sub16 = (mvb >> 1) + 118;
mata16 = (int)(*(cd16 + sub16));
if(rem16==0)mata16=(mata16>>4)&15;
if(rem16 == 1)mata16 = mata16 & 15;
rem2 = mvb & 7;
sub2 = (mvb >> 3)+62;
mata2 = *(cmon + sub2);
if(mata16 >= 9)
{
*(cmon+sub2)=mata2 | (char)mfror[rem2];
}
if(mata16 < 9)
{
*(cmon+sub2)=mata2 & (char)mfrand[rem2];
}
}
void qbwrite(int wox,int woy,int whh)
{
// using deeray[184];
int qqbctr;
HDC* twhh;
// twhh = reinterpret_cast<HDC*>(whh);
twhh = (HDC*)whh;
if(beemode == 1)
{
SetDIBitsToDevice(*twhh,wox,woy,
// *twhh handle
// wox and woy are starting coordinates
// (dword)16 is width
// (dword)1 is height
(DWORD)16,(DWORD)1,0,
0,0,(UINT)1,
// (UINT)1 is height
// (*VOID)(&deeray[0]+(118 or 62))is
// address of picture bits
// 62 is for monochrome
(VOID*)(&deeray[0]+118),
(BITMAPINFO*)(&deeray[0]+14),0);
// BITMAPINFO is 14 bytes after beginning
// of dib header
// 0 is UuColorUse
}
if(beemode == 0)
{
qqbctr=0;
while(qqbctr < 16)
{
monfr16(beeray,deeray,qqbctr);
qqbctr=qqbctr+1;
}
SetDIBitsToDevice(*twhh,wox,woy,
(DWORD)16,(DWORD)1,0,
0,0,(UINT)1,
(VOID*)(&beeray[0] + 62),
(BITMAPINFO*)(&beeray[0]+14),0);
}
}
void drawline(int tyln,int lln,int hans)
{
int glvalue,glox,gloy,geilop,gemedlop;
int gtwidth,gtctr,gtremainder;
int glscale,glaw,glah,gwidth;
int gtra,gtrb,glctr;
int colortoad;
int draz[6];
colortoad=2;
lagcmp=0;
glvalue=15;
if((lln>0)&&(lln<6))colortoad=colorfrog[lln-1];
glaw=rawwh(lln,1,hans);
glah=rawwh(lln,2,hans);
glox=rawwh(lln,3,hans);
gloy=rawwh(lln,4,hans)+tyln;
glscale=scalereq(biwidth,biheight,glaw,glah);
gwidth=divmodi(biwidth,glscale,0);
gtra=0;
glctr=0;
gtwidth=divmodi(gwidth,16,0);
gtremainder=divmodi(gwidth,16,15);
if(gtremainder > 0)gtra=16-gtremainder;
gtctr=0;
while(gtctr < gtwidth)
{
gemedlop=0;
while(gemedlop < 16)
{
// threshold top
draz[0]=pixaverage(glctr,glscale,biwidth,0,1);
draz[1]=pixaverage(glctr,glscale,biwidth,1,1);
draz[2]=pixaverage(glctr,glscale,biwidth,2,1);
draz[3]=colortoad;
draz[4]=glctr;
draz[5]=tyln;
glvalue=bthreshcalc(threlizt,draz);
if(colortoad == 0)
{
glvalue=vgaboat[bthreshcalc(threlizt,draz)];
}
if(colortoad >= 3)
{
glvalue=vgaboat[bthreshcalc(threlizt,draz)];
}
// threshold bottom
glctr=glctr+1;
deepoke(gemedlop,glvalue);
gemedlop=gemedlop+1;
}
// qbwrite uncertain
qbwrite(((gtctr*16)+glox),gloy,hans);
gtctr=gtctr+1;
}
gtrb=0;
if(gtremainder > 0)
{
while(gtrb < gtremainder)
{
// threshold top
draz[0]=pixaverage(glctr,glscale,biwidth,0,1);
draz[1]=pixaverage(glctr,glscale,biwidth,1,1);
draz[2]=pixaverage(glctr,glscale,biwidth,2,1);
draz[3]=colortoad;
draz[4]=glctr;
draz[5]=tyln;
glvalue=bthreshcalc(threlizt,draz);
if(colortoad == 0)
{
glvalue=vgaboat[bthreshcalc(threlizt,draz)];
}
if(colortoad >= 3)
{
glvalue=vgaboat[bthreshcalc(threlizt,draz)];
}
// threshold bottom
glctr=glctr+1;
deepoke(gtrb,glvalue);
gtrb=gtrb+1;
}
gtrb=0;
while(gtrb < gtra)
{
deepoke((gtremainder+gtrb),0);
gtrb=gtrb+1;
}
// qbwrite uncertain
qbwrite(((gtwidth*16)+glox),gloy,hans);
}
}
// end of drawline
int groupread(int gmanyb,int gmanys,int grf)
{
int groctr,grores;
char ichrfour[4];
char ichrone;
groctr=0;
grores=0;
if(gmanyb > 0)
{
while(groctr < gmanyb)
{
ichrone=oneread(grf);
ichrfour[groctr]=ichrone;
groctr=groctr+1;
}
grores=revercram(ichrfour,gmanyb);
}
groctr=0;
if(gmanys > 0)
{
while(groctr < gmanys)
{
ichrone=oneread(grf);
groctr=groctr+1;
}
}
return grores;
}
void drawpaged(int cphn,int pagehan)
{
HANDLE hdpf;
HANDLE* lpdpf;
int idpf;
int dpw,dph,dpthgt,dpscale,dptwid,tybase;
int tyctrup,tyvalue,tycwt;
int dpenable,dpctsize,dptextar;
int fixcx,fixcy,dpucsize,prcolor;
int dpmb;
long dplength;
char dpch;
bibitcount=0;
dpctsize=0;
dpucsize=1;
dptextar=3;
dpscale=0;
prcolor=9;
dplength=0;
dpw=rawwh(cphn,1,pagehan);
dph=rawwh(cphn,2,pagehan);
awi=dpw;
aht=dph;
biwidth=awi;
biheight=aht;
if(((cphn>=1)&&(cphn<=5))||(ikeypos<1))
{
// fix by inserting clearing
fixcx=rawwh(cphn,3,pagehan);
fixcy=rawwh(cphn,4,pagehan);
dptwid=divmodi(dpw,16,0);
dpthgt=0;
while(dpthgt < dph)
{
tyctrup=0;
while(tyctrup < dptwid)
{
tycwt=0;
while(tycwt < 16)
{
deepoke(tycwt,(15-tycwt));
tycwt=tycwt+1;
}
tycwt=fixcy+dpthgt;
tyvalue=(tyctrup*16)+fixcx;
qbwrite(tyvalue,tycwt,pagehan);
tyctrup=tyctrup+1;
}
dpthgt=dpthgt+1;
}
// end of fix by clearing
}
// begin fix by page number
dpenable=1;
if((cphn>=1)&&(cphn<=5))
{
cafnropy(cfn,agfn,0,cphn,80);
comfp=csstlen(cfn,80);
if((comfp<40)&&(comfp>4))dpenable=0;
}
if(dpenable == 0)
{
if(cphn == prvtofive)
{
cafnropy(agfn,cfn,1,6,80);
}
if(cphn == onetofive)
{
prvtofive=prvtofour;
prvtofour=onetofive;
}
// end of fix by page number
// dpf=fopen(cfn,"rb");
hdpf=CreateFile(cfn,GENERIC_READ,
FILE_SHARE_READ,NULL,OPEN_EXISTING,
(FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN),
NULL);
lpdpf = &hdpf;
// idpf=reinterpret_cast<int>(lpdpf);
idpf=(int)lpdpf;
dpenable=1;
if(hdpf != INVALID_HANDLE_VALUE)
{
// fseek(dpf,0,SEEK_END);
// dplength=ftell(dpf);
// fseek(dpf,0,SEEK_SET);
dplength=GetFileSize(*lpdpf,NULL);
swiftboatfln=dplength;
swiftboatpos=swiftboatsiz+1;
swiftoarbase=0;
if(dplength > 65)dpenable=0;
}
if(dpenable == 0)
{
comfp=0;
dpmb=groupread(2,16,idpf);
biwidth=groupread(2,2,idpf);
biheight=groupread(2,4,idpf);
bibitcount=groupread(2,16,idpf);
biclrused=groupread(2,6,idpf);
dpctsize=ctblsiz(bibitcount,biclrused);
dpucsize=divmodi(dpctsize,4,0);
prcolor=colorfrog[cphn-1];
tycwt=0;
if(dpctsize > 0)
{
while(tycwt < dpctsize )
{
dpch=oneread(idpf);
ct[tycwt]=dpch;
tycwt=tycwt+1;
}
}
dpscale=scalereq(biwidth,biheight,dpw,dph);
dpthgt=divmodi(biheight,dpscale,0);
dptextar=dpthgt+1;
// tybase=rawwh(cphn,4,pagehan);
tybase=0;
tyctrup=0;
while(tyctrup < dpthgt)
{
tyvalue=(tybase+dpthgt-1)-tyctrup;
tycwt=tybase+tyctrup;
readpixline(idpf);
drawline(tyvalue,cphn,pagehan);
tyctrup=tyctrup+1;
}
// fclose(dpf);
CloseHandle(hdpf);
}
}
// valid filename above
if((cphn <= 5)&&(cphn >= 1))
{
stringfill(cft,"w xxxx h yyyy bits bb ct *** s sss !");
numberprn(cft,3,4,10,biwidth);
numberprn(cft,11,4,10,biheight);
numberprn(cft,22,2,10,bibitcount);
if(dpucsize > 0)
{
numberprn(cft,30,3,10,dpucsize);
}
numberprn(cft,34,1,10,dpscale);
numberprn(cft,36,1,10,onetofive);
numberprn(cft,37,1,10,cphn);
if(prcolor < 10)
{
numberprn(cft,38,1,10,prcolor);
}
crzdrint(cft,dptextar,cphn,pagehan);
stringfill(cft,cfn);
crzdrint(cft,(dptextar+7),cphn,pagehan);
stringfill(cft," ON ANTI-DRAFT DFRVIEW0 !");
crzdrint(cft,(dptextar+14),cphn,pagehan);
stringfill(cft,"o open filename ending with *.bmp !");
crzdrint(cft,(dptextar+21),cphn,pagehan);
// ---
stringfill(cft,"q quit n new c colormode ........ !");
numberprn(cft,30,8,10,dplength);
crzdrint(cft,(dptextar+28),cphn,pagehan);
stringfill(cft,"1 2 3 4 choose a small screen 1 2 !");
crzdrint(cft,(dptextar+35),cphn,pagehan);
stringfill(cft," 5 choose entire large screen 3 4 !");
crzdrint(cft,(dptextar+42),cphn,pagehan);
stringfill(cft," ; Find first bitmap file *.BMP !");
crzdrint(cft,(dptextar+49),cphn,pagehan);
stringfill(cft,", find next bitmap file *.BMP !");
crzdrint(cft,(dptextar+56),cphn,pagehan);
stringfill(cft,"Abolish US military draft registration !");
crzdrint(cft,(dptextar+63),cphn,pagehan);
stringfill(cft,"Vote for an all volunteer jury system !");
crzdrint(cft,(dptextar+70),cphn,pagehan);
stringfill(cft,"Eric Matteson viewer for bitmaps!");
crzdrint(cft,(dptextar+77),cphn,pagehan);
stringfill(cft," r redraw previous bitmap file !");
crzdrint(cft,(dptextar+84),cphn,pagehan);
stringfill(cft,"Vote for H.R. 487 (cong 108) !");
crzdrint(cft,(dptextar+91),cphn,pagehan);
stringfill(cft,"to end the draft registration !");
crzdrint(cft,(dptextar+98),cphn,pagehan);
stringfill(cft,"Help Luke Skywalker save Windows. !");
crzdrint(cft,(dptextar+105),cphn,pagehan);
stringfill(cft,"Vote for an all volunteer jury system !");
crzdrint(cft,(dptextar+112),cphn,pagehan);
// ----
}
if(cphn == 9)
{
stringfill(cft,"filename for screen t then enter xxxxxx!");
numberprn(cft,21,1,10,onetofive);
numberprn(cft,34,6,16,ikeypos);
crzdrint(cft,7,cphn,pagehan);
stringfill(cgt,"no filename present!");
if((onetofive >= 1)&&(onetofive <= 5))
{
cafnropy(agfn,jtextline,1,onetofive,80);
cafnropy(cgt,agfn,0,onetofive,80);
}
stringfill(cft,cgt);
crzdrint(cft,21,cphn,pagehan);
}
// end of drawpaged( pagehan)
}
int nhexfroma(int hfpos,char* hfsrc)
{
int hftarg,hft;
char hfsrb;
hftarg=0-1;
hfsrb = *(hfsrc+hfpos);
hft=(int)hfsrb;
if((hft<=57)&&(hft>=48))hftarg=hft-48;
if((hft<=70)&&(hft>=65))hftarg=hft-55;
if((hft<=102)&&(hft>=97))hftarg=hft-87;
return hftarg;
}
void deehdr(int dhstartpos,
int dhwidth,char* dhadd)
{
int dehctr,dehterm,dehsub;
char dehchr;
dehctr=0;
// ----------------------
if(dhstartpos < 500)
{
while(dehctr < dhwidth)
{
dehsub=dhstartpos+dehctr;
dehterm=nhexfroma((dehctr+dehctr+dehctr+1),dhadd)*16;
dehterm=dehterm+nhexfroma(((dehctr*3)+2),dhadd);
if(dehterm > 127)dehterm=dehterm-256;
dehchr=(char)dehterm;
deeray[dehsub]=dehchr;
dehctr=dehctr+1;
}
}
// -----------------------
if((dhstartpos>499)&&(dhstartpos<1000))
{
while(dehctr < dhwidth)
{
dehsub=dhstartpos+dehctr-500;
dehterm=nhexfroma((dehctr+dehctr+dehctr+1),dhadd)*16;
dehterm=dehterm+nhexfroma(((dehctr*3)+2),dhadd);
if(dehterm > 127)dehterm=dehterm-256;
dehchr=(char)dehterm;
beeray[dehsub]=dehchr;
dehctr=dehctr+1;
}
}
// -----------------------
if(dhstartpos > 999)
{
while(dehctr < dhwidth)
{
dehsub=dhstartpos+dehctr-1000;
dehterm=nhexfroma((dehctr+dehctr+dehctr),dhadd)*100;
dehterm=dehterm+(10*nhexfroma(((dehctr*3)+1),dhadd));
dehterm=dehterm+nhexfroma(((dehctr*3)+2),dhadd);
threlizt[dehsub] = dehterm;
dehctr=dehctr+1;
}
}
}
int csstlen(char* cslbe,int imgmaxl)
{
int cmgctr,cmgcmp,cmgned;
char cmgcz;
cmgctr=imgmaxl;
if(imgmaxl > 0)
{
cmgcmp=32;
while((cmgctr > 0)&&(cmgcmp < 33))
{
cmgned=cmgctr-1;
cmgcz = *(cslbe + cmgned);
cmgcmp = (int)cmgcz;
if(cmgcmp < 33)
{
cmgctr=cmgned;
}
}
}
if(imgmaxl == 0)
{
cmgcmp=65;
while((cmgctr < 80)&&(cmgcmp > 33))
{
cmgcz = *(cslbe+cmgctr);
cmgcmp = (int)cmgcz;
if(cmgcmp > 33)
{
cmgctr=cmgctr+1;
}
}
}
return cmgctr;
}
void jcfncopy(char* jcdy,char* jcsy,
int scfnmaxl)
{
int jcfnlen,jcfnctr;
char jcft;
jcfnctr=0;
jcfnlen=csstlen(jcsy,scfnmaxl);
while(jcfnctr < jcfnlen)
{
jcft = *(jcsy+jcfnctr);
*(jcdy+jcfnctr)=jcft;
jcfnctr = jcfnctr + 1;
}
*(jcdy+jcfnlen) = '\0';
}
// end of jcfncopy
// adding in keyboard callback upgrade
int nzgotkeyline(int nextkey)
{
int nzkeyres,znormkey;
znormkey=0;
if(ikeypos < 1)
{
while(znormkey < 80)
{
jtextline[znormkey]='\40';
znormkey=znormkey+1;
}
}
znormkey=0;
nzkeyres=0;
if((nextkey<=10)&&(nextkey>=10))
{
nzkeyres=1;
znormkey=1;
}
if((nextkey<=13)&&(nextkey>=13))
{
nzkeyres=1;
znormkey=1;
}
if((ikeypos>0)&&(nextkey<=8)&&(nextkey>=8))
{
znormkey=1;
ikeypos=ikeypos-1;
jtextline[ikeypos] = '\40';
}
if((ikeypos<40)&&(znormkey<=0)&&(znormkey>=0))
{
jtextline[ikeypos]=(char)nextkey;
ikeypos=ikeypos+1;
if(ikeypos>39)nzkeyres=1;
}
return nzkeyres;
}
// bottom of nzgotkeyline(int nextkey);
void cafnropy(char* radest,char* rasrc,
int radirz,int rasub,int ramaxwid)
{
char* trdezt;
char* trzrc;
int racbr,raziz,radisp;
radisp=(rasub-1)*ramaxwid;
trdezt=radest;
trzrc=rasrc;
if(radirz==0)trzrc=rasrc+radisp;
if(radirz!=0)trdezt=radest+radisp;
racbr=0;
while(racbr < ramaxwid)
{
*(trdezt+racbr)='\0';
racbr=racbr+1;
}
racbr=0;
if(radirz >= 0)
{
raziz=0;
if(ramaxwid>32)raziz=csstlen(trzrc,ramaxwid);
if(ramaxwid<32)raziz=csstlen(trzrc,0);
if(raziz>=ramaxwid)raziz=0;
while(racbr < raziz)
{
*(trdezt+racbr) = *(trzrc+racbr);
racbr=racbr+1;
}
}
}
// bottom of cafnropy
void drawpageb(int wragehab)
{
int hpgctr;
int ragehab;
ragehab=wragehab;
if(dagrajumpnow == 1)
{
if(onetofive == 5)
{
drawpaged(5,ragehab);
}
if((onetofive>=1)&&(onetofive<=4))
{
hpgctr=1;
while(hpgctr < 5)
{
drawpaged(hpgctr,ragehab);
hpgctr=hpgctr+1;
}
}
}
if(dagrajumpnow == 2)
{
drawpaged(9,ragehab);
}
}
void rkeyproc(int kbvala)
{
char kbcala;
HANDLE unfound;
kbcala = 'A';
if(kbvala == 2048)
{
onetofive=0;
thoumany=0;
thousub=0;
freddyisnext=1;
dagrajumpnow=1;
while(onetofive < 480)
{
agfn[onetofive] = '\0';
// depth = 3
onetofive=onetofive+1;
}
onetofive=0;
while(onetofive < 5)
{
colorfrog[onetofive]=1;
onetofive=onetofive+1;
}
onetofive=5;
prvtofive=6;
prvtofour=7;
}
// depth = 1
if((kbvala<=127)&&(kbvala>=0))kbcala=(char)kbvala;
if((dagrajumpnow==2)&&(kbvala<=2047))
{
freddyisnext=2;
if(nzgotkeyline(kbvala)>0)freddyisnext=1;
}
if(dagrajumpnow == 1)
{
if((kbcala == 'o')||(kbcala == 'O'))
{
ikeypos=0;
// depth = 3
freddyisnext=2;
jtextline[0]='\41';
}
if((kbcala == 'n')||(kbcala == 'N'))
{
onetofive=0;
thoumany=0;
thousub=0;
freddyisnext=1;
while(onetofive < 480)
{
agfn[onetofive] = '\0';
// depth = 4
onetofive=onetofive+1;
}
onetofive=0;
while(onetofive < 5)
{
colorfrog[onetofive]=1;
onetofive=onetofive+1;
}
onetofive=5;
prvtofive=6;
prvtofour=7;
}
// depth = 2
if((kbcala == 'c')||(kbcala == 'C'))
{
if((onetofive<=5)&&(onetofive>=1))
{
colorfrog[onetofive-1]=1+colorfrog[onetofive-1];
if(colorfrog[onetofive-1]>10)colorfrog[onetofive-1]=0;
}
}
// depth = 2
// , 2c 00101100 ; 3b 00111011
if((kbcala=='\54')&&(onetofive>=1)&&(onetofive<=5))
{
stringfill(cgt," !!!");
cafnropy(agfn,cgt,1,onetofive,80);
if(thousub <= thoumany)
{
cafnropy(cgt,thouname,0,thousub,thouelsz);
cafnropy(agfn,cgt,1,onetofive,80);
}
if(thousub>(thoumany+2))thousub=1;
if(thousub<=(thoumany+2))thousub=thousub+1;
// --------------------- --- cft cgt cfn
}
// depth = 2
if((kbcala == 'r')||(kbcala == 'R'))
{
cafnropy(cgt,agfn,0,6,80);
if((onetofive>=1)&&(onetofive<=5))
{
cafnropy(agfn,cgt,1,onetofive,80);
}
}
// depth = 2
if((kbcala=='\73')&&(onetofive>=1)&&(onetofive<=5))
{
stringfill(cfn,"*.BMP0*.bmp00!!!!!!!!");
cfn[5]='\0';
cfn[11]='\0';
cfn[12]='\0';
unfound=FindFirstFile(cfn,&findlast);
thousub=16383;
thoumany=0;
if(unfound==INVALID_HANDLE_VALUE)thousub=0;
if(thoumany < thousub)
{
cafnropy(thouname,findlast.cFileName,
1,(thoumany+1),thouelsz);
if(csstlen(findlast.cFileName,0)<thouelsz)
{
thoumany=thoumany+1;
}
}
while(thoumany < thousub)
{
thousub=0;
// depth = 4
if(FindNextFile(unfound,&findlast)>0)thousub=16383;
if(thoumany < thousub)
{
cafnropy(thouname,findlast.cFileName,
1,(thoumany+1),thouelsz);
if(csstlen(findlast.cFileName,0)<thouelsz)
{
if(csstlen(findlast.cFileName,0)>4)
{
thoumany=thoumany+1;
// ========
if(thoumany > 1)
{
cafnropy(cft,thouname,0,(thoumany-1),thouelsz);
if(csstlen(findlast.cFileName,0)==csstlen(cft,0))
{
thousub=0;
while(thousub < csstlen(cft,0))
{
// depth = 10
if(findlast.cFileName[thousub]!=cft[thousub])
{
thousub=16383;
}
if(thousub<csstlen(cft,0))thousub=thousub+1;
}
if(thousub < 80)thousub=0;
}
}
// ========
}
}
}
}
// depth = 3
thousub=1;
if((onetofive>=1)&&(onetofive<=5)&&(thousub<=thoumany))
{
stringfill(cgt," !!!");
cafnropy(agfn,cgt,1,onetofive,80);
cafnropy(cgt,thouname,0,thousub,thouelsz);
cafnropy(agfn,cgt,1,onetofive,80);
thousub=thousub+1;
}
// ----------
if(unfound!=INVALID_HANDLE_VALUE)
{
FindClose(unfound);
}
}
// depth = 2
if((kbvala <= 53)&&(kbvala >= 49))
{
onetofive=kbvala-48;
}
}
// depth = 1
dagrajumpnow=freddyisnext;
}
int bthreshcalc(int* arthre,int* bthrein)
{
// bthrein 0-2 rgb
// 3 colormode 4x 5y
int seedlpos,cmpthsub,bthreshres;
int tt,tchctr;
int dticmp,chhcmp,checmp;
bthreshres=0;
chhcmp = *(bthrein + 4);
checmp = *(bthrein + 5);
dticmp = *(bthrein + 3);
seedlpos=(2*divmodi(chhcmp,2,1))+divmodi(checmp,2,1);
if(dticmp == 1)
{
tchctr=0;
cmpthsub=seedlpos*4;
while(tchctr < 3)
{
chhcmp = *(bthrein+tchctr);
checmp = *(arthre+cmpthsub);
bthreshres=bthreshres*2;
if(checmp<chhcmp)bthreshres=bthreshres+1;
cmpthsub=cmpthsub+1;
tchctr=tchctr+1;
}
bthreshres=bthreshres+8;
}
if((dticmp == 0)||(dticmp >= 3))
{
cmpthsub=seedlpos+16+(20*(dticmp-2));
if(dticmp<=2)cmpthsub=seedlpos+16;
tt=1;
chhcmp=0;
chhcmp = chhcmp + *(bthrein+0);
chhcmp = chhcmp + *(bthrein+1);
chhcmp = chhcmp + *(bthrein+2);
while((bthreshres < 5)&&(tt>0))
{
checmp = *(arthre+cmpthsub);
cmpthsub=cmpthsub+4;
if(chhcmp < checmp)tt=0;
if(tt > 0)bthreshres=bthreshres+1;
}
}
if(dticmp == 2)
{
chhcmp=0;
chhcmp = chhcmp + *(bthrein+0);
chhcmp = chhcmp + *(bthrein+1);
chhcmp = chhcmp + *(bthrein+2);
if(chhcmp < lagcmp)bthreshres=0;
if(chhcmp >= lagcmp)bthreshres=15;
if(chhcmp < 7)bthreshres=0;
lagcmp = chhcmp;
}
return bthreshres;
}
// end of bthreshcalc(int*,int*)
char rswiftboat(int hswift)
{
unsigned long swiftskip;
int swiftoarcmp;
char swiftkerry;
HANDLE* lphswift;
lphswift=(HANDLE*)hswift;
if(swiftboatpos>=swiftboatsiz)
{
swiftoarwid=swiftboatsiz;
swiftoarcmp=swiftboatfln-swiftoarbase;
if(swiftoarcmp<swiftboatsiz)swiftoarwid=swiftoarcmp;
if(swiftoarwid > 0)
{
ReadFile(*lphswift,swiftboatvet,
swiftoarwid,&swiftskip,NULL);
}
swiftoarbase=swiftoarbase+swiftoarwid;
swiftboatpos=0;
}
swiftoarcmp=swiftboatpos+swiftoarbase-swiftoarwid;
swiftkerry='\40';
if(swiftoarcmp < swiftboatfln)
{
swiftkerry=swiftboatvet[swiftboatpos];
}
swiftboatpos=swiftboatpos+1;
// global variables needed
// const int swiftboatsiz=4096;
// char swiftboatvet[swiftboatsiz];
// int swiftboatpos,swiftboatfln;
// int swiftoarwid,swiftoarbase;
// ..................
// initialize before first call to
// buffered read char swiftboatvet(HANDLE)
// swiftboatpos=swiftboatsiz+1;
// swiftoarbase=0;
// swiftboatfln needs initialization
return swiftkerry;
}
// ----------------------------
int isdoskey(int warg,int snz)
{
// warg is virtual key code (NOT scan code)
// snz is zero for nonshifted.
int tu;
int r;
WPARAM* lpwarg;
lpwarg=(WPARAM*)warg;
tu=(int)*lpwarg;
r=0;
if((tu>64)&&(tu<91))
// if key is a letter key 65-90
{
r=tu;
// letter keys use warg is always
// uppercase version of that key;
if(snz==0)r=tu+32;
}
if((tu>47)&&(tu<58)&&(snz==0))r=tu;
// number keys are same as warg.
// Shifted keys require conversion ifs.
if((snz!=0)&&(tu==48))r=41;
if((snz!=0)&&(tu==49))r=33;
if((snz!=0)&&(tu==50))r=64;
if((snz!=0)&&(tu==51))r=35;
if((snz!=0)&&(tu==52))r=36;
if((snz!=0)&&(tu==53))r=37;
if((snz!=0)&&(tu==54))r=94;
if((snz!=0)&&(tu==55))r=38;
if((snz!=0)&&(tu==56))r=42;
if((snz==0)&&(tu==106))r=42;
if((snz!=0)&&(tu==57))r=40;
// warg is the same value for both shifted
// and non-shifted versions of each key
if((tu==192)&&(snz==0))r=96;
if((tu==192)&&(snz!=0))r=126;
if((tu==189)&&(snz==0))r=45;
if((tu==109)&&(snz==0))r=45;
if((tu==189)&&(snz!=0))r=95;
if((tu==187)&&(snz==0))r=61;
if((tu==187)&&(snz!=0))r=43;
if((tu==107)&&(snz==0))r=43;
if((tu==220)&&(snz==0))r=92;
if((tu==220)&&(snz!=0))r=124;
if(tu==27)r=27;
if(tu==8)r=8;
if(tu==13)r=13;
if(tu==32)r=32;
if(tu==9)r=32;
// set tab key 9 to blank 32 to clean it up.
if((tu==219)&&(snz==0))r=91;
if((tu==219)&&(snz!=0))r=123;
if((tu==221)&&(snz==0))r=93;
if((tu==221)&&(snz!=0))r=125;
if((tu==186)&&(snz==0))r=59;
if((tu==186)&&(snz!=0))r=58;
if((tu==222)&&(snz==0))r=39;
if((tu==222)&&(snz!=0))r=34;
if((tu==188)&&(snz==0))r=44;
if((tu==188)&&(snz!=0))r=60;
if((tu==190)&&(snz==0))r=46;
if((tu==110)&&(snz==0))r=46;
if((tu==190)&&(snz!=0))r=62;
if((tu==191)&&(snz==0))r=47;
if((tu==111)&&(snz==0))r=47;
if((tu==191)&&(snz!=0))r=63;
if(snz==0)
{
// add 1024 to extended keys such as
// arrow and page up after converting.
if(tu==37)r=75+1024;
if(tu==39)r=77+1024;
if(tu==38)r=72+1024;
if(tu==40)r=80+1024;
if(tu==33)r=73+1024;
if(tu==34)r=81+1024;
if(tu==35)r=79+1024;
if(tu==36)r=71+1024;
if(tu==45)r=82+1024;
if(tu==46)r=83+1024;
}
if((tu>95)&&(tu<106)&&(snz==0))r=tu-48;
if((snz==0)&&(tu>111)&&(tu<122))r=(tu-53)+1024;
return r;
}
// end of isdoskey
void fixrect(RECT* rfixable)
{
int fixrh,fixrw;
fixrw=(*rfixable).right-(*rfixable).left;
fixrh=(*rfixable).bottom-(*rfixable).top;
(*rfixable).left = 0;
(*rfixable).top = 0;
(*rfixable).right = fixrw;
(*rfixable).bottom = fixrh;
}
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,int ncmdshow)
// lpcmdline is argument
// ncmdshow is number of arguments
{
HWND mhwnd;
MSG msg;
WNDCLASS wc;
char wvargno;
wvargno = '\0';
argv = &wvargno;
argc=0;
thoumany=0;
swift640=608;
swift480=432;
thousub=1;
rnallow=1;
if(lpcmdline != NULL)argv = lpcmdline;
while(rnallow > 0)
{
ckeyvac = *(argv+argc);
if((int)ckeyvac < 35)rnallow=0;
if(argc > 64)rnallow=0;
if(rnallow > 0)
{
argc=argc+1;
}
}
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=WindowProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hinstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=NULL;
wc.lpszClassName=jasonsname;
updown=0;
RegisterClass(&wc);
// RegisterClass sets function pointer
// called by DispatchMessage to
// wc.lpfnWndProc
mhwnd=CreateWindow(jasonsname,
scotsname,WS_OVERLAPPEDWINDOW,
16,16,608,432,0,0,hinstance,0);
ShowWindow(mhwnd,ncmdshow);
UpdateWindow(mhwnd);
keepvalue=1;
// GetMessage gets next event
// TranslateMessage does nothing
// DispatchMessage calls LRESULT CALLBACK
while((GetMessage(&msg,0,0,0)!=0)&&(keepvalue!=0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// crash(55);
return msg.wParam;
}
// bottom of WinMain
LRESULT CALLBACK WindowProc(HWND cbhwnd,
UINT cbmessage,
WPARAM cbwparam,LPARAM cblparam)
// cbhwnd handle
// cbmessage is type of event
// cbwparam is raw key code when keydown
// cblparam is rarly used
{
PAINTSTRUCT ps;
HDC padc;
WPARAM* lbwparam;
int ibwparam;
HDC* lpadc;
int iadc;
lpadc = &padc;
iadc = (int)lpadc;
lbwparam = &cbwparam;
ibwparam = (int)lbwparam;
int amoux,amouy;
switch(cbmessage)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
case WM_CREATE:
{
deehdr(0,9," 42 4D 7E 00 00 00 00 00 00 ");
deehdr(9,9," 00 76 00 00 00 28 00 00 00 ");
deehdr(18,4," 10 00 00 00 ");
deehdr(22,4," 01 00 00 00 ");
deehdr(26,2," 01 00 ");
deehdr(28,2," 04 00");
deehdr(30,8," 00 00 00 00 08 00 00 00 ");
deehdr(38,8," C4 0E 00 00 C4 0E 00 00 ");
deehdr(46,4," 00 00 00 00 ");
deehdr(50,4," 00 00 00 00 ");
deehdr(54,8," 00 00 00 00 00 00 80 00 ");
deehdr(62,8," 00 80 00 00 00 80 80 00 ");
deehdr(70,8," 80 00 00 00 80 00 80 00 ");
deehdr(78,8," 80 80 00 00 C0 C0 C0 00 ");
deehdr(86,8," 80 80 80 00 00 00 FF 00 ");
deehdr(94,8," 00 FF 00 00 00 FF FF 00 ");
deehdr(102,8," FF 00 00 00 FF 00 FF 00 ");
deehdr(110,8," FF FF 00 00 FF FF FF 00 ");
// ------- 118
deehdr(500,9," 42 4D 7E 00 00 00 00 00 00 ");
deehdr(509,9," 00 3E 00 00 00 28 00 00 00 ");
deehdr(518,4," 10 00 00 00 ");
deehdr(522,4," 01 00 00 00 ");
deehdr(526,2," 01 00 ");
deehdr(528,2," 01 00 ");
deehdr(530,8," 00 00 00 00 02 00 00 00 ");
deehdr(538,8," C4 0E 00 00 C4 0E 00 00 ");
deehdr(546,4," 00 00 00 00 ");
deehdr(550,4," 00 00 00 00 ");
deehdr(554,8," 00 00 00 00 FF FF FF 00 ");
// 62
deehdr(1000,8,"088088088000148148148000");
deehdr(1008,8,"168168168000108108108000");
// -------------- Colormode == 0 1681
deehdr(1016,4,"084096110122");
deehdr(1020,4,"180192204216");
deehdr(1024,4,"266288300312");
deehdr(1028,4,"376384396408");
deehdr(1032,4,"468480492504");
// -------------- 1686 colormode=3
// deehdr(1036,4,"032034036038");
deehdr(1036,4,"064068078072");
deehdr(1040,4,"128130132134");
deehdr(1044,4,"256258268262");
deehdr(1048,4,"512518522526");
deehdr(1052,4,"600602604608");
// --------------- 1693 colormode = 4
deehdr(1056,4,"011012014013");
deehdr(1060,4,"016017019018");
deehdr(1064,4,"044050058048");
deehdr(1068,4,"130150140146");
deehdr(1072,4,"400410450432");
// deehdr(1076,4,"650650650650");
// ------------------1700 colormode = 5
deehdr(1076,4,"072074076078");
deehdr(1080,4,"084096110122");
deehdr(1084,4,"180192204216");
deehdr(1088,4,"266288300312");
deehdr(1092,4,"376384396408");
// deehdr(1096,4,"468480492504");
// ------------------ 1707 colormode = 6
deehdr(1096,4,"004005004006");
deehdr(1100,4,"008009008007");
deehdr(1104,4,"016012019014");
deehdr(1108,4,"032028036034");
deehdr(1112,4,"064060068062");
// deehdr(1116,4,"128128128128");
// -------------------- 1714 colormode = 7
deehdr(1116,4,"008008008008");
deehdr(1120,4,"015016015014");
deehdr(1124,4,"030032036034");
deehdr(1128,4,"064056068072");
deehdr(1132,4,"128120124130");
// deehdr(1136,4,"256256256256");
// --------------------
deehdr(1136,4,"016015017016");
deehdr(1140,4,"032030034036");
deehdr(1144,4,"060064068062");
deehdr(1148,4,"120128136132");
deehdr(1152,4,"260256258262");
// deehdr(1156,4,"512512512512");
// ----------------- 1728 colormode = 9
deehdr(1156,4,"032032032032");
deehdr(1160,4,"060064068062");
deehdr(1164,4,"120128136126");
deehdr(1168,4,"256268278254");
deehdr(1172,4,"512522542518");
// deehdr(1176,4,"608608608608");
deehdr(1176,4,"002002002002");
deehdr(1180,4,"004004004004");
deehdr(1184,4,"008007009010");
deehdr(1188,4,"016018020019");
deehdr(1192,4,"032036040030");
// deehdr(1196,4,"064064064064");
// ..
// open source font below by Eric Matteson
// 4 * 5 character in minimum
// 5 * 6 box 5 * 7 reccomended
// saved in a 6 * 8 pattern
// for 8 * 8 pattern depth = unknown
// db 2g000000,2g000000,2g000000,2g000000,
// break 2g000000,2g000000,2g000000,2g000000
// db 2g0xxxx0
// db 2g0xxxx0
// db 2g0xxxx0
// db 2g0xxxx0
// db 2g0xxxx0
// db 2g000000
// db 2g000000
ab=1000;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2000000,2000000,2000000);
el(ab,12,2000000,2000000,2000000,2000000);
el(ab,13,2000000,2000000,2000000,2000000);
el(ab,14,2000000,2000000,2000000,2000000);
el(ab,15,2000000,2000000,2000000,2000000);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000000);
el(ab,22,2000000,2000000,2000000,2000000);
el(ab,23,2000000,2000000,2000000,2000000);
el(ab,24,2000000,2000000,2000000,2000000);
el(ab,25,2000000,2000000,2000000,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1008;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2000000,2000000,2000000);
el(ab,12,2000000,2000000,2000000,2000000);
el(ab,13,2000000,2000000,2000000,2000000);
el(ab,14,2000000,2000000,2000000,2000000);
el(ab,15,2000000,2000000,2000000,2000000);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000000);
el(ab,22,2000000,2000000,2000000,2000000);
el(ab,23,2000000,2000000,2000000,2000000);
el(ab,24,2000000,2000000,2000000,2000000);
el(ab,25,2000000,2000000,2000000,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1016;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2000000,2000000,2000000);
el(ab,12,2000000,2000000,2000000,2000000);
el(ab,13,2000000,2000000,2000000,2000000);
el(ab,14,2000000,2000000,2000000,2000000);
el(ab,15,2000000,2000000,2000000,2000000);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000000);
el(ab,22,2000000,2000000,2000000,2000000);
el(ab,23,2000000,2000000,2000000,2000000);
el(ab,24,2000000,2000000,2000000,2000000);
el(ab,25,2000000,2000000,2000000,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1024;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2000000,2000000,2000000);
el(ab,12,2000000,2000000,2000000,2000000);
el(ab,13,2000000,2000000,2000000,2000000);
el(ab,14,2000000,2000000,2000000,2000000);
el(ab,15,2000000,2000000,2000000,2000000);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000000);
el(ab,22,2000000,2000000,2000000,2000000);
el(ab,23,2000000,2000000,2000000,2000000);
el(ab,24,2000000,2000000,2000000,2000000);
el(ab,25,2000000,2000000,2000000,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1032;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2001000,2010010,2001010);
el(ab,12,2000000,2001000,2011010,2011110);
el(ab,13,2000000,2001100,2000000,2001010);
el(ab,14,2000000,2000000,2000000,2011110);
el(ab,15,2000000,2001100,2000000,2010100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2011110,2011100,2000110,2001100);
el(ab,22,2010100,2010100,2011010,2000100);
el(ab,23,2011110,2001100,2010110,2000000);
el(ab,24,2001010,2001010,2010010,2000000);
el(ab,25,2011110,2001110,2011110,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1040;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000110,2011000,2010110,2001100);
el(ab,12,2001000,2000100,2001100,2001100);
el(ab,13,2001000,2000100,2011110,2011110);
el(ab,14,2001000,2000100,2001100,2001100);
el(ab,15,2000110,2011000,2011010,2001100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000010);
el(ab,22,2000000,2000000,2000000,2000100);
el(ab,23,2000000,2011100,2000000,2001000);
el(ab,24,2001100,2000000,2001100,2001000);
el(ab,25,2000100,2000000,2001100,2010000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1048;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2011110,2000100,2011110,2011110);
el(ab,12,2010010,2001100,2000010,2000010);
el(ab,13,2010010,2000100,2011110,2011110);
el(ab,14,2010010,2000100,2010000,2000010);
el(ab,15,2011110,2000100,2011110,2011110);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2010010,2011110,2011110,2011110);
el(ab,22,2010010,2010000,2010000,2000010);
el(ab,23,2011110,2011110,2011110,2000010);
el(ab,24,2000010,2000010,2010010,2000010);
el(ab,25,2000010,2011110,2011110,2000010);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1056;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2011110,2011110,2000000,2000000);
el(ab,12,2010010,2010010,2001100,2001100);
el(ab,13,2011110,2011110,2000000,2000000);
el(ab,14,2010010,2000010,2001100,2001100);
el(ab,15,2011110,2011110,2000000,2000100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000110,2000000,2011000,2001100);
el(ab,22,2001100,2011110,2001100,2010010);
el(ab,23,2011000,2000000,2000110,2000100);
el(ab,24,2001100,2011110,2001100,2000000);
el(ab,25,2000110,2000000,2011000,2000100);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1064;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2001100,2011110,2011100,2011110);
el(ab,12,2010010,2010010,2010010,2010000);
el(ab,13,2000110,2011110,2011100,2010000);
el(ab,14,2001010,2010010,2010010,2010000);
el(ab,15,2001110,2010010,2011100,2011110);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2011000,2011110,2011110,2001110);
el(ab,22,2010100,2010000,2010000,2010000);
el(ab,23,2010010,2011110,2011110,2011100);
el(ab,24,2010100,2010000,2010000,2010010);
el(ab,25,2011000,2011110,2010000,2001110);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1072;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2010010,2001110,2000010,2010010);
el(ab,12,2010010,2000100,2000010,2010100);
el(ab,13,2011110,2000100,2000010,2011000);
el(ab,14,2010010,2000100,2000010,2010100);
el(ab,15,2010010,2001110,2011110,2010010);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2010000,2011000,2010010,2001100);
el(ab,22,2010000,2011000,2011010,2010010);
el(ab,23,2010000,2010110,2011010,2010010);
el(ab,24,2010000,2010110,2010110,2000010);
el(ab,25,2011110,2010010,2010010,2001100);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1080;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2011110,2001100,2011100,2001100);
el(ab,12,2010010,2010010,2010010,2010000);
el(ab,13,2011110,2010100,2011110,2011110);
el(ab,14,2010000,2001000,2010100,2000010);
el(ab,15,2010000,2000110,2010110,2001100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2011110,2010010,2010010,2010010);
el(ab,22,2001000,2010010,2010010,2011010);
el(ab,23,2001000,2010010,2010100,2011010);
el(ab,24,2001000,2010010,2010100,2000110);
el(ab,25,2001000,2011110,2001000,2000110);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1088;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2010010,2010010,2001110,2001100);
el(ab,12,2001010,2010010,2000010,2001000);
el(ab,13,2001100,2001100,2001100,2001000);
el(ab,14,2010100,2001100,2010000,2001000);
el(ab,15,2010010,2001100,2011100,2001100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2010000,2001100,2000100,2000000);
el(ab,22,2010000,2000100,2001010,2000000);
el(ab,23,2001000,2000100,2000000,2000000);
el(ab,24,2000100,2000100,2000000,2000000);
el(ab,25,2000010,2001100,2000000,2011110);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1096;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2010000,2011110,2010000,2000000);
el(ab,12,2001000,2000010,2010000,2001110);
el(ab,13,2000000,2011110,2011100,2001000);
el(ab,14,2000000,2010010,2010010,2001000);
el(ab,15,2000000,2011110,2011100,2001110);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000010,2011110,2001110,2001110);
el(ab,22,2000010,2010010,2001000,2010010);
el(ab,23,2011110,2011110,2001100,2001110);
el(ab,24,2010010,2010000,2001000,2000010);
el(ab,25,2011110,2011110,2001000,2011100);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1104;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2010000,2001000,2000000,2001010);
el(ab,12,2010000,2000000,2000000,2001100);
el(ab,13,2011110,2001000,2000100,2001000);
el(ab,14,2010010,2001000,2000100,2001100);
el(ab,15,2010010,2001000,2011100,2001010);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2001110,2000000,2000000);
el(ab,22,2010000,2001010,2010010,2001100);
el(ab,23,2010000,2010010,2011010,2010010);
el(ab,24,2010000,2010010,2010110,2010010);
el(ab,25,2011100,2000000,2010010,2001100);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1112;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2011100,2000000,2001100);
el(ab,12,2001110,2010100,2001110,2001000);
el(ab,13,2001010,2011100,2001000,2001110);
el(ab,14,2001110,2001000,2001000,2000010);
el(ab,15,2001000,2000110,2001000,2001100);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2000000,2000000,2000000,2000000);
el(ab,22,2001110,2010010,2010010,2010100);
el(ab,23,2000100,2010010,2010100,2010100);
el(ab,24,2000100,2011110,2001000,2011100);
el(ab,25,2000100,2000000,2000000,2001100);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1120;
el(ab,10,2000000,2000000,2000000,2000000);
el(ab,11,2000000,2000000,2000000,2000110);
el(ab,12,2010010,2001010,2001110,2000100);
el(ab,13,2001100,2001010,2000100,2001100);
el(ab,14,2001100,2000100,2001000,2000100);
el(ab,15,2010010,2000100,2011100,2000110);
el(ab,16,2000000,2000000,2000000,2000000);
el(ab,17,2000000,2000000,2000000,2000000);
el(ab,20,2000000,2000000,2000000,2000000);
el(ab,21,2001000,2011000,2001010,2000000);
el(ab,22,2001000,2001000,2010100,2000000);
el(ab,23,2000000,2001100,2000000,2000000);
el(ab,24,2001000,2001000,2000000,2000000);
el(ab,25,2001000,2011000,2000000,2000000);
el(ab,26,2000000,2000000,2000000,2000000);
el(ab,27,2000000,2000000,2000000,2000000);
ab=1128;
// bottom of 127
ckeyvac='\40';
nkeyvai=2048;
rkeyproc(nkeyvai);
GetWindowRect(cbhwnd,&revl);
fixrect(&revl);
// swift640=revl.right-revl.left;
// swift480=revl.bottom-revl.top;
RedrawWindow(cbhwnd,&revl,0,
(RDW_ERASENOW | RDW_INVALIDATE));
// depth = 1
nkeyvai=4096;
// change
if((argc > 4)&&(nkeyvai==4096))
{
stringfill(cft,"-!!");
rnallow=1;
nkeyvai=0;
while(rnallow > 0)
{
ckeyvac = *(argv + nkeyvai);
if(ckeyvac < '\42')rnallow=0;
if(rnallow > 0)
{
cft[nkeyvai] = ckeyvac;
// depth = 4
nkeyvai=nkeyvai+1;
if(nkeyvai > 39)rnallow=0;
}
}
nkeyvai=1;
// depth = 2
while(nkeyvai <= 6)
{
cafnropy(agfn,cft,1,nkeyvai,80);
// depth = 3
nkeyvai=nkeyvai+1;
}
// depth = 2
nkeyvai=53;
rkeyproc(nkeyvai);
GetWindowRect(cbhwnd,&revl);
fixrect(&revl);
// swift640=revl.right-revl.left;
// swift480=revl.bottom-revl.top;
RedrawWindow(cbhwnd,&revl,0,
(RDW_ERASENOW | RDW_INVALIDATE));
}
// depth = 1
// bottom of fix
return 0;
}
// depth = 1
// bottom of WM_CREATE
case WM_KEYUP:
{
if((int)cbwparam == 16)updown=0;
return 0;
}
case WM_KEYDOWN:
{
// top of keydown application part
if((int)cbwparam==16)updown=1;
curkey=isdoskey(ibwparam,updown);
if(((int)cbwparam!=16)&&(curkey!=0))
{
rkeyproc(curkey);
if(dagrajumpnow == 1)
{
if((curkey=='q')||(curkey=='Q'))
{
PostQuitMessage(0);
}
}
GetWindowRect(cbhwnd,&revl);
// get size of Window
// not necessarrily used
fixrect(&revl);
// swift640=revl.right-revl.left;
// swift480=revl.bottom-revl.top;
RedrawWindow(cbhwnd,&revl,0,
(RDW_ERASENOW | RDW_INVALIDATE));
// RedrawWindow sends a Expose event
}
return 0;
// bottom of WM_KEYDOWN
}
// ----------------------------------
case WM_LBUTTONDOWN:
{
// top of left mouse button
if((MK_LBUTTON & cbwparam) != 0)
{
amoux=(int)cblparam & 65535;
amouy=(int)cblparam >> 16;
curkey=44;
if(onetofive < 5)
{
if((amoux<rawwh(4,3,0))&&(amouy<rawwh(4,4,0)))onetofive=1;
if((amoux>rawwh(4,3,0))&&(amouy<rawwh(4,4,0)))onetofive=2;
if((amoux<rawwh(4,3,0))&&(amouy>rawwh(4,4,0)))onetofive=3;
if((amoux>rawwh(4,3,0))&&(amouy>rawwh(4,4,0)))onetofive=4;
curkey=onetofive+48;
rkeyproc(curkey);
curkey=(int)'r';
if(onetofive == prvtofive)curkey=44;
}
rkeyproc(curkey);
GetWindowRect(cbhwnd,&revl);
fixrect(&revl);
// swift640=revl.right-revl.left;
// swift480=revl.bottom-revl.top;
RedrawWindow(cbhwnd,&revl,0,
(RDW_ERASENOW | RDW_INVALIDATE));
}
return 0;
// bottom of WM_LBUTTONDOWN
}
// -----------------------------
case WM_RBUTTONDOWN:
{
if((MK_RBUTTON & cbwparam) != 0)
{
amoux=(int)cblparam & 65535;
amouy=(int)cblparam >> 16;
curkey=59;
rkeyproc(curkey);
GetWindowRect(cbhwnd,&revl);
fixrect(&revl);
RedrawWindow(cbhwnd,&revl,0,
(RDW_ERASENOW | RDW_INVALIDATE));
}
return 0;
}
case WM_PAINT:
{
padc=BeginPaint(cbhwnd,&ps);
// initialize a GC
GetWindowRect(cbhwnd,&tevl);
fixrect(&tevl);
swift640=tevl.right-tevl.left;
swift480=tevl.bottom-tevl.top;
drawpageb(iadc);
// SetDIBitsToDevice within drawpageb
// draws to pattern buffer array
// if not to screen
// If not already drawn
// EndPaint draws pattern buffer
// array to screen then deletes GC
EndPaint(cbhwnd,&ps);
return 0;
}
default:
{
return DefWindowProc(cbhwnd,
cbmessage,cbwparam,cblparam);
}
}
}
// bottom of lresult callback dfrview0.c
// this is the last line of this program
/* after end of program
0 new messages