Category:Action! Bitmap tools: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 50: | Line 50: | ||
IF ptr THEN |
IF ptr THEN |
||
ptr^=c |
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 |
FI |
||
RETURN |
RETURN |