Anonymous user
Category:Action! Bitmap tools: Difference between revisions
no edit summary
No edit summary |
No edit summary |
||
Line 50:
IF ptr THEN
ptr^=c
FI
RETURN
MODULE</lang>
----
=== RGBIMAGE.ACT ===
The following module contains definition of RGB color image.
<lang Action!>MODULE
DEFINE RGBSIZE="3"
TYPE RGB=[BYTE r,g,b]
TYPE RgbImage=[
BYTE w,h
CARD data]
BYTE FUNC RgbEqual(RGB POINTER c1,c2)
IF c1.r=c2.r AND c1.g=c2.g AND c1.b=c2.b THEN
RETURN (1)
FI
RETURN (0)
PROC RgbBlack(RGB POINTER c)
c.r=0 c.g=0 c.b=0
RETURN
PROC RgbWhite(RGB POINTER c)
c.r=255 c.g=255 c.b=255
RETURN
PROC RgbRed(RGB POINTER c)
c.r=255 c.g=0 c.b=0
RETURN
PROC RgbGreen(RGB POINTER c)
c.r=0 c.g=255 c.b=0
RETURN
PROC RgbBlue(RGB POINTER c)
c.r=0 c.g=0 c.b=255
RETURN
PROC RgbYellow(RGB POINTER c)
c.r=255 c.g=255 c.b=0
RETURN
PROC RgbViolet(RGB POINTER c)
c.r=255 c.g=0 c.b=255
RETURN
PROC InitRgbImage(RgbImage POINTER img
BYTE width,height CARD d)
img.w=width
img.h=height
img.data=d
RETURN
PROC FillRgbImage(RgbImage POINTER img RGB POINTER c)
RGB POINTER ptr
BYTE x,y
ptr=img.data
FOR y=1 TO img.h
DO
FOR x=1 TO img.w
DO
ptr.r=c.r
ptr.g=c.g
ptr.b=c.b
ptr==+3
OD
OD
RETURN
CARD FUNC GetRgbPtr(RgbImage POINTER img INT x,y)
IF x<0 OR x>=img.w OR y<0 OR y>=img.h THEN
RETURN (0)
FI
RETURN (img.data+(x+y*img.w)*RGBSIZE)
PROC GetRgbPixel(RgbImage POINTER img
INT x,y RGB POINTER c)
RGB POINTER ptr
ptr=GetRgbPtr(img,x,y)
IF ptr THEN
c.r=ptr.r
c.g=ptr.g
c.b=ptr.b
ELSE
Break()
FI
RETURN
PROC SetRgbPixel(RgbImage POINTER img
INT x,y RGB POINTER c)
RGB POINTER ptr
ptr=GetRgbPtr(img,x,y)
IF ptr THEN
ptr.r=c.r
ptr.g=c.g
ptr.b=c.b
FI
RETURN
|