KANTY ImageFX jest bardzo wszechstronnym programem graficznym. Jednak w pogoni za "uprzestrzennianiem" pīaskich obrazków zabrnāīem w ōlepy zauīek. Wszystko przez to, ūe chciaīem trochė POKANTOWAŹ. Oczywiōcie nie jakieō bliskie mi osoby, ale... brushe. Tadeusz Talar W jėzyku osób zajmujācych siė grafikā komputerowā angielskie sīowo BEVEL pojawia siė doōź czėsto. Opisuje ono, zwīaszcza w programach 3D, wynik specyficznych operacji, polegajācych na dodaniu róūnego typu "szlifów" do krawėdzi obiektów. Podnosi to z reguīy walory estetyczne wygenerowanej sceny przez dodatkowā grė "ōwiatīa" na tak "oszlifowanych" krawėdziach. W programach 2D opcjė BEVEL moūna spotkaź rzadziej, niemniej wystėpuje ona w palecie efektów niektórych aplikacji. Wdziėcznie brzmiāce sīowo BEVEL to w jėzyku polskim swojski KANT, i wīaōnie takich kantów zachciaīo mi siė podczas pracy z ImageFX-em. Niestety, w programie tym nie mogīem znaleśź podobnej opcji (tak jak zresztā i w innych znanych mi graficznych aplikacjach dla Amigi). I juū rozczarowany miaīem zaprzestaź swoich dziaīaļ, gdy po dokīadnym przejrzeniu makrodefinicji, umieszczonych w katalogu REXX ImageFX-a, gdzie znalazīem jedynie makro do robienia ramki wokóī obrazka, przyszīa mi do gīowy myōl, ūe wīaōnie tėdy wiedzie droga do zrealizowania potrzebnej operacji "kantowania". Potem wszystko potoczyīo siė juū doōź sprawnie. Do wymyōlonego naprėdce algorytmu wystarczyīo dobraź odpowiednie rozkazy ARexxa z bogatej listy, jakā oferuje ImageFX, caīoōci nadaź postaź makrodefinicji przy uūyciu CED-a, a potem to juū tylko testy i sprawdzanie efektu koļcowego. Wynik dziaīania takiej, roboczej jeszcze, ale w peīni juū funkcjonalnej, makrodefinicji przedstawia rys. 1. Oczywiōcie w caīej sprawie kluczem byī algorytm. Zaīoūeniem moim byīo potraktowanie BEVEL-em brushy. Po wczytaniu takiego brusha z dysku lub "wyciėciu go" z obrazka uznaīem, ūe wystarczy "pocieniowaź" odpowiednio cztery jego boki na gruboōź KANTU (rys. 2.) i da to poūādany efekt. Wybraīem w tym celu opcjė rysowania (DRAWING MODE) w trybie DARKEN lub LIGHTEN trapezowatych figur. Oczywiōcie stopieļ opcji LIGHTEN czy DARKEN determinowaī to, czy rysowana figura odpowiednio rozjaōniaīa lub przyciemniaīa fragment brusha. Dla najczėōciej spotykanego "oōwietlenia" z lewego górnego rogu ekranu kolejnoōź rozjaōnieļ czy przyciemnieļ wyglādaīa nastėpujāco: górny obszar brusha -- najjaōniejszy, lewa strona rozjaōniona o 1/4 wartoōci góry, dóī brusha -- najciemniejszy i prawa strona przyciemniona o poīowė wartoōci przyciemnienia doīu. Rysowanie rėkā trapezów rozjaōniajācych i przyciemniajācych wspomniane obszary brusha nie wchodziīo w rachubė. Nie sposób bowiem na dīuūszā metė okreōlaź tak precyzyjnie pasujācych ksztaītów przy uūyciu myszki. To kolejna zaleta ARexxa, który raz zaprogramowany zawsze bėdzie realizowaī powierzone mu zadania z naleūytā precyzjā. Juū po pierwszej próbie brush z nowo powstaīymi kantami wydaī mi siė jednak nieco nienaturalny. Skoro BEVEL ma sugerowaź powierzchnie "zeszlifowane", to przydaīoby siė je nieco "zmatowiź". W tym celu postanowiīem zaprzāc do pracy opcjė MOTION BLUR z panelu CONVOLVE ImageFX-a. Powoduje ona przesuniėcie pikseli w zdefiniowanym kierunku o okreōlonā wartoōź (offset), przy okazji "rozmywajāc", jak na BLUR przystaīo, poddany mu obszar obrazka. Zazwyczaj MOTION BLUR ōwietnie wprowadza do statycznego obrazka klimat ruchu. W moim wypadku miaī on zasymulowaź efekt "zeszlifowania" powierzchni brzegu brusha pod zadanym kātem. Poniewaū w ImageFX-ie nie ma trybu, w którym moūna rysowaź opcjā MOTION BLUR, powstaī problem technicznej realizacji tego zadania. Postanowiīem w tym celu wykorzystaź moūliwoōci okreōlania do dalszej obróbki tylko wybranych obszarów (regions) obrazka. Po ustawieniu selektora obszarów na BOX zaznaczyīem obszar o wymiarach caīego brusha pomniejszony z kaūdej strony o wartoōź okreōlajācā "gruboōź" kantu, a nastėpnie przez wciōniėcie klawiszy [Ctrl][I] zanegowaīem obszar podlegajācy selekcji, przeznaczajāc w ten sposób do dalszej obróbki tylko brzegi obrazka (rys. 3). I tu znowu okazaīo siė, ūe z poziomu ARexxa moūna to zrobiź duūo proōciej i dokīadniej. Nastėpnie zaaplikowaīem do zdefiniowanego obszaru opcjė MOTION BLUR i kolejno rozjaōniīem lub przyciemniīem brzegi brusha. Efekt mnie usatysfakcjonowaī, ale w gīowie zaōwitaīa jednoczeōnie kolejna myōl: "A moūe by tak przed ostatecznym cieniowaniem boków brusha potraktowaź wspomniany obszar nie tylko MOTION BLUR, ale i innymi opcjami ImageFX-a, a nawet ich kombinacjā?", i w ten sposób spróbowaīem oprócz MOTION BLUR dodaź jeszcze ROUGHEN i APPLY TEXTURE z panelu EFFECT ImageFX-a, i to w róūnej kolejnoōci. Skutki tego dziaīania byīy czasem bardzo ciekawe, ale innym razem do "kitu", niemniej moūliwoōź "deformowania" powierzchni kantu przy uūyciu praktycznie dowolnego efektu ImageFX-a jest na tyle kuszāca, ūe warto poeksperymentowaź. Zawarte w powyūszych zdaniach moje dziaīania znalazīy swe "ucieleōnienie" w makrodefinicji (patrz Listing 1.). Po przepisaniu jej przy uūyciu dowolnego edytora tekstu (np. systemowego ED-a czy komercyjnego CED-a) wystarczy zapisaź jā pod nazwā, np. BEVEL.IFX w katalogu REXX ImageFX-a. Nastėpnie w ImageFX-ie naleūy wczytaź z dysku lub wyciāź z obrazka, znajdujācego siė w buforze MAIN, brush, po czym kliknāź na gadūecie REXX i z listy makrodefinicji wybraź BEVEL.IFX. Makro zgīosi siė wīasnym okienkiem (rys. 4.), sīuūācym do definicji "gruboōci" kantu oraz ewentualnych efektów, majācych za zadanie modyfikacjė powierzchni kantu. Wystarczy w tym celu kliknāź na gadūecie obok nazwy efektu (co spowoduje ustawienie na nim charakterystycznego "ptaszka"), w skrajnym wypadku moūna jednoczeōnie zaznaczyź wszystkie trzy gadūety, co spowoduje wykonanie wszystkich efektów na krawėdzi brusha, lub teū nie zaznaczaź ūadnego, co z kolei spowoduje jedynie odpowiednie przyciemnienie/rozjaōnienie brzegów brusha. Gdy juū jesteōmy zadowoleni z poczynionych ustawieļ tak gruboōci kantów, jak i efektów, wystarczy kliknāź na OKAY i w zaleūnoōci od szybkoōci posiadanego komputera odczekaź krótszā lub dīuūszā chwilė, kiedy to nasz "wyciėty" lub wczytany z dysku brush zostanie zastāpiony przez jego "okantowanā" postaź. Tu maīa uwaga. Jak juū zapewne zauwaūyliōcie, przyglādajāc siė Listingowi 1., w trakcie realizowania makra ImageFX korzysta z bufora SWAP, dlatego teū przed poddaniem brusha "okantowaniu" upewnijcie siė, czy przypadkiem w buforze SWAP nie znajduje siė jakiō potrzebny Wam obrazek. Poza tym, przyjėte w makrodefinicji "na sztywno" parametry, okreōlajāce wartoōź rozjaōniania/przyciemniania, dane dla MOTION BLUR oraz ROUGHEN nie stanowiā "jedynie sīusznego" ich ustawienia. Moūna z nimi dowolnie eksperymentowaź, podobnie zresztā jak z doīāczaniem innych efektów wykonywanych, zanim nastāpi koļcowe rozjaōnienie/przyciemnienie boków brusha. Mam nadziejė, ūe taki rodzaj "kantowania" spodoba siė Wam i jednoczeōnie zachėci do szukania wīasnych sposobów wyjōcia z róūnych innych sytuacji, w których wydaje siė, ūe ImageFX nas ogranicza. Makrodefinicje i specyficzne dla tego programu rozkazy ARexxa mogā byź ōwietnā pomocā w odnalezieniu wīaōciwej drogi do celu.