ericmatteson...@hotmail.com
unread,May 28, 2008, 11:57:58 PM5/28/08You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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