
#include <e_gem.h>

char *help[] =
{
"",
" F„higkeiten der EnhancedGEM-Library:",
"======================================",
" - l„žt sich mit GNU-C, Pure C und Lattice C einsetzen",
" - an MultiTOS, Mag!X ab V2.0 sowie Winx ab V2.1 angepažt",
" - Definitionen der Protokolle XAcc2, AV, Men, Clipboard",
"   und Drag&Drop",
" - XAcc2-, AV- und Clipboard-Protokoll werden automatisch untersttzt",
" - verbesserte Ereignis-Verwaltung mit 4 Rechteck-, 2 Button- und",
"   2 Timer-Events",
" - beliebig viele Fenster-/fliegende Dialoge gleichzeitig",
" - fliegende Dialoge springen zur Mausposition bei Mausklick",
"   aužerhalb des Dialogs",
" - Rechtsklick auf Objekt im Vordergrund-Dialog (bei aktiver Hinter-",
"   grundbedienung auch im Hintergrund-Dialog) simuliert Doppelklick",
" - Fensterdialoge durch zus„tzlich gedrckte rechte Maustaste im",
"   Hintergrund bedienbar (optional auch ohne rechte Maustaste)",
" - Fenster wechseln/schliežen (Hotkeys und Menpunkte definierbar)",
" - unmodale/modale Fensterdialoge",
" - Tastaturbedienung der Dialoge, wobei in Dialogen mit Edit-Feldern",
"   zus„tzlich die Alternate-Taste gedrckt werden muž",
"   (Doppelklick-Simulation durch zus„tzlich gedrckte Shift-Taste)",
" - Tastendrcke optional zum Dialog unter dem Mauszeiger",
" - unter MTOS (ab AES 4.1) sowie MagiC 3.0 oder bei vorhandenem ICFS",
"   k”nnen Fenster bzw. Fensterdialoge ikonifiziert werden",
"   (Hotkey: Ctrl-'*' (Ziffernblock), nur bei ICFS)","",
" - erweiterte Alert-Funktion:",
"   - 18 vordefinierten Icons",
"   - benutzerdefinierte Icons beliebiger Gr”že",
"   - beliebig langen Zeilen und Buttons",
"   - maximal 10 Zeilen sowie 5 Buttons",
"   - Buttons ber Hotkey anw„hlbar (auch ohne Alternate-Teste)","",
" - erweiterte M”glichkeiten in Eingabe-Feldern",
"   - exakte Cursorpositionierung per Maus",
"   - Mauscursor wird ber Eingabefeldern zum Textcursor",
"   - erstes/letzes Eingabefeld (Home/Shift-Home, Shift-Up/Down)",
"   - Wort vor/zurck (Ctrl-Left/Right)",
"   - Anfang/Ende des Eingabesfeldes (Shift-Left/Right)",
"   - vorheriges Eingabesfeld (Up,Shift-Tab/Enter/Return)",
"   - n„chstes Eingabefeld (Down/Tab/Enter)",
"   - Cursor ein Zeichen nach links/rechts (Left/Right)",
"   - Eingabefeld l”schen (Esc)",
"   - Eingabefeld ab Cursor l”schen (Shift-Del)",
"   - Eingabefeld bis Cursor l”schen (Shift-Backspace)",
"   - Eingabebox fr alle Ascii-Zeichen (Shift-Insert)",
"   - Sonderzeicheneingabe durch Eingabe des dezimalen ASCII-Wertes",
"     bei gedrckter Alternate-Taste auf dem Ziffernblock",
"      => sofern der ASCII-Wert nicht eindeutig ist (ASCII<=25), mssen",
"         alle drei Stellen (evtl. mit fhrenden Nullen) eingegeben",
"         werden",
"   - Undo (Undo bzw. Shift-Undo, sofern Undo-Button vorhanden)",
"   - History-Funktion der letzten eingegebenen Texte (Ctrl-Up/Down)",
"      => mit Shift-Taste: Text in History suchen",
"   - Clipboarduntersttzung:",
"      => mit Shift-Taste: Text an Clipboard/Eingabe-Feld anh„ngen",
"      -> Ctrl-X: Text ausschneiden und in Clipboard ablegen",
"      -> Ctrl-C: Text in Clipboard ablegen",
"      -> Ctrl-V: Text in Eingabefeld einfgen",
"   - Einfge-/šberschreibenmodus (Insert)",
"      => Strich-/Block-Cursor",
"   - neue zus„tzliche Gltigkeitsmasken in Eingabefeldern:",
"      \'c\',\'C\': Ziffern \"0-9\", Komma \".,\", Rechenzeichen \"+-*/^\",",
"               Klammern \"(){}[]\"",
"      \'l\',\'L\': LED-Ziffern \"0-9\"",
"      \'<Ziffer>\': Ziffer=\'0\'-\'9\'",
"               alle Ziffern von \'0\' bis <Ziffer>, z.B.",
"               \'1\': Bin„rziffern",
"               \'7\': Oktalziffernn",
"               \'9\': Dezimalziffern",
"      \'h\',\'H\': Hexadezimalziffern \"0-9A-F\",",
"               Umwandlung in Klein/Grožbuchstaben",
"      \'u\',\'U\': ASCII 32-127, Umwandlung in Klein-/Grožbuchstaben",
"      \'v\',\'V\': ASCII 32-255, Umwandlung in Klein-/Grožbuchstaben",
"      \'w\',\'W\': ASCII 32-127",
"      \'y\',\'Y\': ASCII 32-255",
"   - gr”žtenteils automatische Anpassung (sofern m”glich) der",
"     eingegeben Zeichen an Gltigkeitsmaske",
"   - kleiner/grožer System-Font k”nnen in Eingabefeldern benutzt",
"     werden"
"   - Bedeutung von Return wahlweise",
"      -> Return selektiert DEFAULT-Objekt",
"      -> Return springt zum n„chsten Eingabefeld (zyklisch)",
"      -> Return selektiert beim letzten Eingabefeld das DEFAULT-Objekt","",
" - Cookie-/Scrap-/Resource- u. Environment-Library",
" - erweiterte Rectangle- & Object-Library von PC-GEM 2.0","",
" - viele erweiterte Objekte:",
"   - Radio-Buttons",
"   - Check-Buttons",
"   - Cycle-Buttons fr Popups",
"   - Help-Button",
"   - Undo-Button",
"   - Text mit Attributen",
"     -> unterstrichen,kursiv,umrandet,schattiert,fett,hell,klein/grož",
"   - Rahmen mit Titel",
"   - Titel (= unterstrichener Text)",
"     -> beliebige Strichdicke, optional doppelt unterstrichen",
"   - Flugecke",
"   - Slider-Arrows (optional umrandet)",
"   - Niceline",
"   - opt. von Eingabefeldern abh„ngiges DEFAULT-Objekt",
"   - unmodale und modale Objekte, d.h. die Objekte kommen nur in",
"     (un-) modalen Dialogen vor",
"   - usw.","",
" - Echtzeitgummiband/-schieber mit halb- oder vollautomatischer Ver-",
"   waltung bzw. Ereignisauswertung sowie optionaler Tastaturbedienung",
" - variable Popup-Mens (vollst„ndig tastaturbedienbar (Hotkeys),",
"   frei positionierbar)","",
" - Dialogoptik in weiten Grenzen variierbar:",
"   - Hintergrundbox (Muster,Farbe,Rahmen)",
"   - Flugecke wird an Hintergrundbox angepažt",
"   - Rahmen (Schrift einfach/doppelt umrandet,Schriftgr”že)",
"   - Titel-Unterstrich (L„nge,Dicke,einfach/doppelt unterstrichen)",
"   - Farben der erweiterten Objekte",
"   - viele Varianten der Radio-/Check/Cycle-Buttons sowie Sliderpfeile",
"   - usw.","",
" - sauber programmiert, d.h. unabh„ngig von",
"   - Computer (ST/STE/TT/Falcon/Emulator)",
"   - Aufl”sung und Anzahl der Farben",
"   - Betriebsystem (TOS,MTOS,MagiC,Geneva,MultiGEM)",
"   - VDI/GDOS-Treiber",
"   - Gr”že des System-Fonts",
"   - usw.",""
};

int cdecl draw_help(PARMBLK *);

int old_line,first_line,scroll_help;
int line_help_h,view_help_lines;
int help_lines = (int) sizeof(help)>>2;

USERBLK	helpblk = {draw_help,0};

/* Zeichnen des Ausschnitts des Hilfe-Textes (optimiert) */

int cdecl draw_help(PARMBLK *pb)
{
	reg int cnt_lines,start_line = first_line,delta_lines = (first_line>old_line) ? (first_line - old_line) : (old_line - first_line);
	reg int x = pb->pb_x,y = pb->pb_y;

	v_set_text(small_font_id,small_font,-1,NULL);
	if (!scroll_help || (pb->pb_y+pb->pb_h)>max_h || delta_lines>=(view_help_lines-3) || delta_lines<=0)
		cnt_lines = view_help_lines;
	else
	{
		reg GRECT source;
		reg int dy = delta_lines*line_help_h;

		source.g_x = x;
		source.g_y = y;
		source.g_w = pb->pb_w;
		source.g_h = pb->pb_h - dy;

		if (first_line>old_line)
		{
			source.g_y += dy;
			rc_sc_copy(&source,x,y,3);
			if (pb->pb_hc>pb->pb_h)
				start_line += view_help_lines - delta_lines;
			else
			{
				start_line += ((pb->pb_yc + pb->pb_hc - y)/line_help_h)-delta_lines;
				delta_lines++;
			}
		}
		else
		{
			rc_sc_copy(&source,x,y + dy,3);
			if (pb->pb_hc<=pb->pb_h)
			{
				start_line += (pb->pb_yc - y)/line_help_h;
				delta_lines++;
			}
		}

		start_line = max(start_line,first_line);
		cnt_lines = min(delta_lines,help_lines-start_line);

		if (start_line-first_line+cnt_lines>view_help_lines)
			cnt_lines = view_help_lines-start_line+first_line;
	}

	{
		reg GRECT clear;
		reg int index;

		y += (start_line-first_line)*line_help_h;

		clear.g_x = x;
		clear.g_y = y;
		clear.g_w = pb->pb_w;
		clear.g_h = cnt_lines*line_help_h;
		rc_intersect((GRECT *) &pb->pb_x,&clear);
		rc_sc_clear(&clear);

		for (index=cnt_lines;--index>=0;y += line_help_h)
			v_gtext(x_handle,x,y,help[start_line++]);
	}

	return(0);
}
