108 lines
1.8 KiB
QBasic
108 lines
1.8 KiB
QBasic
|
FUNCTION FIXBINBYTE(B AS BYTE) AS INTEGER
|
||
|
DIM TMP AS INTEGER
|
||
|
TMP = INTEGER(B)
|
||
|
IF TMP < 0 THEN
|
||
|
FIXBINBYTE = TMP+256
|
||
|
ELSE
|
||
|
FIXBINBYTE = TMP
|
||
|
END IF
|
||
|
END FUNCTION
|
||
|
|
||
|
FUNCTION GETBITMAP(FILENAME AS STRING, W AS INTEGER, H AS INTEGER) AS INTEGER(65536,3)
|
||
|
|
||
|
PRINT "startreadfunc"
|
||
|
|
||
|
REM 16'384
|
||
|
DIM RGB(65536,3) AS INTEGER
|
||
|
DIM BMPBYTE AS BYTE
|
||
|
DIM ERR AS STRING
|
||
|
DIM I, XOFF, YOFF, PIXEL AS INTEGER
|
||
|
PIXEL = 1
|
||
|
|
||
|
PRINT "startread"
|
||
|
|
||
|
OPEN #1, FILENAME, "r"
|
||
|
|
||
|
FOR I=0 TO 52
|
||
|
GET #1, BMPBYTE
|
||
|
END FOR
|
||
|
|
||
|
TRY
|
||
|
FOR YOFF=0 TO H
|
||
|
FOR XOFF=0 TO W
|
||
|
|
||
|
GET #1, BMPBYTE
|
||
|
RGB(PIXEL,1) = FIXBINBYTE(BMPBYTE)
|
||
|
|
||
|
GET #1, BMPBYTE
|
||
|
RGB(PIXEL,2) = FIXBINBYTE(BMPBYTE)
|
||
|
|
||
|
GET #1, BMPBYTE
|
||
|
RGB(PIXEL,3) = FIXBINBYTE(BMPBYTE)
|
||
|
|
||
|
PIXEL = PIXEL+1
|
||
|
|
||
|
END FOR
|
||
|
END FOR
|
||
|
CATCH ERR
|
||
|
REM PRINT ERR
|
||
|
END TRY
|
||
|
|
||
|
PRINT "ok"
|
||
|
|
||
|
CLOSE #1
|
||
|
|
||
|
PRINT "endreadfunc"
|
||
|
|
||
|
END FUNCTION
|
||
|
|
||
|
FUNCTION DRAWBMPTP(X AS INTEGER, Y AS INTEGER, W AS INTEGER, H AS INTEGER, IMAGE(65536,3) AS INTEGER, TPR AS INTEGER, TPG AS INTEGER, TPB AS INTEGER) AS INTEGER
|
||
|
|
||
|
DIM XOFF, YOFF, PIXEL AS INTEGER
|
||
|
DIM R,G,B,ALPHA AS INTEGER
|
||
|
DIM ERR AS STRING
|
||
|
PIXEL = 1
|
||
|
ALPHA = 0
|
||
|
|
||
|
FOR YOFF=0 TO H
|
||
|
PRINT STR$(R) + "," + STR$(G) + "," + STR$(B) + "," + STR$(ALPHA)
|
||
|
FOR XOFF=0 TO W
|
||
|
|
||
|
TRY
|
||
|
|
||
|
R = IMAGE(PIXEL,1)
|
||
|
G = IMAGE(PIXEL,2)
|
||
|
B = IMAGE(PIXEL,3)
|
||
|
|
||
|
IF (R = TPR) AND (G = TPG) AND (B = TPB) THEN
|
||
|
ALPHA = 100
|
||
|
ELSE
|
||
|
ALPHA = 0
|
||
|
END IF
|
||
|
|
||
|
SETCOLOR R, G, B, ALPHA
|
||
|
PLOT X+XOFF, Y+YOFF
|
||
|
|
||
|
CATCH ERR
|
||
|
REM PRINT "ERR" + STR$(PIXEL)
|
||
|
END TRY
|
||
|
|
||
|
PIXEL = PIXEL + 1
|
||
|
|
||
|
END FOR
|
||
|
REPAINT
|
||
|
SLEEP 1000
|
||
|
END FOR
|
||
|
|
||
|
REM REPAINT
|
||
|
|
||
|
DRAWBMPTP=PIXEL
|
||
|
|
||
|
END FUNCTION
|
||
|
|
||
|
FUNCTION DRAWBMP(X AS INTEGER, Y AS INTEGER, W AS INTEGER, H AS INTEGER, IMAGE(65536,3) AS INTEGER) AS INTEGER
|
||
|
|
||
|
DRAWBMP=DRAWBMPTP(X,Y,W,H,IMAGE,-1,-1,-1)
|
||
|
|
||
|
END FUNCTION
|