42 lines
809 B
Plaintext
42 lines
809 B
Plaintext
'GENERIC BITMAP
|
|
|
|
type pixel byte r,g,b
|
|
|
|
'===========
|
|
class BitMap
|
|
'===========
|
|
|
|
% sp sizeof(pixel)
|
|
sys wx,wy,px,py
|
|
string buf
|
|
sys pb
|
|
method Constructor(sys x=640,y=480) { wx=x : wy=y : buf=nuls x*y*sp : pb=strptr buf}
|
|
method Destructor() {buf="" : wx=0 : wy=0 : pb=0}
|
|
method GetPixel(sys x,y,pixel*p) {copy @p,pb+(y*wx+x)*sp,sp}
|
|
method SetPixel(sys x,y,pixel*p) {copy pb+(y*wx+x)*sp,@p,sp}
|
|
'
|
|
method Fill(pixel*p)
|
|
sys i, e=wx*wy*sp+pb-1
|
|
for i=pb to e step sp {copy i,@p,sp}
|
|
end method
|
|
|
|
end class
|
|
|
|
pixel p,q
|
|
|
|
new BitMap m(400,400) 'width, height in pixels
|
|
|
|
p<=100,120,140 'red,green,blue
|
|
|
|
m.fill p
|
|
|
|
m.getPixel 200,100,q
|
|
print "" q.r "," q.g "," q.b 'result 100,120,140
|
|
q<=10,20,40
|
|
m.setPixel 200,100,q
|
|
m.getPixel 200,100,p
|
|
print "" p.r "," p.g "," p.b 'result 10,20,40
|
|
|
|
|
|
del m
|