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 / Shadow.rexx < prev    next >
OS/2 REXX Batch file  |  1999-09-16  |  12KB  |  660 lines

  1. /*
  2.  
  3.    v3.34 Shadow
  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 x0 shadow color lowp thresholdvalue xplace yplace arguments
  21. arguments=strip(arguments,B)
  22. space=0
  23.  
  24.  
  25.  
  26. MARK x0 PRIMARY
  27. PROJECT_INFO x0 WIDTH
  28. picwidth=result
  29. PROJECT_INFO x0 HEIGHT
  30. picheight=result
  31. PROJECT_INFO x0 ZOOM
  32. origzoomvalue=result
  33.  
  34.  
  35.  
  36. if shadow="" then do
  37.  
  38.   if exists("ie:prefs/veshadow.cfg") == "1" then
  39.     do
  40.       call open("temp","ie:prefs/veshadow.cfg","R")
  41.       values=readln("temp")
  42.       parse var values ok shadow color lowp thresholdvalue xplace yplace space .
  43.       call close("temp")
  44.     end
  45.   else
  46.     do
  47.       shadow=0
  48.       color=0
  49.       lowp=9
  50.       thresholdvalue=255
  51.       xplace="-5"
  52.       yplace="-5"
  53.       space=0
  54.     end
  55.  
  56.  
  57.   'FORM "Shadow" "Use|Cancel"',
  58.   'CYCLE,"Type of shadow","Normal|Grey Antialias|Color Antialias|Outline|Rectangle|Lowpass|Transparency",'shadow'',
  59.   'CYCLE,"Color","No|Yes",'color'',
  60.   'INTEGER,"Lowpass value",1,25,'lowp',SLIDER',
  61.   'INTEGER,"Threshold",200,255,'thresholdvalue',SLIDER',
  62.   'INTEGER,"X-place",-20,20,'xplace',SLIDER',
  63.   'INTEGER,"Y-place",-20,20,'yplace',SLIDER',
  64.   'INTEGER,"Space around",0,100,'space',SLIDER'
  65.  
  66.   values=result
  67.   parse var values ok shadow color lowp thresholdvalue xplace yplace space .
  68.  
  69.   if ok = 0 then exit
  70.  
  71.   call open("temp","ie:prefs/veshadow.cfg","W")
  72.   res=writeln("temp",values)
  73.   call close("temp")
  74.  
  75. end
  76.  
  77.  
  78.  
  79.  
  80. /* DO WE NEED SOME SPACE AROUND? */
  81.  
  82.  
  83. if space>0 then do
  84.   if exists("ie:arexx/addspace.rexx") == "0" then do
  85.     'REQUEST "AddSpace.rexx is missing!" "I will get it... sorry"'
  86.     exit
  87.   end
  88.   address command "Sys:Rexxc/rx ie:arexx/AddSpace.rexx" x0 WHITE space
  89.  
  90.   PROJECT_LIST
  91.   xyz=result
  92.   xpic=subword(xyz,1,1)
  93. end
  94. else xpic=x0
  95.  
  96.  
  97.  
  98. /* THE SHADOW HIMSELF */
  99.  
  100. select
  101.  
  102.   when shadow == 0 | upper(shadow) == "NORMAL"then do
  103.  
  104.     THRESHOLD xpic thresholdvalue
  105.     pic=result
  106.  
  107.     NEGATIVE pic
  108.     pic2=result
  109.  
  110.     LOWPASS pic lowp lowp
  111.     lowpasspic=result
  112.  
  113.     CLOSE pic
  114.  
  115.     if color=="1" | upper(color) == "YES" then do
  116.  
  117.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  118.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  119.         exit
  120.       end
  121.  
  122.       if upper(color) == "YES" | color=="1" then color=""
  123.       if arguments~=="" then parse var arguments color
  124.  
  125.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" lowpasspic color
  126.  
  127.       CLOSE lowpasspic
  128.  
  129.       PROJECT_LIST
  130.       xyz=result
  131.       tempname=subword(xyz,1,1)
  132.       lowpasspic=tempname
  133.  
  134.     end
  135.  
  136.  
  137.     MARK pic2 PRIMARY
  138.     MARK pic2 ALPHA
  139.     MARK lowpasspic SECONDARY
  140.  
  141.  
  142.     COMPOSITE xplace yplace MAX
  143.     x3=result
  144.  
  145.     CLOSE pic2
  146.     CLOSE lowpasspic
  147.  
  148.     MARK xpic PRIMARY
  149.     MARK xpic ALPHA
  150.     MARK x3 SECONDARY
  151.  
  152.     COMPOSITE xplace yplace MIN
  153.     final=result
  154.  
  155.  
  156.     CLOSE x3
  157.     if space~=0 then CLOSE xpic
  158.  
  159.   end
  160.  
  161.  
  162.  
  163.  
  164.   when shadow == 1 | shadow == 2 | upper(shadow) == "GREYANTIALIAS"  | upper(shadow) == "COLORANTIALIAS" then do
  165.  
  166.     THRESHOLD xpic thresholdvalue
  167.     thres=result
  168.  
  169.     if exists("ie:Convolves/SmoothEdge_Low") == "0" then do
  170.       'REQUEST "Please download VE-Extras.lha" "Ok"'
  171.       exit
  172.     end
  173.  
  174.     CONVOLVE thres "IE:Convolves/SmoothEdge_Low"
  175.     shrink=result
  176.     CLOSE thres
  177.  
  178.     NEGATIVE shrink
  179.     neg=result
  180.  
  181.     CLOSE shrink
  182.  
  183.     MARK neg PRIMARY
  184.     MARK neg ALPHA
  185.     MARK xpic SECONDARY
  186.  
  187.     COMPOSITE xplace yplace MAX
  188.     slice=result
  189.  
  190.     THRESHOLD slice thresholdvalue
  191.     tslice=result
  192.  
  193.     CLOSE slice
  194.  
  195.     CONVOLVE tslice "IE:Convolves/GaussianBlur5x5"
  196.     gslice=result
  197.  
  198.     CLOSE tslice
  199.  
  200.     LOWPASS gslice lowp lowp
  201.     lowpasspic=result
  202.  
  203.     CLOSE gslice
  204.  
  205.  
  206.     if color=="1" | upper(color) == "YES" then do
  207.  
  208.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  209.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  210.         exit
  211.       end
  212.  
  213.       if upper(color) == "YES" | color=="1" then color=""
  214.       if arguments~=="" then parse var arguments color
  215.  
  216.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" lowpasspic color
  217.  
  218.       CLOSE lowpasspic
  219.  
  220.       PROJECT_LIST
  221.       xyz=result
  222.       tempname=subword(xyz,1,1)
  223.       lowpasspic=tempname
  224.  
  225.     end
  226.  
  227.     MARK neg PRIMARY
  228.     MARK lowpasspic SECONDARY
  229.     COMPOSITE xplace yplace MAX
  230.     lslice=result
  231.  
  232.     CLOSE neg
  233.     CLOSE lowpasspic
  234.  
  235.     MARK xpic PRIMARY
  236.     MARK xpic ALPHA
  237.     MARK lslice SECONDARY
  238.  
  239.  
  240.     if shadow == 1 | upper(shadow) == "GREYANTIALIAS" then do
  241.  
  242.       COMPOSITE xplace yplace MULTIPLY
  243.       final=result
  244.  
  245.     end
  246.  
  247.     if shadow == 2 | upper(shadow) == "COLORANTIALIAS" then do
  248.  
  249.       COMPOSITE xplace yplace MIN
  250.       final=result
  251.  
  252.     end
  253.  
  254.     CLOSE lslice
  255.     if space~=0 then CLOSE xpic
  256.  
  257.   end
  258.  
  259.  
  260.  
  261.   when shadow == 3 | upper(shadow) == "OUTLINE" then do
  262.  
  263.     THRESHOLD xpic thresholdvalue
  264.     thres=result
  265.  
  266.     if exists("ie:Convolves/SmoothEdge_Low") == "0" then do
  267.       'REQUEST "Please download VE-Extras.lha" "Ok"'
  268.       exit
  269.     end
  270.  
  271.     CONVOLVE thres "IE:Convolves/SmoothEdge_Low"
  272.     shrink=result
  273.     CLOSE thres
  274.  
  275.     NEGATIVE shrink
  276.     neg=result
  277.  
  278.     CLOSE shrink
  279.  
  280.     MARK neg PRIMARY
  281.     MARK neg ALPHA
  282.     MARK xpic SECONDARY
  283.  
  284.     COMPOSITE xplace yplace MAX
  285.     slice=result
  286.  
  287.     THRESHOLD slice thresholdvalue
  288.     tslice=result
  289.  
  290.     CLOSE slice
  291.  
  292.     CONVOLVE tslice "IE:Convolves/GaussianBlur5x5"
  293.     gslice=result
  294.  
  295.     CLOSE tslice
  296.  
  297.     LOWPASS gslice lowp lowp
  298.     lowpasspic=result
  299.  
  300.     CLOSE gslice
  301.  
  302.  
  303.     if color=="1" | upper(color) == "YES" then do
  304.  
  305.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  306.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  307.         exit
  308.       end
  309.  
  310.       if upper(color) == "YES" | color=="1" then color=""
  311.       if arguments~=="" then parse var arguments color
  312.  
  313.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" lowpasspic color
  314.  
  315.       CLOSE lowpasspic
  316.  
  317.       PROJECT_LIST
  318.       xyz=result
  319.       tempname=subword(xyz,1,1)
  320.       lowpasspic=tempname
  321.  
  322.     end
  323.  
  324.     MARK neg PRIMARY
  325.     MARK lowpasspic SECONDARY
  326.     COMPOSITE xplace yplace MAX
  327.     lslice=result
  328.  
  329.     CLOSE neg
  330.     CLOSE lowpasspic
  331.  
  332.     MARK xpic PRIMARY
  333.     MARK xpic ALPHA
  334.     MARK lslice SECONDARY
  335.  
  336.  
  337.     COMPOSITE xplace yplace MIN
  338.     final=result
  339.  
  340.  
  341.     if exists("ie:arexx/gaussianedge.rexx") == "0" then do
  342.       'REQUEST "GaussianEdge.rexx is missing!" "I will get it... sorry"'
  343.       exit
  344.     end
  345.  
  346.     ADDRESS COMMAND "sys:rexxc/rx IE:Arexx/GaussianEdge.rexx" xpic NORMAL 1
  347.     PROJECT_LIST
  348.     xyz=result
  349.     normalgtext=subword(xyz,1,1)
  350.  
  351.     ADDRESS COMMAND "sys:rexxc/rx IE:Arexx/GaussianEdge.rexx" xpic HIGH 1
  352.     PROJECT_LIST
  353.     xyz=result
  354.     highgtext=subword(xyz,1,1)
  355.  
  356.     NEGATIVE highgtext
  357.     neghighgtext=result
  358.  
  359.     CLOSE highgtext
  360.     CLOSE lslice
  361.     if space~=0 then CLOSE xpic
  362.  
  363.  
  364.     MARK normalgtext PRIMARY
  365.     MARK neghighgtext SECONDARY
  366.     COMPOSITE 0 0 MIN
  367.     negoutline=result
  368.  
  369.     CLOSE neghighgtext
  370.     CLOSE normalgtext
  371.  
  372.     BRIGHTNESS negoutline "-20"
  373.     btext=result
  374.  
  375.     CLOSE negoutline
  376.  
  377.     MARK btext PRIMARY
  378.     MARK final SECONDARY
  379.     COMPOSITE xplace yplace ADD
  380.     finalfinal=result
  381.  
  382.     CLOSE final
  383.     CLOSE btext
  384.  
  385.   end
  386.  
  387.  
  388.  
  389.   when shadow == 4 | upper(shadow) == "RECTANGLE" then do
  390.  
  391.     PROJECT_INFO xpic WIDTH
  392.     newpicwidth=result
  393.     PROJECT_INFO xpic HEIGHT
  394.     newpicheight=result
  395.  
  396.  
  397.     BRIGHTNESS xpic "-255"
  398.     black=result
  399.  
  400.  
  401.     if exists("ie:alpha/Visual-roundcorner.alpha") == "0" then do
  402.       'REQUEST "Please download VE-Extras.lha" "Ok"'
  403.       exit
  404.     end
  405.  
  406.     OPEN "ie:alpha/Visual-roundcorner.alpha" COLOUR
  407.     cornerA=result
  408.  
  409.     MARK cornerA PRIMARY
  410.     MARK cornerA ALPHA
  411.     MARK black SECONDARY
  412.     COMPOSITE 0 0 ADD
  413.     corner1=result
  414.  
  415.     CLOSE black
  416.  
  417.     REFLECT_X cornerA
  418.     cornerB=result
  419.     CLOSE cornerA
  420.  
  421.     MARK cornerB PRIMARY
  422.     MARK cornerB ALPHA
  423.     MARK corner1 SECONDARY
  424.     COMPOSITE newpicwidth-3 0 ADD
  425.     corner2=result
  426.  
  427.     CLOSE corner1
  428.  
  429.     REFLECT_Y cornerB
  430.     cornerC=result
  431.     CLOSE cornerB
  432.  
  433.     MARK cornerC PRIMARY
  434.     MARK cornerC ALPHA
  435.     MARK corner2 SECONDARY
  436.     COMPOSITE newpicwidth-3 newpicheight-3 ADD
  437.     corner3=result
  438.  
  439.     CLOSE corner2
  440.  
  441.     REFLECT_X cornerC
  442.     cornerD=result
  443.     CLOSE cornerC
  444.  
  445.     MARK cornerD PRIMARY
  446.     MARK cornerD ALPHA
  447.     MARK corner3 SECONDARY
  448.     COMPOSITE 0 newpicheight-3 ADD
  449.     roundbox=result
  450.  
  451.     CLOSE corner3
  452.     CLOSE cornerD
  453.  
  454.  
  455.  
  456.     /* SOME WORKSPACE AROUND */
  457.  
  458.  
  459.     if exists("ie:arexx/addspace.rexx") == "0" then do
  460.       'REQUEST "AddSpace.rexx is missing!" "I will get it... sorry"'
  461.       exit
  462.     end
  463.     address command "Sys:Rexxc/rx ie:arexx/AddSpace.rexx" roundbox WHITE 20
  464.  
  465.     PROJECT_LIST
  466.     xyz=result
  467.     shadowpic=subword(xyz,1,1)
  468.  
  469.     CLOSE roundbox
  470.  
  471.  
  472.  
  473.     /* READY TO CONTINUE */
  474.  
  475.  
  476.     LOWPASS shadowpic lowp lowp
  477.     gshadow=result
  478.  
  479.     CLOSE shadowpic
  480.  
  481.  
  482.     if color=="1" | upper(color) == "YES" then do
  483.  
  484.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  485.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  486.         exit
  487.       end
  488.  
  489.       if upper(color) == "YES" | color=="1" then color=""
  490.       if arguments~=="" then parse var arguments color
  491.  
  492.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" gshadow color
  493.  
  494.       CLOSE gshadow
  495.  
  496.       PROJECT_LIST
  497.       xyz=result
  498.       tempname=subword(xyz,1,1)
  499.       gshadow=tempname
  500.  
  501.     end
  502.  
  503.  
  504.     BRIGHTNESS xpic 255
  505.     bright=result
  506.  
  507.     MARK bright PRIMARY
  508.     MARK bright ALPHA
  509.     MARK gshadow SECONDARY
  510.  
  511.  
  512.     COMPOSITE xplace+20 yplace+20 MAX
  513.     whitearea=result
  514.  
  515.     CLOSE gshadow
  516.     CLOSE bright
  517.  
  518.     MARK xpic PRIMARY
  519.     MARK xpic ALPHA
  520.     MARK whitearea SECONDARY
  521.  
  522.     COMPOSITE xplace+20 yplace+20 MIN
  523.     final=result
  524.  
  525.     CLOSE whitearea
  526.     if space~=0 then CLOSE xpic
  527.  
  528.   end
  529.  
  530.  
  531.  
  532.  
  533.   when shadow == 5 | upper(shadow) == "LOWPASS" then do
  534.  
  535.     LOWPASS xpic lowp lowp
  536.     gblur=result
  537.  
  538.     if space~=0 then CLOSE xpic
  539.  
  540.  
  541.     if color=="1" | upper(color) == "YES" then do
  542.  
  543.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  544.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  545.         exit
  546.       end
  547.  
  548.       if upper(color) == "YES" | color=="1" then color=""
  549.       if arguments~=="" then parse var arguments color
  550.  
  551.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" gblur color
  552.  
  553.       CLOSE gblur
  554.  
  555.       PROJECT_LIST
  556.       xyz=result
  557.       tempname=subword(xyz,1,1)
  558.       gblur=tempname
  559.  
  560.     end
  561.  
  562.  
  563.     MARK x0 PRIMARY
  564.     MARK x0 ALPHA
  565.     MARK gblur SECONDARY
  566.  
  567.     COMPOSITE xplace+space yplace+space MIN
  568.  
  569.     CLOSE gblur
  570.  
  571.   end
  572.  
  573.  
  574.   when shadow == 6 | upper(shadow) == "TRANSPARENCY" then do
  575.  
  576.     LOWPASS xpic lowp lowp
  577.     gblur=result
  578.  
  579.     if space~=0 then CLOSE xpic
  580.  
  581.  
  582.     if color=="1" | upper(color) == "YES" then do
  583.  
  584.       if exists("ie:arexx/primarycolors.rexx") == "0" then do
  585.         'REQUEST "PrimaryColors.rexx is missing!" "I forgot.. sorry."'
  586.         exit
  587.       end
  588.  
  589.       if upper(color) == "YES" | color=="1" then color=""
  590.       if arguments~=="" then parse var arguments color
  591.  
  592.       address command "Sys:Rexxc/rx ie:arexx/PrimaryColors.rexx" gblur color
  593.  
  594.       CLOSE gblur
  595.  
  596.       PROJECT_LIST
  597.       xyz=result
  598.       tempname=subword(xyz,1,1)
  599.       gblur=tempname
  600.  
  601.     end
  602.  
  603.  
  604.     THRESHOLD x0 thresholdvalue
  605.     pic=result
  606.  
  607.     NEGATIVE pic
  608.     pic2=result
  609.  
  610.     CLOSE pic
  611.  
  612.  
  613.     MARK pic2 PRIMARY
  614.     MARK pic2 ALPHA
  615.     MARK gblur SECONDARY
  616.  
  617.     COMPOSITE xplace+space yplace+space MAX
  618.     x4=result
  619.  
  620.     CLOSE pic2
  621.     CLOSE gblur
  622.  
  623.     MARK x0 PRIMARY
  624.     MARK x0 ALPHA
  625.     MARK x4 SECONDARY
  626.  
  627.     COMPOSITE xplace+space yplace+space MIN
  628.  
  629.     CLOSE x4
  630.  
  631.   end
  632.  
  633.  
  634.  
  635. otherwise
  636.   exit
  637. end
  638.  
  639. exit
  640.  
  641.  
  642.  
  643. /*******************************************************************/
  644. /* This is where control goes when an error code is returned by IE */
  645. /* It puts up a message saying what happened and on which line     */
  646. /*******************************************************************/
  647. error:
  648. if RC=5 then do            /* Did the user just cancel us? */
  649.     IE_TO_FRONT
  650.     LAST_ERROR
  651.     'REQUEST "'||RESULT||'"'
  652.     exit
  653. end
  654. else do
  655.     IE_TO_FRONT
  656.     LAST_ERROR
  657.     'REQUEST "Error detected!!!'||D2C(10)||'Image Engineer error message is as follows'||D2C(10)||result||D2C(10)||'Script failed on line '||SIGL||'"' 'Doh!'
  658.     exit
  659. end
  660.