Definition und Abfrage von ItemRef-Objekten.
Definition und Abfrage von ItemRef-Objekten.
Bitte beachten Sie den Unterschied zwischen der Adresse des ItemRef-Objektes und seiner UID: Die Adresse ist die Position des ItemRef-Objektes im Arbeitsspeicher. So eine Adresse (aber noch keine UID) erhalten Sie mit item::alloc, gFrame hat bereits eine. Die UID dagegen steht (zusammen mit einigen anderen Daten) an der Adresse und InDesign kann aus dieser Nummer das referenzierte Objekt ableiten.
static ItemRef item::alloc(ItemRef org = 0)
Reserviere Speicherplatz für ein InDesign®-Objekt. Das erzeugte ItemRef ist damit noch nicht mit einem InDesign®-Objekt verbunden. Mit alloc erzeugte ItemRefs müssen mit item::release wieder gelöscht werden.
Bitte beachten Sie den Unterschied zwischen der Adresse des ItemRef-Objektes und seiner UID: Die Adresse ist die Position des ItemRef-Objektes im Arbeitsspeicher. So eine Adresse (aber noch keine UID) erhalten Sie mit item::alloc, gFrame hat bereits eine. Die UID dagegen steht (zusammen mit einigen anderen Daten) an der Adresse und InDesign kann aus dieser Nummer das referenzierte Objekt ableiten.
Name | Typ | Default | Beschreibung |
Return | ItemRef | Neu erzeugter leerer Verweis auf ein InDesign®-Objekt | |
org | ItemRef | 0 | Original 0 : Erzeuge ein neues leeres ItemRef-Objekt sonst : Lege eine Kopie des Originales an. ItemRefs verweisen im Normalfall auf InDesign®-Objekte. Natürlich wird hier nur der Verweis kopiert, nicht das Objekt selbst. |
ItemRef frameRef = item::alloc ();
static ItemRef item::assign(ItemRef dest, ItemRef src)
übernehme den Inhalt eines ItemsRefs in ein anderes ItemRef. Der Inhalt der Variable src wird in dest kopiert. ItemRefs verweisen im Normalfall auf InDesign®-Objekte. Natürlich wird hier nur der Verweis kopiert, nicht das referenzierte InDesign-Objekt selbst.
Bitte beachten Sie den Unterschied zwischen der Adresse des ItemRef-Objektes und seiner UID: Die Adresse ist die Position des ItemRef-Objektes im Arbeitsspeicher. So eine Adresse (aber noch keine UID) erhalten Sie mit item::alloc, gFrame hat bereits eine. Die UID dagegen steht (zusammen mit einigen anderen Daten) an der Adresse und InDesign kann aus dieser Nummer das referenzierte Objekt ableiten.
Name | Typ | Default | Beschreibung |
Return | ItemRef | dest oder 0 im Fehlerfall | |
dest | ItemRef | - | Ziel der Zuweisung |
src | ItemRef | - | Original |
static int item::define(
ItemRef dest,
ItemRef srcDB,
int UID,
int checkIfExists = 1)
Definiere eine Referenz auf ein InDesign-Objekt.
Bitte beachten Sie den Unterschied zwischen der Adresse des ItemRef-Objektes und seiner UID: Die Adresse ist die Position des ItemRef-Objektes im Arbeitsspeicher. So eine Adresse (aber noch keine UID) erhalten Sie mit item::alloc. Die UID dagegen steht (zusammen mit einigen anderen Daten) an der Adresse und InDesign kann daraus das referenzierte Objekt ableiten.
[seit v4.3 R34250, 2. Feb 2024] Ist dest gleich gDocument, wird automatisch das aktuelle Dokument des Skriptes angepaßt. In diesem Fall muß uid unbedingt den Wert 1 haben! Unten finden Sie ein Beipiel.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode. | |
dest | ItemRef | - | Zielreferenz |
srcDB | ItemRef | - | Geben Sie hier ein beliebiges (aber gültiges) Objekt des Dokumentes an, in dem auch ihr Zielobjekt liegt.
Geeignet ist dafür etwa gFrame. 0 : Versuche das Dokument über die Skriptumgebung zu ermitteln:
|
uid | int | - | Objekt-ID |
checkIfExists | int | 1 | Prüfe vor der Zuweisung, ob ein Objekt mit der gegebenen UID überhaupt existiert. 1 : Ja, prüfen 0 : Nein, immer setzen |
Teste einen Bereich von UIDs des aktuellen Dokumentes.
int main () { int i; ItemRef ref = item::alloc ();
for (i = 200; i < 301; i++) { item::define (ref, gFrame, i); wlog ("", "# UID %d : %d, 0x%X'\n", i, item::exists (ref), item::get_class (ref)); }
return 0; }
Die UID 1 bezeichnet immer das Dokument. Das Beispiel erzeugt eine ItemRef des Dokumentes des aktuellen Skriptrahmens und zeigt den Dokumentnamen.
int main () { ItemRef docRef = item::alloc (); char docName [4000];
item::define (docRef, gFrame, 1); document::name (docName, docRef); showmessage (docName);
return 0; }
Passe gDocument an das aktuelle Front-Dokument an.
int front_doc_changed () { ItemRef docRef = document::get_front ();
item::define (gDocument, docRef, 1); item::release (docRef);
return 0; }
static int item::release(ItemRef itm)
Der reservierte Speicher eines Objektverweises wird wieder freigegeben. Das Zielobjekt des Verweise bleibt durch diese Aktion natürlich unberührt.
Name | Typ | Default | Beschreibung |
itm | ItemRef | - | Freizugebender Verweis |
ItemRef frameRef = item::alloc (); : item::release (frameRef);
static int item::fitframe(
ItemRef ref,
int refPoint = 0,
float* width = 0,
float* height = 0)
Passe den Rahmen, auf den der Verweis zeigt, an seinen Inhalt an. In den optionalen Parametern width und height kann die neue Größe des Rahmens erfragt werden. Neue Parameter refPoint seit Version 1.4, R142, 4. Aug. 2006!
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
ref | ItemRef | - | Verweis auf einen Dokumentrahmen |
refPoint | int | kRefPointTopLeft | Welche Ecke des Ursprungs-Rahmens soll bei der Skalierung festgehalten werden? Beachten Sie dabei,
dass Textrahmen nur in ihrer Höhe geändert werden und dass Inlinerahmen immer an der rechten unteren Ecke festgehalten werden. kRefPointTopLeft kRefPointTopCenter kRefPointTopRight kRefPointLeftCenter kRefPointCenter kRefPointRightCenter kRefPointBottomLeft kRefPointBottomCenter kRefPointBottomRight Um Rahmen an das enthaltene Bild anzupassen, verwenden Sie die Funktion frame::fit_image mit der Methode 3. |
width | float* | 0 | Neue Breite des Rahmens, Rückgabewert |
height | float* | 0 | Neue Höhe des Rahmens, Rückgabewert |
ItemRef frame = item::alloc (); document::find_frame (frame, 1, 1, 3, 4);
if (!item::defined (frame)) { item::release (frame); showmessage ("Rahmen nicht gefunden"); return 1; } item::fitframe (frame); item::release (frame);
static int item::defined(ItemRef ref)
Zeigt die Referenz auf ein gültiges Objekt?
ItemRefs können auf beliebige Objekte wie Rahmen, Tabellen, Dokumente, ... verweisen. Die Abfrage defined beantwortet lediglich, ob die Referenz überhaupt auf etwas zeigt. In den meisten Fällen reicht das aus. Wenn Sie sicher prüfen wollen, ob ein ItemRef auf einen gültigen Dokumentrahmen, eine gültige Tabelle zeigt, Bookmark, ... zeigt, verwenden Sie die entsprechende is_valid Methode. Mit get_class können Sie zudem die eindeutige Klassen-ID des Objektes ermitteln.
Name | Typ | Default | Beschreibung |
Return | int | != 0 das Objekt ist definiert, == 0 kein Objekt | |
ref | ItemRef | - | Verweis auf einen Dokumentrahmen |
ItemRef frame = item::alloc (); document::find_frame (frame, 1, 1, 3, 4);
if (!item::defined (frame)) { item::release (frame); showmessage ("Rahmen nicht gefunden"); return 1; } item::fitframe (frame); item::release (frame);
static int item::getint(ItemRef ref)
UID der Referenz. Informationen zu UIDs finden Sie hier.
Bitte beachten Sie den Unterschied zwischen der Adresse des ItemRef-Objektes und seiner UID: Die Adresse ist die Position des ItemRef-Objektes im Arbeitsspeicher. So eine Adresse (aber noch keine UID) erhalten Sie mit item::alloc, gFrame hat bereits eine. Die UID dagegen steht (zusammen mit einigen anderen Daten) an der Adresse und InDesign kann aus dieser Nummer das referenzierte Objekt ableiten.
Name | Typ | Default | Beschreibung |
Return | int | UID der Referenz als Ganzzahl | |
ref | ItemRef | - | Verweis auf eine Dokumentreferenz |
static int item::exists(ItemRef ref)
Prüfe, ob eine Referenz auf ein gültiges Objekt im Dokument verweist.
ItemRefs können auf beliebige Objekte wie Rahmen, Tabellen, Dokumente, ... verweisen. Die Abfrage exist beantwortet lediglich, ob die Referenz auf ein gültiges Objekt zeigt. In den meisten Fällen reicht das aus. Wenn Sie sicher prüfen wollen, ob ein ItemRef auf einen gültigen Dokumentrahmen, eine gültige Tabelle zeigt, Bookmark, ... zeigt, verwenden Sie die entsprechende is_valid Methode. Mit get_class können Sie zudem die eindeutige Klassen-ID des Objektes ermitteln.
Name | Typ | Default | Beschreibung |
Return | int | 0 : Nein 1 . Ja, das Objekt exisitiert. |
|
ref | ItemRef | - | beliebige Referenz |
Teste einen Bereich von UIDs des aktuellen Dokumentes.
int main () { int i; ItemRef ref = item::alloc ();
for (i = 200; i < 301; i++) { item::define (ref, gFrame, i); wlog ("", "# UID %d : %d, 0x%X'\n", i, item::exists (ref), item::get_class (ref)); }
return 0; }
static int item::get_class(ItemRef ref)
Ermittle die Klassen-ID eines Dokument-Objektes. Diese IDs werden von Adobe vergeben. Es gibt Tausende davon. Hier eine kleine Zusammenstellung der häufigsten Objektklassen und ihrer IDs.
ClassID | Name |
0xe01 | kDocBoss |
0x501 | kSpreadBoss |
0x50F | kPageBoss |
0x1401 | kMasterPagesBoss |
0x302 | kDocumentLayerBoss |
0x301 | kSpreadLayerBoss |
0x201 | kTextStoryBoss |
0x2c0f | kPageItemBoss |
0x263 | kMultiColumnItemBoss |
0x227 | kFrameItemBoss |
0x2c10 | kDrawablePageItemBoss |
0x6201 | kSplineItemBoss - Alle gewöhnlichen Dokumentrahmen haben diese Klasse. |
0x1701 | kImageBaseItem |
0x1702 | kImageItem |
0x2501 | kPlacedPDFItemBoss |
0x660b | kEPSTextItemBoss |
0x6611 | kDisplayListPageItemBoss |
0x6601 | kEPSItem |
0x6602 | kPICTItem |
0x6603 | kWMFItem |
0x660f | kDCSItemBoss |
0x401 | kGroupItemBoss - Das sind InDesign®-Gruppen. |
0xb320 | kTOPSplineItemBoss - Text auf einem Pfad |
0x3301 | kGuideItemBoss |
0x262 | kInlineBoss - Inline-Rahmen |
0xb318 | kTOPFrameItemBoss |
0x10001 | kBookBoss |
0x1354C | kBookmarkBoss |
0x13501 | kHyperlinkBoss |
0xb603 | kTableItemBoss |
0xb608 | kTableModelBoss |
0x8c42 | kImportLinkBoss - Bilder |
0x8c44 | kBidirectionalLinkBoss - Verlinkte Texte (InCopy) |
0x145D8 | kMultiStateObjectItemBoss - Objektstatus |
0x1450C | kPushButtonItemBoss - Buttons |
0x14509 | kFormFieldContentItemBoss |
0x1450A | kFormFieldItemBoss |
0x1450B | kAppearanceFormItemBoss |
0x1450D | kCheckBoxItemBoss |
0x1450E | kRadioButtonItemBoss |
0x1450F | kTextFieldItemBoss |
0x14510 | kListBoxFieldItemBoss |
0x14511 | kComboBoxItemBoss |
0x14512 | kSignatureFieldItemBoss |
Name | Typ | Default | Beschreibung |
Return | int | ClassID des Objektes oder 0 wenn das Objekt nicht existiert. | |
ref | ItemRef | - | beliebige Referenz |
Teste einen Bereich von UIDs des aktuellen Dokumentes.
int main () { int i; ItemRef ref = item::alloc ();
for (i = 200; i < 301; i++) { item::define (ref, gFrame, i); wlog ("", "# UID %d : %d, 0x%X'\n", i, item::exists (ref), item::get_class (ref)); }
return 0; }
Alphabetic index HTML hierarchy of classes or Java