home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Graphics / PerfectPaint / rexx / spline / Total_Spline.rx < prev   
Text File  |  1999-12-10  |  1KB  |  93 lines

  1. /* Script Rexx
  2.     Spline with a number of point*/
  3.  
  4.     call addlib("rexxmathlib.library", 5, -30, 0)
  5.  
  6.     options results
  7.   parse ARG Port Mx My Mx1 My1 Mxa Mya b
  8.  
  9.     ADDRESS COMMAND
  10.     sens=0
  11.     sz=20
  12.     if EXISTS('PerfectPaint:Prefs/Rexx_Prefs/Total_Spline') THEN DO
  13.         IF OPEN('lfile','PerfectPaint:Prefs/Rexx_Prefs/Total_Spline', "R") then DO
  14.             sens = READLN('lfile')
  15.             sz = READLN('lfile')            
  16.             CALL CLOSE('lfile')
  17.         END
  18.     END
  19.  
  20.     ADDRESS value Port
  21.     pp_DialogInit 250 85 "*Spline*" 2
  22.         pp_Integer 0 110 5 50 16 "Number*of*Point*" 1 sz
  23.         pp_Cycle 1 110 25 110 16 "Color*Option" 1 "Current*Color|Cycling*Color" sens
  24.     pp_Dialog
  25.     rc=result
  26.     if rc=0 then
  27.         do
  28.             EXIT
  29.         end    
  30.  
  31.     pp_UpdateUndo    
  32.             
  33.     pp_GetDialog 0
  34.     sz=result
  35.  
  36.     pp_GetDialog 1
  37.     sens=result
  38.  
  39.     CALL SavePrefs('Total_Spline',sens,sz)
  40.     ADDRESS value Port
  41.  
  42.   xa= (Mx+Mx1)/2 
  43.     ya= (My+My1)/2
  44.   Mxa= xa + 2*(Mxa-xa)
  45.     Mya= ya + 2*(Mya-ya)
  46.   x=Mx
  47.     y=My
  48.  
  49.     pp_GetApen
  50.     z=result
  51.  
  52.     sz=sz-1
  53.  
  54.     pp_Plot Mx My
  55.  
  56.   DO f=1 To sz
  57.     ff=f/sz
  58.     xa=Mx+(Mxa-Mx)*ff
  59.         ya=My+(Mya-My)*ff
  60.         xb=Mxa+(Mx1-Mxa)*ff
  61.         yb=Mya+(My1-Mya)*ff
  62.     x=trunc(xa+(xb-xa)*ff+0.5)
  63.         y=trunc(ya+(yb-ya)*ff+0.5)
  64.         pp_Plot x y
  65.         if sens=1 then DO
  66.             pp_SetApen z
  67.             z=z+1
  68.         END
  69.   END
  70.  
  71. EXIT
  72.  
  73. SavePrefs: PROCEDURE
  74.     
  75.     Prefname='PerfectPaint:Prefs/Rexx_Prefs/'||ARG(1)
  76.  
  77.     if EXISTS(Prefname) THEN DO
  78.         ADDRESS COMMAND
  79.         'delete >nil: '||Prefname
  80.     END
  81.  
  82.     IF OPEN('pfile',PrefName,'W') THEN DO
  83.  
  84.     do i=2 to ARG()
  85.         CALL WRITELN('pfile',ARG(i))
  86.     end
  87.  
  88.     CALL CLOSE('pfile')
  89.  
  90. RETURN
  91.  
  92.  
  93.