/* * $VER: Brush2Background v1.0 (31.10.94) * * Makroinstrukcja w jëzyku Arexx dla programu ImageFX. * Autor: Tadeusz Talar * * Utworzenie obrazu o zadanych wymiarach na podstawie 'wyciëtego' brush'a * z ewentualnym wykorzystaniem efektów * * gîównych -> Disperse, Roughen, Roughen+Disperse, * koïcowych -> BasRelief, Chisel, Wood, ReliefMap, Ripple. * */ OPTIONS RESULTS /* Definicja struktury panela sîuûâcego do wprowadzenia parametrów. */ Gadget.1 = 'C/160/20/Rozm:/4/LoRes/LoRes Lace/HiRes/HiRes Lace' Gadget.2 = 'C/160/35/M_Ef:/4/Brak/Disperse/Roughen/Rough+Disp' Gadget.3 = 'C/160/50/E_Ef:/6/Brak/BasRelief/Chisel/Wood/ReliefMap/Ripple' Gadget.4 = 'L/40/22/1/1/Rozmiar:' Gadget.5 = 'L/40/37/1/1/Efekt gîówny:' Gadget.6 = 'L/40/52/1/1/Efekt koïcowy:' ComplexRequest '"*** Brush2Background v1.0 ***"' 6 Gadget 300 85 IF rc ~= 0 THEN EXIT /* Przypisanie wartoôci odpowiednim zmiennym. */ rozmiar = result.1 /* rozmiar tîa */ m_effect = result.2 /* efekt gîówny */ e_effect = result.3 /* efekt koïcowy */ SELECT WHEN rozmiar = 0 THEN DO o_width = 320 ; o_height = 256 END WHEN rozmiar = 1 THEN DO o_width = 320 ; o_height = 512 END WHEN rozmiar = 2 THEN DO o_width = 640 ; o_height = 256 END WHEN rozmiar = 3 THEN DO o_width = 640 ; o_height = 512 END OTHERWISE NOP END half_o_width = o_width / 2 half_o_height = o_height / 2 /* Zmiana 'wyciëtego' brush'a w zawartoôê bufora Main, a nastëpnie * jego usuniëcie z pamiëci. */ GetBrush ; IF result = "" THEN EXIT Undo OFF Brush2Swap ; Swap KillBrush KillSwap FORCE /* Wîaôciwa czëôê makra, powiëkszajâca zawartoôê bufora Main dwukrotnie, * wraz z ewentualnym wykonaniem efektu gîównego, do momentu przekroczenia * poîowy wartoôci dowolnego z zadeklarowanych wymiarów (szerokoôci lub * wysokoôci) tîa. */ GetMain ; IF result = "" THEN EXIT PARSE VAR result name w_width w_height . /* Zabezpieczenie by choê raz zawartoôê bufora Main zostaîa poddana * efektowi. */ DO WHILE (w_width > half_o_width) | (w_height > half_o_height) Scale PERCENT 25 25 SMOOTH GetMain ; IF result = "" THEN EXIT PARSE VAR result name w_width w_height . END DO WHILE (w_width < half_o_width) & (w_height < half_o_height) Scale PERCENT 200 200 SMOOTH SELECT WHEN m_effect = 1 THEN DO Disperse 4 END WHEN m_effect = 2 THEN DO Roughen 20 END WHEN m_effect = 3 THEN DO Roughen 25 ; Disperse 4 END OTHERWISE NOP END GetMain ; IF result = "" THEN EXIT PARSE VAR result name w_width w_height . END /* Przeskalowanie do zadeklarowanych rozmiarów tîa i wykonanie efektu * koïcowego. */ Scale o_width o_height SELECT WHEN e_effect = 1 THEN DO Convolve BasRelief END WHEN e_effect = 2 THEN DO Convolve Chisel END WHEN e_effect = 3 THEN DO Convolve Wood END WHEN e_effect = 4 THEN DO Color2Grey LUMA ReliefMap END WHEN e_effect = 5 THEN DO Convolve RippleVertical END OTHERWISE NOP END Undo ON EXIT