| Operatoren |
open_textwindow — Öffnen eines Textfensters.
open_textwindow ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt. Neue Applikationen sollten stattdessen den Operator open_window verwenden.
open_textwindow( : : Row, Column, Width, Height, BorderWidth, BorderColor, BackgroundColor, FatherWindow, Mode, Machine : WindowHandle)
open_textwindow öffnet ein neues Textfenster, das zur Aus- und Eingabe von Text, sowie für die Ausgabe von Bildern verwendet werden kann. Unter Verwendung der logischen Fensternummer WindowHandle können alle Ausgaben (write_string, read_string, disp_region, etc.) auf dieses Fenster geleitet werden.
Textfenster besitzen neben dem Mauscursor auch einen Textcursor, der die aktuelle Schreibposition bezeichnet (genauer: die linke untere Ecke des auszugebenden Strings ohne Berücksichtigung der Unterlängen). Seine Position wird durch einen Unterstrich (oder eine andere Form) angezeigt (die Anzeige dieser Position kann aber auch ausgeschaltet sein (= Defaulteinstellung); vgl. set_tshape). Mit den Operatoren set_tposition und get_tposition kann die Position gesetzt bzw. abgefragt werden.
Beim Öffnen eines Textfensters wird die Cursorposition auf (H,0) gesetzt, wobei H die Höhe des Defaultfonts abzüglich der Unterlängen angibt. Der Cursor wird aber nicht angezeigt. Die Ausgabe beginnt also beim Schreiben in der linken oberen Ecke des Fensters.
Die Farben für den Hintergrund und den Bildrand können mit query_color abgefragt werden. Dies kann auch mit einem Fenster vom Typ 'invisible' durchgeführt werden. Das Clipping von Texten bei der Ausgabe (write_string) an den Fensterrändern kann mit set_check(::'~text':) eingeschaltet werden, d.h. es wird dann keine Fehlermeldung mehr erzeugt, falls der Text über den Rand des Fensters hinausragt.
Der Ursprung des Koordinatensystems des Fensters liegt in der linken oberen Ecke (Koordinaten: (0,0)). Nach unten nimmt der Zeilenindex zu (maximal: Height-1), nach rechts steigt der Spaltenindex (maximal: Width-1) an.
Der Parameter Machine gibt den Namen des Rechners an, auf dem das Fenster geöffnet werden soll. Im Falle von X-Window wird bei TCP-IP nur der Name, bei DEC-Net wird noch ein Doppelpunkt hinter den Namen gesetzt. Der „Server“ bzw. der „Screen“ wird nicht mit angegeben. Übergibt man den leeren String, so wird die Environmentvariable DISPLAY zur Festlegung des Zielrechners verwendet. Hierbei wird der Name in der üblichen Syntax <Host>:0.0 angegeben.
Mit dem Parameter FatherWindow kann für die Fenstertypen 'WIN32-Window', 'X-Window' und 'Cocoa' das Vaterfenster für das zu öffnende Fenster angegeben werden. Ist die Kontrolle 'father' mittels set_check eingeschaltet, so muss FatherWindow ein HALCON-Fenster sein, andernfalls (set_check('~father')) kann es auch ein Betriebssystem-Fenster sein. Wird für FatherWindow der Wert 0 oder 'root' übergeben, so ist der Desktop (Windows) bzw. das Root-Fenster (unixartige Systeme) das Vaterfenster. In diesem Fall ist die Einstellung der Kontrolle 'father' mittels set_check nicht relevant. Der Aufrufer muss sicherstellen, dass FatherWindow ein gültiges Fensterhandle ist und dass dieses nicht zerstört wird, solange das eingebettete HALCON Fenster verwendet wird.
Die Position und Größe des Fensters kann sich im Laufe des Programms ändern. Dies kann zum einen mit set_window_extents erfolgen, aber auch durch externe Eingriffe (Windowmanager) hervorgerufen werden. Für den zweiten Fall ist der Operator set_window_extents vorgesehen.
Dem Fenster wird beim Öffnen ein sog. Defaultfont zugeordnet. Dieser wird für Operatoren wie write_string verwendet und kann mit set_font nach dem Aufruf von open_textwindow überschrieben werden. Es ist jedoch auch möglich, den Defaultfont mit dem Aufruf set_system(::'default_font',<Fontname>:) vor dem Öffnen eines Fensters (und auch aller weiteren) festzulegen (siehe hierzu auch query_font).
Die Farbe der Schrift (write_string, read_string) wird mit set_color, set_rgb, set_hsi oder set_gray festgelegt. Mit set_insert wird bestimmt, wie der Text (bzw. die Graphik) mit dem Inhalt des Bildwiederholspeichers verknüpft wird. Hierbei kann z.B. mit set_insert(::'not':) erreicht werden, dass nach zweimaligem Schreiben des Textes an der gleichen Position die Schrift wieder beseitigt wird.
Normalerweise wird jede Ausgabe (z.B. mit write_string, disp_region, disp_circle, etc.) in ein Fenster durch einen sog. „Flush“ abgeschlossen. Dies bewirkt, dass die Daten nach Beendigung der Ausgabeprozedur auf dem Bildschirm vollständig sichtbar werden. Dies ist aber nicht in allen Fällen erforderlich, insbesondere dann, wenn ständig Ausgaben erfolgen, oder eine Maus-Prozedur aktiv ist. Hier ist es günstiger (d.h. schneller), wenn die Daten gepuffert werden, bis genügend Daten vorhanden sind. Dieses Verhalten kann durch den Aufruf von set_system(::'flush_graphic','false':) eingestellt werden.
Der Inhalt von Fenstern wird (falls die Treibersoftware dies unterstützt) gesichert; d.h. er bleibt erhalten, auch wenn das Fenster von anderen Fenstern überlappt wird. Dies ist jedoch nicht in allen Fällen notwendig: Wenn man ein Textfenster z.B. als Vaterfenster für andere Fenster verwendet, so kann für dieses der Sicherungsmechanismus abgestellt und damit der hierfür nötige Speicher eingespart werden. Dies geschieht mit dem Aufruf von set_system(::'backing_store','false':) vor dem Öffnen des Fensters.
Unterschied: Graphikfenster - Textfenster
Im Gegensatz zu Graphikfenstern (open_window) können für Textfenster mehr Parameter (Farbe, Rand) beim Öffnen festgelegt werden.
Nur Textfenster können zum Einlesen von Benutzerdaten verwendet werden (read_string).
Die Ausgabe von Bildern, Regionen und Graphiken wird bei Textfenstern an den Rändern „geclippt“, während bei Graphikfenstern „gezoomt“ wird.
Das Koordinatensystem (z.B. bei get_mbutton oder get_mposition) ist unabhängig von der Bildgröße immer in Bildschirmkoordinaten. Die maximalen Koordinaten entsprechen also der Größe des Fensters minus 1. Im Gegensatz dazu wird bei Graphikfenstern (open_window) immer ein Koordinatensystem verwendet, das dem Bildformat entspricht.
Der Parameter Mode legt den Modus des Fensters fest. Dieser kann folgende Werte annehmen:
Dies ist der normale Modus für Textfenster: Das Fenster wird entsprechend den Parametern erzeugt und alle Ein- und Ausgaben sind möglich.
Unsichtbare Fenster werden nicht auf dem Bildschirm dargestellt. Die Parameter Row, Column, BorderWidth, BorderColor, BackgroundColor und FatherWindow sind ohne Bedeutung. Ausgaben auf diese Fenster haben keine Wirkung. Eingaben (read_string, Maus, etc.) sind nicht möglich. Diese Fenster werden verwendet, wenn man Darstellungsparameter für ein Ausgabegerät abfragen möchte, ohne ein (sichtbares) Fenster zu öffnen. Übliche Anfragen sind z.b. query_color und get_string_extents.
Diese Fenster sind durchsichtig: Das Fenster selbst ist nicht sichtbar (Rand und Hintergrund), jedoch sind alle sonstigen Operationen möglich und alle Ausgaben werden dargestellt. Die Parameter BorderColor und BackgroundColor sind hier ohne Bedeutung. Eine übliche Verwendung für diesen Modus ist die Erzeugung von Maus-sensitiven Bereichen.
Dies sind ebenfalls nicht sichtbare Fenster. Die Ausgabe von Bildern, Regionen und Graphik ist auf dem Bildschirm nicht sichtbar, wird jedoch im Speicher gepuffert. Die Parameter Row, Column, BorderWidth, BorderColor, BackgroundColor und FatherWindow sind ohne Bedeutung. Puffer-Fenster verwendet man beispielsweise, wenn man Ausgaben (im Hintergrund) vorbereitet und schließlich mit copy_rectangle in ein sichtbares Fenster kopiert. Eine andere Anwendung wäre die schnelle Verarbeitung von Bildauschnitten bei interaktiven Manipulationen. Texteingaben und Mausinteraktion ist mit dem Modus 'buffer' nicht möglich.
Es ist zu beachten, dass die Parameter Row, Column, Width und Height durch das Ausgabegerät beschränkt sind. Wird ein Vaterfenster (FatherWindow <> 'root') angegeben, dann sind die Koordinaten relativ zum diesem Fenster.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Zeilenindex der linken oberen Ecke.
Defaultwert: 0
Typischer Wertebereich: 0 ≤ Row (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Row >= 0
Spaltenindex der linken oberen Ecke.
Defaultwert: 0
Typischer Wertebereich: 0 ≤ Column (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Column >= 0
Breite des Fensters.
Defaultwert: 256
Typischer Wertebereich: 0 ≤ Width (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Width > 0
Höhe des Fensters.
Defaultwert: 256
Typischer Wertebereich: 0 ≤ Height (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Height > 0
Breite des Fensterrandes.
Defaultwert: 2
Typischer Wertebereich: 0 ≤ BorderWidth (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: BorderWidth >= 0
Logische Nummer des Vaterfensters. Für den Bildschirm als Vater kann 'root' oder 0 eingegeben werden.
Defaultwert: 0
Restriktion: FatherWindow >= 0
Fenstermodus.
Defaultwert: 'visible'
Werteliste: 'buffer', 'invisible', 'transparent', 'visible'
Name des Rechners, auf dem das Fenster geöffnet werden soll oder leerer String.
Defaultwert: ''
Fenster-Handle.
open_textwindow(0,0,900,600,1,'black','slate blue','root','visible', \
'',WindowHandle1)
open_textwindow(10,10,300,580,3,'red','blue',WindowHandle1,'visible', \
'',WindowHandle2)
open_window(10,320,570,580,WindowHandle1,'visible','',WindowHandle)
set_color(WindowHandle,'red')
read_image(Image,'monkey')
disp_image(Image,WindowHandle)
Button := 0
repeat
try
get_mposition(WindowHandle,Row,Column,Button)
get_grayval(Image,Row,Column,Gray)
write_string(WindowHandle2,[' Position (',Row,',',Column,') '])
write_string(WindowHandle2,['Gray value (',Gray,') '])
new_line(WindowHandle2)
catch (Exception)
endtry
until(Button == 4)
close_window(WindowHandle1)
Sind die Parameterwerte korrekt, dann liefert open_textwindow den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
set_color, query_window_type, get_window_type, set_window_type, get_mposition, set_tposition, set_tshape, set_window_extents, get_window_extents, query_color, set_check, set_system
write_string, read_string, new_line, get_string_extents, get_tposition, set_color, query_window_type, get_window_type, set_window_type, get_mposition, set_tposition, set_tshape, set_window_extents, get_window_extents, query_color, set_check, set_system
Foundation
| Operatoren |