This is an old version from the tos.hyp. The new is on GitHub!

HomeAESMenüfunktionenResourcefunktionen

8.16 Objektfunktionen

Diese Bibliothek stellt Funktionen zur Verfügung, um Objekte (gleich welcher Art) zu zeichnen und zu manipulieren; hierzu gibt es die folgenden Routinen:

objc_add Objekt im Objektbaum einfügen
objc_change Status eine Objekts ändern
objc_delete Objekt aus dem Objektbaum entfernen
objc_draw Objekt (mit Unterobjekten) zeichnen
objc_edit Text eines Objektes editieren
objc_find Objekt an der Mausposition ermitteln
objc_offset Bildschirmkoordinaten eines Objekts ermitteln
objc_order Reihenfolge im Objektbaum umstellen
objc_sysvar Modifikation der 3D-Objekte
objc_wchange Status eines Objektes ändern (im Fenster)
objc_wdraw Objekt (mit Unterobjekten) zeichnen (im Fenster)
objc_wedit Text eines Objektes editieren (im Fenster)
objc_xedit Text eines Objektes editieren
objc_xfind Objektindex über Position ermitteln
• objc_xoffset z.Zt. keine Informationen bekannt

Hinweis: Eine besondere Beachtung hat dabei objc_sysvar verdient, mit dessen Hilfe der 3D-Look der Objekte gesteuert (und ab MagiC 3 auch abgeschaltet) werden kann.

Querverweis: AES   Objektstruktur im AES   Scrollende Eingabefelder   Style-Guidelines

8.16.1 objc_add

Name: »Object add« - fügt ein Objekt im Objektbaum ein.
AES-Nummer: 40
Deklaration: int16_t objc_add ( OBJECT *ob_atree, int16_t ob_aparent, int16_t ob_achild );
Beschreibung: Die Funktion stellt zwischen zwei Objekten in einem Objektbaum eine Hierarchische Verknüpfung her. Es gilt:
Parameter Bedeutung
   
ob_atree Adresse des Objektbaumes
ob_aparent Nummer des Objekts, zu dem das Child hinzugefügt werden soll
ob_achild Nummer des Childs, d.h. des hinzuzufügenden Objektes


Hinweis: Beim Einfügen müssen die Komponenten ob_head und ob_tail der OBJECT-Struktur bereits passend initialisiert sein.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   OBJECT   objc_delete

8.16.1.1 Bindings für objc_add

C: int16_t objc_add ( OBJECT *ob_atree, int16_t ob_aparent, int16_t ob_achild );
Umsetzung:
int16_t objc_add (OBJECT *ob_atree, int16_t ob_aparent,
                  int16_t ob_achild)
{
   int_in[0]  = ob_aparent;
   int_in[1]  = ob_achild;
   addr_in[0] = ob_atree;

   return ( crys_if(40) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 40 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_aparent
int_in+2 int_in[1] ob_achild
addr_in addr_in[0] ob_atree
int_out int_out[0] Return-Wert

8.16.2 objc_change

Name: »Object change« - verändert die Darstellung eines Objekts innerhalb der angegebenen Grenzen.
AES-Nummer: 47
Deklaration: int16_t objc_change ( OBJECT *ob_ctree, int16_t ob_cobject, int16_t ob_cresvd, int16_t ob_cxclip, int16_t ob_cyclip, int16_t ob_cwclip, int16_t ob_chclip, int16_t ob_cnewstate, int16_t ob_credraw );
Beschreibung: Die Funktion ändert den Status eines Objektes und zeichnet es ggfs. neu. Es gilt:
Parameter Bedeutung
   
ob_ctree Adresse des Objektbaumes
ob_cobject Nummer des betreffenden Objektes
ob_cresvd reserviert, sollte 0 sein
ob_cxclip x-Koordinate
ob_cyclip y-Koordinate
ob_cwclip Breite
ob_chclip Höhe des Clipping-Rechtecks
ob_cnewstate neuer Status des Objektes
ob_credraw
0 = Objekt nicht neu zeichnen
1 = Objekt neu zeichnen
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   objc_wchange   OBJECT

8.16.2.1 Bindings für objc_change

C: int16_t objc_change ( OBJECT *ob_ctree, int16_t ob_cobject, int16_t ob_cresvd, int16_t ob_cxclip, int16_t ob_cyclip, int16_t ob_cwclip, int16_t ob_chclip, int16_t ob_cnewstate, int16_t ob_credraw );
Umsetzung:
int16_t objc_change (OBJECT *ob_ctree, int16_t ob_cobject,
                     int16_t ob_cresvd, int16_t ob_cxclip,
                     int16_t ob_cyclip, int16_t ob_cwclip,
                     int16_t ob_chclip, int16_t ob_cnewstate,
                     int16_t ob_credraw)
{
   int_in[0]  = ob_cobject;
   int_in[1]  = ob_cresvd;
   int_in[2]  = ob_cxclip;
   int_in[3]  = ob_cyclip;
   int_in[4]  = ob_cwclip;
   int_in[5]  = ob_chclip;
   int_in[6]  = ob_cnewstate;
   int_in[7]  = ob_credraw;

   addr_in[0] = ob_ctree;

   return ( crys_if(47) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 47 # Opcode der Funktion
control+2 control[1] 8 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_cobject
int_in+2 int_in[1] ob_cresvd
int_in+4 int_in[2] ob_cxclip
int_in+6 int_in[3] ob_cyclip
int_in+8 int_in[4] ob_cwclip
int_in+10 int_in[5] ob_chclip
int_in+12 int_in[6] ob_cnewstate
int_in+14 int_in[7] ob_credraw
addr_in addr_in[0] ob_ctree
int_out int_out[0] Return-Wert

8.16.3 objc_delete

Name: »Object delete« - löst ein Objekt aus einem Objektbaum.
AES-Nummer: 41
Deklaration: int16_t objc_delete ( OBJECT *ob_dltree, int16_t ob_dlobject );
Beschreibung: Die Funktion entfernt ein Objekt aus einem Objektbaum. Es gilt:

Parameter Bedeutung
ob_dltree Adresse des Objektbaumes
ob_dlobject Nummer des zu löschenden Objektes
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
See also: Binding   OBJECT   objc_add

8.16.3.1 Bindings für objc_delete

C: int16_t objc_delete ( OBJECT *ob_dltree, int16_t ob_dlobject );
Umsetzung:
int16_t objc_delete (OBJECT *ob_dltree, int16_t ob_dlobject)
{
   int_in[0]  = ob_dlobject;
   addr_in[0] = ob_dltree;

   return ( crys_if(41) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 41 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_dlobject
addr_in addr_in[0] ob_dltree
int_out int_out[0] Return-Wert

8.16.4 objc_draw

Name: »Object draw« - zeichnet ein Objekt.
AES-Nummer: 42
Deklaration: int16_t objc_draw ( OBJECT *ob_drtree, int16_t ob_drstart, int16_t ob_drdepth, int16_t ob_drxclip, int16_t ob_dryclip, int16_t ob_drwclip, int16_t ob_drhclip );
Beschreibung: Die Funktion stellt Objekte (oder Teile von Objekten) auf dem Bildschirm dar. Es gilt:
Parameter Bedeutung
   
ob_drtree Adresse des Objektbaumes
ob_drstart Nummer des ersten zu zeichnenden Objektes
ob_drdepth Anzahl der zu zeichnenden Ebenen (0 = nur das erste Objekt), max 8
ob_drxclip x-Koordinate
ob_dryclip y-Koordinate
ob_drwclip Breite
ob_drhclip Höhe des begrenzenden Rechteckes.


Hinweis: Über die Parameter kann ein Rechteck angegeben werden, auf das sich die Darstellung beschränken soll (Clipping).
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   objc_wdraw   OBJECT

8.16.4.1 Bindings für objc_draw

C: int16_t objc_draw ( OBJECT *ob_drtree, int16_t ob_drstart, int16_t ob_drdepth, int16_t ob_drxclip, int16_t ob_dryclip, int16_t ob_drwclip, int16_t ob_drhclip );
Umsetzung:
int16_t objc_draw (OBJECT *ob_drtree, int16_t ob_drstart,
                   int16_t ob_drdepth, int16_t ob_drxclip,
                   int16_t ob_dryclip, int16_t ob_drwclip,
                   int16_t ob_drhclip)
{
   int_in[0]  = ob_drstart;
   int_in[1]  = ob_drdepth;
   int_in[2]  = ob_drxclip;
   int_in[3]  = ob_dryclip;
   int_in[4]  = ob_drwclip;
   int_in[5]  = ob_drhclip;

   addr_in[0] = ob_drtree;

   return ( crys_if(42) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 42 # Opcode der Funktion
control+2 control[1] 6 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_drstart
int_in+2 int_in[1] ob_drdepth
int_in+4 int_in[2] ob_drxclip
int_in+6 int_in[3] ob_dryclip
int_in+8 int_in[4] ob_drwclip
int_in+10 int_in[5] ob_drhclip
addr_in addr_in[0] ob_drtree
int_out int_out[0] Return-Wert

8.16.5 objc_edit

Name: »Object edit« - editiert einen Text in einem Objekt.
AES-Nummer: 46
Deklaration: int16_t objc_edit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind );
Beschreibung: Die Funktion ermöglicht Texteingaben in Objekte des Typs G_FTEXT oder G_FBOXTEXT. Es gilt:
Parameter Bedeutung
   
ob_edtree Adresse des Objektbaumes
ob_edobject Nummer des zu editierenden Objektes
ob_edchar eingegebenes Zeichen
ob_edidx Position des Zeichens im String
ob_edkind Funktionsauswahl, wie folgt:
EDSTART 0 reserviert
EDINIT 1 formatierten String berechnen, und Cursor einschalten
EDCHAR 2 Zeichen verarbeiten und String anschließend neu anzeigen
EDEND 3 Cursor ausschalten


Hinweis: MagiC ab Version 2.0 kennt eine erweiterte Funktion objc_xedit.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   objc_wedit   OBJECT   TEDINFO   objc_xedit

8.16.5.1 Bindings für objc_edit

C: int16_t objc_edit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind );
Umsetzung:
int16_t objc_edit (OBJECT *ob_edtree, int16_t ob_edobject,
                   int16_t ob_edchar, int16_t *ob_edidx,
                   int16_t ob_edkind)
{
   int_in[0]  = ob_edobject;
   int_in[1]  = ob_edchar;
   int_in[2]  = *ob_edidx;
   int_in[3]  = ob_edkind;
   addr_in[0] = ob_edtree;

   crys_if (46);

   *ob_edidx = int_out[1];
   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 46 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 2 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_edobject
int_in+2 int_in[1] ob_edchar
int_in+4 int_in[2] ob_edidx
int_in+6 int_in[3] ob_edkind
addr_in addr_in[0] ob_edtree
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ob_edidx

8.16.6 objc_find

Name: »Object find« - ermittelt, welches Objekt sich an der angegebenen Bildschirmposition befindet.
AES-Nummer: 43
Deklaration: int16_t objc_find ( OBJECT *ob_ftree, int16_t ob_fstartob, int16_t ob_fdepth, int16_t ob_fmx, int16_t ob_fmy );
Beschreibung: Die Funktion bestimmt das Objekt, welches sich unter dem Mauszeiger befindet. Es gilt:
Parameter Bedeutung
   
ob_ftree Adresse des Objektbaumes
ob_fstartob Nummer des Objektes, bei dem die Suche beginnen soll
ob_fdepth Anzahl der Ebenen, die durchsucht werden sollen (0 = nur Mutterobjekt)
ob_fmx x-Koordinate
ob_fmy y-Koordinate der Bildschirmposition
Ergebnis: Als Ergebnis wird die Nummer des entsprechenden Objektes (oder -1 für 'nicht gefunden') zurückgegeben.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   OBJECT   objc_xfind

8.16.6.1 Bindings für objc_find

C: int16_t objc_find ( OBJECT *ob_ftree, int16_t ob_fstartob, int16_t ob_fdepth, int16_t ob_fmx, int16_t ob_fmy );
Umsetzung:
int16_t objc_find (OBJECT *ob_ftree, int16_t ob_fstartob,
                   int16_t ob_fdepth, int16_t ob_fmx,
                   int16_t ob_fmy)
{
   int_in[0]  = ob_fstartob;
   int_in[1]  = ob_fdepth;
   int_in[2]  = ob_fmx;
   int_in[3]  = ob_fmy;
   addr_in[0] = ob_ftree;

   return ( crys_if(43) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 43 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_fstartob
int_in+2 int_in[1] ob_fdepth
int_in+4 int_in[2] ob_fmx
int_in+6 int_in[3] ob_fmy
addr_in addr_in[0] ob_ftree
int_out int_out[0] Return-Wert

8.16.7 objc_offset

Name: »Object Offset« - berechnet die Position eines Objekts auf dem Bildschirm.
AES-Nummer: 44
Deklaration: int16_t objc_offset ( OBJECT *ob_oftree, int16_t ob_ofobject, int16_t *ob_ofxoff, int16_t *ob_ofyoff );
Beschreibung: Die Funktion berechnet die Position eines Objektes in absoluten Bildschirmkoordinaten. Es gilt:

Parameter Bedeutung
ob_oftree Adresse des Objektbaumes
ob_ofobject Nummer des entsprechenden Objektes
ob_ofxoff berechnete x-Koordinate
ob_ofyoff berechnete y-Koordinate
Ergebnis: Ein Rückgabewert von 0 kennzeichnet einen Fehler.
Verfügbar: All AES versions.
Gruppe: Objekte
See also: Binding   OBJECT   form_center

8.16.7.1 Bindings für objc_offset

C: int16_t objc_offset ( OBJECT *ob_oftree, int16_t ob_ofobject, int16_t *ob_ofxoff, int16_t *ob_ofyoff );
Umsetzung:
int16_t objc_offset (OBJECT *ob_oftree, int16_t ob_ofobject,
                     int16_t *ob_ofxoff, int16_t *ob_ofyoff)
{
   int_in[0]  = ob_ofobject;
   addr_in[0] = ob_oftree;

   crys_if (44);

   *ob_ofxoff = int_out[1];
   *ob_ofyoff = int_out[2];

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 44 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 3 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_ofobject
addr_in addr_in[0] ob_oftree
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ob_ofxoff
int_out+4 int_out[2] ob_ofyoff

8.16.8 objc_order

Name: »Object Order« - ordnet ein Objekt innerhalb eines Objektbaumes neu an.
AES-Nummer: 45
Deklaration: int16_t objc_order ( OBJECT *ob_ortree, int16_t ob_orobject, int16_t ob_ornewpos );
Beschreibung: Die Funktion verändert die Position eines Objektes innerhalb eines Unterbaumes. Es gilt:
Parameter Bedeutung
   
ob_ortree Adresse des Objektbaumes
ob_orobject Nummer des betreffenden Objektes
ob_ornewpos neue Position im Baum, und zwar:
-1 = an das Ende
0 = an den Anfang
1 = an die zweite Stelle
2 = an die dritte Stelle (usw.)
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: All AES versions.
Gruppe: Objekte
Querverweise: Binding   OBJECT

8.16.8.1 Bindings für objc_order

C: int16_t objc_order ( OBJECT *ob_ortree, int16_t ob_orobject, int16_t ob_ornewpos );
Umsetzung:
int16_t objc_order (OBJECT *ob_ortree, int16_t ob_orobject,
                    int16_t ob_ornewpos)
{
   int_in[0]  = ob_orobject;
   int_in[1]  = ob_ornewpos;
   addr_in[0] = ob_ortree;

   return ( crys_if(45) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 45 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_orobject
int_in+2 int_in[1] ob_ornewpos
addr_in addr_in[0] ob_ortree
int_out int_out[0] Return-Wert

8.16.9 objc_sysvar

Name: »Object sysvar« - Manipulation der 3D Objekte
AES-Nummer: 48
Deklaration: int16_t objc_sysvar ( int16_t ob_smode, int16_t ob_swhich, int16_t ob_sival1, int16_t ob_sival2, int16_t *ob_soval1, int16_t *ob_soval2 );
Beschreibung: Die Funktion erlaubt es, das Erscheinungsbild der 3D-Objekte des AES zu setzen bzw. zu erfragen. Es gilt:
Parameter Bedeutung
   
ob_smode
0 - Status abfragen
1 - neuen Status setzen
ob_swhich Gewünschte 3D-Komponente:

LK3DIND (1) - Indikatoren
Modus 0: ob_soval1 = 0
beim Selektieren eines Objektes bewegt sich der zugehörige Text nicht.
ob_soval1 = 1
beim Selektieren eines Objektes bewegt sich der zugehörige Text.
ob_soval2 = 0
Objektfarbe ändert sich beim Selektieren nicht.
ob_soval2 = 1
Objektfarbe wird beim Selektieren verändert.
Modus 1: wie Modus 0, nur lassen sich jetzt die jeweiligen Werte, über die Parameter ob_sival1 bzw. ob_sival2 setzen.

LK3DACT (2) - Aktivatoren
Bestimmt das Verhalten der Aktivatoren. Alle weiteren Angaben sind analog den Indikatoren zu verwenden.

INDBUTCOL (3) - Farbe nicht-selektierter Indikatoren!
Modus 0: ob_soval1 ist die aktuelle Farbe.
Modus 1: ob_sival1 enthält die zu setzende Farbe.

ACTBUTCOL (4) - Farbe nicht-selektierter Aktivatoren
Modus 0: ob_soval1 ist die aktuelle Farbe.
Modus 1: ob_sival1 enthält die zu setzende Farbe.

BACKGRCOL (5) - Farbe des 3D Hintergrundes
Modus 0: ob_soval1 ist die aktuelle Farbe.
Modus 1: ob_sival1 enthält die zu setzende Farbe.

AD3DVALUE (6) - Pixelvergrößerung erfragen
Modus 0: ob_soval1
Anzahl der Pixel in horizontaler Richtung, um die 3D-Buttons nach jeder Seite vergrößert werden.
ob_soval2
Anzahl der Pixel in vertikaler Richtung, um die 3D-Buttons nach jeder Seite vergrößert werden.
Hinweis: Dieser Modus liefert in MagiC stets den Wert 0, da die Objektgrößen vom System nicht angetastet werden.
Modus 1: z.Zt. nicht unterstützt.

MX_ENABLE3D (10) - 3D Look ein-/ausschalten Dieser Modus ist nur unter MagiC (ab Version 3.0) vorhanden, und erlaubt es, den 3D-Look ein- bzw. auszuschalten. Es gilt:
Modus 0: ob_soval1 = 0
(3D ist aus)
ob_soval1 = 1
(3D ist aktiv)
Modus 1: ob_sival1 = 0
ob_sival2 = 0
(3D-Look aus)
ob_sival1 = 1
ob_sival2 = 1
(3D-Look ein)


Hinweis: Die per objc_sysvar vorgenommenen Einstellungen gelten nicht nur für das eigene Programm, sondern für das ganze System. Aus diesem Grund sollte die Funktion in normalen Anwenderprogrammen nicht benutzt werden, sondern nur in Konfigurations-Programmen (z.B. CPX-Modulen) zum Einsatz kommen.

In MagiC 2.0 ist die Funktion zwar vorhanden, läßt jedoch aufgrund der noch fehlenden 3D-Objekte keine Modifikationen zu. Deshalb sollte der Rückgabewert der Funktion beachtet werden. Ab MagiC 3 steht der 3D-Look zwar zur Verfügung, jedoch gilt es einige Unterschiede zu beachten.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis der Wert 0 zurückgegeben wird.
Verfügbar: Available as of AES version 3.40.

Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 13) erfragt werden.
Gruppe: Objekte
Querverweise: Binding

8.16.9.1 Bindings für objc_sysvar

C: int16_t objc_sysvar ( int16_t ob_smode, int16_t ob_swhich, int16_t ob_sival1, int16_t ob_sival2, int16_t *ob_soval1, int16_t *ob_soval2 );
Umsetzung:
int16_t objc_sysvar (int16_t ob_smode, int16_t ob_swhich,
                     int16_t ob_sival1, int16_t ob_sival2,
                     int16_t *ob_soval1, int16_t *ob_soval2)
{
   int_in[0] = ob_smode;
   int_in[1] = ob_swhich;
   int_in[2] = ob_sival1;
   int_in[3] = ob_sival2;

   crys_if (48);

   *ob_soval1 = int_out[1];
   *ob_soval2 = int_out[2];

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 48 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 3 # Einträge in int_out
control+6 control[3] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_smode
int_in+2 int_in[1] ob_swhich
int_in+4 int_in[2] ob_sival1
int_in+6 int_in[3] ob_sival2
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ob_soval1
int_out+4 int_out[2] ob_soval2

8.16.10 objc_wchange

Name: »Object window change« - verändert die Darstellung eines Objekts innerhalb der angegebenen Grenzen.
AES-Nummer: 61
Deklaration: void objc_wchange ( OBJECT *ob_ctree, int16_t ob_cobject, int16_t ob_cnewstate, GRECT *clip, int16_t whandle );
Beschreibung: Die Funktion ändert den Status eines Objektes und zeichnet es ggfs. neu. Es gilt:

Parameter Bedeutung
ob_ctree Adresse des Objektbaumes
ob_cobject Nummer des betreffenden Objektes
ob_cnewstate neuer Status des Objektes
clip begrenzendes Clipping-Rechteck
whandle Kennung des Fensters


Hinweis: Ein Aufruf dieser Funktion ist äquivalent zu objc_change (ohne Neuzeichnen) mit einem anschließendem objc_wdraw.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: Die Funktion steht in MagiC ab Version 5.10 zur Verfügung.
Gruppe: Objekte
Querverweise: Binding   objc_change   OBJECT

8.16.10.1 Bindings für objc_wchange

C: void objc_wchange ( OBJECT *ob_ctree, int16_t ob_cobject, int16_t ob_cnewstate, GRECT *clip, int16_t whandle );
Umsetzung:
void objc_wchange (OBJECT *ob_ctree, int16_t ob_cobject,
                   int16_t ob_cnewstate, GRECT *clip,
                   int16_t whandle)
{
   int_in[0]  = ob_cobject;
   int_in[1]  = ob_cnewstate;
   int_in[2]  = whandle;

   addr_in[0] = ob_ctree;
   addr_in[1] = clip;

   crys_if(61);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 61 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_cobject
int_in+2 int_in[1] ob_cnewstate
int_in+4 int_in[2] whandle
addr_in addr_in[0] ob_ctree
addr_in+4 addr_in[1] clip

8.16.11 objc_wdraw

Name: »Object window draw« - zeichnet ein Objekt im Fenster.
AES-Nummer: 60
Deklaration: void objc_wdraw ( OBJECT *ob_drtree, int16_t ob_drstart, int16_t ob_drdepth, GRECT *clip, int16_t whandle );
Beschreibung: Die Funktion stellt Objekte (oder Teile von Objekten) auf dem Bildschirm dar. Es gilt:
Parameter Bedeutung
   
ob_drtree Adresse des Objektbaumes
ob_drstart Nummer des ersten zu zeichnenden Objektes
ob_drdepth Anzahl der zu zeichnenden Ebenen (0 = nur das erste Objekt)
clip begrenzendes Clipping-Rechteck
whandle Kennung des Fensters


Hinweis: Über die Parameter kann ein Rechteck angegeben werden, auf das sich die Darstellung beschränken soll (Clipping). Besitzt clip den Wert NULL, so beschränkt sich der Zeichenbereich auf den Arbeitsbereich des Fensters.

Die Funktion entspricht im wesentlichen objc_draw mit dem Unterschied, dass hier die Rechteckliste eines Fensters beachtet wird.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: Die Funktion steht in MagiC ab Version 5.10 zur Verfügung.
Gruppe: Objekte
Querverweise: Binding   objc_draw   OBJECT

8.16.11.1 Bindings für objc_wdraw

C: void objc_wdraw ( OBJECT *ob_drtree, int16_t ob_drstart, int16_t ob_drdepth, GRECT *clip, int16_t whandle );
Umsetzung:
void objc_wdraw (OBJECT *ob_drtree, int16_t ob_drstart,
                 int16_t ob_drdepth, GRECT *clip,
                 int16_t whandle)
{
   int_in[0]  = ob_drstart;
   int_in[1]  = ob_drdepth;
   int_in[2]  = whandle;

   addr_in[0] = ob_drtree;
   addr_in[1] = clip;

   crys_if(60);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 60 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_drstart
int_in+2 int_in[1] ob_drdepth
int_in+4 int_in[2] whandle
addr_in addr_in[0] ob_drtree
addr_in+4 addr_in[1] clip

8.16.12 objc_wedit

Name: »Object window edit« - editiert einen Text in einem Objekt.
AES-Nummer: 65
Deklaration: int16_t objc_wedit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind, int16_t whandle );
Beschreibung: Die Funktion ermöglicht Texteingaben in Objekte des Typs G_FTEXT oder G_FBOXTEXT. Es gilt:
Parameter Bedeutung
   
ob_edtree Adresse des Objektbaumes
ob_edobject Nummer des zu editierenden Objektes
ob_edchar eingegebenes Zeichen
ob_edidx Position des Zeichens im String
ob_edkind Funktionsauswahl, wie folgt:
0 = reserviert
1 = formatierten String berechnen, und Cursor einschalten
2 = Zeichen verarbeiten und String anschließend neu anzeigen
3 = Cursor ausschalten
103 = Analog Modus-3, jedoch wird der Cursor im XOR-Modus gezeichnet.
whandle Kennung des Fensters


Hinweis: Die Funktion entspricht im Prinzip objc_edit mit dem Unterschied, dass hier die Rechteckliste eines Fensters beachtet wird.
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: Die Funktion steht in MagiC ab Version 5.10 zur Verfügung.
Gruppe: Objekte
Querverweise: Binding   objc_edit   OBJECT   TEDINFO

8.16.12.1 Bindings für objc_wedit

C: int16_t objc_wedit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind, int16_t whandle );
Umsetzung:
int16_t objc_wedit (OBJECT *ob_edtree, int16_t ob_edobject,
                    int16_t ob_edchar, int16_t *ob_edidx,
                    int16_t ob_edkind, int16_t whandle)
{
   int_in[0] = ob_edobject;
   int_in[1] = ob_edchar;
   int_in[2] = *ob_edidx;
   int_in[3] = ob_edkind;
   int_in[4] = whandle;

   addr_in[0] = ob_edtree;

   crys_if (65);

   *ob_edidx = int_out[1];
   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 65 # Opcode der Funktion
control+2 control[1] 5 # Einträge in int_in
control+4 control[2] 2 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_edobject
int_in+2 int_in[1] ob_edchar
int_in+4 int_in[2] ob_edidx
int_in+6 int_in[3] ob_edkind
int_in+8 int_in[4] whandle
addr_in addr_in[0] ob_edtree
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ob_edidx

8.16.13 objc_xedit

Name: »Object edit« - editiert einen Text in einem Objekt.
AES-Nummer: 46
Deklaration: int16_t objc_xedit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind, GRECT *r );
Beschreibung: Die Funktion ermöglicht Texteingaben in Objekte des Typs G_FTEXT oder G_FBOXTEXT. Es gilt:
Parameter Bedeutung
   
ob_edtree Adresse des Objektbaumes
ob_edobject Nummer des zu editierenden Objektes
ob_edchar eingegebenes Zeichen
ob_edidx Position des Zeichens im String
ob_edkind Funktionsauswahl, wie folgt:
  0 reserviert
  1 formatierten String berechnen, und Cursor einschalten
  2 Zeichen verarbeiten und String anschließend neu anzeigen
  3 Cursor ausschalten
103 Analog Modus-3, jedoch wird der Cursor im XOR-Modus gezeichnet. Zusätzlich muß jedoch Zeiger auf ein GRECT übergeben werden, auf das die Ausgabe beschränkt wird; wichtig für den Redraw im Fenster.
r siehe ob_edkind
Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird.
Verfügbar: ab MagiC Version 2.0
Gruppe: Objekte
Querverweise: Binding   objc_wedit   OBJECT   TEDINFO   objc_edit

8.16.13.1 Bindings für objc_xedit

C: int16_t objc_xedit ( OBJECT *ob_edtree, int16_t ob_edobject, int16_t ob_edchar, int16_t *ob_edidx, int16_t ob_edkind, GRECT *r );
Umsetzung:
int16_t objc_xedit (OBJECT *ob_edtree, int16_t ob_edobject,
                    int16_t ob_edchar, int16_t *ob_edidx,
                    int16_t ob_edkind, GRECT *r)
{
   int_in[0]  = ob_edobject;
   int_in[1]  = ob_edchar;
   int_in[2]  = *ob_edidx;
   int_in[3]  = ob_edkind;
   addr_in[0] = ob_edtree;
   addr_in[1] = r;

   crys_if (46);

   *ob_edidx = int_out[1];
   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 46 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 2 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_edobject
int_in+2 int_in[1] ob_edchar
int_in+4 int_in[2] ob_edidx
int_in+6 int_in[3] ob_edkind
addr_in addr_in[0] ob_edtree
addr_in+4 addr_in[1] r
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ob_edidx

8.16.14 objc_xfind

Name: »Object xfind« - ermittelt, welches Objekt sich an der angegebenen Bildschirmposition befindet.
AES-Nummer: 49
Deklaration: int16_t objc_xfind ( OBJECT *ob_ftree, int16_t ob_fstartob, int16_t ob_fdepth, int16_t ob_fmx, int16_t ob_fmy );
Beschreibung: Die Funktion bestimmt das Objekt, welches sich unter dem Mauszeiger befindet. Es gilt:
Parameter Bedeutung
   
ob_ftree Adresse des Objektbaumes
ob_fstartob Nummer des Objektes, bei dem die Suche beginnen soll
ob_fdepth Anzahl der Ebenen, die durchsucht werden sollen (0 = nur Mutterobjekt)
ob_fmx x-Koordinate
ob_fmy y-Koordinate der Bildschirmposition


Hinweis: Der Unterschied zu objc_find besteht darin, daß statt dem normalen Objektrechteck das umfassende Objektrechteck benutzt wird. Bei dieser Funktion wird also auch der Rahmen des Objektes beachtet.
Ergebnis: Als Ergebnis wird die Nummer des entsprechenden Objektes (oder -1 für 'nicht gefunden') zurückgegeben.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 5) erfragt werden.
Gruppe: Objekte
Querverweise: Binding   OBJECT   objc_find

8.16.14.1 Bindings für objc_xfind

C: int16_t objc_xfind ( OBJECT *ob_ftree, int16_t ob_fstartob, int16_t ob_fdepth, int16_t ob_fmx, int16_t ob_fmy );
Umsetzung:
int16_t objc_xfind (OBJECT *ob_ftree, int16_t ob_fstartob,
                    int16_t ob_fdepth, int16_t ob_fmx,
                    int16_t ob_fmy)
{
   int_in[0]  = ob_fstartob;
   int_in[1]  = ob_fdepth;
   int_in[2]  = ob_fmx;
   int_in[3]  = ob_fmy;
   addr_in[0] = ob_ftree;

   return ( crys_if(49) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 49 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ob_fstartob
int_in+2 int_in[1] ob_fdepth
int_in+4 int_in[2] ob_fmx
int_in+6 int_in[3] ob_fmy
addr_in addr_in[0] ob_ftree
int_out int_out[0] Return-Wert

HomeAESMenüfunktionenResourcefunktionen