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