home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 20 / AACD20.BIN / AACD / Graphics / PerfectPaint / rexx / bridge / Anim_Text.rx < prev    next >
Text File  |  2000-09-11  |  8KB  |  449 lines

  1. /*
  2.     Arexx Text Script
  3. */
  4.  
  5.     call addlib("rexxmathlib.library", 5, -30, 0)
  6.  
  7.     options results
  8.   parse ARG Port x y b
  9.     ADDRESS value Port
  10.  
  11.     pp_AvoidRefresh
  12.  
  13.     pp_CountFrames
  14.     Total_Frame=result
  15.     Start_Frame=1
  16.     End_Frame=Total_Frame
  17.     if End_Frame<2 then do
  18.         pp_Warn 'Make*an*Anim*first.'
  19.         pp_PermitRefresh
  20.         EXIT
  21.     end
  22.  
  23.     pp_GetDepth
  24.     Dp=result
  25.  
  26.     ADDRESS COMMAND
  27.  
  28.     file="Ram:T/pp_text"
  29.     IF OPEN('a',file,'R') then DO
  30.         trash=READLN('a')
  31.         trash=READLN('a')
  32.         Tsize=READLN('a')
  33.         Ttype=READLN('a')
  34.         trash=READLN('a')
  35.         trash=READLN('a')
  36.         trash=READLN('a')
  37.         trash=READLN('a')
  38.         Txdpi=READLN('a')
  39.         Tydpi=READLN('a')
  40.         Trot=READLN('a')
  41.         Tita=READLN('a')
  42.         trash=READLN('a')
  43.         trash=READLN('a')
  44.         trash=READLN('a')
  45.         trash=READLN('a')
  46.         trash=READLN('a')
  47.         trash=READLN('a')
  48.         Tw=READLN('a')
  49.         Th=READLN('a')
  50.         CALL CLOSE('a')
  51.  
  52.         Start_Rotation=Trot
  53.         End_Rotation=Trot
  54.  
  55.         Start_Italic=Tita
  56.         End_Italic=Tita
  57.  
  58.         Start_Size=Tsize
  59.         End_Size=Tsize
  60.  
  61.         Start_Xdpi=Txdpi
  62.         End_Xdpi=Txdpi
  63.  
  64.         Start_Ydpi=Tydpi
  65.         End_Ydpi=Tydpi
  66.  
  67.         Start_Flow=0
  68.         End_Flow=0
  69.  
  70.         Start_Opacity=100
  71.         End_Opacity=100
  72.     END
  73.     ELSE
  74.     DO
  75.         ADDRESS value Port
  76.         pp_Warn 'Make*a*Text*first.'
  77.         pp_PermitRefresh
  78.         EXIT
  79.         ADDRESS COMMAND        
  80.     END
  81.  
  82.     file="Ram:T/pp_move"
  83.     IF OPEN('b',file,'R') then DO
  84.         Start_Rotation=READLN('b')
  85.         End_Rotation=READLN('b')
  86.  
  87.         Start_Italic=READLN('b')
  88.         End_Italic=READLN('b')
  89.  
  90.         Start_Size=READLN('b')
  91.         End_Size=READLN('b')
  92.  
  93.         Start_Xdpi=READLN('b')
  94.         End_Xdpi=READLN('b')
  95.  
  96.         Start_Ydpi=READLN('b')
  97.         End_Ydpi=READLN('b')
  98.  
  99.         Start_Flow=READLN('b')
  100.         End_Flow=READLN('b')
  101.  
  102.         Start_Opacity=READLN('b')
  103.         End_Opacity=READLN('b')
  104.  
  105.         CALL CLOSE('b')
  106.     END
  107.  
  108.     R=-1
  109.  
  110.     ADDRESS value Port
  111.  
  112.     Path=0;Type=0
  113.  
  114. DO UNTIL R>-1
  115.  
  116.     D.2='*Frame*(*#'||Start_Frame||'->#'||End_Frame||'*)*'
  117.  
  118.     D.3='*Rotation*(*'||Start_Rotation||'*->*'||End_Rotation||'*)*'
  119.     D.4='*Italic*(*'||Start_Italic||'*->*'||End_Italic||'*)*'
  120.     D.5='*Size*(*'||Start_Size||'*->*'||End_Size||'*)*'
  121.     D.6='*ScaleX*(*'||Start_Xdpi||'*->*'||End_Xdpi||'*)*'
  122.     D.7='*ScaleY*(*'||Start_Ydpi||'*->*'||End_Ydpi||'*)*'
  123.  
  124.     D.8='*Flow*(*'||Start_Flow||'*->*'||End_Flow||'*)*'
  125.     D.9='*Opacity*(*'||Start_Opacity||'*->*'||End_Opacity||'*)*'
  126.  
  127.     pp_DialogInit 250 270 "*MOVE*" 10
  128.     pp_Cycle 0 70 5 100 16 "Path" 1 "None|Left|Right|Up|Down" Path
  129.     pp_Cycle 1 70 25 100 16 "Type" 1 "In|Out" Type
  130.         j=55
  131.         DO i=2 to 9
  132.             pp_Button i 20 j 200 16 D.i
  133.             j=j+20
  134.             if i=2 then DO;j=j+10;END
  135.             if i=7 then DO;j=j+10;END
  136.         END
  137.     pp_Dialog
  138.     R=result
  139.  
  140.     pp_GetDialog 0
  141.     Path=result
  142.  
  143.     pp_GetDialog 1
  144.     Type=result
  145.  
  146.     if R=-9 then DO
  147.         pp_DialogInit 150 80 "*OPACITY*" 2
  148.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Opacity
  149.             pp_Integer 1 60 25 50 16 "End" 1 End_Opacity
  150.         pp_Dialog
  151.         rc=result
  152.         IF rc=1 then DO
  153.             pp_GetDialog 0
  154.             Start_Opacity=result
  155.  
  156.             pp_GetDialog 1
  157.             End_Opacity=result        
  158.         END            
  159.     END
  160.  
  161.     if R=-8 then DO
  162.         pp_DialogInit 150 80 "*FLOW*" 2
  163.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Flow
  164.             pp_Integer 1 60 25 50 16 "End" 1 End_Flow
  165.         pp_Dialog
  166.         rc=result
  167.         IF rc=1 then DO
  168.             pp_GetDialog 0
  169.             Start_Flow=result
  170.  
  171.             pp_GetDialog 1
  172.             End_Flow=result    
  173.         END            
  174.     END
  175.  
  176.     if R=-5 then DO
  177.         pp_DialogInit 150 80 "*SIZE*" 2
  178.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Size
  179.             pp_Integer 1 60 25 50 16 "End" 1 End_Size
  180.         pp_Dialog
  181.         rc=result
  182.         IF rc=1 then DO
  183.             pp_GetDialog 0
  184.             Start_Size=result
  185.  
  186.             pp_GetDialog 1
  187.             End_Size=result        
  188.         END            
  189.     END
  190.  
  191.     if R=-6 then DO
  192.         pp_DialogInit 150 80 "*SCALE*X*" 2
  193.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Xdpi
  194.             pp_Integer 1 60 25 50 16 "End" 1 End_Xdpi
  195.         pp_Dialog
  196.         rc=result
  197.         IF rc=1 then DO
  198.             pp_GetDialog 0
  199.             Start_Xdpi=result
  200.  
  201.             pp_GetDialog 1
  202.             End_Xdpi=result        
  203.         END            
  204.     END
  205.  
  206.     if R=-7 then DO
  207.         pp_DialogInit 150 80 "*SCALE*Y*" 2
  208.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Ydpi
  209.             pp_Integer 1 60 25 50 16 "End" 1 End_Ydpi
  210.         pp_Dialog
  211.         rc=result
  212.         IF rc=1 then DO
  213.             pp_GetDialog 0
  214.             Start_Ydpi=result
  215.  
  216.             pp_GetDialog 1
  217.             End_Ydpi=result        
  218.         END            
  219.     END
  220.  
  221.     if R=-2 then DO
  222.         pp_DialogInit 150 80 "*FRAME*" 2
  223.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Frame
  224.             pp_Integer 1 60 25 50 16 "End" 1 End_Frame
  225.         pp_Dialog
  226.         rc=result
  227.         IF rc=1 then DO
  228.             pp_GetDialog 0
  229.             Start_Frame=result
  230.  
  231.             pp_GetDialog 1
  232.             End_Frame=result
  233.  
  234.             IF End_Frame>Total_Frame THEN DO
  235.                 End_Frame=Total_Frame
  236.             END
  237.  
  238.             IF Start_Frame>End_Frame THEN DO
  239.                 Start_Frame=1
  240.             END
  241.  
  242.         END            
  243.     END
  244.  
  245.     if R=-3 then DO
  246.         pp_DialogInit 150 80 "*ROTATION*" 2
  247.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Rotation
  248.             pp_Integer 1 60 25 50 16 "End" 1 End_Rotation
  249.         pp_Dialog
  250.         rc=result
  251.         IF rc=1 then DO
  252.             pp_GetDialog 0
  253.             Start_Rotation=result
  254.  
  255.             pp_GetDialog 1
  256.             End_Rotation=result        
  257.         END            
  258.     END
  259.  
  260.     if R=-4 then DO
  261.         pp_DialogInit 150 80 "*ITALIC*" 2
  262.             pp_Integer 0 60 5 50 16 "Start" 1 Start_Italic
  263.             pp_Integer 1 60 25 50 16 "End" 1 End_Italic
  264.         pp_Dialog
  265.         rc=result
  266.         IF rc=1 then DO
  267.  
  268.             pp_GetDialog 0
  269.             Start_Italic=result
  270.             IF Start_Italic>45 then DO
  271.                 Start_Italic=45
  272.             END
  273.             IF Start_Italic<-45 then DO
  274.                 Start_Italic=-45
  275.             END
  276.  
  277.             pp_GetDialog 1
  278.             End_Italic=result    
  279.             IF End_Italic>45 then DO
  280.                 End_Italic=45
  281.             END
  282.             IF End_Italic<-45 then DO
  283.                 End_Italic=-45
  284.             END
  285.  
  286.         END            
  287.     END
  288. END
  289.  
  290.     if R=0 then DO
  291.         pp_PermitRefresh
  292.         EXIT
  293.     END    
  294.     
  295.     ADDRESS COMMAND
  296.  
  297.     file='ram:t/pp_move'
  298.  
  299.     IF EXISTS(file) THEN DO
  300.         'delete >nil: ram:t/pp_move'
  301.     END
  302.  
  303.     IF OPEN('c',file,'W') then DO
  304.  
  305.         CALL WRITELN('c',Start_Rotation)
  306.         CALL WRITELN('c',End_Rotation)
  307.  
  308.         CALL WRITELN('c',Start_Italic)
  309.         CALL WRITELN('c',End_Italic)
  310.  
  311.         CALL WRITELN('c',Start_Size)
  312.         CALL WRITELN('c',End_Size)
  313.  
  314.         CALL WRITELN('c',Start_Xdpi)
  315.         CALL WRITELN('c',End_Xdpi)
  316.  
  317.         CALL WRITELN('c',Start_Ydpi)
  318.         CALL WRITELN('c',End_Ydpi)
  319.  
  320.         CALL WRITELN('c',Start_Flow)
  321.         CALL WRITELN('c',End_Flow)
  322.  
  323.         CALL WRITELN('c',Start_Opacity)
  324.         CALL WRITELN('c',End_Opacity)
  325.  
  326.         CALL CLOSE('c')
  327.     END
  328.  
  329.     ADDRESS value Port
  330.  
  331.     pp_GetWidth
  332.     W=result
  333.  
  334.     pp_GetHeight
  335.     H=result
  336.  
  337.     HX=Tw/2
  338.     HY=Th/2
  339.  
  340.     Start_X=x
  341.     End_X=x
  342.     Start_Y=y
  343.     End_Y=y
  344.  
  345.     IF Path=1 then DO
  346.         IF Type=0 then DO
  347.             Start_X=HX*-1
  348.         END
  349.         ELSE
  350.         DO
  351.             End_X=HX*-1
  352.         END
  353.     END
  354.  
  355.     IF Path=2 then DO
  356.         IF Type=0 then DO
  357.             Start_X=W+HX
  358.         END
  359.         ELSE
  360.         DO
  361.             End_X=W+HX
  362.         END
  363.     END
  364.  
  365.     IF Path=3 then DO
  366.         IF Type=0 then DO
  367.             Start_Y=HY*-1
  368.         END
  369.         ELSE
  370.         DO
  371.             End_Y=HY*-1
  372.         END
  373.     END
  374.  
  375.     IF Path=4 then DO
  376.         IF Type=0 then DO
  377.             Start_Y=H+HY
  378.         END
  379.         ELSE
  380.         DO
  381.             End_Y=H+HY
  382.         END
  383.     END
  384.  
  385.     step=(End_Frame-Start_Frame)
  386.  
  387.     Step_Rotation=(End_Rotation-Start_Rotation)/Step
  388.     Step_Italic=(End_Italic-Start_Italic)/Step
  389.     Step_Xdpi=(End_Xdpi-Start_Xdpi)/Step
  390.     Step_Ydpi=(End_Ydpi-Start_Ydpi)/Step
  391.     Step_Size=(End_Size-Start_Size)/Step
  392.  
  393.     Step_Flow=(End_Flow-Start_Flow)/Step
  394.     Step_Opacity=(End_Opacity-Start_Opacity)/Step
  395.  
  396.     Step_X=(End_X-Start_X)/Step
  397.     Step_Y=(End_Y-Start_Y)/Step
  398.     
  399.  
  400.     DO i=Start_Frame to End_Frame
  401.  
  402.         pp_GotoFrame i
  403.  
  404.         Rotation=trunc(Start_Rotation+Step_Rotation*(i-Start_Frame)+0.5,0)
  405.         Italic=trunc(Start_Italic+Step_Italic*(i-Start_Frame)+0.5,0)
  406.         Xdpi=trunc(Start_Xdpi+Step_Xdpi*(i-Start_Frame)+0.5,0)
  407.         Ydpi=trunc(Start_Ydpi+Step_Ydpi*(i-Start_Frame)+0.5,0)
  408.         Size=trunc(Start_Size+Step_Size*(i-Start_Frame)+0.5,0)
  409.         
  410.         Flow=trunc(Start_Flow+Step_Flow*(i-Start_Frame)+0.5,0)
  411.         Opacity=trunc(Start_Opacity+Step_Opacity*(i-Start_Frame)+0.5,0)
  412.  
  413.         X=trunc(Start_X+Step_X*(i-Start_Frame)+0.5,0)
  414.         Y=trunc(Start_Y+Step_Y*(i-Start_Frame)+0.5,0)
  415.         
  416.         IF Flow>3 then DO
  417.             pp_EffectOn
  418.             pp_AirBrush Opacity Flow
  419.         END
  420.         ELSE
  421.         IF Opacity<100 then DO
  422.             IF Dp=24 then DO
  423.                 pp_BrushOpacity Opacity
  424.             END
  425.             ELSE DO
  426.                 pp_EffectOn
  427.                 pp_Trans Opacity
  428.             END
  429.         END
  430.  
  431.         IF Opacity>0 then DO
  432.             pp_TextXDPI Xdpi
  433.             pp_TextYDPI Ydpi
  434.             pp_TextItalic Italic
  435.             pp_TextRotate Rotation
  436.             pp_TextSize Size
  437.             pp_TextMake
  438.             pp_TextDraw X Y
  439.         END
  440.  
  441.         pp_EffectOff
  442.  
  443.     END
  444.  
  445.     pp_GotoFrame Start_Frame
  446.     pp_TextRestore
  447.     pp_TextMake
  448.     pp_PermitRefresh
  449.