home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 2000 April & May / AMIGA_2000_04.iso / amiga-magazin / visualengineer / ve-full.lha / arexx / Merge.rexx < prev    next >
OS/2 REXX Batch file  |  1999-07-14  |  6KB  |  315 lines

  1. /*
  2.  
  3.    v2.00 Merge
  4.  
  5.    Marko Seppänen
  6.    marko.seppanen@wwnet.fi
  7.  
  8. */
  9.  
  10.  
  11. address IMAGEENGINEER
  12.  
  13. Options results
  14. signal on error            /* Setup a place for errors to go */
  15.  
  16.  
  17. if arg()=0 then exit
  18. x=arg(1)
  19. parse var x pic sec valign halign xoffset yoffset .
  20.  
  21. if halign == "" then do
  22.  
  23.   GET PRIMARY
  24.   pic=result
  25.   GET SECONDARY
  26.   sec=result
  27.  
  28.   if sec=="" then do
  29.     'REQUEST "Choose a SECONDARY image!" "OK"'
  30.     exit
  31.   end
  32.  
  33. end
  34. else MARK sec SECONDARY
  35.  
  36.  
  37. MARK pic PRIMARY
  38.  
  39. PROJECT_INFO pic WIDTH
  40. picwidth=result
  41. PROJECT_INFO pic HEIGHT
  42. picheight=result
  43. PROJECT_INFO pic ZOOM
  44. origzoomval=result
  45.  
  46. PROJECT_INFO sec WIDTH
  47. secwidth=result
  48. PROJECT_INFO sec HEIGHT
  49. secheight=result
  50. PROJECT_INFO sec ZOOM
  51. seczoomval=result
  52.  
  53.  
  54.  
  55. if halign="" then do
  56.  
  57.   if exists("ie:prefs/vemerge.cfg") == "1" then
  58.     do
  59.       call open("temp","ie:prefs/vemerge.cfg","R")
  60.       values=readln("temp")
  61.       parse var values ok valign halign xoffset yoffset .
  62.       call close("temp")
  63.     end
  64.   else
  65.     do
  66.       valign=1
  67.       halign=0
  68.       xoffset=0
  69.       yoffset=0
  70.     end
  71.  
  72.   'FORM "Merge" "Use|Cancel"',
  73.   'CYCLE,"Vertical align","Above|Top|AbsMiddle|Bottom|Below",'valign'',
  74.   'CYCLE,"Horizontal align","LeftSide|Left|Center|Right|RightSide",'halign'',
  75.   'INTEGER,"X-offset",'"-"||trunc(picwidth/2)','trunc(picwidth/2)','xoffset',SLIDER',
  76.   'INTEGER,"Y-offset",'"-"||trunc(picheight/2)','trunc(picheight/2)','yoffset',SLIDER'
  77.  
  78.  
  79.   values=result
  80.   parse var values ok valign halign xoffset yoffset .
  81.  
  82.   if ok = 0 then exit
  83.  
  84.   call open("temp","ie:prefs/vemerge.cfg","W")
  85.   res=writeln("temp",values)
  86.   call close("temp")
  87.  
  88. end
  89.  
  90.  
  91.  
  92. BRIGHTNESS pic 255
  93. bgcolor=result
  94.  
  95.  
  96.  
  97. /* VERTICAL ALIGN */
  98.  
  99. if valign == "0" | upper(valign) == "ABOVE" then do
  100.  
  101.   picY0=0+secheight-yoffset
  102.   picY1=picY0+picheight
  103.   secY0=0
  104.   secY1=secY0+secheight
  105.  
  106.   finalheight=max(picY1,secY1)-min(picY0,secY0)
  107.  
  108. end
  109.  
  110. if valign == "1" | upper(valign) == "TOP" then do
  111.  
  112.   if sign(yoffset) == "1" then do
  113.     picY0=0
  114.     picY1=picY0+picheight
  115.     secY0=yoffset
  116.     secY1=secY0+secheight
  117.   end
  118.   else do
  119.     secY0=0
  120.     secY1=secY0+secheight
  121.     if yoffset == "0" then picY0=0
  122.     else picY0=0-yoffset
  123.     picY1=picY0+picheight
  124.   end
  125.  
  126.   finalheight=max(picY1,secY1)-min(picY0,secY0)
  127.  
  128. end
  129.  
  130. if valign == "2" | upper(valign) == "ABSMIDDLE" then do
  131.  
  132.   if trunc(picheight/2) > trunc(secheight/2)-yoffset then do
  133.     picY0=0
  134.     picY1=picY0+picheight
  135.     secY0=trunc(picheight/2)-trunc(secheight/2)+yoffset
  136.     secY1=secY0+secheight
  137.   end
  138.   else do
  139.     secY0=0
  140.     secY1=secY0+secheight
  141.     picY0=trunc(secheight/2)-trunc(picheight/2)-yoffset
  142.     picY1=picY0+picheight
  143.   end
  144.  
  145.   finalheight=max(picY1,secY1)-min(picY0,secY0)
  146.  
  147. end
  148.  
  149. if valign == "3" | upper(valign) == "BOTTOM" then do
  150.  
  151.   if picheight > secheight-yoffset then do
  152.     picY0=0
  153.     picY1=picY0+picheight
  154.     secY1=picY1+yoffset
  155.     secY0=secY1-secheight
  156.   end
  157.   else do
  158.     secY0=0
  159.     secY1=secheight
  160.     picY1=secY1-yoffset
  161.     picY0=picY1-picheight
  162.   end
  163.  
  164.   finalheight=max(picY1,secY1)-min(picY0,secY0)
  165.  
  166. end
  167.  
  168. if valign == "4" | upper(valign) == "BELOW" then do
  169.  
  170.   picY0=0
  171.   picY1=picheight
  172.   secY0=picY1+yoffset
  173.   secY1=secY0+secheight
  174.  
  175.   finalheight=max(picY1,secY1)-min(picY0,secY0)
  176.  
  177. end
  178.  
  179.  
  180.  
  181. /* HORIZONTAL ALIGN */
  182.  
  183. if halign == "0" | upper(halign) == "LEFTSIDE" then do
  184.  
  185.   picX0=0+secwidth-xoffset
  186.   picX1=picX0+picwidth
  187.   secX0=0
  188.   secX1=secX0+secwidth
  189.  
  190.   finalwidth=max(picX1,secX1)-min(picX0,secX0)
  191.  
  192. end
  193.  
  194. if halign == "1" | upper(halign) == "LEFT" then do
  195.  
  196.   if sign(xoffset) == "1" then do
  197.     picX0=0
  198.     picX1=picX0+picwidth
  199.     secX0=xoffset
  200.     secX1=secX0+secwidth
  201.   end
  202.   else do
  203.     secX0=0
  204.     secX1=secX0+secwidth
  205.     if xoffset == "0" then picX0=0
  206.     else picX0=0-xoffset
  207.     picX1=picX0+picwidth
  208.   end
  209.  
  210.   finalwidth=max(picX1,secX1)-min(picX0,secX0)
  211.  
  212. end
  213.  
  214. if halign == "2" | upper(halign) == "CENTER" then do
  215.  
  216.   if trunc(picwidth/2) > trunc(secwidth/2)-xoffset then do
  217.     picX0=0
  218.     picX1=picX0+picwidth
  219.     secX0=trunc(picwidth/2)-trunc(secwidth/2)+xoffset
  220.     secX1=secX0+secwidth
  221.   end
  222.   else do
  223.     secX0=0
  224.     secX1=secX0+secwidth
  225.     picX0=trunc(secwidth/2)-trunc(picwidth/2)-xoffset
  226.     picX1=picX0+picwidth
  227.   end
  228.  
  229.   finalwidth=max(picX1,secX1)-min(picX0,secX0)
  230.  
  231. end
  232.  
  233. if halign == "3" | upper(halign) == "RIGHT" then do
  234.  
  235.   if picwidth > secwidth-xoffset then do
  236.     picX0=0
  237.     picX1=picX0+picwidth
  238.     secX1=picX1+xoffset
  239.     secX0=secX1-secwidth
  240.   end
  241.   else do
  242.     secX0=0
  243.     secX1=secwidth
  244.     picX1=secX1-xoffset
  245.     picX0=picX1-picwidth
  246.   end
  247.  
  248.   finalwidth=max(picX1,secX1)-min(picX0,secX0)
  249.  
  250. end
  251.  
  252. if halign == "4" | upper(halign) == "RIGHTSIDE" then do
  253.  
  254.   picX0=0
  255.   picX1=picwidth
  256.   secX0=picX1+xoffset
  257.   secX1=secX0+secwidth
  258.  
  259.   finalwidth=max(picX1,secX1)-min(picX0,secX0)
  260.  
  261. end
  262.  
  263.  
  264.  
  265.  
  266.  
  267. RESIZE bgcolor finalwidth finalheight TILE
  268. rightsizebackground=result
  269.  
  270. CLOSE bgcolor
  271.  
  272.  
  273.  
  274.  
  275. MARK pic PRIMARY
  276. MARK rightsizebackground SECONDARY
  277. COMPOSITE picX0 picY0 MIN
  278. piconplace=result
  279.  
  280. CLOSE rightsizebackground
  281.  
  282.  
  283. MARK sec PRIMARY
  284. MARK piconplace SECONDARY
  285. COMPOSITE secX0 secY0 MIN
  286. final=result
  287.  
  288. CLOSE piconplace
  289.  
  290.  
  291.  
  292.  
  293. MARK sec SECONDARY
  294.  
  295.  
  296. exit
  297.  
  298. /*******************************************************************/
  299. /* This is where control goes when an error code is returned by IE */
  300. /* It puts up a message saying what happened and on which line     */
  301. /*******************************************************************/
  302. error:
  303. if RC=5 then do            /* Did the user just cancel us? */
  304.     IE_TO_FRONT
  305.     LAST_ERROR
  306.     'REQUEST "'||RESULT||'"'
  307.     exit
  308. end
  309. else do
  310.     IE_TO_FRONT
  311.     LAST_ERROR
  312.     'REQUEST "Error detected!!!'||D2C(10)||'Image Engineer error message is as follows'||D2C(10)||result||D2C(10)||'Script failed on line '||SIGL||'"' 'Doh!'
  313.     exit
  314. end
  315.