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 / VisualCard.rexx < prev    next >
OS/2 REXX Batch file  |  1999-06-30  |  10KB  |  624 lines

  1. /*
  2.  
  3.    v1.81 Visual Card
  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.  
  20. parse var x pic sec type xplace yplace rot arguments
  21. preview=0
  22.  
  23.  
  24. if sec == "" then do
  25.  
  26.   GET PRIMARY
  27.   pic=result
  28.   GET ALPHA
  29.   alphapic=result
  30.   GET SECONDARY
  31.   sec=result
  32.  
  33.  
  34.   if sec=="" then do
  35.     'REQUEST "Choose at least one image as SECONDARY" "Sorry"'
  36.     exit
  37.   end
  38.  
  39.   PROJECT_INFO pic WIDTH
  40.   picwidth=result
  41.   PROJECT_INFO pic HEIGHT
  42.   picheight=result
  43.  
  44.   PROJECT_INFO sec WIDTH
  45.   secwidth=result
  46.   PROJECT_INFO sec HEIGHT
  47.   secheight=result
  48.  
  49.  
  50.  
  51.   if exists("ie:prefs/visualcard.cfg") == "1" then do
  52.       call open("temp","ie:prefs/visualcard.cfg","R")
  53.       values=readln("temp")
  54.       parse var values ok type xplace yplace rot preview .
  55.       call close("temp")
  56.   end
  57.   else do
  58.       type=0
  59.       xplace=0
  60.       yplace=0
  61.       rot=45
  62.       preview=0
  63.   end
  64.  
  65.  
  66.   do until preview == "0"
  67.  
  68.     'FORM "Visual Card" "Use|Cancel"',
  69.     'CYCLE,"Type","Rectangle|Minimum|Shadow|Area",'type'',
  70.     'INTEGER,"X Offset",-'secwidth','picwidth','xplace',SLIDER',
  71.     'INTEGER,"Y Offset",-'secheight','picheight','yplace',SLIDER',
  72.     'INTEGER,"Rotation of picture",0,359,'rot',SLIDER',
  73.     'CHECKBOX,"Preview",'preview''
  74.  
  75.     values=result
  76.     parse var values ok type xplace yplace rot preview .
  77.  
  78.     if ok = 0 then exit
  79.  
  80.     call open("temp","ie:prefs/visualcard.cfg","W")
  81.     res=writeln("temp",values)
  82.     call close("temp")
  83.  
  84.     if preview == "1" then do
  85.  
  86.       if type == "0" | type == "2" then do
  87.         CALL previewer
  88.         previewpic=result
  89.       end
  90.  
  91.       if type == "1" | type == "3" then do
  92.         CALL previewer2
  93.         previewpic=result
  94.       end
  95.  
  96.     end
  97.  
  98.   end
  99.  
  100. end
  101.  
  102. else do
  103.  
  104.   outsideworld="1"
  105.  
  106.   if xplace=="" | yplace=="" | rot=="" then do
  107.  
  108.     'REQUEST "Some important value is missing!" "Sorry"'
  109.     exit
  110.  
  111.   end
  112.  
  113.  
  114.   GET PRIMARY
  115.   pic2=result
  116.   GET ALPHA
  117.   alphapic2=result
  118.   GET SECONDARY
  119.   sec2=result
  120.  
  121. end
  122.  
  123.  
  124.  
  125. if previewpic~=="PREVIEWPIC" then CLOSE previewpic
  126.  
  127.  
  128. select
  129.  
  130.   when type == "0" | upper(type) == "NORMAL" then do
  131.  
  132.     ROTATE sec rot BEST
  133.     rotsec=result
  134.  
  135.     BRIGHTNESS sec 255
  136.     brightsec=result
  137.  
  138.     ROTATE brightsec rot BEST
  139.     brightrotsec=result
  140.  
  141.     CLOSE brightsec
  142.  
  143.     NEGATIVE brightrotsec
  144.     negrotsec=result
  145.  
  146.  
  147.     MARK negrotsec PRIMARY
  148.     MARK rotsec SECONDARY
  149.  
  150.     COMPOSITE 0 0 ADD
  151.     whiterotsec=result
  152.  
  153.  
  154.     CLOSE rotsec
  155.     CLOSE negrotsec
  156.  
  157.  
  158.     MARK brightrotsec PRIMARY
  159.     MARK pic SECONDARY
  160.  
  161.     COMPOSITE xplace yplace MAX
  162.     whiteareapic=result
  163.  
  164.  
  165.     CLOSE brightrotsec
  166.  
  167.  
  168.     MARK whiterotsec PRIMARY
  169.     MARK whiteareapic SECONDARY
  170.  
  171.     COMPOSITE xplace yplace MULTIPLY
  172.     final=result
  173.  
  174.     CLOSE whiterotsec
  175.     CLOSE whiteareapic
  176.  
  177.   end
  178.  
  179.  
  180.  
  181.   when type == "1" | upper(type) == "MINIMUM" then do
  182.  
  183.     CONVOLVE sec "IE:Convolves/GaussianBlur"
  184.     conv=result
  185.  
  186.     THRESHOLD conv 255
  187.     thres=result
  188.  
  189.     CLOSE conv
  190.  
  191.     NEGATIVE thres
  192.     neg=result
  193.  
  194.     CLOSE thres
  195.  
  196.  
  197.     MARK neg PRIMARY
  198.     MARK sec SECONDARY
  199.  
  200.     COMPOSITE 0 0 MIN
  201.     sec2=result
  202.  
  203.  
  204.     ROTATE neg rot BEST
  205.     rotneg=result
  206.  
  207.     CLOSE neg
  208.  
  209.     NEGATIVE rotneg
  210.     rot2=result
  211.  
  212.     CLOSE rotneg
  213.  
  214.     ROTATE sec2 rot BEST
  215.     rotsec=result
  216.  
  217.     CLOSE sec2
  218.  
  219.  
  220.     MARK rot2 PRIMARY
  221.     MARK rotsec SECONDARY
  222.  
  223.     COMPOSITE 0 0 ADD
  224.     almostfinal=result
  225.  
  226.     CLOSE rotsec
  227.     CLOSE rot2
  228.  
  229.  
  230.     MARK almostfinal PRIMARY
  231.     MARK pic SECONDARY
  232.  
  233.     COMPOSITE xplace yplace MULTIPLY
  234.     final=result
  235.  
  236.     CLOSE almostfinal
  237.  
  238.   end
  239.  
  240.  
  241.  
  242.   when type == "2" | upper(type) == "SHADOW" then do
  243.  
  244.     ROTATE sec rot BEST
  245.     rotsec=result
  246.  
  247.     BRIGHTNESS sec 255
  248.     whitesec=result
  249.  
  250.     ROTATE whitesec rot BEST
  251.     whiterotbest=result
  252.  
  253.     ROTATE whitesec rot FAST
  254.     whiterotfast=result
  255.  
  256.     CLOSE whitesec
  257.  
  258.  
  259.     MARK whiterotfast PRIMARY
  260.     MARK pic SECONDARY
  261.  
  262.     COMPOSITE xplace yplace MAX
  263.     whitepicarea=result
  264.  
  265.  
  266.     NEGATIVE whiterotfast
  267.     negwhiterotfast=result
  268.  
  269.     CLOSE whiterotfast
  270.  
  271.  
  272.     if exists("ie:arexx/addspace.rexx") == "0" then do
  273.       'REQUEST "AddSpace.rexx is missing!" "I forgot.. sorry."'
  274.       exit
  275.     end
  276.  
  277.     address command "Sys:Rexxc/rx ie:arexx/addspace.rexx" negwhiterotfast WHITE 20
  278.  
  279.     PROJECT_LIST
  280.     xyz=result
  281.     negwhiterotfast2=subword(xyz,1,1)
  282.  
  283.     CLOSE negwhiterotfast
  284.  
  285.  
  286.  
  287.     /* dropshadow */
  288.  
  289.  
  290.     if arguments="" then do
  291.  
  292.       if exists("ie:prefs/visualcardshadow.cfg") == "1" then
  293.  
  294.         do
  295.           call open("temp","ie:prefs/visualcardshadow.cfg","R")
  296.           values=readln("temp")
  297.           parse var values ok lowp gammavalue shadowxoffset shadowyoffset .
  298.           call close("temp")
  299.         end
  300.  
  301.       else
  302.  
  303.         do
  304.           lowp=15
  305.           gammavalue=50
  306.           shadowxoffset=5
  307.           shadowyoffset=5
  308.         end
  309.  
  310.  
  311.       'FORM "Visual Card - Shadow" "Use|Cancel"',
  312.       ' INTEGER,"Lowpass value",1,25,'lowp',SLIDER',
  313.       ' INTEGER,"Gamma value",0,100,'gammavalue',SLIDER',
  314.       ' INTEGER,"X-offset",-20,20,'shadowxoffset',SLIDER',
  315.       ' INTEGER,"Y-offset",-20,20,'shadowyoffset',SLIDER'
  316.  
  317.       values=result
  318.       parse var values ok lowp gammavalue shadowxoffset shadowyoffset .
  319.  
  320.       if ok = 0 then exit
  321.  
  322.       call open("temp","ie:prefs/visualcardshadow.cfg","W")
  323.       res=writeln("temp",values)
  324.       call close("temp")
  325.  
  326.     end
  327.  
  328.     else parse var arguments lowp gammavalue shadowxoffset shadowyoffset .
  329.  
  330.  
  331.  
  332.  
  333.     if exists("ie:arexx/shadow.rexx") == "0" then do
  334.       'REQUEST "Shadow.rexx is missing!" "I forgot.. sorry."'
  335.       exit
  336.     end
  337.  
  338.     address command "Sys:Rexxc/rx ie:arexx/shadow.rexx" negwhiterotfast2 NORMAL 0 lowp 255 shadowxoffset shadowyoffset
  339.  
  340.     PROJECT_LIST
  341.     xyz=result
  342.     shadow=subword(xyz,1,1)
  343.  
  344.     GAMMA shadow gammavalue RED GREEN BLUE
  345.     gshadow=result
  346.  
  347.     CLOSE shadow
  348.     CLOSE negwhiterotfast2
  349.  
  350.  
  351.     NEGATIVE whiterotbest
  352.     negwhiterotbest=result
  353.  
  354.     CLOSE whiterotbest
  355.  
  356.  
  357.     MARK negwhiterotbest PRIMARY
  358.     MARK gshadow SECONDARY
  359.  
  360.     COMPOSITE 20+shadowxoffset 20+shadowxoffset MIN
  361.     a2shadow=result
  362.  
  363.     CLOSE negwhiterotbest
  364.     CLOSE gshadow
  365.  
  366.  
  367.     MARK a2shadow PRIMARY
  368.     MARK whitepicarea SECONDARY
  369.  
  370.     COMPOSITE xplace-(20+shadowxoffset) yplace-(20+shadowyoffset) MULTIPLY
  371.     shadowpic=result
  372.  
  373.     CLOSE a2shadow
  374.     CLOSE whitepicarea
  375.  
  376.  
  377.     MARK rotsec PRIMARY
  378.     MARK shadowpic SECONDARY
  379.  
  380.     COMPOSITE xplace yplace ADD
  381.     ready1=result
  382.  
  383.     CLOSE rotsec
  384.     CLOSE shadowpic
  385.  
  386.   end
  387.  
  388.  
  389.  
  390.   when type == "3" | upper(type) == "AREA" then do
  391.  
  392.     CONVOLVE sec "IE:Convolves/GaussianBlur"
  393.     conv=result
  394.  
  395.     THRESHOLD conv 255
  396.     thres=result
  397.  
  398.     CLOSE conv
  399.  
  400.     NEGATIVE thres
  401.     neg=result
  402.  
  403.     CLOSE thres
  404.  
  405.  
  406.     MARK neg PRIMARY
  407.     MARK sec SECONDARY
  408.  
  409.     COMPOSITE 0 0 MIN
  410.     sec2=result
  411.  
  412.  
  413.     ROTATE neg rot BEST
  414.     rotneg=result
  415.  
  416.     CLOSE neg
  417.  
  418.     ROTATE sec2 rot BEST
  419.     rotsec=result
  420.  
  421.     CLOSE sec2
  422.  
  423.  
  424.     MARK rotneg PRIMARY
  425.     MARK rotsec SECONDARY
  426.  
  427.     COMPOSITE 0 0 ADD
  428.     almostfinal=result
  429.  
  430.  
  431.     CLOSE rotsec
  432.     CLOSE rotneg
  433.  
  434.  
  435.     MARK almostfinal PRIMARY
  436.     MARK pic SECONDARY
  437.  
  438.     COMPOSITE xplace yplace MAX
  439.     final=result
  440.  
  441.     CLOSE almostfinal
  442.  
  443.   end
  444.  
  445.  
  446.  
  447. otherwise exit
  448. end
  449.  
  450.  
  451.  
  452. if outsideworld ~== "1" then do
  453.  
  454.   MARK pic PRIMARY
  455.   MARK sec SECONDARY
  456.  
  457.   if alphapic ~== "" then MARK alphapic ALPHA
  458.  
  459. end
  460.  
  461. else do
  462.  
  463.   if pic2 ~== "" then MARK pic2 PRIMARY
  464.   if sec2 ~== "" then MARK sec2 SECONDARY
  465.   if alphapic2 ~== "" then MARK alphapic2 ALPHA
  466.  
  467. end
  468.  
  469.  
  470.  
  471.  
  472.  
  473. exit
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480. previewer:  procedure expose pic sec xplace yplace rot previewpic
  481.  
  482.  
  483.   if previewpic~=="PREVIEWPIC" then CLOSE previewpic
  484.  
  485.   BRIGHTNESS sec 255
  486.   brightsec=result
  487.  
  488.  
  489.   if rot == "0" then do
  490.  
  491.     if exists("ie:arexx/addspace.rexx") == "0" then do
  492.       'REQUEST "AddSpace.rexx is missing!" "I will get it... sorry"'
  493.       exit
  494.     end
  495.     address command "Sys:Rexxc/rx ie:arexx/AddSpace.rexx" brightsec BLACK 2
  496.  
  497.     PROJECT_LIST
  498.     xyz=result
  499.     outline=subword(xyz,1,1)
  500.  
  501.     CLOSE brightsec
  502.  
  503.  
  504.     MARK outline PRIMARY
  505.     MARK pic SECONDARY
  506.  
  507.     COMPOSITE xplace-2 yplace-2 MIX 50
  508.     previewpic=result
  509.  
  510.     CLOSE outline
  511.  
  512.   end
  513.  
  514.   else do
  515.  
  516.     ROTATE brightsec rot BEST
  517.     brightrotsec=result
  518.  
  519.     CLOSE brightsec
  520.  
  521.  
  522.     MARK brightrotsec PRIMARY
  523.     MARK pic SECONDARY
  524.  
  525.     COMPOSITE xplace yplace MIX 50 GENLOCK
  526.     previewpic=result
  527.  
  528.     CLOSE brightrotsec
  529.  
  530.   end
  531.  
  532.  
  533.  
  534.   return previewpic
  535.  
  536.  
  537.  
  538.  
  539. previewer2:  procedure expose pic sec xplace yplace rot previewpic
  540.  
  541.  
  542.   if previewpic~=="PREVIEWPIC" then CLOSE previewpic
  543.  
  544.   THRESHOLD sec 255
  545.   thres=result
  546.  
  547.   NEGATIVE thres
  548.   neg=result
  549.  
  550.   CLOSE thres
  551.  
  552.   if rot ~== "0" then do
  553.  
  554.     ROTATE neg rot BEST
  555.     secmask=result
  556.  
  557.     CLOSE neg
  558.  
  559.     MARK secmask PRIMARY
  560.     MARK pic SECONDARY
  561.  
  562.     COMPOSITE xplace yplace MIX 50 GENLOCK
  563.     previewpic=result
  564.  
  565.     CLOSE secmask
  566.  
  567.   end
  568.  
  569.   else do
  570.  
  571.     sec2=neg
  572.  
  573.     if exists("ie:arexx/addspace.rexx") == "0" then do
  574.       'REQUEST "AddSpace.rexx is missing!" "I will get it... sorry"'
  575.       exit
  576.     end
  577.     address command "Sys:Rexxc/rx ie:arexx/AddSpace.rexx" sec2 BLACK 5
  578.  
  579.     PROJECT_LIST
  580.     xyz=result
  581.     sec3=subword(xyz,1,1)
  582.  
  583.     CLOSE sec2
  584.  
  585.     CONVOLVE sec3 "IE:Convolves/GaussianBlur"
  586.     secmask=result
  587.  
  588.     CLOSE sec3
  589.  
  590.     MARK secmask PRIMARY
  591.     MARK pic SECONDARY
  592.  
  593.     COMPOSITE xplace-5 yplace-5 MIX 50 GENLOCK
  594.     previewpic=result
  595.  
  596.     CLOSE secmask
  597.  
  598.  
  599.   end
  600.  
  601.  
  602.   return previewpic
  603.  
  604.  
  605.  
  606.  
  607. /*******************************************************************/
  608. /* This is where control goes when an error code is returned by IE */
  609. /* It puts up a message saying what happened and on which line     */
  610. /*******************************************************************/
  611. error:
  612. if RC=5 then do            /* Did the user just cancel us? */
  613.     IE_TO_FRONT
  614.     LAST_ERROR
  615.     'REQUEST "'||RESULT||'"'
  616.     exit
  617. end
  618. else do
  619.     IE_TO_FRONT
  620.     LAST_ERROR
  621.     'REQUEST "Error detected!!!'||D2C(10)||'Image Engineer error message is as follows'||D2C(10)||result||D2C(10)||'Script failed on line '||SIGL||'"' 'Doh!'
  622.     exit
  623. end
  624.