$APPTYPE GUI
$TYPECHECK ON
DECLARE FUNCTION load(name AS STRING)AS INTEGER
DECLARE SUB formPaint (sender AS QFORM)
DIM field AS QBITMAP
DIM form AS QFORM
TYPE TH
MAN AS STRING * 1
VER AS STRING * 1
ENC AS STRING * 1
BIT AS STRING * 1
Xmin AS INTEGER
Ymin AS INTEGER
XMax AS INTEGER
YMax AS INTEGER
HRE AS INTEGER
VRE AS INTEGER
COL AS STRING * 48
RES AS STRING * 1
nplanes AS STRING * 1
bytesperline AS INTEGER
PAL AS INTEGER
FIL AS STRING * 58
END TYPE
form.CAPTION="PCX Viewer by Mark Kica xprometeus "
form.height=444
form.width=603
form.borderstyle=5
form.center
form.onPaint = formPaint
load ("p.pcx")
form.SHOWMODAL
SUB formPaint (sender AS QFORM)
sender.draw(0, 0, field.bmp)
END SUB
FUNCTION load(name AS STRING)AS INTEGER
DIM H AS TH
DIM xsize
DIM Ysize
DIM totalbytes
DIM I
DIM colors(255)
DIM r%
DIM g%
DIM b%
DIM r AS STRING
DIM g AS STRING
DIM b AS STRING
DIM X
DIM y
DIM pomoc1 AS STRING
DIM pomoc1% AS INTEGER
DIM ZNAK AS STRING
DIM ZNAK% AS INTEGER
DIM dolne AS INTEGER
DIM FILE AS QFILESTREAM
DIM FILE1 AS QFILESTREAM
IF FILEEXISTS(name=0) THEN
load=-1
EXIT FUNCTION
END IF
file1.OPEN(name,0)
file1.position=file1.size-768
FOR i=0 TO 255
r%=file1.readnum(1)
g%=file1.readnum(1)
b%=file1.readnum(1)
r%=r%
g%=g%
b%=b%
ColorS(i)=RGB(r%,g%,b%)
NEXT i
FILE1.CLOSE
file.OPEN(name,0)
h.man=file.readbinstr(1)
h.ver=file.readbinstr(1)
h.enc=file.readbinstr(1)
h.bit=file.readbinstr(1)
h.xmin=file.readnum(2)
h.ymin=file.readnum(2)
h.xmax=file.readnum(2)
h.ymax=file.readnum(2)
h.hre=file.readnum(2)
h.vre=file.readnum(2)
h.col=file.readbinstr(48)
h.res=file.readbinstr(1)
h.nplanes=file.readbinstr(1)
h.bytesperline =file.readnum(2)
h.pal=file.readnum(2)
h.fil=file.readbinstr(58)
xsize=h.xmax-h.xmin+1
ysize=h.ymax-h.ymin+1
totalbytes=ASC(h.nplanes)*h.bytesperline
field.height=ysize
field.width=xsize
form.height=ysize+5
form.width=xsize+5
x=0
y=0
DO
ZNAK%=file.readnum(1)
IF znak%<192 THEN
IF x<xsize THEN x=x+1
IF x=xsize THEN
x=0
y=y+1
END IF
field.pset(x,y,colors(znak%))
END IF
IF znak%>192 AND znak%<=255 THEN
dolne=znak%-192
pomoc1%= file.readnum(1)
DO
dolne=dolne-1
IF x<xsize THEN x=x+1
IF x=xsize THEN
x=0
y=y+1
END IF
field.pset(x,y,colors(pomoc1%))
IF dolne=0 THEN EXIT DO
LOOP
END IF
IF y=ysize THEN EXIT DO
LOOP
load=1
END FUNCTION
|