home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format 61
/
af061a.adf
/
Macros
/
ColourC.clssa
< prev
next >
Wrap
Text File
|
1993-07-05
|
3KB
|
165 lines
/***********************************************************************
GADGET: "'Colour Cycle'" "6" AUTO TYP: "?"
$DAT >>ColourC.clssa<< 04 Jul 1993 - (C) ProDAD Holger Burkarth
************************************************************************/
Options Results
Address clariSSA
FailAt 10
AltFail=RESULT
GetArea
PARSE VAR RESULT . "FROM" From "TO" To .
Number=To-From
IF Number>1 THEN DO
DO FOREVER
MSRequester "TITLE '*** Colour Cycle ***''Select Effect Mode'",
"PTEXT 'Normal Colour Rotation'",
"'Reversed Colour Rotation 1'",
"'Reversed Colour Rotation 2'"
IF RC~=0 THEN LEAVE
Mode=RESULT
COLRequest "FROM 0 TO 1 TITLE '*** Colour Cycle ***''Set Colour Range.'"
IF RC~=0 THEN LEAVE
ListG=RESULT
RevList=ListG
PARSE VAR ListG SColour ListG
EColour=SColour
DO UNTIL ListG=""
PARSE VAR ListG EColour ListG
END
IF SColour = EColour THEN DO
Message "'Colour range must include''at least two colours.'"
LEAVE
END
INTRequest "'*** Colour Cycle ***''Number of colour cycles which are'",
"'to be created in the''Animation range.'",
"'(1 cycle == "EColour-SColour")'"Number
IF RC~=0 THEN LEAVE
Red=RESULT
IF Red<1 THEN DO
Message "'Entered value is''not acceptable!'"
LEAVE
END
IF Mode=2 THEN DO
RevList=RollRevList(TRUNC((EColour+SColour)/2),SColour,EColour)
END
ELSE IF Mode=3 THEN DO
RevList=RollRevList2(SColour,EColour)
END
ViewFrame COPS From
GetColor RevList
ListC=RESULT
Pos=1
M=0
DO UNTIL From>To
n=TRUNC(Pos*Red/Number+0.5)
ListG=RollList(n,SColour,EColour)
List=""
DO UNTIL ListC=""
PARSE VAR ListG n ListG
PARSE VAR ListC x r g b ListC
List=List n r g b
END
SetColor List
Record COPS
IF RC~=0 THEN LEAVE
From=From+1
Pos=Pos+1
ViewFrame COPS From
IF RC~=0 THEN LEAVE
GetColor RevList
ListC=RESULT
END
LEAVE
END
END
ELSE Message "'At least 2 frames must be''chosen for Colour Cycling.'"
FailAt AltFail
exit
RollList: procedure
DO
ARG n,Start,Last
x=Start+n
n=Start
List=""
DO UNTIL n>Last
x=((x-Start+1) // (Last-Start+1)) + Start
List=List x
n=n+1
END
RETURN (List)
END
RollRevList: procedure
DO
ARG n,Start,Last
List=""
l=Start - n
x=Start
ad=1
DO UNTIL x > Last
f=Start+l
IF f > Last THEN f=(f-Start) - (Last-Start) + Start
IF f < Start THEN f=(Last-Start) + (f-Start) + Start + 1
List=List f
if l=0 THEN ad=-1
l=l+ad
x=x+1
END
RETURN (List)
END
RollRevList2: procedure
DO
ARG Start,Last
List=""
n=Last-Start+1
l=Start
DO UNTIL l > Last
List=List l
l=l+2
n=n-1
END
IF l-2 = Last THEN l=l-3
ELSE l=l-1
DO UNTIL n<=0
List=List l
l=l-2
n=n-1
END
RETURN (List)
END