home *** CD-ROM | disk | FTP | other *** search
- '***********************************************************************
- ' Animate.rlz
- '
- ' Realizer Animation Library
- '
- ' Copyright ⌐ 1991-1992 Computer Associates International, Inc.
- ' All rights reserved.
- '
- '***********************************************************************
-
- IF QVar(%%AnimateFlag, _Defined) THEN
- EXIT MACRO
- END IF
- %%AnimateFlag = 1
-
- RUN "StdError"
-
- EXTERNAL "Animate" CUSTOMCONTROLS
-
- %AnimateCurrItem = 0
- %AnimateCurrForm = 0
- _Animate = "Animate"
- _SetOffset = _CCM + 7
- _SetSpeed = 11
- _Pause = 10
- _Restart = 12
-
- PROC %AnimateSetup
- IF Not(FormQ(_Exists; %AnimateCurrForm)) THEN
- STOP USING "No animation window is selected.", 2
- END IF
- %AnimateTemp = FormQ(_Selected)
- FormSelect(%AnimateCurrForm)
- IF FormQObject(%AnimateCurrItem)[_FQO_ItemNum] = 0 THEN
- FormSelect(%AnimateTemp)
- STOP USING "No animation window is selected..", 2
- END IF
- END PROC
-
- PROC %AnimateCleanup
- IF %AnimateTemp THEN
- FormSelect(%AnimateTemp)
- END IF
- END PROC
-
- PROC AnimateSelect(id, ..)
- LOCAL formT, formT2
-
- ECType(id, _Real + _Scalar, 1)
- ECRange(id, 1, 32767, 1)
- ECProto(QNOptParams, 1, "AnimateSelect(rsAnimateID [, rsFormNum])")
- formT = %AnimateCurrForm
- IF QNOptParams THEN
- ECType(QOptParam(1), _Real + _Scalar, 2)
- ECRange(QOptParam(1), 1, 32767, 2)
- %AnimateCurrForm = QOptParam(1)
- ELSE
- %AnimateCurrForm = FormQ(_Selected)
- END IF
- IF Not(FormQ(_Exists; %AnimateCurrForm)) THEN
- %AnimateCurrForm = formT
- STOP USING "Unable to find animate window in form.", 1
- END IF
- formT2 = FormQ(_Selected)
- FormSelect(%AnimateCurrForm)
- IF FormQObject(id)[_FQO_ItemNum] = 0 THEN
- IF formT2 THEN
- FormSelect(formT2)
- END IF
- %AnimateCurrForm = formT
- STOP USING "Unable to find animate window in form.", 1
- END IF
- IF formT2 THEN
- FormSelect(formT2)
- END IF
- %AnimateCurrItem = id
- END PROC
-
- PROC %AnimDefineCell (name, num)
- LoCAL scratch
- IF num < 0 OR num > 200 THEN
- %AnimateCleanup
- STOP USING "Cell number out of range 1..200", 2
- END IF
- scratch = 19001
- WHILE FormQObject(scratch)[_Hwnd]
- scratch = scratch + 1
- END WHILE
- FormSetObject(scratch, _Bitmap, name, 10000, 10000)
- FormModifyObject(%AnimateCurrItem; 1, num, FormQObject(scratch)[_Hwnd])
- FormModifyObject(scratch, _Close)
- END PROC
-
- PROC AnimateCells(names, ..)
- LOCAL i, fname, cellnums, firstcellnum, formT
-
- ECType(names, _Alpha, 1)
- ECProto(QNOptParams, 3, "AnimateCells(agNames [, rgCellNums] | asFormat, rsStart, rsEnd [, rsFirstCellNum])")
- IF QNOptParams = 1 THEN
- ECType(QOptParam(1), _Real, 2)
- cellnums = QOptParam(1)
- ELSEIF QNOptParams >= 2 THEN
- ECType(names, _Alpha + _Scalar, 1)
- ECType(QOptParam(1), _Real + _Scalar, 2)
- ECType(QOptParam(2), _Real + _Scalar, 3)
- startval = QOptParam(1)
- endval = QOptParam(2)
- ECRange(startval, 0, 999, 2)
- ECRange(endval, 0, 999, 2)
- IF startval > endval THEN
- STOP USING "rsStart must be <= rsEnd", 1
- END IF
- IF QNOptParams >= 3 THEN
- ECType(QOptParam(3), _Real + _Scalar, 4)
- firstcellnum = QOptParam(3)
- ELSE
- firstcellnum = startval
- END IF
- fmt = SubStr$(names, "#", "P(0)")
- IF fmt = names THEN
- STOP USING "asFormat must contain a # sign.", 1
- END IF
- fmt = SubStr$(fmt, "\", "_\")
- CLEAR names
- FOR i = startval TO endval
- names[i - startval + 1] = sprint(fmt, i)
- cellnums[i - startval + 1] = firstcellnum + i - startval
- NEXT i
- ELSE
- IF (QVar(names, _Array)) THEN
- cellnums = index(EndValid(names))
- ELSE
- cellnums = 1
- END IF
- END IF
- %AnimateSetup
- IF QVar(cellnums, _Array) THEN
- IF EndValid(cellnums) <> EndValid(names) THEN
- %AnimateCleanup
- STOP USING "Unequal number of cell names and cell numbers", 1
- END IF
- FOR i = 1 to EndValid(cellnums)
- %AnimDefineCell(names[i], cellnums[i])
- NEXT
- ELSE
- %AnimDefineCell(names, cellnums)
- END IF
- %AnimateCleanup
- END PROC
-
- PROC AnimateFrame(cell, x, y, msTime)
- ECType(cell, _Real + _Scalar, 1)
- ECRange(cell, 0, 200, 1)
- ECType(x, _Real + _Scalar, 2)
- ECRange(x, -10000, 10000, 2)
- ECType(y, _Real + _Scalar, 3)
- ECRange(y, -10000, 10000, 3)
- ECType(msTime, _Real + _Scalar, 4)
- IF msTime < 0 THEN
- STOP USING "msTime must be a positive value", 1
- END IF
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 2, cell, x, y, msTime)
- %AnimateCleanup
- END PROC
-
- PROC AnimateSpecialFrame(cmd; ..)
- ECType(cmd, _Real + _Scalar, 1)
- SELECT CASE cmd
- CASE _Pause
- IF QNOptMods = 1 THEN
- ECType(QOptMod(1), _Real + _Scalar, -1)
- IF QOptMod(1) < 0 THEN
- STOP USING "rsDelay must be a positive value", 1
- END IF
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 2, 0, 0, 0, QOptMod(1))
- %AnimateCleanup
- ELSE
- STOP USING "Syntax: AnimateSpecialFrame(_Pause; rsDelay)", 1
- END IF
- CASE _Stop
- ECMods(QNOptMods, 0, "AnimateSpecialFrame(_Stop)")
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 2, 0, 1, 0, 0)
- %AnimateCleanup
- CASE _Notify
- ECMods(QNOptMods, 0, "AnimateSpecialFrame(_Notify)")
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 2, 0, 2, 0, 0)
- %AnimateCleanup
- CASE ELSE
- STOP USING "Unknown frame type", 1
- END SELECT
- END PROC
-
- PROC AnimateControl(action; ..)
- ECType(action, _Real + _Scalar, 1)
- SELECT CASE action
- CASE _Start
- ECMods(QNOptMods, 0, "AnimateControl(_Start)")
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 3)
- %AnimateCleanup
- CASE _Stop
- ECMods(QNOptMods, 0, "AnimateControl(_Stop)")
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 4)
- %AnimateCleanup
- CASE _Restart
- ECMods(QNOptMods, 0, "AnimateControl(_Restart)")
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 12)
- %AnimateCleanup
- CASE _Clear
- IF QNOptMods THEN
- ECType(QOptMod(1), _Real + _Scalar, -1)
- ECMods(QNOptMods, 1, "AnimateControl(_Clear [; _All | _Frame])")
- SELECT CASE QOptMod(1)
- CASE _All
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 5)
- %AnimateCleanup
- CASE _Frame
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 6)
- %AnimateCleanup
- CASE ELSE
- STOP USING "Unknown modifier for AnimateControl(_Clear).", 1
- END SELECT
- ELSE
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 5)
- %AnimateCleanup
- END IF
- CASE _SetOffset
- IF QNOptMods <> 2 THEN
- STOP USING "Syntax: AnimateControl(_SetOffset; rsX, rsY)", 1
- ELSE
- ECType(QOptMod(1), _Real + _Scalar, -1)
- ECType(QOptMod(2), _Real + _Scalar, -2)
- ECRange(QOptMod(1), 0, 10000, -1)
- ECRange(QOptMod(2), 0, 10000, -2)
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 7, QOptMod(1), QOptMod(2))
- %AnimateCleanup
- END IF
- CASE _SetSpeed
- IF QNOptMods <> 1 THEN
- STOP USING "Syntax: AnimateControl(_SetSpeed; rsSpeed)", 1
- ELSE
- ECType(QOptMod(1), _Real + _Scalar, -1)
- ECRange(QOptMod(1), 1, 10000, -1)
- %AnimateSetup
- FormModifyObject(%AnimateCurrItem; 8, QOptMod(1))
- %AnimateCleanup
- END IF
- CASE ELSE
- STOP USING "Unknown control code", 1
- END SELECT
- END PROC
-
-
-