%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ten plik jest częścią pakietu MPATTERN
%
% Autor: Piotr Bolek
% wersja: 0.5 (Jun 25, 2001)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Opis
====

Pakiet MPATTERN służy do definiowania i używania wypełnień wzorkowych
w programie MetaPost. W pakiecie wykorzystywana jest dostępna w języku
PostScript Level 2 Wzorkowa Przestrzeń Kolorów (Pattern Color Space).

Zawartość:
- mpattern.mp: makra dla programu MetaPost służące do  definiowania
  i używania wzorków.
- README: krótki opis po angielsku.
- README.PL: krótki opis po polsku.
- test.mp, test.tex, test.ps: przykłady użycia.

Sposób użycia
=============

W pliku źródłowym należy na początku włączyć poleceniem input plik
mpattern.mp, a następnie przetworzyć plik standardowym programem
mpost. 

Interfejs użytkownika
=====================

Definiowanie wzorku
--------------------

Wzorki są definiowane przy użyciu konstrukcji:

beginpattern(<nazwa_wzorku>);
...
endpattern;

Parametr <nazwa_wzorku> jest nazwą, która służy do identyfikacji
wzorku. Nazwa ta może zawierać litery i znaki podkreślenia ,,_'', ale
nie może zawierać cyfr. NIE należy podawać tej nazwy w cudzysłowach.

W definicji wzorku (w dowolnym miejscu między beginpattern a
endpattern) można podać dodatkowe polecenia: 
- patternbbox(<pair>,<pair>)
- patternbbox((<numeric>,<numeric>,<numeric>,<numeric>) 
  Jawne podanie współrzędnych prostokąta ograniczającego komórkę wzorka

- patternxstep(<numeric>)
- patternystep(<numeric>)
- patternstep(<numeric>,<numeric>)
- patternstep(<pair>)
  Odstępy między komórkami wzorka

- patterntransform(<transform>)
  Modyfikacja kształtu komórki wzorka

- patterncolor(0<= <numeric> <= 1)
  Jawne podanie koloru związanego z danym wzorkiem

Każdy wzorek jest tymczasowo zapisywany jako rysunek o dużym numerze
(domyślnie 999), ale jeśli użytkownik wykorzysta ten numer do swojego
rysunku, to dla wzorku będzie użyty największy wolny numer mniejszy od
999.

Używanie wzorku
---------------

Do wykorzystania zdefiniowanego wzorku służy makro działające jak
operator dwuargumentowy (primary) withpattern. Sposób użycie jest
następujący:

<ścieżka> withpattern <nazwa_wzorku>;

gdzie <ścieżka> jest dowolnym wyrażeniem określającym zamkniętą
ścieżkę, a <nazwa_wzorku> jest nazwą podaną w definicji wzorku.

Przykład
--------

Oto kod służący do narysowania dwóch kółek wypełnionych różnymi
szachownicami.

input mpattern;

beginpattern(checker);
 d:=4mm;
 fill unitsquare scaled d;
 fill unitsquare scaled d shifted (d,d);
 patternbbox(0,0,2d,2d);
endpattern;

beginpattern(rotated_checker);
 fill unitsquare scaled 4mm rotated 45 withcolor .7white;
endpattern;

beginfig(11);
 path p;
 z1=(1cm,1cm);
 p=fullcircle scaled 3cm;
 fill p withpattern checker;
 unfill p shifted z1;
 fill p shifted z1 withpattern rotated_checker;
endfig;

Zasady rozpowszechniania
========================

Pakiet MPATTERN jest dobrem wspólnym (ang. ,,public domain''). W
przypadku modyfikacji lub redystrybucji pakietu można stosować dowolną
aktualną licencję GPL.

Problemy
========

06-2001: Mogą być problemy z wypełnianiem wzorkami napisów. Aktualne
	 rozwiązanie jest prowizoryczne.

Zmiany
======

06-2001: Dzięki inspiracji tutorialem Piotra Strzelczyka na
	 konferencji BachoTeX'2001 wyeliminowana została konieczność
	 postprocesingu z wykorzystaniem Perla. Podmiana kolorów na
	 wzorki jest obecnie realizowana z wykorzystaniem słowników na
	 poziomie PostScriptu.

Kontakt z autorem
=================

e-mail: P.Bolek@gust.org.pl
