/* Skrypt ARexx'a dla Leto 2.2
** Podziaî dokumentu na szpalty
*/

/*	AND	= '&'
**	XOR	= '^'
**	OR	= '|'
*/

/* address	'rexx_leto' */

Options results

IleSzpalt=2
IleLinii=0
Delta=0
FntDx=8

InfoFlags 1 0				/* Nagîówek centruj, Reszta do lewej */
Info2 40 'Szpalty|  Program podzieli dokument na szpalty.|Funkcja  ta  napisana  zostaîa z myôlâ o|wydruku tekstowym.|   Czy chcesz kontynuowaê ?'
	if rc | LT_Info then Exit	/* Gdy Nie */

do until (LT_Info<5 & LT_Info>1)
	InfoVal 'Podaj liczbë szpalt (2..4)|'IleSzpalt
	if rc then Exit			/* Gdy wybrano anuluj */
	IleSzpalt=LT_Info
end

Delta=Trunc((640-IleSzpalt*FntDx)/IleSzpalt)	/* Odstëp miëdzy marginesami */
MargLeft 0
MargRight Delta
JumpTo 0				/* Poczâtek dokumentu */
Menu 2 0				/* Formatuj tekst */

JumpTo 1000000				/* Skok na koniec dokumentu */
GetPos					/* Odczytaj pozycjë kursora */
IleLinii=LT_Line+1			/* Ile linii */
MargRight 639

/* Testuj czy wyjdâ szpalty */
JumpTo 1000000				/* Skok na koniec dokumentu */
GetPos
if IleLinii>(LT_Line+1) then
	do
	JumpTo 0
	Info1 30 'UWAGA !|  Wystëpujâ zbyt dîugie linie. Rozdziel|wyrazy spacjami.'
	IleLinii=LT_Line+1
	Call FindLine (Delta)
	Exit
	end


BlokLines=Trunc((IleLinii+IleSzpalt-1)/IleSzpalt)
if BlokLines=0 then
	do
		Info1 30 'Bîâd|Liczba linii dokumentu zbyt maîa'
		Exit
	end


do i=1 to IleSzpalt	/* Aby wycinanie linii nie dawaîo requestera */
	Text '0A'X
end

do i=1 to IleSzpalt-1
	StartLine=0
	MargPx=i*(Delta+FntDx)
	do j=0 to BlokLines-1
		JumpTo BlokLines
		LineCut			/* Linia do bufora */
		JumpTo StartLine+j
		Call WstawSpacje(MargPx)
		BlockInsert
		CharLeft		/* na koniec linii */
		CharDelete		/* Kasuj Eol */
	end
end

Info1 30 'Komunikat|  Podziaî na szpalty wykonany'

Exit


WstawSpacje:
ARG PosX
LineEnd		/* Koniec linii */
GetPos
if PosX>LT_PosX then
 do
	FontSet LT_Font /* Wybierz czcionkë którâ napisano ostatni znak */
	FontInfo LT_Font 32	/* pobierz LT_FontDx znaku spacji */
	K=Trunc((PosX-LT_PosX+LT_FontDx-1)/LT_FontDx)
	Text SUBSTR(' ', 1, k)
 end

Return

FindLine:
ARG PosX
do i=0 To IleLinii-1
	LineEnd
	GetPos
	if LT_PosX>PosX then Return
	LineDown
end
Return


