Das Modul bearbeitet Dokumentrahmen von InDesign®-Dokumenten.

Allgemeine Beispiele zur Verwendung der Klasse frame finden sie hier.

Letzte Änderung :
30.06.2025, 17:48 Uhr

Das Modul bearbeitet Dokumentrahmen von InDesign®-Dokumenten. Zusätzlich zu den manuell über InDesign®-Menübefehle verfügbaren Funktionen sind einige weitere Funktionen implementiert, die nicht direkt über InDesign® ausgelöst werden können.

static int frame::is_valid(ItemRef itemRef)

Zeigt die Referenz auf einen gültigen Dokumentrahmen?

Name Typ Default Beschreibung
Return int   1 : Die Referenz zeigt auf einen gültigen und existierenden Dokumentrahmen.

0 : Die Referenz ist ungültig und darf nicht als Rahmen verwendet werden.
itemRef ItemRef - Beliebige Referenz oder 0

Ist der aktuelle Skriptrahmen gFrame eine existierende und gültige Rahmenreferenz?

int main ()
{
    if (frame::is_valid (gFrame)) showmewssage ("Das Skript arbeitet auf einem gültigen Rahmen.");
    else showmewssage ("Der aktuelle Skriptrahmen %d ist undefiniert oder existiert nicht mehr.", item::getint (gFrame));
    return 0;
}

Version 1.4.1 R383, 28. Juni 2007

priint:comet InDesign® Plug-Ins, Illustrator

item::defined
comet.CPageItem.isValid

static int frame::create(
  ItemRef itemref,
  int type,
  float l,
  float t,
  float r,
  float b,
  int page,
  char* layer ="",
  int columns = 1,
  int vertical = 0,
  float gutter = 0.0,
  ...)

Erzeuge einen neuen Rahmen oder eine Linie. Ist ein Ebenenname angegeben, wird der Rahmen auf dieser Ebene angelegt. Ist eine Spaltenzahl größer 0 angegeben, wird der Rahmen als Textrahmen mit dem Spaltenabstand gutter angelegt. Ist der Spaltenabstand kleiner 0, wird der Defaultabstand von InDesign® verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Mit item::alloc erzeugte Referenz. Konnte der Rahmen angelegt werden, enthält die Variable nach Ausführung eine gültige Referenz auf den neu angelegten Rahmen.
type int - Rahmentyp
kRectangle
kOval
kPolygon
kStar
kSpline
kLine

Von comet_pdf werden nur rechteckige Rahmen unterstützt!

l, t, r, b float - Rahmenrechteck in Punkten. Die Koordinaten gelten relativ zum Druckrand, nicht zum Seitenrand. Für Positionsangaben relativ zum Seitenrand verwenden Sie die Funktion create2.
page int - 1-basierte Seitennummer (siehe page::get). Die Seite muß existieren.
layerName String oder char* "" Name der Zielebene

"" : Aktuell ausgewählte Ebene (InDesign) bzw. letzte mit layer::select gewählte Ebene (InDesign Server und comet_pdf)

Sonst : Name einer existierenden Ebene
columns int 1 Spaltenanzahl. Ist die Spaltenzahl größer 0, wird der Rahmen automatisch als Textrahmen angelegt. Für Linien (type = kLine) wird die Angabe ignoriert.
vertical int 0 Textorientierung.

0 : horizontal
1 : vertikal

Für Linien (type = kLine) wird die Angabe ignoriert.
gutter float -1.0 Spaltenabstand
-1.0 : Verwende den voreingestellten Spaltenabstand von InDesign®

Für Linien (type = kLine) wird die Angabe ignoriert.
⇨type = kPolygon
sides int - Anzahl der Polygonseiten
⇨type = kStar
edges int - Anzahl der Spitzen
inset int - Länge der Spitzen in Prozent
⇨type = kSpline
type, x, y, ... int, float, ... - Kurvenbeschreibung bestehend aus einer beliebigen Anzahl von Stützpunkten im folgenden Format (Die Beschreibung der Punkt-Typen ist 1:1 der InDesign-Doku von Adobe entnommen.) :

Anchor point with continuing tangent :
kCS, x, y, leftDirX, leftDirY, rightDirX, rightDirY

Anchor point with unsmooth curve point, left->right tangent discontinue. (The start curve point of an open path is of type "kCK".) :
kCK, x, y, leftDirX, leftDirY, rightDirX, rightDirY

Anchor point with both tangent degenerated. (Two consecutive kL type points form a line.) :
kL, x, y

Splines werden automatisch in den Rahmen (l, t, r, b) skaliert. Um das Objekt in Originalgröße zu erhalten, setzen Sie die Rahmengröße auf 0 (r = l und b = t).

Sie können sich die Stützpunkte natürlich selbst ausdenken - und sich überraschen lassen. Brauchbare Stützpunkte zu erhalten Sie auf folgende einfache Weise:

  1. Erzeugen Sie das Objekt manuell in InDesign®.
  2. Ziehen Sie das fertige Objekt mit der Maus auf Ihren Desktop. Auf dem Desktop entsteht dabei eine Datei Snippet_NNN.idms.
  3. Öffnen Sie die Snippet-Datei Snippet_NNN.idms in einem beliebigen Texteditor.
  4. Suchen Sie in der Snippet-Datei nach dem Wort <PathPointArray>.

In Versionen vor v4.2 R33520 können keine Splines definiert werden und die bis dahin verwendete Syntax -1000000.1 bzw. -1000000.2 (statt kCS, ...) zur Unterscheidung der Punkt-Typen ist wirkungslos.

#include "internal/types.h"

Auf dem Layer Ebene 3 der zweiten Seite wird ein neuer Textrahmen in Form eines 5-zackigen Sternes angelegt. Danach wird der Rahmen mit einer Linie durchgestrichen. Farbe und Gestaltung von Linien können mit den gleichen Funktionen gesetzt werden, die auch bei Rahmen verwendet werden. Das abgerundete Ende der Durchstreichung wird in frame::color gesetzt - wo es eigentlich nicht ganz hingehört aber stroke hat schon so viele Parameter.

#include "internal/types.h"
int main () { ItemRef frame = item::alloc (); int result;
result = frame::create (   frame,   kStar,   10.0, 210.0, 300.0, 400.0,   2, // Seite   "Ebene 3", // Ebenenname   1, // Spaltenanzahl   0, // vertikale Spalten   12.3, // Spaltenabstand   13, 40 // Seiten und Spitzenlänge   ); if (result != 0) { showmessage ("Fehler %d",result); item::release (frame); return 1; }
result = frame::create (frame,   kLine,   10.0, 210.0, 300.0, 400.0,   2, // Seite   "Ebene 3" // Ebenenname   );
frame::stroke_rgb (frame, 255, 0, 0, 20.0); frame::color (frame, "", 1, 1);
item::release (frame); return 0; }

Erzeuge eine einfachen Spline in Originalgröße.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc ();
frame::create (   fr, // the new created frame   kSpline, // type   0.0, 0.0, 0.0, 0.0, // bbox   1, "", // page num and layer   1, // columns   0, // text orientation   -1.0, // gutter   kCS, 103.37085648896758, -226.77165354330714, 50.929911606987304, -222.51968503937013, 155.81180137094785, -231.02362204724415,   kCS, 116.12676200077863, -58.11023622047246, 175.65432105589673, -102.0472440944882, 56.59920294566052, -14.17322834645671,   kCS, 29.67006908739279, -113.38582677165356, -8.597647448040284, -55.27559055118111, 67.93778562282587, -171.49606299212599);
return 0; }

kCS, kCK und kL seit v4.2 R33520.

priint:comet InDesign® Plug-Ins, comet_pdf

create_textframe
document::pages
document::page
layer

static int frame::create2(
  ItemRef itemref,
  int type,
  float l,
  float t,
  float r,
  float b,
  int page,
  char* layer ="",
  int columns = 1,
  int vertical = 0,
  float gutter = 0.0,
  ...)

Anlegen eines neuen Dokumentrahmens relativ zum Seitenrand. Die Funktion ist vollständig identisch zur Funktion create, mit dem einzigen Unterschied, dass Rahmen nicht relativ zum Druckrand sondern relativ zum Seitenrand angelegt werden.

#include "internal/types.h"

Version 1.3.4 (P/R 74)

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::duplicate(
  ItemRef resultFrame,
  ItemRef srcFrame,
  float x,
  float y,
  ItemRef docRef = 0,
  int pageNum = -1,
  char* layername = 0,
  int addToCometgroup = 0)

Dupliziere einen bestehenden Dokumentrahmen. Der Rahmen kann in ein beliebiges geöffnetes Dokument kopiert werden

Der neue Rahmen gehört standardmäßig zu keiner Cometgruppe. Soll er zur selben Cometgruppe wie das Orignal gehören, muss der Parameter addToCometgroup auf 1 gesetzt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultFrame ItemRef - Referenz auf den neu angelegten Rahmen

0 : Ignoriere Ergebnis
sonst : mit item::alloc reservierte Referenz für den neuen Rahmen
srcFrame ItemRef - Gültige Referenz auf den Rahmen, der kopiert werden soll
x, y float - Position des neuen Rahmens (seitenrelativ und in Punkten)
docRef ItemRef 0 Zieldokument

0 : Selbes Dokument wie srcFrame
pageNum int -1 Zielseite

<=0 : Selbe Seite wie srcFrame
Sonst : 1-basierte Seitennummer. Die Seite muß existieren.
layerName String oder char* "" Zielebene

"" : Selbe Ebene wie srcFrame Sonst : Name einer existierenden Ebene
addToCometgroup int 0 Soll der neue Rahmen zur Cometgruppe des Originales hinzugefügt werden?

0 : Nein, der Rahmen soll keine Cometgruppe haben
1 : Ja, zur Cometgruppe des Originales hinzufügen. Wird in ein anderes Dokument dupliziert, hat der Parameter keine Wirkung!
int main ()
{
    int		res;
    ItemRef	resref	= item::alloc ();
res = frame::duplicate (resref, gFrame, 10.0, 10.0); wlog ("", "duplicate result : %d (%d --> %d)\n",   res, item::getint (gFrame), item::getint (resref));
item::release(resref);
return 0; }

Version 2.1 R 679, 22. April 2008
Parameter addToCometgroup seit Version v3.3 R3005, 22. Mai 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CFrame.duplicate

static int frame::create_textframe(
  ItemRef itemref,
  int l,
  int t,
  int r,
  int b,
  int page,
  char* layer ="",
  int columns = 1,
  float gutter = 0.0,
  int vertical = 0)

Erzeuge einen neuen Textrahmen. Ist ein Ebenenname angegeben, wird der Rahmen auf dieser Ebene angelegt. Ist eine Spaltenzahl größer 0 angegeben, werden im Rahmen automatisch Spalten mit dem Abstand *gutter* angelegt. Ist der Abstand kleiner 0, wird der Defaultabstand von InDesign® verwendet.

Gehört der Skriptrahmen zu einer Cometgruppe und liegt auf dem selben Druckbogen (Spread) wie der neue Rahmen, wird der neu angelegte Rahmen automatisch dieser Gruppe zugeordnet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - mit item::alloc erzeugte Referenz
l, t, r, b int - Rahmenrechteck in Punkten. Die Koordinaten gelten relativ zum Druckrand, nicht zum Seitenrand.
page int - 1-basierte Seitennummer
layerName String oder char* "" Name der Zielebene

"" : Aktuell ausgewählte Ebene (InDesign) bzw. letzte mit layer::select gewählte Ebene (InDesign Server und comet_pdf)

Sonst : Name einer existierenden Ebene
columns int 1 Spaltenanzahl
gutter float InDesign®-Einstellung Spaltenabstand
vertical int 0 Textorientierung

0 : horizontal
1 : vertikal

Lege auf dem zweiten Layer der ersten Seite einen neuen einspaltigen Rahmen an

int		pg  	= 1;
ItemRef	frame  	= item::alloc ();
char	layerName[256];
int		result;
result = frame::create_textframe (   frame,   10, 10, 200, 200,   pg,   layer::name (2, layerName));


priint:comet InDesign® Plug-Ins, comet_pdf

create_textframe_f
document::pages
document::page
layer
comet.frame.createTextFrame

static int frame::create_textframe_f(
  ItemRef itemref,
  float l,
  float t,
  float r,
  float b,
  int page,
  char* layer ="",
  int columns = 1,
  float gutter = 0.0,
  int vertical = 0)

Erzeuge einen neuen Textrahmen. Position- und Größenangaben werden als float-Zahlen gegeben. Ist ein Ebenenname angegeben, wird der Rahmen auf dieser Ebene angelegt. Ist eine Spaltenzahl größer 0 angegeben, werden im Rahmen automatisch Spalten mit dem Abstand *gutter* angelegt. Ist der Abstand kleiner 0, wird der Defaultabstand von InDesign® verwendet.

Gehört der Skriptrahmen zu einer Cometgruppe und liegt auf dem selben Druckbogen (Spread) wie der neue Rahmen, wird der neu angelegte Rahmen automatisch dieser Gruppe zugeordnet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - mit item::alloc erzeugte Referenz
l, t, r, b float - Rahmenrechteck in Punkten. Die Koordinaten gelten relativ zum Seitenrand.
page int - 1-basierte Seitennummer. Die Seite muß existieren.
layer String oder char* "" Name der Zielebene

"" : Aktuell ausgewählte Ebene (InDesign) bzw. letzte mit layer::select gewählte Ebene (InDesign Server und comet_pdf)

Sonst : Name einer existierenden Ebene
columns int 1 Spaltenanzahl
gutter float InDesign®-Einstellung Spaltenabstand
vertical int 0 Textorientierung

0 : horizontal
1 : vertikal

Lege auf dem zweiten Layer der aktuellen Seite einen neuen einspaltigen Rahmen an

ItemRef		frame  	= item::alloc ();
char		layerName[256];
int			result;
result = frame::create_textframe_f (   frame,   10.0, 10.0, 200.5, 200.5,   document::page (),   layer::name (2, layerName));

Parameter vertical seit v4.0.5 R12346, 29. Jul 2016

priint:comet InDesign® Plug-Ins, comet_pdf

create_textframe_f
document::pages
document::page
layer
comet.frame.createTextFrame

static int frame::create_subtextframe(
  ItemRef itemRef,
  int l,
  int t,
  int r,
  int b,
  ItemRef parent,
  int columns = 1,
  float gutter = 0.0,
  int vertical = 0)

Erzeuge einen neuen Textrahmen als Unterrahmen eines anderen Rahmens. Ist eine Spaltenzahl größer 0 angegeben, werden im Rahmen automatisch Spalten mit dem Abstand *gutter* angelegt. Ist der Abstand kleiner 0, wird der Defaultabstand von InDesign® verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - mit item::alloc erzeugte Referenz
l, t, r, b int - Rahmenrechteck in Punkten. Die Koordinaten gelten relativ zum Elternrahmen.
parent ItemRef - gültige Referenz auf einen Rahmen
columns int 1 Spaltenanzahl
gutter float InDesign®-Einstellung Spaltenabstand
vertical int 0 Textorientierung

0 : horizontal
1 : vertikal
int main ()
{
    ItemRef		frame	= item::alloc ();
    ItemRef		subframe= item::alloc ();
    char		layerName[256];
    int			result;
result = frame::create_textframe (   frame,   10, 210, 300, 400,   2,   layer::name (2, layerName)); if (result != 0) { showmessage ("Fehler %d",result); item::release (frame); return 1; }
result = frame::create_subtextframe (   subframe,   0, 0, 100, 40,   frame,   3, 8.3);
frame::select (frame); item::release (frame); item::release (subframe);
return 1; }

Parameter vertical seit v4.0.5 R12346, 29. Jul 2016

priint:comet InDesign® Plug-Ins

create_subtextframe_f
document::find_frame
document::insert_macro

static int frame::create_subtextframe_f(
  ItemRef itemRef,
  float l,
  float t,
  float r,
  float b,
  ItemRef parent,
  int columns = 1,
  float gutter = 0.0,
  int vertical = 0)

Erzeuge einen neuen Textrahmen als Unterrahmen eines anderen Rahmens. Die Funktion ist identisch zu create_subtextframe mit dem einzigen Unterschied, dass die Positions- und Größenangaben des Rahmens als Kommazahlen (float) angegeben werden können.

create_subtextframe

static int frame::bbox(
  ItemRef frameRef,
  float* left,
  float* top,
  float* right,
  float* bottom,
  int spreadRelative = 0,
  int boundsKind = 0)

Hole die Koordinaten des Rahmens. Die Funktion ermittelt die Boundingbox um den gegebenen Rahmen. Ist der Rahmen gedreht, ist dieses Rechteck größer als der eigentliche Rahmen. Verwenden Sie zur Bestimmung der eigentlichen Rahmengröße die Funktion frame::get_size.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen
left float* -  
top float* -  
right float* -  
bottom float* -  
spreadRelative int 0 Sollen die Angaben relativ zur Seite oder zum Druckbogen geholt werden?

0 : seitenrelativ
1 : relativ zum Druckbogen
boundsKind int 0 Welcher Rahmen ist gemeint?

0 : inklusive Kontur
1 : ohne Kontur

Rahmenhöhe eines Rahmen um 20.0 Punkte vergrößern. Zur Demonstration wird die aktuelle Rahmengröße ins Logfile geschrieben. Bei gedrehten Rahmen sind diese Größenangaben unterschiedlich.

int main ()
{
    float		l, t, r, b;
    float		w, h;
frame::bbox (gFrame, &l, &t, &r, &b); frame::get_size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h); frame::resize (gFrame,w, h+20.0, 0, 0);
return 0; }

Parameter spreadRelative seit v2.1, R 1750, 9. Feb. 2010
boundsKind seit v3.4 R5126, 24. Jan 2014

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

prefs::get_transform_settings
prefs::set_transform_settings
comet.frame.getBBox
comet.CPageItem.getBBox

static int frame::size(
  ItemRef frameRef,
  float* width,
  float* height,
  int = 0)

siehe frame::get_size

static int frame::get_size(
  ItemRef frameRef,
  float* width,
  float* height,
  int boundsKind = 0)

Ermittle die Größe eines Rahmens. Zur Größenberechnung wird immer die Boundingbox um die Rahmenfigur verwendet, der Rahmen selbst darf dabei gedreht oder skaliert sein. Die Angabe erfolgt ohne Anwendung von Skalierung, Scherwinkel (skew) und Drehung!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen
width float* - Nach erfolgreicher Ausführung die Breite des Rahmens in Punkten
height float* - Nach erfolgreicher Ausführung die Höhe des Rahmens in Punkten
boundsKind int 0 seit v3.4 R5126 Rahmentyp

0 : Rahmen inklusive Kontur
1 : Pfad des Rahmens ohne Kontur

Rahmenhöhe eines Rahmen um 20.0 Punkte vergrößern. Zur Demonstration wird die aktuelle Rahmengröße ins Logfile geschrieben. Bei gedrehten Rahmen sind diese Größenangaben unterschiedlich.

int main ()
{
    float		l, t, r, b;
    float		w, h;
frame::bbox (gFrame, &l, &t, &r, &b); frame::get_size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h); frame::resize (gFrame,w, h+20.0, 0, 0);
return 0; }

Version 3.2 R2255, 1. Feb. 2011
Parameter seit v3.4 R5126, 24. Jan 2014

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

prefs::get_transform_settings
prefs::set_transform_settings
comet.frame.getBBox
comet.CPageItem.getSize

static int frame::refpoint(
  ItemRef frameRef,
  int whichPoint,
  float* x,
  float* y,
  int spreadrel = 0)

Ermitteln der Koordiunaten eines Referenzpunktes eines Rahmens. Referenzpunkte sind die neun "Anfasspunkte" eines Rahmens: links-oben, oben-mitte, rechts-oben, ... .

Beachten Sie bitte, dass InDesign Rahmen auf Druckbögen (Spreads) immer der Seite zuordnet, auf der die größere Fläche der Boundingbox um den Rahmen liegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Rahmen
which int - Welchen Referenzpunkt wollen Sie ermittlen?

kRefPointTopLeft (0)
kRefPointTopCenter(1)
kRefPointTopRight(2)
kRefPointLeftCenter(3)
kRefPointCenter(4)
kRefPointRightCenter(5)
kRefPointBottomLeft(6)
kRefPointBottomCenter(7)
kRefPointBottomRight(8)
x float* - X-Koordinate des erfragten Referenzpunktes in Punkten
y float* - Y-Koordinate des erfragten Referenzpunktes in Punkten
spreadrel int 0 Koordinaten seiten- oder spread-relativ ermitteln?

0 : seiten-relativ
1 : spread-relativ

Beachten Sie bitte, dass comet_pdf max. zwei Seiten pro Spread verwalten kann.
#include "internal/types.h"

Verschiebe einen (mglw. gedrehten) Rahmen an seine aktuelle rechte untere Ecke.

int main ()
{
    float x, y;
    float x8, y8;
    float l, t, r, b;
frame::bbox (gFrame, &l, &t, &r, &b); frame::refpoint (gFrame, 0, &x, &y); frame::refpoint (gFrame, 8, &x8, &y8); frame::moveto (gFrame, x8+(x-l), y8+(y-t));
return 0; }

v4.0.5 R18123, 12. Mai 2017

priint:comet InDesign® Plug-Ins, comet_pdf

Parameter spreadrel seit v4.0.5 R20011, 24. Aug 2017
comet.CPageItem.getRefPoint

static int frame::bbox_on_creation(
  ItemRef frameRef,
  float* left,
  float* top,
  float* right,
  float* bottom)

Ermittle die Koordinaten, an denen der Rahmen ursprünglich einmal ins Dokument importiert wurde. Der Aufruf kann nur für Rahmen, die über Templates aingefügt werden, sinnvolle Werte liefern. Die Werte können verwendet werden, um die originalen Abstände von Rahmen einer Cometgruppe zu ermitteln.

Name Typ Default Beschreibung
Return int   Errorcode oder 0
frameRef ItemRef - Gültige Rahmenreferenz. Der Rahmen muss über ein Template ins Dokument importiert worden sein!
left float* -  
top float* -  
right float* -  
bottom float* -  

Version 3.1, R1550, 18. Sept. 2009

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::textlength(ItemRef frameRef, int includeTables = 0)

Ist der angegebene Rahmen ein Textrahmen, wird die Länge des Textes zurückgegeben, sonst 0. Erstreckt sich ein Text über mehrere Rahmen, wird die Länge des Textes über alle Rahmen ermittelt.

Name Typ Default Beschreibung
Return int   Länge des gesamten Textes ohne abschließendes 0-Byte oder 0, wenn die Referenz kein Textrahmen ist.
frameRef ItemRef - Rahmen, dessen Textlänge ermittelt werden soll
includeTables int 0 0 : nur (Haupt)Text
1 : Text inkl. aller Tabelleninhalte

Version 1.1.4
Parameter includeTables seit v3.4 R7022, 21. Nov. 2014

priint:comet InDesign® Plug-Ins

textmodel::fulllength

static int frame::moveto(
  ItemRef frameRef,
  float x,
  float y,
  int pg = -1,
  int action = 0,
  int suprRules = 1)

Verschiebe einen Rahmen zu einer angegebenen Position. Der Rahmen kann dabei bei auch auf eine andere Seite verschoben werden. Die linke obere Ecke der BoundingBox des Rahmens wird an die angegebene Position verschoben. Die Positionsangabe erfolgt in Punkten.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Referenz auf einen Dokumentrahmen
x float - Neue x-Position (der BoundingBox) des Rahmens in Punkten
y float - Neue y-Position (der BoundingBox) des Rahmens in Punkten
pg int -1 Seite, auf die der Rahmen verschoben werden soll. Seiten werden bei 1 beginnend gezählt.

-1 : Seite unverändert lassen
action int 0 Sollen Inhalt und Rahmen oder nur der Rahmen verschoben werden? Unbenutzt ab InDesign® CS3.

0 : Inhalt und Rahmen verschieben
1 : Nur den Rahmen verschieben
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.

Verschiebe eine Rahmenliste an eine neue Stelle. Die Rahmen behalten dabei ihre Abstände untereinander.

itemlist::apply (
 	frame::moveto, frames, 1, 0,
 	leftMargin, topMargin, newPage, 0);

Verschiebe einen (mglw. gedrehten) Rahmen an seine aktuelle rechte untere Ecke.

int main ()
{
    float x, y;
    float x8, y8;
    float l, t, r, b;
frame::bbox (gFrame, &l, &t, &r, &b); frame::refpoint (gFrame, 0, &x, &y); frame::refpoint (gFrame, 8, &x8, &y8); frame::moveto (gFrame, x8+(x-l), y8+(y-t));
return 0; }

Der Parameter pg kann ab Version 1.3.5, R 236 verwendet werden.
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.frame.moveTo
comet.CPageItem.moveTo

static int frame::resize(
  ItemRef frameRef,
  float width,
  float height,
  int boundsKind = 0,
  int refPoint = 0,
  float offset_x = 0.0,
  float offset_y = 0.0,
  int suprRules = 1)

Verändere die Größe eines Rahmens. Zur Größenveränderung kann ein Referenzpunkt angegeben werden, der als Fixpunkt verwendet wird. Alle Angaben werden in Punkten gemacht. Bitte beachten Sie:

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

In Abhängigkeit vom festgelegten Referenzpunkt und einem möglichen Offset zu diesem Punkt kann sich die Position des Rahmens ändern. Die Änderung wird nach folgender Formel berechnet:

δw * (xref+xoff)/w * cos (α) + δh * (yref+yoff)/h * sin (α)

δw * (xref+xoff)/w * sin (α) - δh * (yref+yoff)/h * cos (α)

mit den Variablen:
Variable Beschreibung
w Aktuelle Rahmengröße
h
α Drehwinkel des Rahmens
δw Änderung der Rahmengröße
δh
xref Referenzpunkt relativ zur linken oberen Ecke des Rahmens im Koordinatensystem des Rahmens. Links-oben hat also die Koordinaten (0,0). Die Referenzpunkte werden über die Konstanten \span[keyword]{kRefPointTopLeft, ... festgelegt
yref
xoff Abstand vom Referenzpunkt
yoff
Hier finden Sie außerdem eine Excel-Tabelle zum Berechnen der neuen Position von Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

11266 : Der intern von InDesign® generierte Fehler besagt, dass der Rahmen nicht auf den gewünschte Wert verkleinert werden konnte, weil die aktuelle Rahmenbreite das verhindert. In diesem Fall ist das Dokument aber schon crash-gefährdet. Es ist unbedingt ratsam, diesen Rahmen mit Bordmitteln zu verkleinern und zu testen, welche Rahmenbreite noch geht und die Rahmenbreite spätestens vor dem resize im Skript entsprechend zu verändern.
frameRef ItemRef - Gültige Referenz auf einen Dokumentrahmen
width float - Neue Breite des Rahmens. Breiten > 0 werden bei senkrechten Linien ignoriert.

<= 0.0 : Breite unverändert lassen. Senkrechte Linien verändern ihre Länge. Schräge Linien werden zu senkrechten Linien.
height float - Neue Höhe des Rahmens. Höhen > 0 werden bei waagerechten Linien ignoriert.

<= 0.0 : Höhe unverändert lassen. Waagerechte Linien verändern ihre Länge. Schräge Linien werden zu waagerechten Linien.
boundsKind int 0 seit v3.4 R5126 Rahmengröße basiert auf:

0 : Rahmen inklusive seiner Kontur
1 : Rahmen ohne Kontur
refPoint int kRefPointTopLeft In Inlinerahmen wird die Angabe ignoriert. Referenzpunkt der Skalierung

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
offset_x, offset_x float, float 0.0, 0.0 In Inlinerahmen wird die Angabe ignoriert. Abstand vom Referenzpunkt in Punkten.
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.
#include "internal/types.h"

Rahmenhöhe eines Rahmen um 20.0 Punkte vergrößern. Zur Demonstration wird die aktuelle Rahmengröße ins Logfile geschrieben. Bei gedrehten Rahmen sind diese Größenangaben unterschiedlich.

int main ()
{
    float		l, t, r, b;
    float		w, h;
frame::bbox (gFrame, &l, &t, &r, &b); frame::get_size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h); frame::resize (gFrame,w, h+20.0, 0, 0);
return 0; }

refPoint, offset_x, offset_x seit Version 2.1 R684, 23.4.2008
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.setSize

static int frame::move_to_layer(
  ItemRef frameRef,
  char* layerName,
  int mvGroup = 0,
  int ignoreLayerLocks = 0)

Verschiebe einen Rahmen auf einen anderen Layer des Dokumentes. Die Zielebene wird über ihren Namen bestimmt. Soll die Ebene über ihren Index bestimmt werden, siehe move_to_ilayer.

Unterrahmen von InDesign®-Gruppen und Inline- oder verankterte Rahmen dürfen nicht auf eine andere Ebene als ihr übergeordnetes Objekt verschoben werden. Comet-Verisonen vor 3.2 R2245 können InDesign® in diesem Fall zum Absturz bringen oder das InDesign®-Dokument zerstören. Die Funktionen frame::isinline, frame::get_group und frame::parent können zum Testen der Rahmen verwendet werden. Beispiel 1 der Funktion verschiebt bei Unterrahmen von Gruppen immer die gesamte Gruppe auf eine neue Ebene.

Ab Comet 3.2 R2245 verhindert die Funktion das Verschieben von Unterrahmen. Mit dem Parameter mvGroup können Sie erzwingen, dass statt dessen das oberste Elternobjekt verschoben wird.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - zu verschiebender Rahmen
layerName String oder char* - Name der Zielebene
mvGroup int 0 0 : Unterrahmen von Gruppen und Inlinerahmen nicht verschieben. Die Funktion gibt in diesem Fall den Fehler 1274 zurück

1 : Ist der gegebene Rahmen ein Unterrahmen einer Gruppe oder ein Inlinerahmen, wird zuerst das oberste Objekt ermitttelt: Dieses Objekt wird dann auf die angegebene Ebene verschoben
ignoreLayerLocks int 0 Darf von und auf gesperrte Ebenen verschoben werden?

0 : Nein. Rahmen können nicht von gesperrten und nicht auf gesperrte Ebene verschoben werden.
1 : Ja. Ebenensperrungen werden ignoriert. Achtung : Selektierte Rahmen, die auf gesperrte Ebenen verschoben werden , verlieren ihre Selektion!

Verschiebe den aktuell selektierten Rahmen auf die Ebene mit dem Namen "ASDF".

int main ()
{
    String layerName = string::alloc("ASDF");
frame::move_to_layer (gFrame, layerName); string::release(layerName);
return 0; }

Verschiebe einen beliebigen Rahmen auf eine andere (existierende) Ebene. Dabei ergibt sich das Problem, dass Rahmen, die einer InDesign®-Gruppe angehören, immer auf einer Ebene stehen müssen. Es muss als evtl. erst der oberste Gruppenrahmen gefunden werden.

int get_top (ItemRef fr, ItemRef top)
{
    ItemRef		parent	= item::alloc ();
    ItemRef		child	= item::alloc ();
item::assign (top, fr); item::assign (child, fr);
while (frame::get_group (child, parent) == 0) { item::assign (child, parent); item::assign (top, parent); }
item::release (parent); item::release (child);
return frame::is_valid (top); }
int main () { ItemRef top = item::alloc ();
if (!get_top (gFrame, top)) return 0;
frame::move_to_layer (top, "Ebene 2");
return 0; }

1.0.20
Parameter mvGroup seit Version 3.2 R2245, 18.01.2011
Parameter ignoreLayerLocks seit v3.3.1 R4222, 18.09.2013

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

move_to_ilayer
layer
get_group
comet.CPageItem.setLayer

static int frame::move_to_ilayer(
  ItemRef frameRef,
  int layerIndex,
  int mvGroup = 0,
  int ignoreLayerLocks = 0)

Verschiebe einen Rahmen auf einen anderen Layer des Dokumentes. Die Zielebene wird über ihren Index. Soll die Ebene über ihren Namen bestimmt werden, siehe move_to_layer.

Unterrahmen von InDesign®-Gruppen und Inline- oder verankterte Rahmen dürfen nicht auf eine andere Ebene als ihr übergeordnetes Objekt verschoben werden. Comet-Verisonen vor 3.2 R2245 können InDesign® in diesem Fall zum Absturz bringen oder das InDesign®-Dokument zerstören. Die Funktionen frame::isinline, frame::get_group und frame::parent können zum Testen der Rahmen verwendet werden. Beispiel 1 der Funktion verschiebt bei Unterrahmen von Gruppen immer die gesamte Gruppe auf eine neue Ebene.

Ab Comet 3.2 R2245 verhindert die Funktion das Verschieben von Unterrahmen. Mit dem Parameter mvGroup können Sie erzwingen, dass statt dessen das oberste Elternobjekt verschoben wird.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - zu verschiebender Rahmen
layerIndex int - Index der Zielebene
mvGroup int 0 0 : Unterrahmen von Gruppen und Inlinerahmen nicht verschieben. Die Funktion gibt in diesem Fall den Fehler 1274 zurück

1 : Ist der gegebene Rahmen ein Unterrahmen einer Gruppe oder ein Inlinerahmen, wird zuerst das oberste Objekt ermitttelt: Dieses Objekt wird dann auf die angegebene Ebene verschoben
ignoreLayerLocks int 0 Darf von und auf gesperrte Ebenen verschoben werden?

0 : Nein. Rahmen können nicht von gesperrten und nicht auf gesperrte Ebene verschoben werden.
1 : Ja. Ebenensperrungen werden ignoriert. Achtung : Selektierte Rahmen, die auf gesperrte Ebenen verschoben werden , verlieren ihre Selektion!

Verschiebe einen beliebigen Rahmen auf eine andere (existierende) Ebene. Dabei ergibt sich das Problem, dass Rahmen, die einer InDesign®-Gruppe angehören, immer auf einer Ebene stehen müssen. Es muss als evtl. erst der oberste Gruppenrahmen gefunden werden.

int get_top (ItemRef fr, ItemRef top)
{
    ItemRef		parent	= item::alloc ();
    ItemRef		child	= item::alloc ();
item::assign (top, fr); item::assign (child, fr);
while (frame::get_group (child, parent) == 0) { item::assign (child, parent); item::assign (top, parent); }
item::release (parent); item::release (child);
return frame::is_valid (top); }
int main () { ItemRef top = item::alloc ();
if (!get_top (gFrame, top)) return 0;
frame::move_to_layer (top, "Ebene 2");
return 0; }

1.0.20
Parameter mvGroup seit Version 3.2 R2245, 18.01.2011

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

move_to_ilayer
layer
comet.CPageItem.setLayer

static int frame::create_columns(
  ItemRef itemRef,
  int columns,
  float gutter = -1.0)

Erzeuge Textspalten im angegebenen Rahmen. Die Spalten bekommen entweder den InDesign®- Defaultabstand (gutter < 0.0) oder den angegebenen Abstand *gutter_width*.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - mit item::alloc erzeugte und von frame::create_textframe definierte Referenz
columns int - Spaltenanzahl
gutter float InDesign®-Einstellung Spaltenabstand
err_code = frame::create_columns (itemRef, columns [, gutter]);


priint:comet InDesign® Plug-Ins, comet_pdf

create_subtextframe_f
count_columns
document::find_frame
document::insert_macro

static int frame::count_columns(ItemRef itemRef = 0, float* gutter = 0)

Anzahl der Textspalten eines Textrahmens. Ist der Rahmen kein Textrahmen, liefert der Aufruf 0.

Name Typ Default Beschreibung
Return int   Anzahl der Spalten eines Textrahmens oder 0
0 : Rahmen undefiniert oder kein Textrahmen
itemRef ItemRef - Rahmen, dessen Spaltenanzahl ermittelt werden soll

0 : aktueller Skriptrahmen (seit R2222)
gutter *float 0 Spaltenabstand in Punkten
int main ()
{
    int			cols;
    float		gut;
    int			dir;
cols = frame::count_columns (gFrame, &gut); wlog ("", "Frame : %d columns, gutter %f\n", cols, gut);
cols = page::count_columns (page::get (gFrame), &gut, &dir); wlog ("", "Page %d : %d columns, gutter %f, direection %d\n", page::get (gFrame), cols, gut, dir);
return 0; }

Version 1.3.1 (20. Jan. 2006)

Ab Version 3.1 R2222, 7. Dez. 2010 kann für den aktuellen Skriptrahmen hier auch die übliche 0 angegeben werden.

Parameter gutter ab Version 3.1 R2222, 7. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

create_columns
comet.CFrame.getColumnCount

static int frame::delete_textframe(ItemRef itemRef)

Lösche einen Rahmen und seinen Inhalt aus dem Dokument. Die übergebene ItemReferenz ist danach ungültig. Die Funktion funktioniert auch für Inline-Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
err_code = frame::delete_textframe (itemRef);

Ermittle, ob für einen gegebenen Pfad ein Bild existiert. Wenn ja, wird das Bild eingesetzt, ansonsten wird der Skriptrahmen aus dem Dokument entfernt.

int main ()
{
    char		path[4096];
    int			ipos		= -1;
    ItemRef		parent	= item::alloc ();
strcpy (path, "$DESKTOP/clara.JPG");
if (frame::isinline (gFrame)) { ipos = frame::inlinepos (gFrame); frame::parent (gFrame, parent); }
if (file::exists (path)) frame::image (gFrame, path); else frame::remove (gFrame);
if (item::defined (parent)) { frame::fit_better (parent); }
return 0; }

Löschen von Inline-Rahmen seit Version 1.3.4 (P/R 94)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

create_subtextframe_f
document::find_frame
document::insert_macro
comet.CPageItem.remove

static int frame::remove(ItemRef itemRef)

Synonym für delete_textframe.

static int frame::select(
  ItemRef itemRef,
  int selectPage = 1,
  int replaceOrAdd = 1)

Auswahl eines Rahmens im Dokument.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
selectPage int 1 Ausgewählte(n) Rahmen in den sichtbaren Bereich scrollen?

1 : Ja
0 : Nein
replaceOrAdd int 1 Bestehende Auswahl entfernen oder erweitern?

1 : Nur diesen Rahmen auswählen
0 : Bestehende Auswahl erweitern
err_code = frame::select (itemRef
 		[, selectPage
 		[, replaceOrAdd]]);


priint:comet InDesign® Plug-Ins

static int frame::rectangle(ItemRef)

Ändere die Form eines Rahmens zu einem Rechteck. Für die Größe des Rechteckes wird das umschließende Rechteck des Rahmens verwendet, Größenangaben sind also nicht nötig. Um die Größe eines Rahmens zu ändern, verwenden sie bitte frame::resize.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
err_code = frame::rectangle (itemRef);


priint:comet InDesign® Plug-Ins, comet_pdf
resize

static int frame::oval(ItemRef)

Ändere die Form eines Rahmens zu einem Oval oder Kreis. Für die Größe des wird das umschließende Rechteck des Rahmens verwendet, Größenangaben sind also nicht nötig. Um die Größe eines Rahmens zu ändern, verwenden sie bitte frame::resize.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
err_code = frame::oval (itemRef);


priint:comet InDesign® Plug-Ins
resize

static int frame::polygon(ItemRef itemRef, int sides)

Ändere die Form eines Rahmens zu einem Polygon. Für die Größe des wird das umschließende Rechteck des Rahmens verwendet, Größenangaben sind also nicht nötig. Um die Größe eines Rahmens zu ändern, verwenden sie bitte frame::resize.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
sides int - Anzahl der Seiten
err_code = frame::polygon (itemRef, 7);


priint:comet InDesign® Plug-Ins
resize

static int frame::star(
  ItemRef itemRef,
  int edges,
  int inset)

Ändere die Form eines Rahmens zu einem Stern. Für die Größe des wird das umschließende Rechteck des Rahmens verwendet, Größenangaben sind also nicht nötig. Um die Größe eines Rahmens zu ändern, verwenden sie bitte frame::resize.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
itemRef ItemRef - Rahmenreferenz
edges int - Anzahl der Spitzen
inset int - Länge der Spitzen
err_code = frame::star (itemRef, 13, 4);


priint:comet InDesign® Plug-Ins
resize

static int frame::spline(ItemRef frameRef, ...)

Ändere die Form eines Rahmens zu einer Kartoffel. Eine Kartoffel erhalten sie freilich nur, wenn die Punktangaben richtig sind, meist erhalten sie eher etwas unerwartetes - jedenfalls ich.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmenreferenz
x, y float - Splinepunkte. Nach der Angabe von -1000000.1 folgen drei Punkte für 'anchor point with continuing tangent (c)' - was auch immer das ist. Nach der Angabe von -1000000.2 folgen drei Punkte für 'anchor point with unsmooth curve point, left->right tangent discontinue (kCK) - ???'


priint:comet InDesign® Plug-Ins

static int frame::fit_better(
  ItemRef frameRef,
  int refPoint = 0,
  float* = 0,
  float* = 0,
  int constantWidth = 0,
  float method = 0.0)

Anpassen eines Rahmens an die Größe seines Inhaltes. Die Rahmen einzeiliger Texte werden von InDesign® auch in ihrer Breite angepasst. Wollen Sie diese Möglichkeit unterdrücken, setzen Sie den Parameter constantWidth = 1.

Hier finden Sie ein Referenz-Dokument mit ausführlichen Beschreibungen und Tests.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmenreferenz
refPoint int kRefPointTopLeft Ignoriert bei Inline-Rahmen. Inline-Rahmen werden immer unten rechts festgehalten.

Welche Ecke des Rahmens soll bei der Skalierung festgehalten werden? Beachten Sie, dass mehrzeilige Textrahmen nur in ihrer Höhe geändert werden

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight

Um Rahmen an das enthaltene Bild anzupassen, können Sie die auch Funktion frame::fit_image mit der Methode 3 verwenden.
newwidth float* 0 Neue Breite des Rahmens, Rückgabewert
newheight float* 0 Neue Höhe des Rahmens, Rückgabewert
constantWidth int 0 Sollen einzeilige Textrahmen ihre Breite behalten?

0 : Nein
sonst : Ja
method float 0.0 Verhalten bei gedrehten Bildern.

<= -1.0 : InDesign®-Standard. Rahmen werden so angepaßt, dass kein Weißraum mehr zu sehen ist.

sonst : Der Rahmen wird an die Boundingbox um das gedrehte Bild angepaßt.
#include "internal/types.h"

Passe den Rahmen itemRef an seinen Inhalt an. Nach dem Aufruf stehen in w und h die neue Breite bzw. Höhe des Rahmens.

float	w, h;
ItemRef	itemRef = ... 
err_code = frame::fit_better (itemRef, kRefPointTopLeft, &w, &h);

v3.4 R5220 (3. Mar 20124)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CFrame.fit
fit
fit_image

static int frame::fit(
  ItemRef frameRef,
  int refPoint = 0,
  float* newwidth = 0,
  float* newheight = 0,
  int constantWidth = 0,
  float precision = 0.0)

Anpassen eines Rahmens an die Größe seines Inhaltes. Die Rahmen einzeiliger Texte werden von InDesign® auch in ihrer Breite angepasst. Wollen Sie diese Möglichkeit unterdrücken, setzen Sie den Parameter constantWidth = 1.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmenreferenz
refPoint int kRefPointTopLeft Ignoriert bei Inline-Rahmen. Inline-Rahmen werden immer unten rechts festgehalten.

Welche Ecke des Ursprungs-Rahmens soll bei der Skalierung festgehalten werden? Beachten Sie, dass mehrzeilige Textrahmen nur in ihrer Höhe geändert 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.
newwidth float* 0 Neue Breite des Rahmens, Rückgabewert
newheight float* 0 Neue Höhe des Rahmens, Rückgabewert
constantWidth int 0 Sollen einzeilige Textrahmen ihre Breite behalten?

0 : Nein
sonst : Ja
precision float 0.0 Wie genau soll der Rahmen angepasst werden. Die Angabe wird nur bei Textrahmen verwendet.

< 0.0001 : Verwende den InDesign®-Standardalgorithmus
sonst : Anpassung in mind. der genannten Präzision. Beachten Sie bitte : Die untere Grenze von 0.0001 bedeutet eine Genauigkeit von ungefähr drei Hunderttausendstel mm. Das dauert dann auch etwas. Gute Werte erreichen Sie aber auch schon mit der Präzision 0.1 (immerhin eine Genauigkeit von mind. 3/100 mm).
#include "internal/types.h"

Passe den Rahmen itemRef an seinen Inhalt an. Nach dem Aufruf stehen in w und h die neue Breite bzw. Höhe des Rahmens.

float	w, h;
ItemRef	itemRef = ... 
err_code = frame::fit (itemRef, kRefPointTopLeft, &w, &h);

Parameter constantWidth seit Version 1.3.5, R 236
Neue Parameter seit Version 1.4, R142, 4. Aug. 2006 Der Parameter refPoint ist neu hinzugekommen und verschiebt die bisherigen Parameter.
Parameter precision seit v3.3 R3728, 30.04.2013

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.fit
fit_better
fit_image
item::fitframe

static int frame::fit_image(
  ItemRef frameRef,
  int method,
  int data = 0,
  float size = 0.0,
  float maxScale = 1.0)

Anpassen von Bildern und Rahmen. Neben den nativen InDesign®-Methoden werden priint:comet-eigenen Anpungassungsmöglichkeiten unterstützt.

[method = 0] Das Bild wird zentriert und so skaliert, dass der Rahmen vollständig ausgefüllt wird. Haben Rahmen und Bild unterschiedliche Proportionen werden dabei in einer Dimension Bildteile unsichtbar. In den folgenden drei Abbildungen sehen Sie zwei (gedrehte) Bildrahmen. In beiden Rahmen wird durch fit_image (yourFrame, 0, 1); das Bild wie in der dritten Abb. platziert und skaliert.

  

Die Standardmethode von InDesign® (method = 0, data = -1) produziert hier mitunter Fehler. Wir haben daher eine eigene Methode implementiert, in der dieser Fehler nicht auftritt. Setzen Sie dafür den Parameter data auf einen Wert ungleich -1.

In den folgenden drei Abbildungen sehen Sie ein Beispiel für die unterschiedlichen Ergebnisse von InDesign- und priint:comet-Methode. Aus einem gedrehten Bild (erstes Bild) produziert InDesign® das, was Sie in Bild 2 sehen : Das Bild verdeckt zwar den Rahmen vollständig. Es ist aber viel zu groß. In Bild 3 sehen Sie das Ergebnis von fit_image mit der minimal nötigen Bildgröße:

  

[method = 1] Das Bild wird so skaliert, dass es vollständig sichtbar wird. Die Bildproportionen bleiben erhalten. Hier ein Vorher/Nachher-Beispiel:

 

Die Ergebnisse, die InDesign® hier produziert sind (zumindenst für uns) nicht immr vorhersehbar. Wir haben daher eine eigene Methode implementiert, in der diese Fehler nicht auftreten. Setzen Sie dafür den Parameter data auf einen Wert ungleich -1.

In den folgenden drei Abbildungen sehen Sie ein Beispiel für die unterschiedlichen Ergebnisse von InDesign- und priint:comet-Methode. Aus einem gedrehten Bild (Bild 1) produziert InDesign® das, was Sie in Bild 2 sehen. Das Bild passt in keiner Weise! In Bild 3 sehen Sie das Ergebnis von fit_image mit der maximal möglichen Bildgröße:

  

[method = 2] Das Bild wird in beiden Dimensionen so skaliert, dass es den Rahmen vollständig ausfüllt. Haben Bild und Rahmen unterschiedliche Proportionen, wird das Bild verzerrt. Hier ein Beispiel:

 

Die Standardmethode von InDesign® (method = 1, data = -1) produziert hier mitunter Fehler. Wir haben daher eine eigene Methode implementiert, in der dieser Fehler nicht auftritt. Setzen Sie dafür den Parameter data auf einen Wert ungleich -1.

In den folgenden drei Screenshots sehen Sie ein Beispiel: Aus einem gedrehten Bild (Bild 1) produziert InDesign® das, was Sie in Bild 2 sehen - huch, was ist denn das?! Wo kommt denn die Verzerrung auf einmal her? Und welchen Wert hat die eigentlich? In Bild 3 sehen Sie das Ergebnis von fit_image mit der minimal nötigen Bildgröße:

   

[method = 3] Anpassen des Rahmens an den Bildinhalt. Die Position, Proportionen und Drehung des Rahmens werden ggf. an die Position, Proportionen und Drehung des Bildes angepasst. Soll die Rahmendrehung nicht verändert werden, verwenden Sie Funktion frame::fit_better.

Hier ein Beispiel eines Rahmens mit einem gedrehten Bild (Bild 1 und 2). In Bild 3 sehen Sie das Ergebnis von frame::fit_better:

   

Die Methode entspricht nicht der InDesign®-Methode Objekt -> Anpassen -> Rahmen an Inhalt anpassen! - das Ergebnis entspricht unserer Implementierung von Rahmen proportional füllen:

 

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Bildrahmen
method int - Methode für die Anpassung

0 : Rahmen proportional füllen: Das Bild wird zentriert und propotional so skaliert, dass die Rahmenfläche vollständig ausgefüllt wird. Haben Bild und Rahmen unterschiedliche Proportionen, werden dabei in einer Dimension Bildteile unsichtbar.

1 : Inhalt proportional anpassen Das Bild wird zentriert und propotional so skaliert, dass es vollständig sichtbar ist. Haben Bild und Rahmen unterschiedliche Proportionen, entsteht dabei in einer Dimension Weißraum.

2 : Inhalt an Rahmen anpassen. Das Bild wird zentriert und in beiden Richtungen so skaliert, dass es vollständig sichtbar ist. Haben Bild und Rahmen unterschiedliche Proportionen, wird das Bild dabei verzerrt.

3 : Rahmen an Inhalt anpassen. Anpassen des Rahmens an die Bildgröße.

4 : Inhalt zentrieren

5 : Verwenden der priint:comet-Platzierungen
data int method 0,1,2 : -1
method 5 : 5
Zusatzangabe zur Platzierung des Bildes.

Methoden 0, 1, 2:
-1 : Eingebaute Methode von InDesign®
sonst : priint:comet-Methode verwenden
Unter comet_pdf wird die Angabe aus neheliegenden Gründen ignoriert.

Methoden 3, 4: Parameter wird ignoriert

Methode 5:
Bildposition. Wird der Parameter weggelassen, wird - wenn das Bild bereits vom Cometen platziert wurde - die letzte Comet-Platzierung für dieses Bild wiederhergestellt.
size float 0.0 Größe der Boundingbox für das skalierte Bild, siehe hier.

Von den Methoden 0 - 4 wird die Angabe aus naheliegenden Gründen ignoriert.
maxScale float 1.0 Maximale Bildskalierung (1.0 entspricht 100.0%)

-1.0 : Beliebige Skalierung > 0.0 erlaubt

Von den Methoden 0 - 4 wird die Angabe aus naheliegenden Gründen ignoriert.
#include "internal/types.h"

Version 3.1, R 1928 11. Juni 2010
Parameter maxScale seit v4.0.5 R13604, 12. Sep 2016

priint:comet InDesign® Plug-Ins, comet_pdf

fit_better
is_graphicframe
comet.CFrame.fitImage

static int frame::set_fitting_options(
  ItemRef frameRef,
  int refPoint,
  int fitting,
  Rect crop = 0,
  int autoFit = 0,
  int reApply = 1)

Rahmeneinpassungsoptionen eines Bildrahmens setzen. Verfügbar ab CS4.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
-1199 : Versionen vor CS4
frameRef ItemRef - Gültiger Bildrahmen
refPoint int - Referenzpunkt

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
fitting int - Methode für die Anpassung

0 : Ohne
1 : Inhalt an Rahmen anpassen
2 : Inhalt proportional anpassen
3 : Rahmen proportional füllen
crop Rect 0 Beschnittbeträge (Angaben > 0.0) bzw. Abstände (Angaben < 0.0) zum jeweiligen jeweiligen Rand in Punkten.

0 oder (0.0, 0.0, 0.0, 0.0) : Keinen Beschnitt oder Abstand

Beachten Sie bitte, dass InDesign die aktuelle Bildskalierung in die Berechnung der Werte einbezieht. Ein Abstand von -10.0pt wird also bei einer aktuellen Bildskalierung von 50% nur -5.0pt betragen!

autoFit int 0 Automatisch einpassen? In CS4 wird der Parameter ignoriert.
1 : Ja
0 : Nein
reApply int 1 Änderungen sofort anwenden? In CS4 wird der Parameter ignoriert, die gesetzten Optionen werden hier immer sofort angewendet.
1 : Ja
0 : Nein
#include "internal/types.h"
#include "internal/types.h"
int main () { Rect crop = rect::alloc (12.0, 13.0, 14.0, 15.0);
frame::set_fitting_options (gFrame, kRefPointLeftCenter, 2, crop, 1, 1); return 0; }

Version 3.2.1 R2330, 7.März 2011
CS4-Suppport seit Version 3.2.2 R2390, 14.04.2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::get_fitting_options(
  ItemRef frameRef,
  int* refPoint = 0,
  int* fitting = 0,
  Rect crop = 0,
  int* autoFit = 0)

Rahmeneinpassungsoptionen eines Bildrahmens ermitteln. Verfügbar ab CS4.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
-1199 : Versionen vor CS4
frameRef ItemRef - Gültiger Bildrahmen
refPoint int* 0 Nach erfolgreicher Ausführung enthält die Adresse den Referenzpunkt

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
fitting int* 0 Nach erfolgreicher Ausführung enthält die Adresse die Methode für die Anpassung

0 : Ohne
1 : Inhalt an Rahmen anpassen
2 : Inhalt proportional anpassen
3 : Rahmen proportional füllen
crop Rect 0 Nach erfolgreicher Ausführung enthält das Rechteckt die Beschnittbeträge.
autoFit int* 0 Nach erfolgreicher Ausführung enthält die Adresse die Angabe, ob die Optionen automatisch eingepasst werden sollen? Die Eigenschaft wird erst ab CS5 unterstützt. Versionen vor CS5 geben hier immer den Wert 0 zurück.
1 : Ja
0 : Nein
#include "internal/types.h"
#include "internal/types.h"
int main () { int refPoint; int fitting; Rect crop = rect::alloc (); int autoFit;
frame::get_fitting_options (gFrame, &refPoint, &fitting, crop, &autoFit); wlog ("", "Frame %d\n", item::getint (gFrame)); wlog ("", " %d %d [%f, %f, %f, %f], %d\n",   refPoint,   fitting,   rect::left (crop),   rect::top (crop),   rect::right (crop),   rect::bottom (crop),   autoFit); return 0; }

Version 3.2.1 R2330, 7.März 2011
CS4-Suppport seit Version 3.2.2 R2390, 14.04.2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::clear_fitting_options(ItemRef frameRef)

Rahmeneinpassungsoptionen eines Bildrahmens zurücksetzen. Verfügbar ab CS5. Unter CS4 können Sie statt dessen die Funktion set_fitting_options mit fitting = 0 verwenden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
-1199 : Versionen vor CS5
frameRef ItemRef - Gültiger Bildrahmen
int main ()
{
    frame::clear_fitting_options (gFrame);
    return 0;
}

Version 3.2.1 R2330, 7.März 2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::apply_fitting_options(ItemRef frameRef)

Rahmeneinpassungsoptionen eines Bildrahmens anwenden. Verfügbar ab CS4.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
-1199 : Versionen vor CS4
frameRef ItemRef - Gültiger Bildrahmen
int main ()
{
    frame::apply_fitting_options (gFrame);
    return 0;
}

Version 3.2.1 R2330, 7.März 2011
CS4-Suppport seit Version 3.2.2 R2390, 14.04.2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::insert(
  ItemRef frameRef,
  char* tt,
  int position = 0,
  int auto_load = 1,
  int flags = 0)

Einfügen von Text in einen Rahmen. Der Text kann getaggt sein, dann wird er formatiert eingefügt. Für die Methode ist text.h nötig :
#include "internal/text.h"

Der Aufruf frame::insert (gFrame, "abc", textmodel::start ()) setzt den Text "abc" wie erwartet an den Beginn des Platzhalters. Aber im Unterschied zu textmodel::insert ("abc", 0) gehört der eingefügte Text nicht mehr zum Platzhalter. Mit frame::insert verlassen Sie den geschützten Bereich des Moduls textmodel. Beachten Sie bitte, dass Text, den Platzhalterskripte außerhalb ihres Platzhalters setzen, bei jeder Skriptausführung erneut eingesetzt werden kann.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den der Text eingefügt werden soll
tt String oder char* - einzufügender Text (kann auch TaggedText sein)
position int 0 textrelative Einfügeposition

< 0 anfügen
auto_load int 1 Sollen in TaggedTexten enthaltenen Textplatzhalter geladen werden?
flags int 0 Hinweise zur Vorbereitung von TaggedText.

0 : Aus, verwende die Autokorrektur-Angabe aus dem Text-Prefix, z.B. %7TT
1 : Fehlende Absatzstile in leeren Tabellenzellen hinzufügen
2 : Fehlende Absatzstile in allen Tabellenzellen, in denen es fehlt, hinzufügen
4 : Leere Absatzstile (<ParaStyle:>) vervollständigen
8 : Tabellendefinitionen prüfen
16 : Ersetze <in> Tags durch <w2inline> Tags (seit v4.1 R21213)
32 : Hyperlinks reparieren (seit v4.1 R22201)

Bitte beachten Sie:
  • Alle Werte ungleich 0 'überstimmen' die Autokorrektur-Angabe aus dem Text-Prefix
  • Für normalen Text ohne Prefix hat der Parameter keine Wirkung.
  • Ist die Option Zusatzmodule -> Comet -> Integriertes Anlegen von Platzhaltern aus TaggedText (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) nicht aktiviert, haben die Flags 2, 4 und 16 keine Bedeutung und werden ignoriert.
  • In comet_pdf haben die Flags 2 und 4 keine Bedeutung. Fehlende oder leere Absatzstile werden hier immer berechnet und verwendet.
  • Ab v4.1.6 R25777 wird die w2inline-Ersetzung immer und automatisch gemacht. Da w2inline ein Zeichenattribut ist und nur ausgewertet werden kann, wenn ein Absatzstil definiert ist, werden dabei auch in allen nicht-leeren Tabellenzellen die Absätze korrigiert. Änderungen an Ihrem TaggedText sind dafür nicht erforderlich.
  • Beginnt der eingefügte Text nicht mit %!, wird die Angaben von flags ignoriert!

Einfügen an Position 2

frame::insert (frameRef, text, 2)

Anfügen

frame::insert (frameRef, text, -1)

Parameter flags seit v4.0.5 R10000, 07. Feb 2016
Tabellenprüfung seit v4.0.5 R21000 v1.0

priint:comet InDesign® Plug-Ins, comet_pdf

textmodel::insert
comet.CFrame.setText

static int frame::rinsert(
  ItemRef frameRef,
  char* tt,
  int position = 0,
  int auto_load = 1,
  int flags = 0)

Rekursionssicheres Einfügen von Text in einen Rahmen.

Die Funktion ist identisch mit der Funktion frame::insert mit dem einen Unterschied, dass sie auch dann funktioniert, wenn Laden-Platzhalter sich rekursiv aufrufen.

v3.4 R4650, 25.10.2013

priint:comet InDesign® Plug-Ins

insert
prefs::set_logstate
comet.CFrame.setText

static int frame::append(
  ItemRef frameRef,
  char* tt,
  int auto_load = 1,
  int flags = 0)

Anfügen von Text in einen Rahmen. Der Text kann getaggt sein, dann wird er formatiert angefügt.
Für die Methode ist text.h nötig : #include "internal/text.h"

In verkettenen Textrahmen wird der Text im letzten Rahmen der Textkette eingefügt, unabhängig davon, ob das der gegebene Rahmen frameRef ist.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den der Text eingefügt werden soll
tt String oder char* - einzufügender Text (kann auch TaggedText sein)
auto_load int 1 Sollen in TaggedTexten enthaltenen Textplatzhalter geladen werden?
flags int 0 Hinweise zur Vorbereitung von TaggedText.

0 : Aus, verwende die Autokorrektur-Angabe aus dem Text-Prefix, z.B. %7TT
1 : Fehlende Absatzstile in leeren Tabellenzellen hinzufügen
2 : Fehlende Absatzstile in allen Tabellenzellen, in denen es fehlt, hinzufügen
4 : Leere Absatzstile (<ParaStyle:>) im gesamten Text vervollständigen
8 : Tabellendefinitionen prüfen
16 : Ersetze <in> Tags durch <w2inline> Tags (seit v4.1 R21213)
32 : Hyperlinks reparieren (seit v4.1 R22201)

Bitte beachten Sie:
  • Alle Werte ungleich 0 'überstimmen' die Autokorrektur-Angabe aus dem Text-Prefix
  • Für normalen Text ohne Prefix hat der Parameter keine Wirkung.
  • Ist die Option Zusatzmodule -> Comet -> Integriertes Anlegen von Platzhaltern aus TaggedText (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) nicht aktiviert, haben die Flags 2, 4 und 16 keine Bedeutung und werden ignoriert.
  • In comet_pdf haben die Flags 2 und 4 keine Bedeutung. Fehlende oder leere Absatzstile werden hier immer berechnet und verwendet.
  • Ab v4.1.6 R25777 wird die w2inline-Ersetzung immer und automatisch gemacht. Da w2inline ein Zeichenattribut ist und nur ausgewertet werden kann, wenn ein Absatzstil definiert ist, werden dabei auch in allen nicht-leeren Tabellenzellen die Absätze korrigiert. Änderungen an Ihrem TaggedText sind dafür nicht erforderlich.
  • Beginnt der eingefügte Text nicht mit %!, wird die Angaben von flags ignoriert!
frame::append (frameRef, text, 0);

Parameter flags seit v4.0.5 R10000, 07. Feb 2016
Tabellenprüfung seit v4.0.5 R21000 v3.0

priint:comet InDesign® Plug-Ins, comet_pdf

textmodel::append
prefs::set_logstate
comet.CFrame.setText

static int frame::rappend(
  ItemRef frameRef,
  char* tt,
  int auto_load = 1,
  int flags = 0)

Rekursionssicheres Anfügen von Text in einen Rahmen.

Die Funktion ist identisch mit der Funktion frame::append mit dem einen Unterschied, dass die auch dann funktioniert, wenn Laden-Platzhalter sich rekursiv aufrufen.

v3.4 R4650, 25.10.2013

priint:comet InDesign® Plug-Ins, comet_pdf

append
prefs::set_logstate
comet.CFrame.setText

static int frame::replace(
  ItemRef frameRef,
  char* tt,
  int position = 0,
  int delete_len = -1,
  int auto_load = 1,
  int flags = 0)

Ersetzen von Text in einem Rahmen. In Skripten von Platzhalter-Aktionen (Laden, Überprüfen, etc.) sind Position und Länge relativ zum Platzhalter. Löscht ein Platzhalterskript den kompletten Inhalt des Platzhalters, wird ein unsichtbares Leerzeichen (<0x200B>) als Platzhalter-Text eingesetzt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den der Text eingefügt werden soll
text String oder char* - einzufügender Text (kann auch TaggedText sein)
position int 0 Einfügeposition. In Platzhalterskripten ist die Textposition relativ zum Platzhalter.

kEnd : Textende, in Platzhalterskripten das Ende des Platzhalters
kSelection
delete_len int kEnd Anzahl der zu löschenden Zeichen

kEnd : Textende, in Platzhalterskripten bis zum Ende des Platzhalters
auto_load int 1 Sollen in TaggedText enthaltenen Textplatzhalter geladen werden?
flags int 0 Hinweise zur Vorbereitung von TaggedText.

0 : Aus, verwende die Autokorrektur-Angabe aus dem Text-Prefix, z.B. %7TT
1 : Fehlende Absatzstile in leeren Tabellenzellen hinzufügen
2 : Fehlende Absatzstile in allen Tabellenzellen, in denen es fehlt, hinzufügen
4 : Leere Absatzstile (<ParaStyle:>) im gesamten Text vervollständigen
8 : Tabellendefinitionen prüfen
16 : Ersetze <in> Tags durch <w2inline> Tags (seit v4.1 R21213)
32 : Hyperlinks reparieren (seit v4.1 R22201)

Bitte beachten Sie:
  • Alle Werte ungleich 0 'überstimmen' die Autokorrektur-Angabe aus dem Text-Prefix
  • Für normalen Text ohne Prefix hat der Parameter keine Wirkung.
  • Ist die Option Zusatzmodule -> Comet -> Integriertes Anlegen von Platzhaltern aus TaggedText (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) nicht aktiviert, haben die Flags 2, 4 und 16 keine Bedeutung und werden ignoriert.
  • In comet_pdf haben die Flags 2 und 4 keine Bedeutung. Fehlende oder leere Absatzstile werden hier immer berechnet und verwendet.
  • Ab v4.1.6 R25777 wird die w2inline-Ersetzung immer und automatisch gemacht. Da w2inline ein Zeichenattribut ist und nur ausgewertet werden kann, wenn ein Absatzstil definiert ist, werden dabei auch in allen nicht-leeren Tabellenzellen die Absätze korrigiert. Änderungen an Ihrem TaggedText sind dafür nicht erforderlich.
  • Beginnt der eingefügte Text nicht mit %!, wird die Angaben von flags ignoriert!
#include "internal/text.h"

Die folgenden Platzhalter-Skripte demonstrieren die Verwendung von textmodel::replace, frame::replace und frame::replace_all. Der Text des Platzhalters soll vollständig ersetzt werden durch einen neuen Text, in dem sich auch eine Tabelle befindet. Die Länge der Textteile, die eingesetzt werden, ist aus den dazu verwendeten Strings nicht direkt ersichtlich (TaggedText, Unicode-Zeichen, ...). Deshalb wird der Platzhalter in drei Schritten aufgebaut :

  - Platzhaltertext durch den ersten Text ersetzen
  - Tabelle anfügen
  - Zweiten Text anfügen

Bemerkung Es wird Sie vielleicht wundern, dass der in den Skripten verwendete Text nicht mit %!TT beginnt. Das ist hier nicht nötig. Das Tag <CharStyle> kann vom Cometen auch direkt -und schneller!- ausgwertet werden, siehe hier.

//
// Skript 1 : Verwendung von textmodel::replace und textmodel::insert
//
#include "internal/types.h"
#include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
textmodel::replace ("<CharStyle:MyStyle1>A<0x00FC>C", 0, kEnd);
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
textmodel::insert ("XXX", kEnd);
return 0;
}
// // Skript 2: Verwendung von frame::replace und frame::insert // Sie erhalten das gleiche Ergebnis wie oben. // Beachten Sie aber die nötigen Angaben der // aktuellen Platzhalterpositionen und -längen. // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace (gFrame, "<CharStyle:MyStyle1>A<0x00FC>C", textmodel::start ());
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", textmodel::start () + textmodel::length ());
return 0; }
// // Skript 3 : So funktioniert es nicht! // Statt frame::replace wird frame::replace_all verwendet. // Das Ergebnis wird falsch : Der Platzhalter wird im ersten // Schritt durch den Anfangstext ersetzt - hat aber keinen // Platzhalter mehr. // Jetzt soll die Tabelle an kEnd positioniert werden. Weil es // keinen Platzhalter mehr gibt, ist das aber Textende! // Platzhalter mehr. // Schliesslich soll der Text XXX angefügt werden. Da der Platzhalter // entfernt wurde, sind textmodel::start und textmodel::length gleich 0. // Der Text wird also am Anfang des Rahmens eingefügt :-( // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace_all (gFrame, "%!TT<CharStyle:MyStyle1>A<0x00FC>C", textmodel::start (), textmodel::length ());
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", textmodel::start () + textmodel::length ());
return 0; }
// // Skript 4 : Verwendung in einem Palettenskript // Der aktuelle Rahmentext wird ersetzt. // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace_all (gFrame, "%!TT<CharStyle:MyStyle1>A<0x00FC>C", 0, kEnd);
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", kEnd);
return 0; }

Ersetzen von Position 2-5

frame::replace (frameRef, text, 2, 3);

Ersetzen ab Position 2

frame::replace (frameRef, text, 2, kEnd);

Alles ersetzen

frame::replace (frameRef, text);

Wie frame::append

frame::replace (frameRef, text, kEnd);

Wie frame::insert

frame::replace (frameRef, text, 2, 0);

Ersetze die aktuelle Textauswahl

frame::replace (frameRef, text, kSelection, 0);

Parameter flags seit v4.0.5 R10000, 07. Feb 2016
Tabellenprüfung seit v4.0.5 R21000 v3.0

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

textmodel::replace
prefs::set_logstate
comet.CFrame.setText

static int frame::rreplace(
  ItemRef frameRef,
  char* tt,
  int position = 0,
  int delete_len = -1,
  int auto_load = 1,
  int flags = 0)

Rekursionssicheres Ersetzen von Text in einen Rahmen.

Die Funktion ist identisch mit der Funktion frame::replace mit dem einen Unterschied, dass die auch dann funktioniert, wenn Laden-Platzhalter sich rekursiv aufrufen.

v3.4 R4650, 25.10.2013

priint:comet InDesign® Plug-Ins, comet_pdf

replace
comet.CFrame.setText

static int frame::replace_all(
  ItemRef frameRef,
  char* tt,
  int position = 0,
  int delete_len = -1,
  int auto_load = 1,
  int flags = 0)

Ersetzen von Text in einen Rahmen. Sind im Text Platzhalter enthalten, werden sie durch replace_all möglicherweise entfernt. Im Gegensatz zu frame::replace entfernt replace_all den aktuellen Platzhalter, wenn (und nur wenn) Sie in einem Platzhalter-Skript (load, sync, ...) den gesamten Text des aktuellen Platzhalters ersetzen :

frame::replace (gFrame, "aa", textmodel::start (), textmodel::length ()) ersetzt den Inhalt des aktuellen Platzhalters durch den Text "aa".

frame::replace_all (gFrame, "aa", textmodel::start (), textmodel::length ()) ersetzt den aktuellen Platzhalter durch den (nicht verlinkten) Text "aa".

Für die Methode ist internal/text.h nötig : #include "internal/text.h"

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den der Text eingefügt werden soll
tt String oder char* - einzufügender Text (kann auch TaggedText sein)
position int 0 textrelative Einfügeposition oder kEnd, kSelection
delete_len int 0 Anzahl der zu löschenden Zeichen oder kEnd
auto_load int 1 Sollen in TaggedTexten enthaltenen Textplatzhalter geladen werden?
flags int 0 Hinweise zur Vorbereitung von TaggedText.

0 : Aus, verwende die Autokorrektur-Angabe aus dem Text-Prefix, z.B. %7TT
1 : Fehlende Absatzstile in leeren Tabellenzellen hinzufügen
2 : Fehlende Absatzstile in allen Tabellenzellen, in denen es fehlt, hinzufügen
4 : Leere Absatzstile (<ParaStyle:>) im gesamten Text vervollständigen
8 : Tabellendefinitionen prüfen
16 : Ersetze <in> Tags durch <w2inline> Tags (seit v4.1 R21213)
32 : Hyperlinks reparieren (seit v4.1 R22201)

Bitte beachten Sie:
  • Alle Werte ungleich 0 'überstimmen' die Autokorrektur-Angabe aus dem Text-Prefix
  • Für normalen Text ohne Prefix hat der Parameter keine Wirkung.
  • Ist die Option Zusatzmodule -> Comet -> Integriertes Anlegen von Platzhaltern aus TaggedText (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) nicht aktiviert, haben die Flags 2, 4 und 16 keine Bedeutung und werden ignoriert.
  • In comet_pdf haben die Flags 2 und 4 keine Bedeutung. Fehlende oder leere Absatzstile werden hier immer berechnet und verwendet.
  • Ab v4.1.6 R25777 wird die w2inline-Ersetzung immer und automatisch gemacht. Da w2inline ein Zeichenattribut ist und nur ausgewertet werden kann, wenn ein Absatzstil definiert ist, werden dabei auch in allen nicht-leeren Tabellenzellen die Absätze korrigiert. Änderungen an Ihrem TaggedText sind dafür nicht erforderlich.
  • Beginnt der eingefügte Text nicht mit %!, wird die Angaben von flags ignoriert!
#include "internal/text.h"

Die folgenden Platzhalter-Skripte demonstrieren die Verwendung von textmodel::replace, frame::replace und frame::replace_all. Der Text des Platzhalters soll vollständig ersetzt werden durch einen neuen Text, in dem sich auch eine Tabelle befindet. Die Länge der Textteile, die eingesetzt werden, ist aus den dazu verwendeten Strings nicht direkt ersichtlich (TaggedText, Unicode-Zeichen, ...). Deshalb wird der Platzhalter in drei Schritten aufgebaut :

  - Platzhaltertext durch den ersten Text ersetzen
  - Tabelle anfügen
  - Zweiten Text anfügen

Bemerkung Es wird Sie vielleicht wundern, dass der in den Skripten verwendete Text nicht mit %!TT beginnt. Das ist hier nicht nötig. Das Tag <CharStyle> kann vom Cometen auch direkt -und schneller!- ausgwertet werden, siehe hier.

//
// Skript 1 : Verwendung von textmodel::replace und textmodel::insert
//
#include "internal/types.h"
#include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
textmodel::replace ("<CharStyle:MyStyle1>A<0x00FC>C", 0, kEnd);
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
textmodel::insert ("XXX", kEnd);
return 0;
}
// // Skript 2: Verwendung von frame::replace und frame::insert // Sie erhalten das gleiche Ergebnis wie oben. // Beachten Sie aber die nötigen Angaben der // aktuellen Platzhalterpositionen und -längen. // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace (gFrame, "<CharStyle:MyStyle1>A<0x00FC>C", textmodel::start ());
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", textmodel::start () + textmodel::length ());
return 0; }
// // Skript 3 : So funktioniert es nicht! // Statt frame::replace wird frame::replace_all verwendet. // Das Ergebnis wird falsch : Der Platzhalter wird im ersten // Schritt durch den Anfangstext ersetzt - hat aber keinen // Platzhalter mehr. // Jetzt soll die Tabelle an kEnd positioniert werden. Weil es // keinen Platzhalter mehr gibt, ist das aber Textende! // Platzhalter mehr. // Schliesslich soll der Text XXX angefügt werden. Da der Platzhalter // entfernt wurde, sind textmodel::start und textmodel::length gleich 0. // Der Text wird also am Anfang des Rahmens eingefügt :-( // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace_all (gFrame, "%!TT<CharStyle:MyStyle1>A<0x00FC>C", textmodel::start (), textmodel::length ());
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", textmodel::start () + textmodel::length ());
return 0; }
// // Skript 4 : Verwendung in einem Palettenskript // Der aktuelle Rahmentext wird ersetzt. // #include "internal/types.h" #include "internal/text.h"
int main () { int T = table::alloc ();
if (!T) return;
frame::replace_all (gFrame, "%!TT<CharStyle:MyStyle1>A<0x00FC>C", 0, kEnd);
table::create (T, gFrame, 2, 2, kEnd, 0, 20.0, 20.0); table::release (T);
frame::insert (gFrame, "XXX", kEnd);
return 0; }

Parameter flags seit v4.0.5 R10000, 07. Feb 2016
Tabellenprüfung seit v4.0.5 R21000 v3.0

priint:comet InDesign® Plug-Ins, comet_pdf

textmodel::replace
frame::replace
prefs::set_logstate
comet.CFrame.setText

static int frame::excel_import(
  ItemRef frameRef,
  char* path,
  int pos,
  int delLength = 0)

Füge eine Excel-Tabelle in den Text ein. Der angegebene Rahmen muß ein Textrahmen sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den die Tabelle eingefügt werden soll
path String oder char* - Vollständiger Pfad auf eine Excel-Datei. Im übrigen dürfen an dieser Stelle auf Word-Dateien oder Bilder stehen.
pos int - Einfügeposition für die Tabelle

>= 0 : Textposition
> Textlänge : anfügen
kEnd : anfügen
kSelection : Aktuelle Cursorposition
delLength int 0 Anzahl der zu löschenden Zeichen
kEnd Löschen bis zum Textende
#include "internal/text.h"
err_code = frame::excel_import (frame, path, pos, delLength);

Version 2.1, R1401, 29.06.2009

priint:comet InDesign® Plug-Ins

textmodel::excel_import

static int frame::excel_update(
  ItemRef frameRef,
  char* path,
  int tindex,
  int min_row = 0,
  int max_row = -1,
  int min_col = 0,
  int max_col = -1,
  int pos = -1,
  int delLength = 0)

Aktualisieren einer Tabelle des Textes eines Textrahmens. Als Basis für die Aktualisierung wird die angegebene Excel-Datei verwendet. Ist die neue Tabelle größer, werden entsprechend Zeilen und Spalten angefügt. Als Formatierung für neu angelegte Zeilen und Spalten werden die Vorgängerzeilen und -spalten verwendet. Für neue Zeilen und Spalten kann die Formatierung der Originaltabelle momentan noch übernommen werden.
Die Zieltabelle wird über ihren 0-basierten Index angegeben. Existiert keine Originaltabelle, wird die Tabelle komplett neu eingefügt. In diesem Fall können alle Formatierungen der Originaltabelle übernommen werden. Der angegebene Rahmen muß ein Textrahmen sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in dem eingefügt oder aktualisiert werden soll
path String oder char* - Vollständiger Pfad auf eine Excel-Datei.
tindex int - 0-basierter Tabellenindex
min_row int 0 Erst ab dieser Zeile aktualisieren
max_row int kEnd Nur bis zu dieser Zeile aktualisieren
kEnd Bis zur letzten Zeile aktualisieren
min_col int 0 Erst ab dieser Spalte aktualisieren
max_col int kEnd Nur bis zu dieser Spalte aktualisieren
kEnd Bis zur letzten Spalte aktualisieren
pos int kEnd Existiert die Tabelle index noch nicht, wird an dieser Textposition eine neue Tabelle angelegt.
>= 0 : Textposition
> Textlänge : anfügen kEnd : anfügen
kSelection : Aktuelle Cursorposition
delLength int 0 Anzahl der zu löschenden Zeichen
kEnd Löschen bis zum Textende
#include "internal/text.h"
err_code = frame::excel_update (frame, path, index, pos, delLength);

Version 2.1, R1401, 29.06.2009

priint:comet InDesign® Plug-Ins

textmodel::excel_update

static int frame::overset(
  ItemRef fm,
  int fullChain = -1,
  ItemRef lastFrameUsed = 0)

Sind Textteile eines Textmodelles oder Rahmens unsichtbar? Hat der Text diesen sogenannten Overset, wird rechts unten am ausgewählten Rahmen ein kleines rotes Plus zur Markierung gezeigt. Die Funktion kann den Overset nur von Textrahmen oder Texten bestimmen.

Name Typ Default Beschreibung
Return int   0 : Kein Übersatz oder Fehler
Return int   sonst : Textübersatz Die Angabe ist nicht die Anzahl der unsichtbaren Zeichen!
fm ItemRef 0 Ist kein Rahmen angegeben, wird das aktuelle Textmodell zum Test verwendet. Ist ein Rahmen angegeben, wird versucht, dessen Text zu testen.
fullChain int kFullChain Soll die gesamte verbundene Textrahmenkette befragt werden?
kFullChain : Letzten Rahmen der Textkette prüfen
0 : Rahmen selbst prüfen
lastFrameUsed ItemRef 0 Nur bei comet_pdf und fullChain == -1! Nach erfolgreicher Ausführung der Funktion enthält die Variable eine Referenz auf den letzten Rahmen der Kette, der noch Text enthält.

0 : Wert ignorieren
sonst : Allokierte ItemRef
#include "internal/text.h"
int 	k = frame::overset (fm );

Version 1.1.4
kFullChain seit Version 1.4 R310, 9. Feb. 2007
Version 2.1, R1401, 29.06.2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

textmodel::overset
comet.CFrame.hasOverset

static int frame::link(ItemRef from, ItemRef to)

Verbinde zwei Textrahmen so, dass der Inhalt des ersten Rahmens bei Textüberlauf automatisch im zweiten Rahmen weiterläuft.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
from ItemRef - Textrahmen, dessen Text bei überlauf weiterfliessen soll
to ItemRef - Textrahmen, der den überfliessenden Text aufnehmen soll

0 : ab v4.1.6 R26111 und nicht für comet_pdf Auflösen der Textkette ab dem gegebenen Rahmen from
err_code = frame::link (frameRef_From, frameRef_to);

Version 2.1, R1401, 29.06.2009

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setNextInChain

static int frame::get_link(ItemRef frameRef, ItemRef toRef)

Ermittle den nächsten Rahmen, mit dem ein Textrahmen verlinkt ist.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - gültiger Textrahmen
toRef ItemRef - Mit item::alloc allokierter Zeiger für den Ergebnisrahmen. Ist der Wert bei erfolgreicherer Rückkehr der Funktion leer (!frame::is_valid), hat der Rahmen keinen Nachfolger.
#include "internal/text.h"
#include "internal/types.h"

Im Beispiel soll für den aktuellen Rahmen ein vertikaler Keil angewendet werden. Ist der Rahmen der letzte der verketteten Liste, soll der Keil nicht angewendet werden. Aber in diesem Fall sollen trotzdem alle Abstände vor den Absätzen zurückgesetzt werden.

#include "internal/text.h"
#include "internal/types.h"
int main() { ItemRef succ = item::alloc (); int succRes = frame::get_link (gFrame, succ); int tpos = frame::get_textpos (gFrame);
if (succRes == 0 && !frame::is_valid (succ)) { textmodel::justify_reset (gFrame, tpos); }
textmodel::justify (gFrame, 0, kFrameEnd);
return 0; }

Version 2.1, R1401, 29.06.2009

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getNextInChain

static int frame::get_textpos(
  ItemRef frameRef,
  int* len,
  Table tableIn = 0,
  int* firstRow = 0,
  Table tableOut = 0,
  int* lastRow = 0)

Ermittle die Textposition, ab der ein Rahmen einer verlinkten Rahmenkette den Text zeigt. Optional kann auch die Länge des Textes ermittelt werden.

Name Typ Default Beschreibung
Return int   Startposition im Text
-1 : Fehler
frameRef ItemRef - gültiger Textrahmen
len int* 0 Länge des Textes, der im Rahmen geziegt wird.
tableIn Table 0 Beginnt der Rahmentext mit einer umbrochenen Tabelle, enthält diese Variable nach erfolgreicher Ausführung der Funktion diese Tabelle.

0 : Tabellenumbruch ignorieren
firstRow int* 0 Beginnt der Rahmentext mit einer umbrochenen Tabelle, enthält diese Variable nach erfolgreicher Ausführung die 0-basierte Zeilennummer der ersten sichtbaren Hauptzeile der Tabelle im Rahmen. Mögliche wiederholte Kopfzeilen werden nicht gezählt.

0 : Tabellenumbruch ignorieren
tableOut Table 0 Endet der Rahmentext mit einer umbrochenen Tabelle, enthält diese Variable nach erfolgreicher Ausführung der Funktion diese Tabelle.

0 : Tabellenumbruch ignorieren
lastRow int* 0 Endet der Rahmentext mit einer umbrochenen Tabelle, enthält diese Variable nach erfolgreicher Ausführung die 0-basierte Zeilennummer der letzten sichtbaren Hauptzeile der Tabelle im Rahmen. Mögliche wiederholte Fußzeilen werden nicht gezählt.

0 : Tabellenumbruch ignorieren
#include "internal/text.h"

Im Beispiel soll für den aktuellen Rahmen ein vertikaler Keil angewendet werden. Ist der Rahmen der letzte der verketteten Liste, soll der Keil nicht angewendet werden. Aber in diesem Fall sollen trotzdem alle Abstände vor den Absätzen zurückgesetzt werden.

#include "internal/text.h"
#include "internal/types.h"
int main() { ItemRef succ = item::alloc (); int succRes = frame::get_link (gFrame, succ); int tpos = frame::get_textpos (gFrame);
if (succRes == 0 && !frame::is_valid (succ)) { textmodel::justify_reset (gFrame, tpos); }
textmodel::justify (gFrame, 0, kFrameEnd);
return 0; }

Version 2.1, R1401, 29.06.2009
tableIn, firstRow, tableOut, lastRow seit v3.4 R5200, 25. Feb 2014

priint:comet InDesign® Plug-Ins

comet.CFrame.getTextPosition

static int frame::color(
  ItemRef frameRef,
  char* colorName,
  int joinType = -1,
  int capType = -1,
  float tint = -1.0)

Fülle den Rahmen in der angegebenen Farbe. Die Farbe wird über ein definiertes Farbfeld festgelegt.

Aus historischen Gründen kann die Funktion auch zur Definition der Linienenden der Rahmenkontur verwendet werden. Soll dabei die Hintergrundfarbe unverändert bleiben, geben Sie im Parameter colorName den Wert 0 oder "" an.
  JoinType
0 Mitter
1 Round
2 Bevel
  CapType
0 Button
1 Round
2 Square

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
colorName String oder char* - Neue Hintergrundfarbe des Rahmens

0 oder "" : Unverändert lassen
sonst : Gültiger Farbname der Palette Farbfelder oder Standardfarbe
joinType int -1 Wie treffen die Rahmenecken aufeinander?

-1 : Unverändert lassen
sonst : siehe obige Tabelle
capType int -1 Wie enden die Rahmenlinien?

-1 : Unverändert lassen
sonst : siehe obige Tabelle
tint float -1.0 Deckungsgrad der Farbe (0.0-100.0)

-1.0 : Unverändert lassen

Parameter joinType und capType seit v1.0.20
Parameter tint seit v3.3 R3112, 12. Oct. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.setFillColor

static int frame::color_rgb(
  ItemRef frameRef,
  int r,
  int g,
  int b,
  int joinType = -1,
  int capType = -1)

Fülle den Rahmen in der angegebenen Farbe. Die Farbe wird über ihre RGB-Werte festgelegt.

Aus historischen Gründen kann die Funktion auch zur Definition der Linienenden der Rahmenkontur verwendet werden. Soll dabei die Hintergrundfarbe unverändert bleiben, geben Sie als Farbwerte jeweils den Wert -1 an.
  JoinType
0 Mitter
1 Round
2 Bevel
  CapType
0 Button
1 Round
2 Square

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
r, g, b int, int, int - RGB-Werte der Füllfarbe im Bereich 0-255

-1, -1, -1 : Unverändert lassen
joinType int -1 Wie treffen die Rahmenecken aufeinander?

-1 : Unverändert lassen
sonst : siehe obige Tabelle
capType int -1 Wie enden die Rahmenlinien?

-1 : Unverändert lassen
sonst : siehe obige Tabelle

Parameter joinType und capType seit v1.0.20
Parameter tint seit v3.3 R3112, 12. Oct. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.setFillColor

static int frame::color_cmyk(
  ItemRef frameRef,
  float c,
  float m,
  float y,
  float k,
  int joinType = -1,
  int capType = -1)

Fülle den Rahmen in der angegebenen Farbe. Die Farbe wird über ihre CMYK-Werte festgelegt.

Aus historischen Gründen kann die Funktion auch zur Definition der Linienenden der Rahmenkontur verwendet werden. Soll dabei die Hintergrundfarbe unverändert bleiben, geben Sie als Farbwerte jeweils den Wert -1.0 an.
  JoinType
0 Mitter
1 Round
2 Bevel
  CapType
0 Button
1 Round
2 Square

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
c, m, y, k float, float, float, float - CMYK-Werte der Füllfarbe im Bereich 0.0 - 1.0

-1.0, -1.0, -1.0, -1.0 : Unverändert lassen
joinType int -1 Wie treffen die Rahmenecken aufeinander?

-1 : Unverändert lassen
sonst : siehe obige Tabelle
capType int -1 Wie enden die Rahmenlinien?

-1 : Unverändert lassen
sonst : siehe obige Tabelle

Parameter joinType und capType seit v1.0.20
Parameter tint seit v3.3 R3112, 12. Oct. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.setFillColor

static int (
  ItemRef frameRef,
  float opacity,
  int blendMode = -1,
  int overPrint = -1,
  int opacType = 0)

Transparenz eines Rahmens verändern. Für die Methode ist types.h nötig : #include "internal/types.h" Wurde die Hintergrundfarbe mit RGB-Werten und nicht über den Namen eines Eintrages der Farbpalette festgelegt, hat der opacity-Parameter keine Wirkung.

Die folgende Tabelle gibt die möglichen Werte an, mit der Rahmen mit dem Hindergrund verknüpft werden können:
Wert Verfahren
0 Normal
1 Multiplizieren
2 Negativ multiplizieren
3 Ineinanderkopieren
4 Weiches Licht
5 Hartes Licht
6 Farbig abwedeln
7 Farbig nachbelichten
8 Abdunklen
9 Aufhellen
10 Differenz
11 Ausschluß
12 Farbton
13 Sättigung
14 Color
15 Luminanz
16 NonZeroOverprint

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
opacity float - Transparenz in % (0.0 - 100.0)

-1.0 : Transparenz unverändert lassen
blendMode int -1 Mischung mit dem Hintergrund, siehe obige Tabelle

-1 : unverändert lassen
overPrint int -1 Hintergrund überdrucken

-1 : unverändert lassen
opacType int kBlendingBasic Welche Transparenz soll verändert werden?

kBlendingBasic : alles
kBlendingStroke : Kontur
kBlendingFill : Fläche
kBlendingContent : Inhalt
#include "internal/types.h"
err_code = frame::opacity (frameRef, opacity [, blendMode]);

Parameter overPrint ab Version 1.0.20
Parameter opacType since v3.3.1 R3956, 27. Jun 2013

priint:comet InDesign® Plug-Ins, comet_pdf

Seit v4.05, 26. Nov 2015. Eine bessere Möglichkeit zum Setzen der überblendungseigenschaften eines Rahmens bietet die Funktion frame::set_blending. Die Funktion frame::opacity kann aber weiterhin verwendet werden.
get_opacity
set_blending
get_blending
set_overprint
get_overprint

static int frame::set_blending(
  ItemRef frameRef,
  int what,
  float opacity,
  int blendMode = -1,
  int isolation = -1,
  int knockout = -1)

Transparenz und überfüllungsseigenschaften eines Rahmens setzen. Mit der Funktion können Durchsichtigkeit, Füllmethode, "Füllmethode isolieren" und Aussparungsgruppe von Rahmen gesetzt werden. Die Eigenschaften können dabei jeweils auf Kontur, Füllung, Inhalt (Bild oder Text) oder auf alles zusammen angewendet werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
what int kBlendingBasic Welche Werte sollen verändert werden?

kBlendingBasic : alles
kBlendingStroke : Kontur
kBlendingFill : Fläche
kBlendingContent : Inhalt
opacity float - Transparenz in % (0.0 - 100.0)

-1.0 : Transparenz unverändert lassen
blendMode int -1 Füllmethode
-1 : unverändert lassen
Weitere Werte siehe hier.
isolation int -1 Füllmethode isolieren?

-1 : unverändert lassen

Nicht verwendet von comet_pdf.
knockout int -1 Aussparungsgruppe?

-1 : unverändert lassen

Nicht verwendet von comet_pdf.
#include "internal/types.h"
#include "internal/types.h"
char * what2str (int what, char * ws) { if (what == kBlendingBasic) strcpy (ws, "Basic"); else if (what == kBlendingStroke) strcpy (ws, "Stroke"); else if (what == kBlendingFill) strcpy (ws, "Fill"); else if (what == kBlendingContent) strcpy (ws, "Content"); else sprintf (ws, "Blend %d", what);
return ws; }
int w_blendings (ItemRef fr, char * mess) { float opac; int blendmode; int isolation; int knockout; int what; char ws[255];
wlog ("", "Frame %d, %s\n", item::getint (gFrame), mess);
for (what = kBlendingBasic; what <= kBlendingContent; what++) { opac = frame::get_blending (gFrame, what, &blendmode, &isolation, &knockout); wlog ("", " %s\t%f\t%d\t%d\t%d\n",   what2str (what, ws),   opac,   blendmode,   isolation,   knockout); }
wlog ("", "\n"); return 0; }
int change_blending (ItemRef fr, int what, float opacity, int blendmode, int isolation, int knockout) { int result = frame::set_blending (fr, what, opacity, blendmode, isolation, knockout); char mess [512]; char ws [255];
sprintf (mess, "%s changed to (%f, %d, %d, %d)",   what2str (what, ws),   opacity,   blendmode,   isolation,   knockout); w_blendings (fr, mess); return result; }
int w_overprints (ItemRef fr, char * mess) { wlog ("", "%s :: frame %d overprints : fill %d, stroke %d, gap %d\n",   mess,   item::getint (fr),   frame::get_overprint (fr, kOverprintFill),   frame::get_overprint (fr, kOverprintStroke),   frame::get_overprint (fr, kOverprintGap)); return 0; }
int main () { w_blendings (gFrame, "Original");
change_blending (gFrame, kBlendingStroke, 30.0, 3, 1, 1); change_blending (gFrame, kBlendingFill, 40.0, 4, 1, 0); change_blending (gFrame, kBlendingContent, 50.0, 5, 1, 0); change_blending (gFrame, kBlendingBasic, 60.0, 6, 1, 0);
w_overprints (gFrame, "Before"); frame::set_overprint (gFrame, kOverprintFill, 0); frame::set_overprint (gFrame, kOverprintStroke, 1); frame::set_overprint (gFrame, kOverprintGap, 1); w_overprints (gFrame, "After");
return 0; }

v4.0.5 R9720, 4. Dez 2015

priint:comet InDesign® Plug-Ins, comet_pdf

get_blending
set_overprint
get_overprint

static float frame::get_blending(
  ItemRef frameRef,
  int what,
  int* blendMode = 0,
  int* isolation = 0,
  int* knockout = 0)

Transparenz und überfüllungsseigenschaften eines Rahmens erfragen. Mit der Funktion können Durchsichtigkeit, Füllmethode, "Füllmethode isolieren" und Aussparungsgruppe von Rahmen erfragt werden. Die Eigenschaften können dabei von Kontur, Füllung, Inhalt (Bild oder Text) einzeln erfragt werden.

Name Typ Default Beschreibung
Return float   Durchichtigkeit in % (0.0 - 100)

-1.0 : Fehler
frameRef ItemRef - Zielrahmen
what int kBlendingBasic Welche Werte sollen erfragt werden?

kBlendingBasic : allgemein
kBlendingStroke : Kontur
kBlendingFill : Fläche
kBlendingContent : Inhalt
blendMode int* 0 Füllmethode
Mögliche Werte siehe hier.
isolation int* 0 Füllmethode isoliert?

0 : Nein
1 : Ja

Nicht unterstützt comet_pdf.
knockout int* 0 Aussparungsgruppe?

0 : Nein
1 : Ja

Nicht unterstützt von comet_pdf.
#include "internal/types.h"

Ein Beispiel finden Siue unter set_blending.

Siehe set_blending

v4.0.5 R9720, 4. Dez 2015

priint:comet InDesign® Plug-Ins, comet_pdf

set_blending
set_overprint
get_overprint

static int frame::set_overprint(
  ItemRef frameRef,
  int what,
  int overprint)

Überdruckung eines Rahmens festlegen. Sie können das für die Füllung, die Kanten und die Löcher in den Kanten einzeln einstellen oder für alles zusammen.

Für comet_pdf ist Überdruckung noch nicht implementiert. Hier hat der Befehl keine Auswirkungen.

Name Typ Default Beschreibung
Return int   Fehlercode or 0
frameRef ItemRef - Zielrahmen
what int kOverprintBasic Für welche Rahmenteile soll die Änderung gamcht werden?

0 kOverprintBasic : Füllung, Kontur und Löcher der Kontur
1 kOverprintStroke : Kontur
2 kOverprintFill : Füllung
3 kOverprintGap : Löcher der Kontur
overprint int - Soll überdruckt werden?

0 : Nein (besser ist das :-) )
1 : Ja
#include "internal/types.h"

Ein Beispiel finden Siue unter set_blending.

Siehe set_blending

v4.0.5 R9720, 4. Dez 2015

priint:comet InDesign® Plug-Ins, comet_pdf

get_blending
set_blending
get_overprint
comet.CPageItem.setOverprint

static int frame::get_overprint(ItemRef frameRef, int what)

Überdruckung eines Rahmens erfragen.

Für comet_pdf ist Überdruckung noch nicht implementiert. Hier hat der Befehl keine Auswirkungen.

Name Typ Default Beschreibung
Return int   Wird überdruckt werden?

0 : Nein
1 : Ja
-1 : Fehler oder Eigenschaft nicht verfügbar
frameRef ItemRef - Zielrahmen
what int - Welche Überdrucken-Eigenschaft soll erfragt werden?

1 kOverprintStroke : Kontur
2 kOverprintFill : Füllung
3 kOverprintGap : Löcher der Kontur
sonst : Fehler (-1)
#include "internal/types.h"

Ein Beispiel finden Siue unter set_blending.

Siehe set_blending


priint:comet InDesign® Plug-Ins, comet_pdf

get_blending
set_blending
set_overprint
comet.CPageItem.getOverprint

static int frame::stroke(
  ItemRef frameRef,
  char* colorName= "",
  float width = -1.0,
  float tint = -1.0,
  int overPrint = -1,
  int lineStyle = -1,
  char* gapColor = "",
  float gapTint = -1.0,
  int gapOverPrint = -1,
  int lineAlign = -1,
  float miter = -1.0)

Definition der Rahmenkontur. Die Definition der Farbe erfolgt über den Namen eines definierten Farbfeldes. Folgende Linentypen können definiert werden.
LineStyle Name Verfügbarkeit
0 SolidPath  
1 DashedPath  
2 CannedDash4x4  
3 CannedDash3x2  
4 CannedDot  
5 SingleWavy ab InDesign® CS
6 StraightHash ab InDesign® CS
7 RightSlantHash ab InDesign® CS
8 LeftSlantHash ab InDesign® CS
9 WhiteDiamond ab InDesign® CS
10 JapaneseDots ab InDesign® CS
11 ThinThin  
12 ThinThick  
13 ThickThin  
14 ThickThick  
15 ThinThickThin  
16 ThickThinThick  
17 Triple ab InDesign® CS
18 TableStripe ab InDesign® CS

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
colorName String oder char* "" Name einer Farbe oder Standardfarbe

"" : Farbe unverändert lassen
width float -1.0 Stärke des Rahmens in Punkten
-1.0 ignorieren
tint float -1.0 Farbton in % (0.0-100.0)
-1.0 ignorieren
overPrint int -1 Hintergrund überdrucken?

1 ja
0 nein
-1 ignorieren
lineStyle int -1 Siehe obige Tabelle
-1 ignorieren
gapColor String oder char* "" Farbe zum Füllen der "Löcher" im Rahmens oder Standardfarbe

0 oder "" : ignorieren
gapTint float -1.0 Farbton der "Löcher" des Rahmens in % (0.0-100.0)

-1.0 ignorieren
gapOverPrint int -1 Hintergrund der Lücken überdrucken?

1ja
0 nein
-1 ignorieren
alignment int -1 Wo soll die Kontur angebracht werden?

-1 ignorieren
0 in der Mitte
1 innen
2 außen
miter float -1.0 Gehrung

-1.0 ignorieren
sonst Werte aus dem Bereich 1.0 - 500.0
main ()
{
    frame::stroke (
     	gFrame,
     	"Lime",	// Hellgrün
     	20.0,	// Stärke
     	50.0,	// Durchsichtigkeit
     	-1,		// Overprint
     	5		// Linenstil
     	);
}

Die Parameter ab tint sind seit Version 1.0.20 verfügbar.
Die Farbe kann seit Version 2.1 R684, 24. 04. 2008 unverändert gelassen werden.

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.setStroke

static int frame::stroke_rgb(
  ItemRef frameRef,
  int r,
  int g,
  int b,
  float width = -1.0,
  int overPrint = -1,
  int lineStyle = -1,
  int gapR = 0,
  int gapG = 0,
  int gapB = 0,
  int gapOverPrint = -1,
  int lineAlign = -1,
  float miter = -1.0)

Definition der Rahmenkontur mit RGB-Farbe. Die Farbe der Kontur wird über die RGB-Anteile (0-255) der Farbe festgelegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
r, g, b int, int, int - Farbwerte jeweils 0-255

-1, -1, -1 : Farbe ignorieren
width float -1.0 Dicke des Rahmens in Punkten

-1.0 ignorieren
overPrint int -1 1 Hintergrund überdrucken
0 Hintergrund nicht überdrucken
-1 ignorieren
lineStyle int -1 Siehe obige Tabelle

-1 ignorieren
gapR, gapG, gapB int, int, int -1, -1, -1 Farbwerte der "Löcher" im Rahmens, jeweils 0-255

-1, -1, -1 : Farbe ignorieren
gapOverPrint int -1 1 Hintergrund der "Rahmenlöcher" überdrucken
0 Hintergrund nicht überdrucken
-1 ignorieren
alignment int -1 Wo soll die Kontur angebracht werden?

-1 ignorieren
0 in der Mitte
1 innen
2 außen
miter float -1.0 Gehrung

-1.0 ignorieren
sonst Werte aus dem Bereich 1.0 - 500.0
err_code = frame::stroke (frameRef, r, g, b [, width]);

Die Parameter ab tint sind seit Version 1.0.20 verfügbar.

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.setStroke

static int frame::stroke_cmyk(
  ItemRef frameRef,
  float c,
  float m,
  float y,
  float k,
  float width = -1.0,
  int overPrint = -1,
  int lineStyle = -1,
  float gapC = 0.0,
  float gapM = 0.0,
  float gapY = 0.0,
  float gapK = 0.0,
  int gapOverPrint = -1,
  int lineAlign = -1,
  float miter = -1.0)

Definition der Rahmenkontur mit CMYK-Farbe. Die Farbe der Kontur wird über die CMYK-Anteile (0.0 -1.0) der Farbe festgelegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
c, m, y, k float, float, float, float - Farbwerte jeweils 0.0 - 1.0

-1.0, -1.0, -1.0, -1.0 : Farbe ignorieren
width float -1.0 Dicke des Rahmens in Punkten

-1.0 ignorieren
overPrint int -1 1 Hintergrund überdrucken
0 Hintergrund nicht überdrucken
-1 ignorieren
lineStyle int -1 Siehe obige Tabelle

-1 ignorieren
gapC, gapM, gapY, gapK float, float, float, float -1.0, -1.0, -1.0, -1.0 Farbwerte der "Löcher" im Rahmens, jeweils 0.0 - 1.0

-1.0, -1.0, -1.0, -1.0 : Farbe ignorieren
gapOverPrint int -1 1 Hintergrund der "Rahmenlöcher" überdrucken
0 Hintergrund nicht überdrucken
-1 ignorieren
alignment int -1 Wo soll die Kontur angebracht werden?

-1 ignorieren
0 in der Mitte
1 innen
2 außen
miter float -1.0 Gehrung

-1.0 ignorieren
sonst Werte aus dem Bereich 1.0 - 500.0
err_code = frame::stroke (frameRef, r, g, b [, width]);

Die Parameter ab tint sind seit Version 1.0.20 verfügbar.

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.setStroke

static int frame::get_stroke(
  ItemRef f = 0,
  int* lineType = 0,
  float* width = 0,
  float* visiblewidth = 0,
  int* overprint = 0,
  int* gapoverprint = 0,
  int* align = 0,
  float* miter = 0)

Eigenschaften der Umrandung eines Rahmens ermitteln. Die Farbe der Umrandung ermitteln Sie mit get_stroke_color.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef 0 Gültige Rahmenreferenz
0 : aktuellen Skriptrahmen verwenden
linetype int* 0 Linientyp, siehe hier[#frame_stroke]
width float* 0 Linienstärke in Punkten
visiblewidth float* 0 Unbenutzt Sichtbare Linienstärke in Punkten. Die sichtbare Linienstärke ist lt. Adobe dann 0.0, wenn der Linientyp [None] ausgewählt ist - aber diese Einstellung läßt InDesign® gar nicht zu.
overprint int* 0 Linie überdruckt Hintergrund? Mögliche Werte siehe stroke.
gapoverprint int* 0 Linienlücken überdrucken Hintergrund? Mögliche Werte siehe stroke.
align int* 0 Ausrichtung der Linie. Mögliche Werte siehe stroke.
miter int* 0 Gehrung an den Ecken.
int main ()
{
    int 		type;
    float		width, viswidth;
    int			overprint, gapoverprint;
    int			align;
    float		miter;
    char		colname[256];
    int			colspace;
    float		c1, c2, c3, c4;
    float		tint;
frame::get_stroke (   gFrame,   &type,   &width, &viswidth,   &overprint, &gapoverprint,   &align,   &miter);
wlog ("", "# Stroke of frame %d\n", item::getint (gFrame)); wlog ("", " type : %d\n", type); wlog ("", " width : %f (%f)\n", width, viswidth); wlog ("", " overprint : %d (%d)\n", overprint, gapoverprint); wlog ("", " align : %d\n", align); wlog ("", " miter : %f\n", miter);
frame::get_stroke_color (   gFrame,   0,   colname,   &colspace,   &c1, &c2, &c3, &c4,   &tint); wlog ("", " color : %s (%f, %f, %f, %f), %f%%\n", colname, c1, c2, c3, c4, tint);
frame::get_stroke_color (   gFrame,   1,   colname,   &colspace,   &c1, &c2, &c3, &c4,   &tint); wlog ("", " gap-color : %s (%f, %f, %f, %f), %f%%\n", colname, c1, c2, c3, c4, tint);
return 0; }

Version 3.1 R2137, 20.09.2010

priint:comet InDesign® Plug-Ins, comet_pdf

stroke
get_stroke_color

static int frame::get_stroke_color(
  ItemRef f = 0,
  int forGap = 0,
  char* colName = 0,
  int* colSpace = 0,
  float* c1 = 0,
  float* c2 = 0,
  float* c3 = 0,
  float* c4 = 0,
  float* tint = 0)

Farbe der Umrandung (stroke) eines Rahmens ermitteln. Im Fehlerfall bleiben die Rückgabeparameter unberührt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef 0 Gültige Rahmenreferenz
0 : aktuellen Skriptrahmen verwenden
forGap int 0 Farbe der Linie oder Farbe der Lücken

0 : Farbe der Linie
1 : Farbe der Lücken
colName String oder char* 0 Name der Farbe in der Farbpalette oder leer
0 : Farbnamen nicht ermitteln
sonst : Reservierter Speicher für den Farbnamen
colSpace int* 0 Farbraum
0 : Farbraum nicht ermitteln
sonst :
  kRGB
  kCMYK
  kLab
c1, c2, c3, c4 float* 0 Farbwerte
0 : Farbwerte nicht ermitteln
sonst :
  r, g, b bei kRGB
  c, m, y, k bei kCMYK
  l, a, b bei kLab
tint float* 0 Intensität der Farbe
0 : nicht ermitteln
sonst : 0.0 - 100.0
#include "internal/types.h"

Das Beispiel ermittelt die Farbe der Umrandung eines Rahmens.

#include "internal/types.h"
int main () { char colName[256]; int colSpace; float c1, c2, c3, c4, tint;
if (frame::get_stroke_color (0,0, colName,&colSpace,&c1,&c2,&c3,&c4,&tint) == 0) { if (colSpace == kRGB) { showmessage (   "Farbname : %s\nR : %f\nG : %f\nB : %f\nTint : %f\n",   colName,   c1, c2, c3, tint); } else if (colSpace == kCMYK) { showmessage (   "Farbname : %s\nC : %f\nM : %f\nY : %f\nK : %f\nTint : %f\n",   colName,   c1, c2, c3, c4, tint); } else if (colSpace == kLab) { showmessage (   "Farbname : %s\nL : %f\na : %f\nb : %f\nTint : %f\n",   colName,   c1, c2, c3, tint); } else { showmessage ("Unbekannter Farbraum"); } } else { showmessage ("Farbe konnte nicht ermittelt werden."); }
return 0; }

Version 3.1 R2137, 20.09.2010

priint:comet InDesign® Plug-Ins, comet_pdf

get_color
get_stroke

static int frame::get_lineends(
  ItemRef frameRef,
  int* start,
  int* end)

Ermittle die Linienenden (aka Pfeile) des Pfades eines Rahmens. Beachten Sie bitte, dass sowohl InDesign® als auch comet_pdf das Setzen von Linienenden an beliebigen Rahmen zwar unterstützen aber nur an offenen Pfaden auch zeichnen. Die Funktion kann also auch bei Rechteckrahmen und anderen geschlossenen Formen definierte Linienenden zurückgeben.

Folgende Linienenden (Pfeile) werden unterstützt:

ID Beschreibung
0 Ohne
1 Einfach
2 Stumpfer Winkel
3 Dreieck
4 Breites Dreieck
5 Gezackt
6 Gekrümmt
7 Kreis
8 Ausgefüllter Kreis
9 Quadrat
10 Ausgefülltes Quadrat
11 Balken

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef 0 Gültige Rahmenreferenz

0 : aktuellen Skriptrahmen verwenden
start int* 0 Nach der Ausführung enthält die Variable den Typ des Linienanfangs, siehe Pfeile.

0 : Rückgabe ignorieren
end int* 0 Nach der Ausführung enthält die Variable den Typ des Linienendes, siehe Pfeile.

0 : Rückgabe ignorieren

v4.2 R31404, 15. Aug 2022

priint:comet InDesign® Plug-Ins, comet_pdf

set_lineends
get_type

static int frame::set_lineends(
  ItemRef frameRef,
  int start,
  int end)

Setze die Linienenden (aka Pfeile) des Pfades eines Rahmens. Beachten Sie bitte, dass sowohl InDesign® als auch comet_pdf das Setzen von Linienenden an beliebigen Rahmen zwar unterstützen aber nur an offenen Pfaden auch zeichnen. Die Funktion kann also auch bei Rechteckrahmen und anderen geschlossenen Formen Linienenden setzen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef 0 Gültige Rahmenreferenz

0 : aktuellen Skriptrahmen verwenden
start int -1 Neuer Start des Pfades, siehe Pfeile.

-1 : Unverändert lassen
end int -1 Neues Ende des Pfades, siehe Pfeile.

-1 : Unverändert lassen

v4.2 R31404, 15. Aug 2022

priint:comet InDesign® Plug-Ins, comet_pdf

get_lineends
get_type

static int frame::noshadow(ItemRef frameRef)

Entferne den Schatten eines Rahmens. Hat der angegebene Rahmen keinen Schatten, hat die Funktion keine Bedeutung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
err_code = frame::noshadow (frameRef);

v3.0

priint:comet InDesign® Plug-Ins

static int frame::shadow(
  ItemRef frameRef,
  char* colorName,
  float opacity,
  int blendMode,
  float x_diff,
  float y_diff,
  float = -1.0)

Schatten (DropShadow) eines Rahmens über Farbnamen. Die Definition der Farbe erfolgt über den Namen eines Eintrages der Farbfelder.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
colorName String oder char* - Farbname oder Standardfarbe
opacity float - Durchsichtigkeit in % (0.0 - 100.0)
blendMode int - Mischung mit dem Hintergrund (siehe Tabelle unter frame::opacity)
x_diff float - Horizontaler Abstand vom Rahmen in Punkten
y_diff float - Vertikaler Abstand vom Rahmen in Punkten
blur_r float - Größe der "Verunreinigung" in Punkten
err_code = frame::shadow (frameRef, color,
 		opacity, blendMode,
 		x_diff, y_diff, [blur_r]);

v3.0

priint:comet InDesign® Plug-Ins

static int frame::shadow(
  ItemRef frameRef,
  int r,
  int g,
  int b,
  float opacity,
  int blenMode,
  float x_diff,
  float y_diff,
  float blur_r= -1.0)

Schatten (DropShadow) eines Rahmens über die RGB-Werte der Farbe. Die Definition der Farbe über ihre RGB-Werte.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
r, g, b int - Farbanteile (0-255)
opacity float - Durchsichtigkeit in % (0.0 - 100.0)
blendMode int - Mischung mit dem Hintergrund (siehe Tabelle unter frame::opacity)
x_diff float InDesign®-Einstellung Horizontaler Abstand vom Rahmen in Punkten
y_diff float InDesign®-Einstellung Vertikaler Abstand vom Rahmen in Punkten
blur_r float InDesign®-Einstellung Größe der "Verunreinigung" in Punkten
err_code = frame::shadow (frameRef, color,
 		opacity,  blendMode,
 		x_diff, y_diff, [blur_r]);

v3.0

priint:comet InDesign® Plug-Ins

static int frame::vignette(
  ItemRef frameRef,
  int vigCorner,
  float width,
  int vigMode = 0,
  float oOpaque = 0.0,
  float iOpaque = 0.0)

Kanten und Ecken
  VignetteCorners
0 Sharp
1 Soft
2 Diffusion
  VignetteMode
0 None
1 Rectangular
2 Elliptical
1 FollowShape

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
vigCorner int - Spitz oder Rund oder was, siehe obige Tabelle VignetteCorners
width float - Breite der Verfremdung
vigMode int - Rechteckig oder Oval , siehe obige Tabelle VignetteMode
oOpaque float - Wie durchsichtig ist der Teil des Rahmens, der durch eine runde Ecke außen frei wird?
iOpaque float - Wie durchsichtig ist der Teil des Rahmens, der durch eine runde Ecke innen überdeckt wird?
err_code = frame::vignette (frameRef,
 		vigCorner, width
 		[, vigType
 		[, oOpaque
 		[, iOpaque]]]);

v3.0

priint:comet InDesign® Plug-Ins

static int frame::store_text(
  ItemRef frameRef,
  int start,
  int len,
  DBC* dbc,
  char* attr,
  char* table,
  long ID,
  long egoistic = 0,
  char* pageItemName = 0)

Schreibe den Inhalt eines Rahmens in die Datenbank. Alle Formatierungen, Platzhalter und Tabellen des Textes werden in die Datenbank übertragen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, dessen Inhalt gesichert werden soll
start int - Startposition, ab der der Text gesichert werden soll
kSelection Aktuelle Textauswahl
>= 0 Textposition. Werte größer als die Textlänge werden auf das Textende gesetzt
sonst : Textanfang
len int - Länge des Textes, der gesichert werden soll
kEnd Kopieren bis zum Textende <=0 : Sichern eines leeren Textes
Ist start == kSelection hat die Längenangabe keine Bedeutung.
dbc DBC - Zieldatenbank, siehe sql::dbconnection
attr String oder char* - Attribut der Zieltabelle, in die das Ergebniss geschrieben werden soll. Das Attribut muss vom Typ BLOB sein und darf nicht TEXT heißen.
table String oder char* - Name der Zieltabelle. Ist der Tabellenname leer (0 oder ""), wird als Zieltabelle die Datenbanktabelle pageitems verwendet und die Daten in pageitems.data abgelegt. In pageitems.preview wird ein Screenshot des Macros abgelegt.
ID int - ID in der Zieltabelle
-1 : Neuen Datensatz anlegen
egoistic int 1 ab Version 1.34 R 343 Seit dieser Version können auch Textteile aus verlinkten Rahmen im Template abgelegt werden

1 : Nur Textinhalte des eigenen Rahmens
0 : Verlinkte Rahmen berücksichtigen
pageItemName String oder char* 0 Name des Eintrages. Der Name wird nur benutzt, wenn table leer oder gleich pageitems ist.
#include "internal/text.h"

Ein Beispiel zur Funktion finden sie in textmodel::store.


Version 1.1.4
egoistic und pageItemName seit Version 1.4 R343, 31. Mai 2007

priint:comet InDesign® Plug-Ins

textmodel::store
frame::restore_text

static int frame::store_macro(
  ItemRef frameRef,
  int start,
  int len,
  int ID,
  int* macroID = 0,
  DBC dbc = 0,
  char* table = 0,
  char* data_attr = 0,
  char* prv_attr = 0,
  int useOldStyle = 1,
  char* macroName = 0)

Schreibe den Inhalt des aktuellen Textmodelles in die Datenbank. Alle Formatierungen, Platzhalter, Tabellen und schwebenden Rahmen des Textes werden gesichert. Für den einfachen Export formatierten Textes ohne schwebende Rahmen kann der Befehl textmodel::gettext mit dem Parameter kExportTagged oder kExportTT verwendet werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
start int - Startposition, ab der der Text gesichert werden soll
kSelection Aktuelle Textauswahl
>= 0 Textposition. Werte größer als die Textlänge werden auf das Textende gesetzt
sonst : Textanfang
len int - Länge des Textes, der gesichert werden soll
kEnd Kopieren bis zum Textende <=0 : Sichern eines leeren Textes
Ist start == kSelection hat die Längenangabe keine Bedeutung.
ID int - ID in der Zieltabelle. Der Datensatz wird bei Bedarf angelegt.
<= 0 : Ermittle selbssständig die nächste freie ID
macroID int* 0 ID des angelegten oder geänderten Macros. Im Fehlerfall (return != 0) enthält die Variable den Wert 0.
dbc DBC 0 Zieldatenbank. Ist die Angabe leer, wird die aktuelle Datenverbindung verwendet.
table String oder char* 0 Name der Zieltabelle. Der Name ist nur bei Exporten in Datenbanken relevant. Bei Exporten in XML-Dateien und auf SOAP-Server werden die Einträge in die Datei pageitems.xml eingetragen und die Daten und das Preview in Unterordnern des Datenordners pageitems abgelegt.
Ist der Tabellenname leer (0 oder ""), wird als Zieltabelle die Datenbanktabelle pageitems verwendet und die Daten in pageitems.data abgelegt. In pageitems.preview wird ein Screenshot des Macros abgelegt.
data_attr String oder char* 0 Das Attribut ist nur beim Export in Datenbanken (nicht für XML oder SOAP) und einem Tabellennamen ungleich 0, "" oder "pageitems" relevant und gibt das Attribut der Zieltabelle an, in das das Ergebniss geschrieben werden soll. Das Attribut muss vom Typ BLOB sein und darf nicht TEXT heißen..
prv_attr String oder char* 0 Das Attribut ist nur beim Export in Datenbanken (nicht für XML oder SOAP) und einem Tabellennamen ungleich 0, "" oder "pageitems" relevant und gibt das Attribut der Zieltabelle an, in das der Screenshot des Ergebniss geschrieben werden soll. Das Attribut muss vom Typ BLOB sein und darf nicht TEXT heißen..
useOldStyle int 1 ab Version 1.34 R 343 Seit dieser Version werden auch Textteile aus verlinkten Rahmen im Template abgelegt.
1 : Nur Textinhalte des eigenen Rahmens 0 : Verlinkte Rahmen berücksichtigen
macroName String oder char* 0 Name des Eintrages. Der Name wird nur benutzt, wenn table leer oder gleich pageitems ist.
#include "internal/text.h"

Sichere die aktuelle Textauswahl in einem neuen Template.

int main ()
{
    int		res;
    int		macroID;
res = frame::store_macro (   gFrame, // Aktueller Rahmen   -2, 0, // Aktuelle Textauswahl   -1, // Neues Template anlegen   ¯oID); // ID des angelegten Macros
if (res == 0 && macroID != 0)   showmessage ("Template %d angelegt", macroID); else   showmessage ("Fehler %d", res);
return 0; }

Version 1.2 (11. August 2005)
useOldStyle und macroName seit Version 1.4 R343, 31. Mai 2007

priint:comet InDesign® Plug-Ins, comet_pdf

textmodel::store
textmodel::restore
frame::store_macro
frame::insert_macro

static int frame::restore_text(
  ItemRef frameRef,
  int start,
  int len,
  DBC* dbc,
  char* attr,
  char* table,
  long ID,
  int autoLoad = 1,
  long* inserted = 0)

Ersetze den Text des angegebenen Textrahmens durch einen datenbankgesicherten Inhalt. Alle Formatierungen und Platzhalter des Textes werden aus der Datenbank übernommen. Verwendete Referenzen (Formate, Farben, ...) werden, wenn sie noch nicht definiert sind, automatisch in das Zieldokument eingetragen. Sind Formate oder Farben bereits definiert, werden die Vorgaben des Zieldokumentes verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, dessen Inhalt geändert werden soll
start int - Startposition, ab der bestehender Text überschrieben werden soll
kSelection Aktuelle Textauswahl
>= 0 Textposition. Werte größer als die Textlänge werden auf das Textende gesetzt
sonst : Textanfang
len int - Länge des Textes, der überschrieben werden soll
kEnd überschreiben bis zum Textende <=0 : Einfügen bei start
Ist start == kSelection hat die Längenangabe keine Bedeutung.
dbc DBC - Datenbank, in der das Macro gesichert ist

0 : Aktuelle Datenverbindung

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
attr String oder char* - Attributname in der Tabelle der Macros. Das Attribut muss vom Typ BLOB sein und darf nicht TEXT heißen.

0 oder "" : "data"

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
table String oder char* - Name der Tabelle mit den Macros.

0 oder "" : "pageitems"

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
ID int - ID in der Tabelle der Macros. In XML-Offline und SOAP/PubServer-Verbindungen verwenden Sie hier die Template-ID.
autoLoad int 1 Sollen Platzhalter, die sich im eingefügten Text befinden, neu geladen werden?
0 : Platzhalter nicht laden
sonst :Platzhalter laden
inserted int* 0 Wieviele Zeichen wurden in den Text eingefügt? Die Variable hat nur dann einen sinnvollen Wert, wenn die Funktion fehlerfrei beendet wurde.
#include "internal/text.h"

Ein Beispiel zur Funktion finden sie in textmodel::restore.

textmodel.html#restore>siehe textmodel::restore

Version 1.1.4
Die Parameter autoLoad und inserted sind seit Version 1.1.7, Januar 2005, implementiert.
comet_pdf seit v4.2 R32720, 14. Apr 2023

priint:comet InDesign® Plug-Ins, comet_pdf

frame::store_text
textmodel::restore

static int frame::insert_macro(
  ItemRef frameRef,
  int start,
  int len,
  int ID,
  int autoLoad = 0,
  int* inserted_len = 0,
  DBC dbc = 0,
  char* table = 0,
  char* data_attr = 0)

Füge ein mit frame::store_macro oder textmodel::store_macro gesichertes Textstück in den aktuellen Dokumenttext ein. Der Text wird mit allen Formatierungen eingefügt. Fehlende Absatz- und Zeichenstile werden angelegt. Schwebende Rahmen werden automatisch importiert und verknüpft. Optional können die Platzhalter des eingefügten Textes neu geladen werden. Es werden alle Platzhalter des eingefügten Textes und alle Text- und Rahmenplatzhalter der verknüpften Rahmen geladen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Textrahmen, in den das Texttemplate eingefügt werden soll.
start int - Startposition, ab an der Text eingefügt werden soll
kSelection Aktuelle Textauswahl
>= 0 Textposition. Werte größer als die Textlänge werden auf das Textende gesetzt
sonst : Textanfang
len int - Länge des Textes, der vor dem Einfügen entfernt werden soll. Beim Löschen des Textes werden alle schwebenden Rahmen, die mit Teile des gelöschten Textes verknüpft sind ebenfalls gelöscht.
kEnd Löschen bis zum Textende <=0 : Nichts eines leeren Textes
Ist start == kSelection hat die Längenangabe keine Bedeutung.
ID int - ID in der Tabelle der Macros. In XML-Offline und SOAP/PubServer-Verbindungen verwenden Sie hier die Template-ID.
autoLoad int 0 Sollen nach dem Einfügen des Textes die Platzhalter im Text neu geladen werden?
0 : nicht laden
sonst : Laden
inserted_len int* 0 Wieviele Zeichen wurden in den Text eingefügt? Die Variable hat nur dann einen sinnvollen Wert, wenn die Funktion fehlerfrei beendet wurde.
dbc DBC - Datenbank, in der das Macro gesichert ist

0 : Aktuelle Datenverbindung

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
attr String oder char* - Attributname in der Tabelle der Macros. Das Attribut muss vom Typ BLOB sein und darf nicht TEXT heißen.

0 oder "" : "data"

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
table String oder char* - Name der Tabelle mit den Macros.

0 oder "" : "pageitems"

Die Angabe wird nur in ODBC-Datenverbindungen verwendet. In XML-Offline und SOAP/PubServer-Verbindungen wird immer die Ablage der Temnplates verwendet.
#include "internal/text.h"

Füge ein Textmacro ein.

int main ()
{
    int		result;
    int		inserted;
result = frame::insert_macro (   gFrame, // Aktueller Rahmen   -2, 0, // Aktuelle Textauswahl   23, // Texttemplate-ID   1, // Platzhalter laden   &inserted); // Anzahl neuer Zeichen
if (result == 0)   showmessage ("%d Zeichen eingefügt", inserted); else   showmessage ("Fehler : %s.", serror (result));
return 0; }

Version 1.2.1 (11. August 2005)

priint:comet InDesign® Plug-Ins

textmodel::insert_macro
textmodel::store_macro
frame::store_macro

static char* frame::image_getpath(
  ItemRef frameRef,
  char* path,
  int deepDive = 0)

Ermittle den Pfad des Bildes eines Grafikrahmens.

Name Typ Default Beschreibung
Return char*   0 : Bildpfad konnte nicht ermittelt werden
Sonst wird der Parameter path der Funktion zurückgegeben
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
path String oder char* - Reservierter Speicher für den Ergebnispfad
deepDive int 0 Auf gewisse Weise (die wir hier nicht erklären wollen) ist es möglich, Bildrahmen (inkl. dem eigentlichen Bild) in andere Rahmen einzusetzen. Wir raten von solchen Konstruktionen dringend ab. Trotzdem soll die Funktion auch in diesem Fall einen Pfad liefern - was sie ab CS5 auf Grund einer InDesign®-Änderung für Bildlinks nicht mehr tut. Ist der Parameter auf 1 gesetzt, wird (rekursiv) die Rahmenhierarchy durchsucht, bis ein Bildpfad gefunden wird.
   

Abgrenzung

In InDesign®-Gruppen und Textrahmen wird natürlich nicht eingetaucht. Trotzdem gibt es mglw. Fälle, in denen ein Bildpfad gefunden wird, weil die Rahmenstruktur irgendwo einen Bildrahmen enthält. Wir können das insbesondere für Statusobjekte, Pushbuttons nicht ausschließen.

Die Funktionsänderung betrifft darüber hinaus ausschließlich das Verhalten der frame::image_getpath. Andere intern verwendete Comet-Funktionen und insbesondere die Funktionen zum Sammeln von Platzhaltern, Aufgaben (ToDos), Export von Dokumentstrukturen (placeholders.xml, elements.xml, groups.xml, ...) können abweichende Pfadangaben ermitteln.

Von Illustrator wird der Parameter ignoriert.
int main ()
{
    char		path[4096];
if (frame::image_getpath (gFrame, path)) { showmessage (path); } else showmessage ("Kein Bildrahmen oder kein Bild");
return 0; }

Version 1.1.6
Parameter deepDive since v3.3 R2812, 01.03.2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CFrame.getImage

static int frame::image_getpos(
  ItemRef frameRef,
  float* x = 0,
  float* y = 0,
  int boundsKind = 0)

Ermittle die Position eines Bildes in einem Grafikrahmen. Die Angaben erfolgen in Punkt relativ zur linken oberen Ecke des Grafikrahmens.

Name Typ Default Beschreibung
Return int   0 : Bildposition konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
x float* 0 Rückgabevariable für den Abstand von der linken Seite des Grafikrahmens. Die Angabe erfolgt in Punkten.
Der Parameter darf 0 sein.
y float* 0 Rückgabevariable für den Abstand von der linken Seite des Grafikrahmens. Die Angabe erfolgt in Punkten.
Der Parameter darf 0 sein.
boundsKind int 0 Position relativ zu diesem Rahmen berechnen:

0 : Äusserer Rand der Kontur
1 : Pfad des Rahmens ("blauer" Rahmen)

Enthält der angegebene Rahmen ein Bild?

if (!frame::image_getsize (gFrameRef))
{
    wlog("", "Dieser Rahmen enthält ein Bild!\n");
}

Das Beispiel erfragt alle von cscript unterstützen Eigenschaften von Bilder in Grafikrahmen.

int main ()
{
    char		path[4096];
    float		x, y, width, height, scaleX, scaleY, rotat, skew;
    char		fmt[8000];
strcpy (fmt, "%s\r Position : %.6f x %.6f"); strcat (fmt, "\r Größe : %.6f x %.6f"); strcat (fmt, "\r Skalierung : %.6f x %.6f"); strcat (fmt, "\r Rotation : %.6f"); strcat (fmt, "\r Streckung : %.6f");
frame::image_getpath (gFrame, path); frame::image_getpos (gFrame, &x, &y, 1); frame::image_getsize (gFrame, &width, &height); frame::image_getscale (gFrame, &scaleX, &scaleY); frame::image_getrotation (gFrame, &rotat); frame::image_getskew (gFrame, &skew);
showmessage (fmt,   path,   x, y,   width, height,   scaleX, scaleY,   rotat, skew);
return 0; }

Version 1.1.6
boundsKind since v3.4 R5126, 24. Jan 2014

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::image_getpath_bbox(
  ItemRef frameRef,
  float* l = 0,
  float* t = 0,
  float* r = 0,
  float* b = 0)

Ermittle die Boundingbox des aktuellen Freistellpfades. Die Angaben erfolgen relativ zum Bildrahmen. Hat der Rahmen kein Bild oder ist kein Freistellpfad gesetzt, gibt die Funktion einen Fehlercode zurück.

Die Funktion ist identisch mit image::clippath.

Name Typ Default Beschreibung
Return int   0 : Boundingbox konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild oder das Bild keinen Freistellpfad
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
l float* 0 links
t float* 0 oben
r float* 0 rechts
b float* 0 unten

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::image_getsize(
  ItemRef frameRef,
  float* w = 0,
  float* h = 0,
  int bboxType = 0)

Wie groß ist das Bild eines Grafikrahmens. Die Größenangabe erfolgt in Punkten.

Name Typ Default Beschreibung
Return int   0 : Bildposition konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
w float* 0 Rückgabevariable für die Breite des Bildrahmens. Die Angabe erfolgt in Punkten.
Der Parameter darf 0 sein.
h float* 0 Rückgabevariable für die Höhe des Bildrahmens. Die Angabe erfolgt in Punkten.
Der Parameter darf 0 sein.
bboxType int 0 0 : Größe der BoundingBox um das möglw. gedrehte Bild ermitteln
1 : Größe des Bildrahmens

Ein Besipiel finden Sie bei frame::image_getpos.

Siehe Beispiel bei image_getpos.

Version 1.1.6
Parameter bboxType seit v3.4 R5126, 25. Jan 2013

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getImageSize

static int frame::image_getscale(
  ItemRef frameRef,
  float* x = 0,
  float* y = 0)

Skalierung des Bildes eines Grafikrahmens. Der Wert 1.0 entspricht dabei 100%.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 : Bildskalierung konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
x float* 0 Rückgabevariable für die Skalierung in X Richtung (100% entspricht 1.0).
Der Parameter darf 0 sein.
y float* 0 Rückgabevariable für die Skalierung in Y Richtung (100% entspricht 1.0).
Der Parameter darf 0 sein.

Ein Besipiel finden Sie bei frame::image_getpos.

Siehe Beispiel bei image_getpos.

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getImageScale

static int frame::image_getrotation(ItemRef frameRef, float* x = 0)

Drehung des Bildes eines Grafikrahmens. Die Angabe erfolgt in Grad so wie sie auch in den entsprechenden InDesign®-Menüs angegeben werden.

Name Typ Default Beschreibung
Return int   0 : Drehwinkel konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
x float* 0 Drehwinkel. Die Angaben sind analog den Angaben in InDesign®.
Der Parameter darf 0 sein.

Ein Besipiel finden Sie bei frame::image_getpos.

Siehe Beispiel bei image_getpos.

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getImageRotation

static int frame::image_getskew(ItemRef frameRef, float* x = 0)

Verzerrung des Bildes eines Grafikrahmens. Die Angabe erfolgt in Grad so wie sie auch in den entsprechenden InDesign®-Menüs angegeben werden.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 : Verzerrwinkel konnte ermittelt werden
Fehlerstatus : Der Rahmen ist kein Grafikrahmen oder enthält kein Bild
frameRef ItemRef - Verweis auf einen gültigen Grafikrahmen des Dokumentes
x float* 0 Verzerrwinkel. Die Angaben sind analog den Angaben in InDesign® .
Der Parameter darf 0 sein.

Ein Besipiel finden Sie bei frame::image_getpos.

Siehe Beispiel bei image_getpos.

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getImageSkew

static int frame::image_blackcolor(ItemRef frameRef, char* colorName)

überdecke das Schwarz eines S/W-Bildes durch die angegebene Farbe. Der Aufruf hat nur bei S/W-Bildern eine Wirkung. .

InDesign® erlaubt zwar bei definierten Farben, die Helligkeit der Farbe direkt zu ändern. Der Effekt ist aber, dass die schwarzen Bildteile nur mit dem entsprechenden Faktor überdeckt werden. 50%-Rot bedeuted also, dass schwarz mit 50% rot überdeckt wird, was eine recht dunkle Farbe ergibt. Ich hätte eher ein sehr helles Rot erwartet. 0%-Rot ergibt demanch auch nicht weiss, sondern schwarz. Sie setzen die Helligkeit also besser mit frame::opacity, dessen Effekte sind dann wie erwartet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
colorName String oder char* - Name einer Farbe
err_code = frame::image_blackcolor (frameRef, colorName);

Version 2.1 R 913, 22. Aug. 2008

priint:comet InDesign® Plug-Ins

image_blackcolor_rgb
image_blackcolor_cmyk

static int frame::image_blackcolor_rgb(
  ItemRef frameRef,
  int r,
  int g,
  int b)

überdecke das Schwarz eines S/W-Bildes durch die angegebene Farbe. Der Aufruf hat nur bei S/W-Bildern eine Wirkung. .

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
r, g, b int - Farbanteile (0-255)
err_code = frame::color (frameRef, r, g, b);

Version 2.1 R 913, 22. Aug. 2008

priint:comet InDesign® Plug-Ins

image_blackcolor
image_blackcolor_cmyk

static int frame::image_blackcolor_cmyk(
  ItemRef frameRef,
  float c,
  float m,
  float y,
  float k)

überdecke das Schwarz eines S/W-Bildes durch die angegebene Farbe. Der Aufruf hat nur bei S/W-Bildern eine Wirkung. .

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen
c, m, y, k float - Farbanteile (0.0 - 1.0)

Version 2.1 R 913, 22. Aug. 2008

priint:comet InDesign® Plug-Ins

image_blackcolor
image_blackcolor_rgb

static int frame::image(
  ItemRef frameRef,
  char* path,
  int alignment = 5,
  float boundingBox = 0.0,
  int pathindex = -2,
  char* pathname = 0,
  int flags = 0,
  int cliptoFrame = 0,
  float tolerance = 0.0,
  float minPathSize = 0.0,
  float inset = 0.0,
  int alphaIndex = -2,
  char* alphaChannel = 0,
  int treshold = 255,
  int updateFlags = 0)

Platziere eine Datei in einen Rahmen.

Für den Import werden die aktuellen und formatabhängigen InDesign®-Importeinstellungen verwendet. Um die Importeinstellungen zu sehen oder zu ändern, verwenden Sie den Menübefehl Datei -> Platzieren und aktivieren im erscheinenden Auswahldialog die Option Importoptionen anzeigen. Bitte vergessen Sie nicht, die Option Importoptionen anzeigen danach wieder abzuschalten!

Ein Beispiel, wie Importoptionen skriptseitig gesetzt werden können, finden Sie unten.

Mit Hilfe sog. UNC-Pfade können Sie Bilder so einfügen, dass die Bildpfade ohne Änderungen sowohl unter Mac als unter Windows korrekt ausgewertet werden können. Mehr Informationen dazu finden Sie hier. Bitte beachten Sie : Unter Mac OS werden UNC-Pfade beim Einsetzen von Bildern ab v4.2 R33250 unterstützt.

Bilder können aus dem Internet geladen werden. Geben Sie dazu statt eines lokalen Dateipfades eine gültige URL eines Bildes (http, https oder ftp) an. Allgemeine Infos zu Web-Bildern finden Sie hier.

Bilder können aus Adobe CC Libraries geladen werden. Verwenden Sie folgende Syntax zum Platzieren von CC Libraries Bildern (Die Leerzeichen sind wichtig!):

"CC Libraries: Bibliotheksname/Bildname"

Der Bibliotheksname darf ein gültiger Datei-Alias sein.

Bilder aus CC Libraries werden von InDesign automatisch lokal heruntergeladen. Wird ein Bild aus einer CC Library gelöscht, bleiben diese lokalen Kopien mglw. auf Ihrem Rechner erhalten. Um zu prüfen, ob ein CC Libraries Bild noch verfügbar ist verwenden Sie die Funktion file::exists.

Die CC Libraries werden von Adobe ständig weiterententwicklt. Leider gibt es keinerlei Schnittstelle für Javascript oder C++ dafür. Unsere Implementierung ist das Ergebnis eines deep diving in die XMLs und JSONs von CCLib und kann auf Annahmen beruhen, die sich seit der Einführung der Funktion im November 2020 geändert haben. Bitte haben Sie Verständnis dafür, dass wir die Funktion bis zur Einführung einer CCLib-Schnittstelle durch Adobe nicht weiterentwickeln.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, in den das Bild eingefügt werden soll
path String oder char* - Bildadresse

Lokales Netzwerk : Vollständiger Dateipfad. Pfade dürfen mit einem Datei-Alias beginnen.

Internet : URL einer Bilddatei. Unterstützt werden http, https und ftp.

CC Libraries : Angabe der Bilddatei im Format "CC Libraries: Bibliotheksname/Bildname". Bibliotheksnamen dürfen als Datei-Alias gegeben werden. In diesem Fall wird nur der Namensteil des Pfades verwendet.
alignment int kMiddle siehe Bildpositionen
boundingBox float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
⇨ Freistellpfad
pathindex int 0 0-basierter Index des Freistellpfades

kIgnoreClipping : Freistellpfad unverändert lassen.
kResetClipping : Freistellpfad beim Einfügen des Bildes zurücksetzen.
-1 : pathname verwenden
≥ 0 : 0-basierter Pfadindex. Pfadindexe > 0 werden von comet_pdf ignoriert und stattdessen der Wert pathname verwendet.
pathname String oder char* "" Name des Freistellpfades

Ist pathindex ≥ 0, wird diese Angabe unter InDesign® ignoriert.
⇨ Konfiguration des verwendeten Pfades. Die Werte werden auch bei Alphakanälen verwendet.
flags int 0 Parameter für die Art der Bildfreistellung. Die Werte werden als Bitfeld addiert.

kInvertFlag Invert the resulting path by combining with a path equal to the bounds of the image.
kAllowHolesFlag For edge detection, do we remove the holes or leave them in.
kRestrictToFrameFlag Bild auf den Bildrahmen beschneiden.

Der Parameter wird von comet_pdf nicht angewendet.
cliptoFrame int 0 Soll der Freistellpfad als Rahmenbegrenzung verwendet werden?

0 : Bestehenden Rahmen behalten
1 : Rahmen ändern
tolerance float 0.0 A tolerance value in the range of 0.0 to 10.0 specifying how close to the original path we must be if we smooth the path. 0.0 indicates a perfect match. Smoothing may simplify the path, reducing the number of points.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
minPathSize float 0.0 Subpaths smaller than the minPathSize will be deleted.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
inset float 0.0 How far to inset the path. Given in points.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
⇨ Alphakanal
alphaIndex int 0 0-basierter Index des Alphakanales, siehe image::alpha_channel_index

kIgnoreClipping : Alphakanal unverändert lassen.
kResetClipping : Alphakanal beim Einfügen des Bildes zurücksetzen.
-1 : Verwenden den Wert aus alphaChannel ≥ 0 : 0-basierter Index des Alphakanales. Werte > 0 werden von comet_pdf ignoriert; statdessen wird die Angabe aus alphaChannel verwdendet.
alphaChannel String or char* "" Name des Alphakanals

Wird ignoriert, wenn der Kanal bereits durch seinen Index definiert, also alphaIndex ≥ 0 ist .
treshold int 255 Schwellwert für Alphakanal.

0-255 : Der Alphakanal wird nach dem Bildimport angewendet. Das Ergebnis entspricht dem Menü Objekt -> Beschneidungspfad -> Optionen... und das ist, nun ja, ... .

> 255 : Empfohlen! Wenden Sie den Alphakanal direkt beim Importieren des Bildes an. Alternativ dazu können Sie auch den Wert kAllowHolesFlag zu src{flags} hinzufügen.
⇨ Update Flags
updateFlags int 0 Nur bei Web-Bildern (URLs)

16 : Existiert die lokale Bilddatei bereits, wird sie ohne weitere Prüfung verwendet.
#include "internal/types.h"
document::folder (path);
strcat (path, "/Bilder/Echinops/banaticus.JPG");
frame::image (frame, path, 5, 100.0);

Einfügen eines Bildes mit Alphakanal.

#include "internal/types.h"
int main () { int result;
result = frame::image (   gFrame,   "your path",   kPlaceCentered,   kFitBigContentProp,   kIgnoreClipping, 0, 0,   0, 0.0, 0.0, 0.0,   0, 0); wlog ("", "Result of placing image : %d (%s).\n", result, serror (result)); return 0; }

Das folgende Beispiel zeigt, wie Sie Importoptionen für Bilder skriptseitig setzen können. Weitere Importoptionen finden Sie z.B. hier.
Bitte beachten Sie, dass Sie die aktuelle Einstellung für pdfCrop hier zwar als String holen müssen. Aber der erhaltene Wert ist ein Aufzählungstyp und muss deshalb beim Zurücksetzen als int angegeben werden!

#include "internal/types.h"
int main () { char oldCrop [256]; char resetCmd [512]; ItemRef lk = item::alloc ();
run_javascript ("function main () {return app.pdfPlacePreferences.pdfCrop;} main ();", 0, 1, 0, kString, oldCrop); run_javascript ("app.pdfPlacePreferences.pdfCrop = PDFCrop.CROP_CONTENT_VISIBLE_LAYERS;");
frame::image (gFrame, "$DESKTOP/abc.pdf", 1);
sprintf (resetCmd, "app.pdfPlacePreferences.pdfCrop = %s;", oldCrop); run_javascript (resetCmd);
return 0; }

Importiere ein Web-Bild und unterdrücke die Header-Anfrage, wenn der aktuelle Bild-Download bereits existiert. Bitte beachten Sie, dass bis zum Parameter updateFlags alle nicht verwendeten Parameter mit Defaultwerten gefüllt werden müssen!

#include "internal/types.h"
int main() { frame::image (gFrame,   "https:www.wago.com/medias/?context=bWFzdGVyfGltYWdlc3wyMTgyMXxpbWFnZS9qcGVnfGFHRTBMMmhoTnk4eE16YzVPRFV5TnpBME1UVTJOZ3w3ODNlMDQ4ZWJjYTNiMzhkMDM4NWRkYjE4ZDc3YjM5OTUzNTAzZDM1ZWRjNTMwNmUxMmE5NDU1ZDM3MzQ0OGI3kOnlyHash",   kMiddle, // alignment   kFitBigContentProp, // boundingBox   0, "", // clip path index and name   kAllowHolesFlag, 0, 0.0, 0.0, 0.0, // clip path info   0, "", 255, // alpha channel info   16); // suppress header check
return 0; }

pathindex, pathname, flags, cliptoFrame, tolerance, minPathSize, inset seit Version 16. März 2006 (P/R38)

alphaIndex, alphaChannel seit Version 3.1 R1840, 30. April 2010

treshold seit v3.3 R3500, 8. Mar 2013

Unterstützung der CC Libraries seit v4.1.8 R27691, 2. Nov 2020

Parameter updateFlags seit v4.3 R34000, 23. Nov 2024

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CFrame.setImage
Laden von Bildplatzhaltern
Soll nur der Freistellpfad eines Bildes verändert werden
kann image::setclip verwendet werden.

static int frame::embed_file(
  ItemRef frameRef,
  char* path,
  int alignment = 5,
  float boundingBox = 0.0)

Importiere eine Datei als eingebettetes Bild. Das Bild kann über einen Dateipfad oder eine URL definiert und direkt ins Dokument eingesetzt und hat keinen Verweis mehr auf das Originalbild. Im Gegensatz zu frame::image können keine Beschneidungspfade angewendet werden. Die Positionierungen kConstrainToCell, kConstrainToCellWidth und kConstrainToCellHeight haben keine Wirkung.

Postscript-Dateien können eingebettet werden, aber durch das Einbetten von Postscript-Dateien kann das Dokument nicht mehr fehlerfrei in IDML exportiert und wieder importiert werden! InDesign® versucht in diesem Fall, das Postscript-Bild in ein gleichwertiges Pixelbild zu konvertieren. Das gelingt aber leider nur ungenügend oder gar nicht. Und wenn es gelingt, hat das Bild durch diese Konvertierung unvermutet plötzlich doch eine Auflösung (unbekannter Größe). Zu allem überfluß aber wird das Bild in einen zusätzlichen neuen Rahmen eingebettet (der u.U. auch noch als Gruppe erzeugt wird) - und dieses Objekt wird dann als Unterrahmen in den Originalrahmen platziert - eine Konstruktion, die Sie ansonsten mit Bordmitteln gar nicht bewerkstelligen können. Verzichten Sie also lieber gleich auf das Einbetten von Postscript!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Rahmenverweis. Ist der Rahmen kein Grafikrahmen, wird er zu einem Grafikrahmen konvertiert.

0 : aktueller Rahmen des Skriptes
path String oder char* - Vollstandiger Dateipfad oder gültiger URL
alignment int kMiddle Siehe Bildpositionen. Die Positionierungen kConstrainToCell, kConstrainToCellWidth und kConstrainToCellHeight haben keine Wirkung.
boundingBox float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
#include "internal/types.h"

Füge ein lokal vorliegendes Bild in einen Rahmen ein.

#include "internal/text.h"
#include "internal/types.h"
int main () { char imgFile[255]; int res; char dp[2000];
document::folder (dp); strcpy (imgFile, dp); strcat (imgFile, "/"); strcat (imgFile, "clara.JPG"); res = frame::embed_file (gFrame, imgFile, kPlaceTopLeft, 0.0);
if (res == 0) wlog ("", "Embedding '%s' successfully finished\n", imgFile); else wlog ("", "Embedding '%s' done with error %d\n", imgFile, res);
return 0; }

Sie können ein Bild auch direkt aus dem Internet ins Dokument einfügen.

#include "internal/text.h"
#include "internal/types.h"
int main () { char imgFile[255]; int res;
strcpy (imgFile, "http://www.hi13.de/Auto.JPG"); res = frame::embed_file (gFrame, imgFile, kPlaceTopLeft, 0.0);
if (res == 0) wlog ("", "Embedding '%s' successfully finished\n", imgFile); else wlog ("", "Embedding '%s' done with error %d\n", imgFile, res);
return 0; }

Version 2.0 R 644, 22. März 2008

priint:comet InDesign® Plug-Ins, comet_pdf

embed_image

static int frame::embed_image(
  ItemRef frameRef,
  Image img,
  int alignment = 5,
  float boundingBox = 0.0)

Einbetten eines Bildes in einen Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Rahmenverweis. Ist der Rahmen kein Grafikrahmen, wird er zu einem Grafikrahmen konvertiert.

0 : aktueller Rahmen des Skriptes
img Image - Binärdaten des Bildes, siehe Image
alignment int kMiddle Siehe Bildpositionen. Die Positionierungen kConstrainToCell, kConstrainToCellWidth und kConstrainToCellHeight haben keine Wirkung.
boundingBox float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.

Version 2.0 R 644, 22. März 2008

priint:comet InDesign® Plug-Ins, comet_pdf

embed_file
image

static int frame::place_pdf(
  ItemRef frameRef,
  char* path,
  int pageIndex = 1,
  int alignment = 5,
  float bounding = 0.0,
  int transparentBkg = 0,
  char* layer1 = 0,
  ...)

Platziere ein PDF in einem Rahmen.

Unter comet_pdf benötigt die Funktion eine PDFlib+PDI Lizenz.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, in den das PDF eingefügt werden soll

0 : aktueller Skriptrahmen
path String oder char* - Vollständiger lokaler oder UNC-Pfad auf die PDF-Datei, die in das Dokument eingefügt werden soll. Der Pfad darf mit einem definerten $ALIAS beginnen.

[Ab v4.2 R33270] werden auch URLs als Eingabe akzeptiert.
pageIndex int 1 Welche Seite des PDFs soll eingefügt werden?

≤0 : Letzte Seite
sonst : 1-basierte Seitennummer. Bei Angaben größer als die Seitenzahl wird die erste Seite des PDF importiert.

Mit Hilfe des Parameters behavior können Sie das Verhalten bei undefinierten Seitennummern ändern.

alignment int kMiddle Position des Bildes im Rahmen, siehe Bildpositionen
bounding float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
transparentBkg int 0 Soll der Hintergrund transparent sein?

0 : Nein
1 : Ja
layer1, ... String oder char* 0 Beliebig lange Liste von Ebenennamen. Alle angegebenen Ebenen der PDF-Datei werden sichtbar gemacht, alle anderen unsichtbar. Ist die Liste leer, werden die Einstellungen der PDF-Datei für die Ebenensichtbarkeiten verwendet. Achtung, es genügt nicht, die Sichtbarkeit der Ebene im PDF mit dem Ebenen-Auge zu setzen, Sie müssen dafür die Ebenenoptionen verwenden!

Von comet_pdf und wenn die PDF-Datei über eine URL definiert ist, werden diese Angaben ignoriert. In diesen Fällen werden immer die Ebenen-Sichtbarkeiten des PFDs verwendet.
0, behavior 0, int 0, 2 Verhalten bei undefinierten Seitennummern. Die Angabe erfolgt, getrennt duch eine 0, hinter den Ebenennamen

1 : Abbruch mit pageNotFoundErr (1219)
2 : Erste Seite
3 : Letzte Seite
#include "internal/types.h"
err_code = frame::place_pdf (gFrame, "$DESKTOP/a.pdf", 3);

Importiere die zweite Seite einer PDF-Datei und zeige nur die Ebenen Layer 1 und Layer 2. Das Ergebniss erscheint zentriert unten im Rahmen und ist 100 Punkte groß.

int main()
{
    frame::place_pdf (
     	gFrame,
     	"/Users/paul/Desktop/for_pfd.pdf",
     	2,
     	8,
     	100.0,
     	1,
     	"Layer 1", "Layer 2");
    return 0;
}

v2.1, 23. Feb 2010 (R1760)
Parameter behavior seit v4.2 R32235, 1. Feb 2023
ULR-Support seit v4.2 R33270

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImage

static int frame::place_pdf_with_crop(
  ItemRef frameRef,
  char* path,
  int pageIndex = 1,
  int alignment = 5,
  float bounding = 0.0,
  int transparentBkg = 0,
  int cropTo = -1,
  char* layer1 = 0,
  ...)

Platziere ein PDF in einen Rahmen. Die Anweisung ist identisch mit frame::place_pdf, zusätzlich kann aber im Parameter croptTo noch eine Beschnitt-Regel angewendet werden.

Unter comet_pdf benötigt die Funktion eine PDFlib+PDI Lizenz.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, in den das PDF eingefügt werden soll

0 : aktueller Skriptrahmen
path String oder char* - Vollständiger lokaler oder UNC-Pfad auf die PDF-Datei, die in das Dokument eingefügt werden soll. Der Pfad darf mit einem definerten $ALIAS beginnen.

[Ab v4.2 R33270] werden auch URLs als Eingabe akzeptiert.
pageIndex int 1 Welche Seite des PDFs soll eingefügt werden?

≤0 : Letzte Seite
sonst : 1-basierte Seitennummer. Bei Angaben größer als die Seitenzahl wird die erste Seite des PDF importiert.

Mit Hilfe des Parameter behavior können Sie das Verhalten bei undefinierten Seitennummern ändern.

alignment int kMiddle Position des Bildes im Rahmen, siehe Bildpositionen
bounding float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
transparentBkg int 0 Soll der Hintergrund transparent sein?

0 : Nein
1 : Ja
cropTo int -1 Beschnittrahmen für das PDF

-1 : Programm-Einstellung verwenden
0 : Begrenzungsrahmen (nur sichtbare Ebenen)
1 : Programm-Einstellung verwenden
2 : Objekt
3 : Beschnitt
4 : Zuschnitt
5 : Anschnitt
6 : Medien
7 : Begrenzungsrahmen (alle Ebenen), ab CS5

Die rot markierten Werte werden von comet_pdf nicht unterstützt.
layer1, ... String oder char* 0 Beliebig lange Liste von Ebenennamen. Alle angegebenen Ebenen der PDF-Datei werden sichtbar gemacht, alle anderen unsichtbar. Ist die Liste leer, werden die Einstellungen der PDF-Datei für die Ebenensichtbarkeiten verwendet. Achtung, es genügt nicht, die Sichtbarkeit der Ebene im PDF mit dem Ebenen-Auge zu setzen, Sie müssen dafür die Ebenenoptionen verwenden!

Von comet_pdf und wenn die PDF-Datei über eine URL definiert ist werden diese Angaben ignoriert. In diesen Fällen werden immer die Ebenen-Sichtbarkeiten des PFDs verwendet.
0, behavior 0, int 0, 2 Verhalten bei undefinierten Seitennummern. Die Angabe erfolgt, getrennt duch eine 0, hinter den Ebenennamen

1 : Abbruch mit pageNotFoundErr (1219)
2 : Erste Seite
3 : Letzte Seite
#include "internal/types.h"
err_code = frame::place_pdf (gFrame, "$DESKTOP/a.pdf", 3);

Importiere die zweite Seite einer PDF-Datei und zeige nur die Ebenen Layer 1 und Layer 2. Das Ergebniss erscheint zentriert unten im Rahmen und ist 100 Punkte groß.

int main()
{
    frame::place_pdf_with_crop (
     	gFrame,
     	"/Users/paul/Desktop/for_pfd.pdf",
     	2,
     	8,
     	100.0,
     	1,
     	1,
     	"Layer 1", "Layer 2");
    return 0;
}

v3.3 R3011, 25.05.2012
Parameter behavior seit v4.2 R32235, 1. Feb 2023
ULR-Support seit v4.2 R33270

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImage

static int frame::image_pos(
  ItemRef frameRef,
  float x,
  float y)

Setze die Position eines Bildes innerhalb seines gegebenen Grakikrahmens. Die Angaben werden in Punkten relativ zur linken oberen Ecke des Grafikrahmens erwartet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Grafikrahmen, dessen Bild verschoben werden soll
x float - Relative Bildposition zur linken oberen Rahmenecke in Punkten
y float - Relative Bildposition zur linken oberen Rahmenecke in Punkten

Setze alle von cscript unterstützen Eigenschaften von Bildern in Grafikrahmen.

int main ()
{
    float    width, height;
frame::image_getsize (gFrame, &width, &height);
frame::image_pos (gFrame, 12.0, 34.0); frame::image_size (gFrame, 100.0, 140.0); frame::image_scale (gFrame, 0.5, 0.7777); frame::image_rotate (gFrame, -30.0, width/2.0, height/2.0); frame::image_skew (gFrame, -30.0, width/2.0, height/2.0, 90.0);
return 0;
}

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::image_size(
  ItemRef frameRef,
  float width,
  float height,
  int refPoint = 0,
  float refX = 0.0,
  float refY = 0.0)

Setze die Position des Bildes innerhalb eines gegebenen Grakikrahmens. Die Angaben werden in Punkten erwartet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Grafikrahmen des Bildes, dessen Größe gesetzt werden soll
x float - Neue Bildbreite in Punkten
y float - Neue Bildhöhe in Punkten
refPoint int kRefPointTopLeft Referenzpunkt der Skalierung

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
refX, refY float, float 0.0, 0.0 Referenzpunkt in Punkten relativ zur linken oberen Rahmenecke.
#include "internal/types.h"

Ein Besipiel finden Sie bei frame::image_pos.

Siehe Beispiel bei image_pos.

Version 1.1.6
refPoint, refX, refY seit Version 2.1 R684, 23.4.2008

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImageSize

static int frame::image_scale(
  ItemRef frameRef,
  float x,
  float y,
  int refPoint = 0,
  float refX = 0.0,
  float refY = 0.0,
  int frameRelativeRefPoint = 0)

Skaliere das Bildes innerhalb eines gegebenen Grakikrahmens. Der Wert 1.0 entspricht der Originalgröße (100%) des Bildes.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Grafikrahmen, dessen Bild skaliert werden soll
x float - Neuer Maßstab für die Bildbreite (1.0 entspricht 100%)
y float - Neuer Maßstab für die Bildhöhe (1.0 entspricht 100%)
refPoint int kRefPointTopLeft Referenzpunkt der Skalierung

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
refX, refY float, float 0.0, 0.0 Referenzpunkt in Punkten relativ zur linken oberen Bildecke.
frameRelativeRefPoint int 0 Soll an Stelle des Bildes der Grafikrahmen als Basis für den Referenzpunkt verwendet werden?

0 : Nein, Bild als Basis für die Berechnung des Referenzpunktes verwenden
1 : Verwende den Grafikrahmen als Basis zur Berechnung der Referenzpunkte.
#include "internal/types.h"

Ein Besipiel finden Sie bei frame::image_pos.

Siehe Beispiel bei image_pos.

Das Beispiel spiegelt ein Bild horizontal. Beachten Sie, dass für die Rotation ein beliebiger Referenzpunkt (also ein über seine bildrelativen Koordinaten bestimmter Punkt) angegeben werden muss. Der Vollständigkeit halber folgt auch noch ein Skript für vertikale Spiegelung.

int main ()
{
    float			x, y, rot;
    float			w, h;
frame::image_getsize (gFrame, &w, &h); frame::image_getscale (gFrame, &x, &y); frame::image_getrotation (gFrame, &rot);
frame::image_scale (gFrame, x, -y, kRefPointCenter); frame::image_rotate (gFrame, rot+180.0, w/2.0, h/2.0);
return 0; }

int main () { float x, y; frame::image_getscale (gFrame, &x, &y); frame::image_scale (gFrame, x, -y, kRefPointCenter); return 0; }

Version 1.1.6
refPoint, refX, refY seit Version 2.1 R684, 23.4.2008
frameRelativeRefPointnt since v3.3 R2750, 23.11.2011

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImageScale

static int frame::image_rotate(
  ItemRef frameRef,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0)

Drehe das Bildes innerhalb eines gegebenen Grakikrahmens.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Grafikrahmen, dessen Bild gedreht werden soll
angle float - Drehwinkel in Grad
refpointX float 0.0 X-Wert des Referenzpunktes für die Drehung in Punkt relativ zur linken Kante des Bildes, nicht des Rahmens.
refpointY float 0.0 Y-Wert des Referenzpunktes für die Drehung in Punkt relativ zur oberen Kante des Bildes, nicht des Rahmens.
#include "internal/types.h"

Ein Besipiel finden Sie bei frame::image_pos.

Siehe Beispiel bei image_pos.

Das Beispiel spiegelt ein Bild horizontal. Beachten Sie, dass für die Rotation ein beliebiger Referenzpunkt (also ein über seine bildrelativen Koordinaten bestimmter Punkt) angegeben werden muss. Der Vollständigkeit halber folgt auch noch ein Skript für vertikale Spiegelung.

int main ()
{
    float			x, y, rot;
    float			w, h;
frame::image_getsize (gFrame, &w, &h); frame::image_getscale (gFrame, &x, &y); frame::image_getrotation (gFrame, &rot);
frame::image_scale (gFrame, x, -y, kRefPointCenter); frame::image_rotate (gFrame, rot+180.0, w/2.0, h/2.0);
return 0; }

int main () { float x, y; frame::image_getscale (gFrame, &x, &y); frame::image_scale (gFrame, x, -y, kRefPointCenter); return 0; }

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImageRotation

static int frame::image_skew(
  ItemRef frameRef,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0)

Zerrung das Bild eines gegebenen Grafikrahmens.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Grafikrahmen, dessen Bild verzerrt werden soll
angle float - Verzerrungswinkel in Grad
refpointX float 0.0 X-Wert des Referenzpunktes für die Zerrung in Punkt relativ zur linken Kante des Bildes, nicht des Rahmens.
refpointY float 0.0 Y-Wert des Referenzpunktes für die Zerrung in Punkt relativ zur oberen Kante des Bildes, nicht des Rahmens.

Ein Besipiel finden Sie bei frame::image_pos.

Siehe Beispiel bei image_pos.

Version 1.1.6

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setImageSkew

static int frame::rotate(
  ItemRef frameRef,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1,
  int refPoint = 0)

Drehe einen Rahmen.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, der gedreht werden soll
angle float - Drehwinkel in Grad gegen den Uhrzeigersinn
refpointX float 0.0 Ignoriert seit v4.1 R21457
refpointY float 0.0 Ignoriert seit v4.1 R21457
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.
refPoint int kRefPointCenter Fixpunkt der Drehung

-1 : Ignorieren und refpointX und refpointY verwenden

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
#include "internal/types.h"

Version 1.4 R336 (18. April 2007)
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012
Parameter refPoint seit v4.1 R21457, 11. Jan 2018

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

get_rotate
comet.CPageItem.setRotation

static float frame::get_rotate(
  ItemRef frameRef,
  float* refpointX = 0,
  float* refpointY = 0)

Um welchen Winkel ist der Rahmen gedreht?

Name Typ Default Beschreibung
Return float   Aktueller Drehwinkel in Grad
frameRef ItemRef - Rahmenreferenz

0 : aktueller Skriptrahmen
refpointX, refpointY float*, float* 0, 0 Fixpunkt der Drehung

0 : Wert nicht abholen
Wird bei Illustrator ignoriert
int main ()
{
    float		l, t, r, b;
    float		w, h;
    float		f;
    float		refx, refy;
    float		sx, sy;
frame::bbox (gFrame, &l, &t, &r, &b); frame::size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h);
f = frame::get_rotate (gFrame, &refx, &refy); wlog ("", " rotation : %f (%f, %f)\n", f, refx, refy);
f = frame::get_skew (gFrame); wlog ("", " skew : %f\n", f);
f = frame::get_scale (gFrame, &sx, &sy); wlog ("", " scale : %f x %f\n", sx, sy);
return 0; }

Version 3.2 R2255, 3. Feb. 2011

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

rotate
comet.CPageItem.getRotation

static float frame::get_skew(ItemRef frameRef)

Um welchen Winkel ist der Rahmen verzerrt?

Name Typ Default Beschreibung
Return float   Aktueller Verzerrungswinkel in Grad
frameRef ItemRef - Rahmenreferenz

0 : aktueller Skriptrahmen
int main ()
{
    float		l, t, r, b;
    float		w, h;
    float		f;
    float		refx, refy;
    float		sx, sy;
frame::bbox (gFrame, &l, &t, &r, &b); frame::size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h);
f = frame::get_rotate (gFrame, &refx, &refy); wlog ("", " rotation : %f (%f, %f)\n", f, refx, refy);
f = frame::get_skew (gFrame); wlog ("", " skew : %f\n", f);
f = frame::get_scale (gFrame, &sx, &sy); wlog ("", " scale : %f x %f\n", sx, sy);
return 0; }

Version 3.2 R2255, 3. Feb. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

rotate
comet.CPageItem.getSkew

static int frame::get_scale(
  ItemRef frameRef,
  float* scalex = 0,
  float* scaley = 0)

Aktuelle Skalierung eines Rahmens.

Name Typ Default Beschreibung
Return int   0 or ErrorCode
frameRef ItemRef - Rahmenreferenz

0 : aktueller Skriptrahmen
scalex, scaley float*, float* 0, 0 Aktuelle Rahmenskalierung (1.0 entspricht 100%)

0 : Wert nicht abholen
int main ()
{
    float		l, t, r, b;
    float		w, h;
    float		f;
    float		refx, refy;
    float		sx, sy;
frame::bbox (gFrame, &l, &t, &r, &b); frame::size (gFrame, &w, &h); wlog ("", "Frame %d : %f x %f (%f x %f)\n",   item::getint (gFrame),   r-l, b-t,   w, h);
f = frame::get_rotate (gFrame, &refx, &refy); wlog ("", " rotation : %f (%f, %f)\n", f, refx, refy);
f = frame::get_skew (gFrame); wlog ("", " skew : %f\n", f);
f = frame::get_scale (gFrame, &sx, &sy); wlog ("", " scale : %f x %f\n", sx, sy);
return 0; }

Version 3.2 R2255, 3. Feb. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

resize
comet.CPageItem.getScale

static int frame::scale(
  ItemRef frameRef,
  float xscale,
  float yscale,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1,
  int refPoint = -1)

Skalieren eines Rahmens um die gegebenen Faktoren.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
xscale float - Faktor für die Änderung der Rahmenbreite
yscale float - Faktor für die Änderung der Rahmenhöhe
refpointX float 0.0 X-Wert des Fixpunktes in Punkt relativ zur linken Kante des Rahmens.

Von comet_pdf wird die Angabe ignoriert und immer refPoint verwendet.
refpointY float 0.0 Y-Wert des Pixpunktes in Punkt relativ zur oberen Kante des Rahmens

Von comet_pdf wird die Angabe ignoriert und immer refPoint verwendet.
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.
refPoint int -1 Referenzpunkt für die Skalierung

-1 : Ignorieren und refpointX und refpointY verwenden

kRefPointTopLeft (0)
kRefPointTopCenter(1)
kRefPointTopRight(2)
kRefPointLeftCenter(3)
kRefPointCenter(4)
kRefPointRightCenter(5)
kRefPointBottomLeft(6)
kRefPointBottomCenter(7)
kRefPointBottomRight(8)
#include "internal/types.h"

Version 1.4 R336 (18. April 2007)
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

prefs::get_transform_settings
prefs::set_transform_settings
get_scale
get_skew
comet.CPageItem.setScale

static int frame::scale_to(
  ItemRef frameRef,
  float xscale,
  float yscale,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1,
  int refPoint = -1)

Skalieren eines Rahmens auf die angegebene Größe.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
xscale float - Neue Rahmenbreite in Prozent, 1.0 entspricht 100%
yscale float - Neue Rahmenhöhe in Prozent, 1.0 entspricht 100%
refpointX float 0.0 X-Wert des Fixpunktes in Punkt relativ zur linken Kante des Rahmens.

Von comet_pdf wird die Angabe ignoriert und immer refPoint verwendet.
refpointY float 0.0 Y-Wert des Pixpunktes in Punkt relativ zur oberen Kante des Rahmens

Von comet_pdf wird die Angabe ignoriert und immer refPoint verwendet.
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.
refPoint int -1 Referenzpunkt für die Skalierung

-1 : Ignorieren und refpointX und refpointY verwenden

kRefPointTopLeft (0)
kRefPointTopCenter(1)
kRefPointTopRight(2)
kRefPointLeftCenter(3)
kRefPointCenter(4)
kRefPointRightCenter(5)
kRefPointBottomLeft(6)
kRefPointBottomCenter(7)
kRefPointBottomRight(8)
#include "internal/types.h"

v4.1.6 R26411, 12. Dez. 2019

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

prefs::get_transform_settings
prefs::set_transform_settings
get_scale
get_skew

static int frame::skew(
  ItemRef frameRef,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0,
  float rotation = 0.0,
  int suprRules = 1)

Zerrung eines Rahmens. Die Funktion macht eine horizontale Zerrung. Für eine vertikale Zerrung nehmen Sie den negativen Winkel als Zerrung und drehen den Rahmen anschließend am selben Fixpunkt noch um den negativen Winkel.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
angle float - Verzerrungswinkel
refpointX float 0.0 X-Wert des Fixpunktes für die Zerrung in Punkt relativ zur linken Kante des Rahmens.

Unter comet_pdf hat die Angabe keine Bedeutung, hier wird immer die linke obere Ecke als Fixpunkt verwendet.
refpointY float 0.0 Y-Wert des Pixpunktes für die Zerrung in Punkt relativ zur oberen Kante des Rahmens

Unter comet_pdf hat die Angabe keine Bedeutung, hier wird immer die linke obere Ecke als Fixpunkt verwendet.
rotation float 0.0 Wert einer optionalen Drehung zusätzlich zur Zerrung, nicht unterstützt ab InDesign® CS3.
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.

Version 1.4 R336 (18. April 2007)
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins, comet_pdf

get_skew
comet.CPageItem.setSkew

static int frame::place_file(
  ItemRef frameRef,
  char* path,
  int alignment = 5,
  float size = 0.0)

siehe frame::image

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins

frame::image

static int frame::reimport(
  ItemRef frame,
  int uiFlags = 0,
  int doAll = 0)

Aktualisiere die Verknüpfung eines Rahmens. Es werden nur Verknüpfungen aktualisiert, deren Inhalt nicht mehr aktuell ist. Ist der Inhalt des Rahmens aktuell, hat der Aufruf keine Wirkung.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, desssen Verknüpfung aktualisiert werden soll
uiFlags int 0 Importdialoge, die gezeigt werden sollen
0 alle Dialoge unterdrücken
1 Zeige die nötigsten Dialoge 2 Zeige alle Dialoge
doAll int 0 InDesign® gönnt sich mitunter eine kleine Unaufmerksamkeit : Wird die Zieldatei eines Links umbenannt und eine andere Datei bekommt den Namen, der im Link angegeben ist, bemerkt InDesign® diese Änderung manchmal nicht. Durch Angabe von 1 für den Parameter erzwingen Sie, dass der Verweis auf alle Fälle neu geladen wird. Der Reimport aller Verweise kann eine gewisse Zeit in Anspruch nehmen.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::reimport_all(
  int uiFlags = 0,
  int doAll = 0,
  int includePasteboard = 0)

Aktualisiere die Verknüpfungen aller Rahmens des Dokumentes. Es werden nur Verknüpfungen aktualisiert, deren Inhalte nicht mehr aktuell sind.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
uiFlags int 0 Importdialoge, die gezeigt werden sollen
0 alle Dialoge unterdrücken
1 Zeige die nötigsten Dialoge 2 Zeige alle Dialoge
doAll int 0 InDesign® gönnt sich mitunter eine kleine Unaufmerksamkeit : Wird die Zieldatei eines Links umbenannt und eine andere Datei bekommt den Namen, der im Link angegeben ist, bemerkt InDesign® diese Änderung manchmal nicht. Durch Angabe von 1 für den Parameter erzwingen Sie, dass der Verweis auf alle Fälle neu geladen wird. Der Reimport aller Verweise kann eine gewisse Zeit in Anspruch nehmen.
includePasteboard int 0 Rahmen, die vollständig auf der Arbeitsfläche liegen auch bearbeiten?

0 : Nein, nur Rahmen bearbeiten, die einer Seite zugeordnet werden können
sonst : Auch Rahmen der Arbeitsfläche bearbeiten

includePasteboard sei v3.3 R5220 (3. Mär 2014)

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::reimport_selected(int uiFlags = 0, int doAll = 0)

Aktualisiere die Verknüpfungen aller ausgewählten Rahmens des Dokumentes. Es werden nur Verknüpfungen aktualisiert, deren Inhalte nicht mehr aktuell sind.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
uiFlags int 0 Importdialoge, die gezeigt werden sollen
0 alle Dialoge unterdrücken
1 Zeige die nötigsten Dialoge 2 Zeige alle Dialoge
doAll int 0 InDesign® gönnt sich mitunter eine kleine Unaufmerksamkeit : Wird die Zieldatei eines Links umbenannt und eine andere Datei bekommt den Namen, der im Link angegeben ist, bemerkt InDesign® diese Änderung manchmal nicht. Durch Angabe von 1 für den Parameter erzwingen Sie, dass der Verweis auf alle Fälle neu geladen wird. Der Reimport aller Verweise kann eine gewisse Zeit in Anspruch nehmen.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::reimport_list(int uiFlags = 0, int doAll = 0)

Aktualisiere die Verknüpfungen aller Rahmen der gegebenen Liste. Es werden nur Verknüpfungen aktualisiert, deren Inhalte nicht mehr aktuell sind.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Liste der Rahmen, die aktualisiert werden sollen.
uiFlags int 0 Importdialoge, die gezeigt werden sollen
0 alle Dialoge unterdrücken
1 Zeige die nötigsten Dialoge 2 Zeige alle Dialoge
doAll int 0 InDesign® gönnt sich mitunter eine kleine Unaufmerksamkeit : Wird die Zieldatei eines Links umbenannt und eine andere Datei bekommt den Namen, der im Link angegeben ist, bemerkt InDesign® diese Änderung manchmal nicht. Durch Angabe von 1 für den Parameter erzwingen Sie, dass der Verweis auf alle Fälle neu geladen wird. Der Reimport aller Verweise kann eine gewisse Zeit in Anspruch nehmen.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

static char* frame::get_layer(ItemRef itemRef, char* name)

Ermittle den Namen der Ebene, auf der ein Rahmen liegt.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter name)   Name der Ebene, auf der der gegebene Rahmen liegt oder Leerstring. Entspricht Parameter name
itemRef ItemRef - Rahmen, dessen Ebene ermittelt werden soll.
name String oder char* - Reservierter Speicher für das Ergebnis

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.getLayer

static int frame::parent(
  ItemRef frame,
  ItemRef parent,
  int* textPos = 0)

Ermittle den umschließenden Rahmen eines Rahmens. Bei Inline-Rahmen wird dabei der Rahmen zurückgegeben, in dem der Inline aktuell liegt. Bei Bildern wird der umschließende Bildrahmen zurückgegeben.

Die Funktion ist nicht geeignet zum Ermitteln der InDesign-Gruppe eines Rahmens. Verwenden Sie hierfür die Funktion frame::get_group.

Um zu erfragen, ob ein Rahmen innerhalb eines Textes steht, verwenden Sie die Funktion frame::isinline.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Inline-Rahmen oder Bild (aber nicht der Rahmen, der das Bild enthält)
parent ItemRef - Reservierter Speicher für das Ergebnis. Die Referenz ist nur gefüllt, wenn die Funktion den Fehlercode 0 zurückgibt.
textPos int* 0 Textposition des Rahmens. Der Wert wird nur bei Inline-Rahmen gesetzt, sonst ist er -1.

Version 1.1.7, Januar 2005
Parameter textPos seit v4.1.8 R29412, 19. Nov 2021

priint:comet InDesign® Plug-Ins, comet_pdf

frame::isinline
frame::get_group
comet.CPageItem.getParent

static int frame::isinline(ItemRef frame)

Steht der gegebene Rahmen innerhalb eines Textes?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Rahmen, dessen inline-Eigenschaft erfragt werden soll.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

frame::isinline
frame::textframe
position_visible

static int (ItemRef frame, ItemRef textFrame)

DEPRECATED! Verwenden Sie bitte statt dessen die Funktion frame::parent.

Ermittle den Textrahmen eines Inlines-Rahmens. Dieser Rahmen ist unterschiedlich zu dem Rahmen, der über frame::parent ermittelt wird.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Rahmen, dessen Textrahmen erfragt werden soll.Bei Angabe von 0 wird der Textrahmen des aktuellen Textmodelles oder der Wert der Variable gFrame ermittelt.
textFrame ItemRef - Reservierter Speicher für das Ergebnis. Die Referenz ist nur gefüllt, wenn die Funktion den Fehlercode 0 zurückgibt.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

Verwenden Sie bitte statt dessen die Funktion frame::parent.
frame::isinline
frame::parent

static int (
  ItemRef textframe,
  ItemRef frame,
  int pos,
  int align,
  float alignOffset,
  int linePos,
  float lineOffset,
  int flag = 1)

DEPRECATED! Verwenden Sie dafür die Funktionen frame::inline_, frame::inline_above, frame::anchor und frame::get_anchor.

Name Typ Default Beschreibung
Return int   -1199

Verwenden Sie dafür die Funktionen frame::inline_, frame::inline_above, frame::anchor und frame::get_anchor.

static int (ItemRef textframe, int pos)

DEPRECATED! Verwenden Sie dafür die Funktionen frame::isinline und frame::get_anchor.

Name Typ Default Beschreibung
Return int   0

Verwenden Sie dafür die Funktionen frame::isinline und frame::get_anchor.

static int frame::group(ItemList frames, ItemRef newFrame = 0)

Gruppiere eine Auswahl von Dokumentrahmen. Die Funktion kann Rahmen nur gruppieren, wenn alle Rahmen auf der selben (Doppel)seite liegen. Sind die Rahmen Teil einer Gruppe, können sie nur mit Rahmen der selben Obergruppe gruppiert werden. Ist ein Rahmen der Liste gesperrt, werden alle Rahmen der neuen Gruppe gesperrt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste gültiger Rahmenreferenzen
newFrame itemRef 0 Allokierter Speicher für das Ergebnis. Konnten die Rahmen erfolgreich gruppiert werden, enthält die Variable die gültige Referenz auf den Gruppenrahmen.
0 : nicht interessiert
#include "internal/text.h"

Ein Platzhalterskript fügt einen aus mehreren Rahmen bestehenden schwebenden Rahmen ins Dokument und verknüpft ihn an seinem Textanfang.

#include "internal/text.h"
int main () { DataPool pool = datapool::alloc (); ItemList frames = itemlist::alloc (); ItemRef groupRef = item::alloc (); ItemList items = 0; float l = 0.0; float t = 0.0; float r, b; int i; int textpos;
if (!textmodel::available ()) return 0;
\san[c-comment]{// Füge einige Rahmen ins Dokument ein} // Die Templates 2-4 müssen angelegt sein! for (i = 2; i<5; i++) { // Template einfügen // items wird dabei automatisch allokiert items = document::place_items (pool, "data", "pageitems", i, l, t);
// Eingefügte Rahmen sammlen itemlist::appendlist (frames, items);
// Nächste Templateposition // Danach wird die Liste items gelöscht. itemlist::bbox (items, &l, &t, &r, &b); itemlist::release (items); items = 0; t = b + 2.0; }
// Eingefügte Templates gruppieren frame::group (frames, groupRef);
// Gruppe schweben lassen textmodel::floating (groupRef, textmodel::start (),   kRightHanded, 5.0,   kBelowTop, 0.0);
return 0; }

Version 1.2.1 (25. August 2005)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

ItemList
itemlist::append
...
ungroup
comet.frame.createGroup

static int frame::ungroup(ItemRef groupFrame, ItemList groupedItems = 0)

Löse eine Rahmengruppierung auf.

Die Gruppe, die Sie auflösen, kann Teil der Objektliste sein, die von den Plugins gerade aktualisiert wird. Durch die Gruppenauflösung wird diese Objektliste möglicherweise geändert. Weitere Schritte der Aktualisierung können dann nicht mehr richtig oder nicht mehr vollständig ausgeführt werden. Hier ein Beispiel:

Werden die Unterrahmen neugruppiert, wird ein neues Gruppenobjekt erzeugt. Durch Neugruppierungen kann die Situation damit nicht gerettet werden. Die folgenden Absätze beschreiben, wie Sie bei Gruppenauslösungen vorgehen sollten, um diese Fehler zu vermeiden.

Wenn Sie die Gruppenauflösung machen, weil Sie neue Rahmen zur Gruppe hinzufügen wollen, verwenden Sie die Anweisung frame::add_to_group. Der neue Rahmen newRef muss dabei unbedingt auf der selben Seiten und der gleichen Ebene wie gFrame liegen.

ItemRef	newRef	= item::alloc ();
:
frame::create_textframe (newRef, 36, 36, 136, 136, page::get (gFrame), "");
frame::add_to_group (gFrame, newRef);

Wenn Gruppenauflösung und -neuordnung im Skriptcode weit auseinander liegen, verwenden Sie frame::regrouped, um den Plugins mitzuteilen, dass sich das Gruppenobjekt geändert hat.

ItemRef		newRef		= item::alloc ();
ItemRef		oldGroup	= item::alloc ();
ItemRef		newGroup	= item::alloc ();
ItemList 	li			= itemlist::alloc();
frame::create_textframe (newRef, 36, 36, 136, 136, page::get (gFrame), ""); if (frame::get_group(gFrame, oldGroup) == 0) {   frame::ungroup(oldGroup, li);   itemlist::append(li, newRef);   frame::group(li, newGroup);
  frame::regrouped (oldGroup, newGroup); }

Sollen die Unterrahmen nicht wieder gruppiert werden, müssen diese Rahmen im Skript unter Umständen explizit neu geladen und/oder aufgebaut werden. Ob und welche Aktionen Sie ausführen müssen, hängt davon ab, in welchem Skripttyp die Auflösung gemacht wird :

ItemRef		oldGroup	= item::alloc ();
ItemList 	li			= itemlist::alloc();
int			i;
if (frame::get_group(gFrame, oldGroup) == 0) {   frame::ungroup(oldGroup, li);
  for (i = 0; i < itemlist::length (li); i++)   {   placeholder::load (fr, 0, -2, 0, 1);   placeholder::build (fr);   } }

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
groupFrame ItemRef - Aufzulösende Rahmengruppierung
groupedItems ItemList 0 Liste der von der Gruppierung zusammengehaltenen Rahmen
0 : keine Rückgabe benötigt
sonst : mit itemlist::alloc reservierter Speicher für die Liste der gruppierten Rahmen
#include "internal/types.h"

Das Skript löst die Gruppierung eines Rahmens auf und erzeugt neben der Gruppe einen neuen Rahmen. Die alten Rahmen und der neu erzeugte Rahmen werden danach wieder gruppiert. Das Skript verzichtet fast vollständig auf das Abfangen von Fehlern. Das ist nur der übersichtlichkeit halber. Wenn Sie das Skript verwenden wollen, sollten Sie sich die kleine Mühe machen, und die Resultcodes der Aufrufe abfragen.Die Abbildungen zeigen den Effekt des Skriptes :

 ⇒ 

#include "internal/types.h"
int main () { ItemRef groupRef = item::alloc (); ItemRef newframe = item::alloc (); ItemList grouped = itemlist::alloc (); float l, t, r, b; char lay[256];
if (gRun > 1) return 0;
if (frame::get_group (gFrame, groupRef)) { showmessage ("Rahmen nicht gruppiert."); return 0; } frame::ungroup (groupRef, grouped);
itemlist::bbox (grouped, &l, &t, &r, &b); frame::create2 (   newframe,   kStar,   r+10.0, t, r+130.0, t+120.0,   page::get (gFrame),   frame::get_layer (gFrame, lay),   0, // Spaltenanzahl   0, // vertikale Spalten   0.0, // Spaltenabstand   5, 40); frame::color_rgb (newframe, 255, 0, 0, 0); frame::stroke_rgb (newframe, 0, 0, 0, 5.0); itemlist::append (grouped, newframe);
frame::group (grouped);
return 0; }

Version 1.2.1 (25. August 2005)
Parameter groupedItems seit Version 1.3.4 (P/R 74)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

group
add_to_group
regrouped
comet.CGroup.resolve

static int frame::group_content(ItemRef groupFrame, ItemList groupedItems)

Ermittle die Unterrahmen einer InDesign®/Illustrator-Gruppe. Die Gruppe wird dabei nicht aufgelöst.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
groupFrame ItemRef - Verweis auf eine Grupperung, siehe get_group
groupedItems ItemList 0 Liste der von der Gruppierung zusammengehaltenen Rahmen. Die Liste muss zuvor mit itemlist::alloc allokiert worden sein.

Das Beispiel wählt alle Rahmen des Dokumentes aus, die zur selben Gruppe gehören wie der Skriptrahmen gFrame.

#include "internal/types.h"
int main () { ItemRef groupRef = item::alloc (); ItemList grouped = itemlist::alloc (); ItemRef nth = item::alloc (); int i;
if (gRun > 1) return 0;
if (frame::get_group (gFrame, groupRef)) { showmessage ("Rahmen nicht gruppiert."); return 0; } frame::group_content (groupRef, grouped);
for (i = 0; i < itemlist::length (grouped); i++) { frame::select (itemlist::get (grouped, nth, i), false, false); }
return 0; }

Version 1.3.4 (P/R 74)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CGroup.getMembers

static int frame::get_group(ItemRef frameRef, ItemRef groupRef = 0)

Ermittle die InDesign®-Gruppe eines Rahmens. Ist der Rahmen nicht Teil einer InDesign®-Gruppe, gibt der Aufruf einen Fehler zurück.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz
groupRef ItemRef 0 Bei erfolgreicher Ausführung : Referenz auf die Gruppierung

0 : Nicht interessiert
Sonst : Mit item::alloc reservierte Ergebnisvariable

Verschiebe einen Rahmen in die linke obere Ecke seiner Seite. Ist der Rahmen Teil einer InDesign®-Gruppe, wird die gesamte Gruppe verschoben.

int get_top (ItemRef fr, ItemRef top)
{
    ItemRef		parent	= item::alloc ();
    ItemRef		child	= item::alloc ();
item::assign (top, fr); item::assign (child, fr);
while (frame::get_group (child, parent) == 0) { item::assign (child, parent); item::assign (top, parent); }
item::release (parent); item::release (child);
return frame::is_valid (top); }
int main () { ItemRef top = item::alloc ();
if (!get_top (gFrame, top)) return 0;
frame::moveto (top, 36.0, 36.0);
return 0; }

Version 1.3.4 (P/R 74)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.getGroup

static int frame::regrouped(ItemRef oldGroup, ItemRef newGroup = 0)

Eine Gruppe wurde aufgelöst und neu zusammengestellt. Mehr dazu siehe hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
oldGroup ItemRef - Die alte Gruppe, die aufgelöst wurde
newGroup ItemRef 0 Die neue Gruppe. Wurde die Rahmen nicht neu gruppiert, darf der Eintrag auch leer sein. Siehe aber in diesem Fall hier!

Version 3.2 R2267, 7.Feb.2011

priint:comet InDesign® Plug-Ins, comet_pdf

add_to_group
add_list_to_group
ungroup
group

static int frame::add_to_group(ItemRef frameRef, ItemRef sibling)

Füge zu der InDesign-Gruppe, zu der der erste Rahmen gehört, einen weiteren Rahmen hinzu. Ist der erste Rahmen nicht Teil einer InDesign-Gruppe, werden die beiden Rahmen gruppiert. über Umgruppierungen von Rahmen siehe hier. Die Gruppe, in der sich der erste Rahmen befindet, ändert sich durch den Aufruf!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmen- oder Gruppenreferenz
sibling ItemRef - Füge diesen Rahmen zur Gruppe (von) frameRef hinzu. Hat frameRef keine Gruppe, wird eine neue Gruppe aus den beiden Rahmen erzeugt.

Erzeuge vier Rahmen und bilde aus gFrame und den vier neuen Rahmen eine Gruppe.

int main ()
{
    ItemRef		f	= item::alloc ();
    int			r;
    int			l	= 36;
    int			t	= 36;
    int			i;
for (i = 0; i < 4; i++) { frame::create_textframe (f,   l+(i*100),   t,   l+90+(i*100),   t+200,   page::get (gFrame),   ""); frame::color_rgb (f, 56+(i*50), 128, 0); frame::add_to_group (gFrame, f); }
return 0; }

Version 3.2 R2267, 7.Feb.2011

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

is_group
regrouped
ungroup
group
group_content
add_list_to_group
comet.CGroup.addMembers

static int frame::add_list_to_group(ItemRef frameRef, ItemList siblings)

Füge zu der Gruppe, zu der ein Rahmen gehört, weitere Rahmen hinzu. Ist der Rahmen nicht Teil einer Untergruppe, werden die Rahmen gruppiert. Ist die übergebene Referenz selbst eine Gruppe, werden die Rahmen der Liste dieser Gruppe zugeordnet. Über Umgruppierungen von Rahmen siehe hier. Die Gruppe, in der sich der erste Rahmen befindet, ändert sich durch den Aufruf!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmen- oder Gruppenreferenz
siblings ItemList - Füge diese Rahmen zur Gruppe (von) frameRef hinzu. Hat frameRef keine Gruppe, wird eine neue Gruppe aus den beiden Rahmen erzeugt.

Erzeuge vier Rahmen und bilde aus gFrame und den vier neuen Rahmen eine Gruppe.

int main ()
{
    ItemRef		f	= item::alloc ();
    ItemList	fl	= itemlist::alloc ();
    int			r;
    int			l	= 36;
    int			t	= 36;
    int			i;
for (i = 0; i < 4; i++) { frame::create_textframe (f,   l+(i*100),   t,   l+90+(i*100),   t+200,   page::get (gFrame),   ""); frame::color_rgb (f, 56+(i*50), 128, 0); itemlist::append (fl, f); }
frame::add_list_to_group (gFrame, fl);
return 0; }

Version 3.2 R2267, 7.Feb.2011

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

is_group
regrouped
ungroup
group
group_content
add_to_group
comet.CGroup.addMembers

static int frame::inlinepos(ItemRef inlineframe)

Ermittle die Textposition eines Inlinerahmens.

Name Typ Default Beschreibung
Return int   Textposition oder -1
inlineframe ItemRef - Inlinerahmen

Hole alle Inlines der Tabellenzelle, in der sich der Textcursor gerade befindet.

ItemList inlines_of_cell (ItemRef frame, Table T, int row, int col)
{
    ItemList	inlines		= itemlist::inlines (frame);
    ItemList	cellframes	= itemlist::alloc ();
    ItemRef		f			= item::alloc ();
    int			start, len, pos, i;
table::cell::get_textpos (T, col, row, &start, &len);
for (i = 0; i < itemlist::length (inlines); i++) { itemlist::get (inlines, f, i); pos = frame::inlinepos (f); if (pos >= start) { itemlist::append (cellframes, f); } }
itemlist::release (inlines); return cellframes; }
int main () { int start, end, row, col; Table T = table::alloc (); ItemRef frame = item::alloc (); ItemList inlines;
textmodel::selection (&start, &end, frame, 0, T, &col, &row); if (table::is_valid (T)) { inlines = inlines_of_cell (frame, T, row, col);
wlog ("", "# %d inlines in cell [r%d, c%d]\n", itemlist::length (inlines), row, col);
itemlist::release (inlines); }
return 0; }

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

frame::isinline
frame::textframe
frame::floating
position_visible

static int frame::set_creationdate(ItemRef f)

Setze das Rahmendatum neu. Als Datum wird immer die aktuelle Zeitangabe des Rechners verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz

Version 1.2.1 (30. August 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::wrap(
  ItemRef f,
  int mode,
  float left = -1000.0,
  float top = -1000.0,
  float right = -1000.0,
  float bottom = -1000.0)

Setze den Konturtypen und die Konturabstände eines Rahmens.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
mode int - Konturtyp

-1 kWrapUndef - Konturtyp unverändert lassen
0 kWrapNone - no effect on text
1 kWrapBand - text leads past area of strip
2 kWrapNextFrame - text continues in next frame
3 kWrapBothSides - text on both sides of object
4 kWrapWithinHoles - text within holes in object
6 kWrapManualContour - text follows the standoff shape (implies kWrapBothSides)
7 kWrapLeftContour - text wraps only to the left side of the standoff
8 kWrapRightContour - text wraps only to the right side of the standoff
left float -1000.0 Linke Konturbreite
-1000.0 - Angabe ignorieren

Bei Verwendung von Konturen wird der Wert gesetzt aber ignoriert.
top float -1000.0 Obere Konturhöhe
-1000.0 - Angabe ignorieren

Bei Verwendung von Konturen wird nur dieser Wert als Abstand zur Kontur verwendet.
right float -1000.0 Rechte Konturbreite
-1000.0 - Angabe ignorieren

Bei Verwendung von Konturen wird der Wert gesetzt aber ignoriert.
bottom float -1000.0 Untere Konturhöhe
-1000.0 - Angabe ignorieren

Bei Verwendung von Konturen wird der Wert gesetzt aber ignoriert.
#include "internal/types.h"

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setWrap

static int frame::getwrap(
  ItemRef f,
  float* left = 0,
  float* top = 0,
  float* right = 0,
  float* bottom = 0)

Ermittle den Konturtypen und die die Konturabstände eines Rahmens.

Name Typ Default Beschreibung
Return int   Konturtyp

-1 kWrapUndef - Konturtyp konnte nicht ermittelt werden
0 kWrapNone - no effect on text
1 kWrapBand - text leads past area of strip
2 kWrapNextFrame - text continues in next frame
3 kWrapBothSides - text on both sides of object
4 kWrapWithinHoles - text within holes in object
6 kWrapManualContour - text follows the standoff shape (implies kWrapBothSides)
7 kWrapLeftContour - text wraps only to the left side of the standoff
8 kWrapRightContour - text wraps only to the right side of the standoff
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
left float* 0 Linke Konturbreite, darf 0 (Rückgabe ignorieren) sein.
top float* 0 Obere Konturhöhe, darf 0 (Rückgabe ignorieren) sein.
right float* 0 Rechte Konturbreite, darf 0 (Rückgabe ignorieren) sein.
bottom float* 0 Untere Konturhöhe, darf 0 (Rückgabe ignorieren) sein.
#include "internal/types.h"

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getWrap

static int frame::wrap_ignore(ItemRef f, int state)

Der Aufruf beeinflußt, ob ein Rahmen die Textkonturführung anderer Rahmen anwenden soll oder nicht. Er beinflußt nicht, ob der Rahmen selbst eine Konturführung setzt. }

Von comet_pdf werden inverse Textkonturen nicht unterstützt. Der Funktionsaufruf hat hier keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
state int - 0 - Konturführung abschalten
sonst - Konturführung aktivieren

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.setWrapIgnore

static int frame::getwrap_ignore(ItemRef f)

Wendet ein Rahmen Konturführungen anderer Rahmen an?

Name Typ Default Beschreibung
Return int   1 - Konturführungen werden angewendet
0 - Status konnte nicht ermittelt werden oder Konturführungen werden ignoriert.
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CFrame.getWrapIgnore

static int frame::wrap_invert(ItemRef f, int state)

Kontur invertieren. Texte darunter (oder auch darüber) liegender Rahmen laufen dann nicht um diesen Rahmen außen herum sondern durch diesen Rahmen hindurch (und, ja, wenn das mehrere Texte sind, werden auch mehrere Text in dem Rahmen gezeigt.).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
state int - 0 - Kontur normal verwenden
sonst - Innere Teile des Rahmens als Kontur verwenden

Von comet_pdf werden inverse Textkonturen zur Zeit nicht unterstützt. Der Funktionsaufruf hat hier keine Wirkung.

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::getwrap_invert(ItemRef f)

Inverse Textkontur verwenden?

Name Typ Default Beschreibung
Return int   1 - Kontur invertiert oder Status konnte nicht ermittelt werden
0 - Kontur wird "normal" verwendet
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden

Version 1.2.2 (18. Oktober 2005)

priint:comet InDesign® Plug-Ins

static int frame::wrap_zorderbased(ItemRef f, int state)

Z-Order der Textkontur beachten oder nicht. Standardmäßig werden Textkonturen angewendet unabhängig davon, ob die Kontur vor oder hinter dem Text liegt. Hier können Sie einstellen, dass die Konturen von Rahmen hinter dem Text ignoriert werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
state int - 0 - Kontur normal verwenden
sonst - Kontur nur verwendn, wenn der Rahmen über dem Text liegt

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::getwrap_zorderbased(ItemRef f)

Prüft die Textkontur, ob der Rahmen vor dem Text liegt?

Name Typ Default Beschreibung
Return int   0 die Z-Order wird nicht geprüft oder Fehlercode
1 : Ja, die Kontur wird nur verwendet, wenn der Rahmen vor dem Text liegt
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::wrap_side(ItemRef f, int side)

Optionen für den Textumfluß um Rahmen und Objektformen setzen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
side int - 0 - Rechte und linke Seite
1 - Linke Seite
2 - Rechte Seite
3 - Dem Rücken zugewandte Seite
4 - Vom Bund abgewandte Seite
5 - Längere Zeile (nicht in comet_pdf)

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::getwrap_side(ItemRef f)

Optionen für den Textumfluß um Rahmen und Objektformen erfragen.

Name Typ Default Beschreibung
Return int   -1 : Fehler
0 : Rechte und linke Seite
1 : Linke Seite
2 : Rechte Seite
3 : Dem Rücken zugewandte Seite
4 : Vom Bund abgewandte Seite
5 : Längere Zeile
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::wrap_contour(
  ItemRef f,
  int type = 0,
  int pathindex = -1,
  char* pathname = 0,
  int alphaindex = -1,
  char* alphaname = 0,
  float tolerance = 0.0,
  int treshhold = 0,
  int allowholes = 0)

Optionen für den Textumfluß von Bildern. Um den Textumfluß zu aktivieren muß zuvor die Funktion frame::wrap ausgeführt werden!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
type int 0 0 : Bounding Box (nicht in comet_pdf)
1 : Kanten suchen (nicht in comet_pdf)
2 : Alpha-Kanal
3 : Photoshop-Pfad
4 : Graphikrahmen (nicht in comet_pdf)
5 : Wie Beschneidung
pathindex int 0 0-basierter Index des Beschneidungspfades. In comet_pdf wird der Parameter nicht ausgewertet, verwenden Sie hier bitte den Parameter pathname.
pathname String oder char* 0 Name des verwendeten Photoshop-Pfades. Ist die Angabe nicht leer, wird der Parameter pathindex ignoriert.
alphindex int 0 0-basierter Index des Alphapfades. In comet_pdf wird der Parameter nicht ausgewertet, verwenden Sie hier bitte den Parameter alphaname.
alphname String oder char* 0 Name des verwendten Alpha-Pfades. Ist die Angabe nicht leer, wird der Parameter alphaindex ignoriert.
tolerance float 5.0 0.0 - 100.0

Angabe der gewünschten Toleranz beim Kantensuchen (nicht in comet_pdf).

Die Berechnung des Pfades für die Textverdrängung wird in zwei Schritten gemacht: Zuerst wird ein exakter Polygonpfad um die Kontur gelegt. Und weil dieses Polygon aus tausenden von Punkten bestehen kann, wird danach versucht, das Polygon mit Bezier-Kurven anzugleichen. Mit der Toleranz geben Sie an, wie nah die Kurven an das Polygon angeglichen werden sollen.
treshhold int 255 0 - 255

Angabe des gewünschten Grenzwertes beim Kantensuchen(nicht in comet_pdf).

Beim Ermitteln der Kontur werden die Graustufen-Werte des Bildes bzw. des Alphakanales in Scharz-Weiß umgerechnet. Werte >= dem Treshold werden dabei weiß, alle anderen werden schwarz.
allowholes int 0 Löcher erlaubt beim Kantensuchen (nicht in comet_pdf)?

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::getwrap_contour(
  ItemRef f,
  int* type = 0,
  int* pathindex = 0,
  char* pathname = 0,
  int* alphaindex = 0,
  char* alphaname = 0,
  float* tolerance = 0,
  int* treshhold = 0,
  int* allowholes = 0)

Konturoptionen für den Textumfluß um Rahmen und Objektformen ermitteln.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
type int* 0 Ergebnisvariable für den Konturtyp, darf 0 sein. Die Variable enthält nach erfolgreicher Ausführung folgende Werte:

0 : Bounding Box
1 : Kanten suchen
2 : Alpha-Kanal
3 : Photoshop-Pfad
4 : Graphikrahmen
5 : Wie Beschneidung
pathindex int* 0 Ergebnisvariable für den 0-basierten Photoshop Pfadindex, darf 0 sein.
pathname String oder char* 0 Ergebnisvariable für den Namen des verwendeten Photoshop-Pfades, darf 0 sein.
alphaindex int* 0 Ergebnisvariable für den 0-basierten Alphakanal, darf 0 sein.
alphaname String oder char* 0 Ergebnisvariable für den Namen des verwendeten Alphakanales, darf 0 sein.
tolerance float* 0 Ergebnisvariable für den Toleranzwert beim Kantensuchen.
treshhold int* 0 Ergebnisvariable für den Treshhold beim Kantensuchen.
allowholes int* 0 Ergebnisvariable für Allowholes beim Kantensuchen.

Version 4.0.5 R9830, 14. Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static char* frame::gettext(
  ItemRef f,
  String str,
  int pos = 0,
  int len = -1,
  int fmt = 0,
  int showProgress = 0,
  int tmRelative = 0)

Textinhalt eines Textrahmens holen. Der Befehl funktioniert analog dem Befehl textmodel::gettext mit einem zusätzlichen Parameter, der den gewünschten Rahmen angibt.

Der Export kann als reiner Text (kExport(Plus)Plain) oder als Text mit Formatierungen erfolgen. Formatierungen werden als InDesign® TaggedText geschrieben. Das Format des TaggedText ist unabhängig von den Einstellungen des Exportdialoges und wird immer mit den folgenden Einstellungen gemacht :

Die Funktion benötigt die folgenden Includes

#include "internal/types.h"
#include "internal/text.h"

Textvariablen werden bei Exportformaten, die reinen Text exportieren (kExportPlain, ...) nicht ersetzt. Der exportierte Text enthält an den Stellen, an denen sich Variablen befinden, den von InDesign® verwendeten internen Zeichencode. Von den ab v3.3 R2883 eingeführten ~Plus~-Formaten werden die Variablen-Platzhalter durch den aktuell im Dokument angezeigten Text ersetzt.

Name Typ Default Beschreibung
Return char*   Inhalt. Der zurückgegebene Zeiger kann in Funktionen verwendet werden, die einen char*-String als Parameter erwarten.

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

f ItemRef - Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
str String - Allokiertes String-Objekt
pos int 0 Startposition
>= 0 Textposition
kSelection Aktuelle Cursorposition
len int kEnd Anzahl der Zeichen, die geholt werden sollen
fmt int kExportPlain Exportformat, siehe hier
showProgress int false Soll für den Export ein Progressbalken gezeigt werden?
Von Illustrator wird der Parameter ignoriert.
tmRelative int 0 Sind die Angaben von Position und Länge relativ zum Platzhalter oder zum Textmodel?

0 : Platzhalter
1 : Textmodell
Von Illustrator wird der Parameter ignoriert.
#include "internal/text.h"
#include "internal/types.h"

Hier ein sehr einfaches Beispiel:

#include "internal/types.h"
#include "internal/text.h"
int main () { String str = string::alloc ();
frame::gettext (gFrame, str); showmessage ("--%s--", str);
return 0; }

Parameter tmRelative since version 2.1 R668, 16. April 2008
~Plus~-Formate seit v3.3 R2883, 20.04.2012

priint:comet InDesign® Plug-Ins, comet_pdf (nur Textformat kExportPlain), Illustrator (nur Textformat kExportPlain)

comet.CFrame.getText

static int frame::get_type(ItemRef f = 0, int* totalPoints = 0)

Ermittle den (geometrischen) Typ eines Rahmens. Die Funktion ermittelt, ob ein Rahmen eine Linie, ein Rechteck, Quadrat, usw. ist.

Name Typ Default Beschreibung
Return int   Rahmentyp

-1 kUndef : Unbekannt oder kann nicht ermittelt werden
0 kRectangle
1 kOval
2 kPolygon : Beliebiges Polygon (auch Sterne)
4 kSpline
5 kLine
6 kSquare
7 kCircle
f ItemRef 0 Gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
totalPoints int* 0 Anzahl der Eckpunkte. Besteht der Rahmen aus mehreren Pfaden, werden die Punkte aller Pfade addiert.

0 : Ignorieren
#include "internal/types.h"

Ein Beispiel für die Verwendung der Funktion finden Sie bei get_color.

Siehe get_color

Version 1.3.4 (P/R 94)
kSquare und kCircle seit v4.3 R34444

priint:comet InDesign® Plug-Ins

create
create2

static float frame::get_opacity(ItemRef f = 0, int opacType = 0)

Ermittle die Transparenz eines Rahmens. Ergebnisse werden im Bereich 0.0 - 100.0 zurückgegeben.

Name Typ Default Beschreibung
Return float   Transparenz des Rahmens in Prozent (0.0 - 100.0)
-1.0 : Transparenz konnte nicht ermittelt werden
f ItemRef 0 Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden
opacType int 0 Welche Transparenz soll ermittelt werden?

0 : Objekt
1 : Kontur
2 : Fläche
3 : Inhalt

Ein Beispiel für die Verwendung der Funktion finden Sie bei get_color.

Siehe get_color

Version 1.3.4 (P/R 94)
Parameter opacType seit v3.3.1 R3956, 27. Jun 2013

priint:comet InDesign® Plug-Ins, comet_pdf

opacity

static int frame::get_blendmode(ItemRef f = 0)

überdeckungsmethode ermitteln.

Name Typ Default Beschreibung
Return int   überdeckungsmethode
-1 : Methode konnte nicht ermittelt werden
sonst : Einer der blendmode-Werte bei opacity
f ItemRef 0 Gültige Rahmenreferenz
0 - aktuellen Skriptrahmen verwenden

Ein Beispiel für die Verwendung der Funktion finden Sie bei get_color.

Siehe get_color

Version 1.3.4 (P/R 94)

priint:comet InDesign® Plug-Ins

opacity

static int frame::get_color(
  ItemRef f = 0,
  char* colName = 0,
  int* colSpace = 0,
  float* c1 = 0,
  float* c2 = 0,
  float* c3 = 0,
  float* c4 = 0,
  float* tint = 0)

Farbe eines Rahmens ermitteln. Im Fehlerfall bleiben die Rückgabeparameter unberührt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
f ItemRef 0 Gültige Rahmenreferenz
0 : aktuellen Skriptrahmen verwenden
colName String oder char* 0 Name der Farbe in der Farbpalette oder leer
0 : Farbnamen nicht ermitteln
sonst : Reservierter Speicher für den Farbnamen
colSpace int* 0 Farbraum
0 : Farbraum nicht ermitteln
sonst :
  kRGB   kCMYK   kLab
c1, c2, c3, c4 float* 0 Farbwerte
0 : Farbwerte nicht ermitteln
sonst :
  r, g, b bei kRGB
  c, m, y, k bei kCMYK
  l, a, b bei kLab
tint float* 0 Intensität der Farbe
0 : nicht ermitteln
sonst : 0.0 - 100.0
#include "internal/types.h"

Das Beispiel ermittelt einige Rahmenattribute.

#include "internal/types.h"
int main () { char colName[256]; int colSpace; float c1, c2, c3, c4, tint;
showmessage ("type : %d\nopacity : %f\nblendmode : %d",   frame::get_type (),   frame::get_opacity (),   frame::get_blendmode ());
if (frame::get_color (0,colName,&colSpace,&c1,&c2,&c3,&c4,&tint) == 0) { if (colSpace == kRGB) { showmessage (   "Farbname : %s\nR : %f\nG : %f\nB : %f\nTint : %f\n",   colName,   c1, c2, c3, tint); } else if (colSpace == kCMYK) { showmessage (   "Farbname : %s\nC : %f\nM : %f\nY : %f\nK : %f\nTint : %f\n",   colName,   c1, c2, c3, c4, tint); } else if (colSpace == kLab) { showmessage (   "Farbname : %s\nL : %f\na : %f\nb : %f\nTint : %f\n",   colName,   c1, c2, c3, tint); } else { showmessage ("Unbekannter Farbraum"); } } else showmessage ("Farbe konnte nicht ermittelt werden.");
return 0; }

Version 1.3.4 (P/R 94)

priint:comet InDesign® Plug-Ins, comet_pdf

color
color_rgb
comet.CPageItem.getFillColor

static int frame::is_inline(ItemRef frame)

Steht der gegebene Rahmen innerhalb eines Textes?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Rahmen, dessen inline-Eigenschaft erfragt werden soll.

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins, comet_pdf

frame::isinline
position_visible
comet.CFrame.isInline

static int frame::is_directinline(ItemRef frame)

Steht der gegebene Rahmen direkt innerhalb eines Textes?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Rahmen, dessen direkte inline-Eigenschaft erfragt werden soll.

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins, comet_pdf

frame::is_inline

static int frame::is_textonpath(ItemRef frame)

Ist der Rahmen ein Pfadtext?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins

is_inline
set_top_options

static int frame::is_graphicframe(ItemRef frame)

Ist der Rahmen ein Grafikrahmen? Der Rahmen kann leer sein. Im Gegensatz zu is_graphic, das Auskunft gibt, ob der Rahmen eine Grafik ist, gibt is_graphicframe Auskunft darüber, ob der Rahmen eine Grafik enthält.

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz
int main ()
{
    int 		a	= frame::is_graphicframe (gFrame);
    int 		b	= frame::is_empty_graphicframe (gFrame);
    int 		c	= frame::has_embedded_image (gFrame);
showmessage ("Graphic Frame : %d\nEmpty : %d\nEmbedded : %d\n", a, b, c); return 0; }

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins, comet_pdf

frame::is_graphicframe
is_textframe
is_guide
is_standoff
is_empty_graphicframe
has_embedded_image
placeholder::path

static int frame::is_empty_graphicframe(ItemRef frame)

Ist der Rahmen ein leerer Grafikrahmen?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz
int main ()
{
    int 		a	= frame::is_graphicframe (gFrame);
    int 		b	= frame::is_empty_graphicframe (gFrame);
    int 		c	= frame::has_embedded_image (gFrame);
showmessage ("Graphic Frame : %d\nEmpty : %d\nEmbedded : %d\n", a, b, c); return 0; }

Version 2.1 R1830, 9. April 2010

priint:comet InDesign® Plug-Ins, comet_pdf

is_graphicframe
is_graphicframe
is_textframe
is_guide
is_standoff
has_embedded_image
placeholder::path

static int frame::has_embedded_image(ItemRef frame)

Enthält der Grafikrahmen ein eingebettetes Bild?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz
int main ()
{
    int 		a	= frame::is_graphicframe (gFrame);
    int 		b	= frame::is_empty_graphicframe (gFrame);
    int 		c	= frame::has_embedded_image (gFrame);
showmessage ("Graphic Frame : %d\nEmpty : %d\nEmbedded : %d\n", a, b, c); return 0; }

Version 2.1 R1830, 9. April 2010

priint:comet InDesign® Plug-Ins, comet_pdf

is_graphicframe
is_graphicframe
is_textframe
is_guide
is_standoff
is_empty_graphicframe
placeholder::path
has_image
image_getpath

static int frame::has_image(ItemRef frame)

Enthält der Grafikrahmen ein Bild?

Name Typ Default Beschreibung
Return int   1 : ja, der Rahmen enthält ein Bild
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 3.1 R2022, 27.07.2010

priint:comet InDesign® Plug-Ins, comet_pdf

is_graphicframe
is_graphicframe
is_textframe
is_guide
is_standoff
is_empty_graphicframe
placeholder::path
has_embedded_image
image_getpath

static int frame::is_graphic(ItemRef frame)

Ist der Rahmen eine Grafik? Im Gegensatz zu is_graphicframe, das Auskunft gibt, ob der Rahmen eine Grafik enthält, gibt is_graphic Auskunft darüber, ob der Rahmen eine Grafik ist.

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins, Illustrator

frame::is_graphicframe
comet.CPageItem.getType

static int frame::is_textframe(
  ItemRef frame,
  int* startPos = 0,
  int* length = 0,
  int* idx = 0,
  ItemRef firstFrame = 0)

Ist der Rahmen ein Textrahmen?

Name Typ Default Beschreibung
Return int   1 : Ja
0 : Nein
frame ItemRef - Gültige Rahmenreferenz
startPos int* 0 Bei erfolgreichem Return erste Textposition im Rahmen
length int* 0 Bei erfolgreichem Return Länge des Textes im Rahmen
idx int* 0 Bei erfolgreichem Return 0-basierter Index des Rahmens in der verketteten Rahmenliste des Textes
firstFrame ItemRef 0 Bei erfolgreichem Return die Referenz auf den ersten Rahmen der Liste

Ermittle zu allen Rahmen der aktuellen Seite, ob sie ein Textrahmen sind. Wenn ja, gib Textpositionen und ersten Rahmen an.

int main ()
{
    int 		result;
    ItemList	frames	= itemlist::pageframes (-1);
    int 		len		= itemlist::length (frames);
    ItemRef		frame	= item::alloc ();
    ItemRef		frame1	= item::alloc ();
    int			i		= 0;
    int 		a, b, idx;
while (i < len) { itemlist::get (frames, frame, i++); wlog ("", "# Frame %d : ", item::getint (frame)); if (frame::is_textframe (frame, &a, &b, &idx, frame1)) { wlog ("", "%d text frame [%d, %d], first %d\n", idx+1, a, a+b, item::getint (frame1)); } else wlog ("", "not a text frame\n"); }
return 0; }

Version 1.3.4, R172
startPos, length und idx, firstFrame seit Version 2.1 R1166, 26. Feb. 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

frame::is_graphicframe
comet.CPageItem.getType

static int frame::is_guide(ItemRef frame)

Ist der Rahmen ein "Guide"?

Name Typ Default Beschreibung
Return int   1 : Ja
0 : Nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins

frame::is_graphicframe
is_textframe
comet.CPageItem.getType

static int frame::is_standoff(ItemRef frame)

Ist der Rahmen ein "StandOff"?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins

frame::is_graphicframe
is_textframe

static int frame::is_textinset(ItemRef frame)

Ist der Rahmen ein "TextInset"?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins

frame::is_graphicframe
is_textframe

static int frame::is_group(ItemRef frame)

Ist der Rahmen eine Gruppe?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins, Illustrator

frame::is_graphicframe
is_textframe
get_group
comet.CPageItem.getType

static int frame::is_media(ItemRef frame)

Ist der Rahmen ein Mediaobjekt?

Name Typ Default Beschreibung
Return int   1 : ja
0 : nein
frame ItemRef - Gültige Rahmenreferenz

Version 1.3.4, R172

priint:comet InDesign® Plug-Ins

frame::is_graphicframe
is_textframe
is_guide
is_standoff

static int frame::is_qrcode(ItemRef frame)

Enthält der Rahmen einen QR-Code?

Als QR-Codes werden nur Rahmen erkannt, deren QR-Code mit image::qrcode oder dem Menübefehl Objekt -> QR-Code generieren... erzeugt wurde.

Name Typ Default Beschreibung
Return int   1 : Ja
0 : Nein
frame ItemRef - Gültige Rahmenreferenz

v4.1.8 R27646, 20. Okt. 2020

priint:comet InDesign® Plug-Ins

image::qrcode
comet.CPageItem.getType

static char* frame::get_script_tag(ItemRef frame, char* key = "Label")

Ermittle den Wert eines Script-Tags eines Rahmens.

Name Typ Default Beschreibung
Return char*   Wert des Script-Tags

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frame ItemRef - gültiger Dokumentrahmen
key String oder char* "Label" Welcher Wert soll geholt werden?

"Label" : Der Wert, der in der Palette Fenster:Scripting:Scriptbezeichnung für den Rahmen angezeigt wird

sonst : Der Wert, der mit set_script_tag für den Schlüssel gesetzt gesetzt wurde

Version 1.4 R 330, 3. Apr. 2007

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.getScriptTag

static int frame::count_script_tags(ItemRef frame)

Ermittle die Anzahl definierter Skript-Tags eines Rahmens.

Standard-Tags von InDesign® und den priint:comet Plugins werden dabei nicht mitgezählt.

Name Typ Default Beschreibung
Return int   Anzahl der Skript-Tags des Rahmens.

0 : Keine Skript-Tags oder Fehler
frame ItemRef - gültiger Dokumentrahmen

Version v4.1 R21778, 16. Feb 2018

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

get_nth_script_tag
comet.CPageItem.getScriptTags

static int frame::get_nth_script_tag(
  ItemRef frame,
  int nth,
  char* key,
  char* value)

Hole das nte Schlüssel-Wert-Paar der Skript-Tags eines Rahmens.

Standard-Tags von InDesign® und den priint:comet Plugins werden von der Funktion nicht geholt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Gültiger Dokumentrahmen
nth int - Gültiger Index für ein Skript-Tag
key String oder char* - Allokierter String oder char* für den erhaltenen Namen des Schlüssels
value String oder char* - Allokierter String oder char* für den erhaltenen Wert des Skript-Tags
int main ()
{
    String		key = string::alloc ();
    String		value = string::alloc ();
    int 		n;
for (n = 0; n < frame::count_script_tags (gFrame); n++) { frame::get_nth_script_tag (gFrame, n, key, value); wlog ("", " %d : '%s' : '%s'\n", n, key, value); }
string::release (key); string::release (value);
return 0; }

Version v4.1 R21778, 16. Feb 2018

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

count_script_tags
comet.CPageItem.getScriptTags

static int frame::set_script_tag(
  ItemRef frame,
  char* value,
  char* key = "Label",
  int type = 0)

Setze den Wert eines Script-Tags eines Rahmens.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Gültiger Dokumentrahmen
value String oder char* - Neuer Wert. Die Angabe darf leer oder 0 sein. In diesem Fall wird der Wert des Schlüssels gelöscht.
key String oder char* "Label" Welcher Wert soll gesetzt werden?

"Label" : Der Wert, der in der Palette Fenster:Scripting:Scriptbezeichnung für den Rahmen angezeigt wird
type int 0 Datentyp des Eintrages. Die Angabe wird nur unter Illustrator® verwendet!

kInt = 1 : Ganzzahl

kFloat = 2 : Kommazahl

kBool = 4 : Bool
Folgende Eingabewerte werden neben Zahlenstrings unterstützt: "true", "kTrue, "yes", "false", "kFalse", "no". Der Wert des Eintrages wird entsprechend immer auf "1" bzw. "0" gesetzt.

sonst : String

Beachten Sie bitte, dass der Wert value auch bei Zahl- oder Bool-Einträgen ein String sein muß! Ebenso erhalten Sie mit get_script_tag und get_nth_script_tag den Wert immer als String!
#include "internal/types.h"

Setze in die Rahmen der aktuellen Auswahl einen Zähler

int main ()
{
    char		v	[512];
strcpy (v, frame::get_script_tag (gFrame, "Image number")); if (!askstring (v, "Integer number", "Image number", 0, 0, 0)) return 0; frame::set_script_tag (gFrame, v, "Image number");
return 0; }

Parameter type seit v4.1.8 R27590, 5. Okt 2020 Version 1.4 R 330, 3. Apr. 2007

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

comet.CPageItem.setScriptTag

static int frame::set_origin(ItemRef frame)

Der Aufruf ist Teil der Dokument-Synchronisation. Rahmen von Varianten-Dokumenten, die eine Entsprechng im Musterdokument haben, enthalten in der sog. Origin-ID die UID dieses Rahmens. In der Variante lokal angelegte Rahmen bekommen die Origin-ID 0. Aufgrund dieser Information kann die Synchronisation erkennen, ob und von welchem Rahmen Änderungen aus dem Musterdokument übernommen werden sollen. Werden im Dokument die Rahmen-UIDs angezeigt, wird die Origin-ID hinter der UID gezeigt:

Hier zeigt der Rahmen mit der UID 300 der Varaiante also auf den Rahmen (ebenfalls) mit der UID 300 des Musterdokumentes. Im Laufe der Zeit werden hier durch unterschiedliches Ändern von Variante und Muster Rahmen entstehen, deren Origin-ID erheblich anders ist als die lokale UID.

So aktivieren Sie die Anzeige der Rahmen-UIDs:

  1. Kontext-Menü im Dokument mit CTRL-Klick oder rechter Maustaste öffnen
  2. Den Eintrag Nägel und Magneten - > Zeigen auswählen
  3. Kontext-Menü im Dokument mit CTRL-Klick oder rechter Maustaste erneut öffnen
  4. Den Eintrag Nägel und Magnete - > Rahmennummern zeigen auswählen

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Gültiger Dokumentrahmen

v4.1.6 R26001, 30. Sep 2019

priint:comet InDesign® Plug-Ins, comet_pdf

get_origin
document::create_variant

static int frame::get_origin(ItemRef frame)

Hole die Original-UID eines Rahmens, siehe frame::set_origin.

Name Typ Default Beschreibung
Return int   Im Rahmen gesetzte Origin-ID

0 : Nicht gesetzt oder Fehler
frame ItemRef - Gültiger Dokumentrahmen

v4.1.6 R26001, 30. Sep 2019

priint:comet InDesign® Plug-Ins, comet_pdf

set_origin
document::create_variant

static int frame::remove_image(ItemRef frameRef, int flags = 0)

Lösche das Bild eines Bildrahmens

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - gültiger Dokumentrahmen
int flags 0 [Seit v4.3 R36850] Zusätzliche Hinweise zum Löschen des Bildes

1 : Eventuelle Web-Bild-Verknüpung ebenfalls entfernen

Hinweis : Um lediglich die Webbild-Informationen zu entfernen, verwenden Sie die Funktion frame::remove_url_link.

Version 1.4 R 297

priint:comet InDesign® Plug-Ins, comet_pdf

Parameter flags seit v4.3 R36850, 15. Jun 2025
remove_url_link

static int frame::remove_redundant_tags(
  ItemRef frameref = 0,
  int startPos = 0,
  int len = -1)

Textplatzhalter aufräumen. Werden in einem Textplatzhalter Textattribute (Font, Farbe, Größe, ...) geändert, werden die Platzhalter intern in verschiedende sogenannte Runs getrennt. Die Comet-Plugins stellen sicher, dass alle zusammengehörigen Runs richtig erkannt werden. Für Templates und Musterdokumente ist es aus Performancegründen aber sinnvoll, diese redundanten Runs wieder zu verbinden.

über das Menü Plug-ins -> Platzhalter > Platzhalter vor dem Sichern aufräumen (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) können die redundanten Platzhalter im gesamten Dokument auch automatisch entfernt werden.

Die Funktion beseitigt alle redundanten Textplatzhalter des angegebenen Rahmens. Die Bearbeitung kann auf einen Textbereich eingeschränkt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültiger Textrahmen

0 : Rahmen des Skriptes
startPos int 0 Startposition im Text
len int kEnd Länge des Textes, der bearbeitet werden soll oder kEnd, kSelection

kSelection kann bedeuten, dass ein völlig anderer Text als der des Sriptes bearbeitet wird!
#include "internal/text.h"

Version 1.4.1 R417, 24. Jul 2007

priint:comet InDesign® Plug-Ins

textmodel::remove_redundant_tags
textmodel::gremove_redundant_tags
document::remove_redundant_tags

static int frame::set_objectstyle(
  ItemRef frameRef,
  char* stylePath,
  int applyEmptyCatWithRoot = 0,
  int clearOverrides = 0)

Objektstil auf einen Rahmen anwenden. Ab CS4 können Stilvorlagen in Ordnerstrukturen verwaltet werden. In den Ordner-Pfaden wird ':' als Pfadtrenner verwendet. Ordner und Stile dürfen deshalb keine Doppelpunkte im Namen enthalten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Rahmen

0 : Rahmen des Skriptes
stylePath String oder char* - (Pfad und) Name des Objektstils. Als Pfadtrenner wird ':' verwendet. Standardnamen dürfen in der Sprache der verwendenten InDesign®-Version oder in englisch angegeben werden.

"" : Aktuellen Standard-Objektstil für die Rahmenart (Text oder Grafik) setzen
applyEmptyCat int 0 Wir geben hier einen Parameter der InDesign®-API weiter, den Sie anwenden können oder nicht. Die API-Doku dazu lautet : "1 if we are applying empty (unchecked) cateogories from the root style". Möge es sinnvoll sein.
clearOverrides int 0 +-Entferner

0 : Abweichungen erhalten
1 : Abweichungen entfernen

Version 1.4.2 R612, 14. Mar 2008
clearOverrides seit v3.2.3 R2630, 5. Sept. 2011
stylePath = "" seit v3.2.3 R2630, 5. Sept. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_objectstyle
comet.CPageItem.setObjectStyle

static char* frame::get_objectstyle(ItemRef frameRef)

Ermittle (Pfad und) Name des Objektstiles eines Rahmens. Ist kein Objektstil gesetzt, ist das Ergebnis leer ("").

Name Typ Default Beschreibung
Return char*   Pfad und Name des aktuellen Objektstils. Als Pfadtrenner wird ':' verwendet.
"" : Kein Objektstil gesetzt oder InDesign®-Version vor CS3

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef - Gültiger Rahmen

0 : Rahmen des Skriptes
doTranslate int 0 Standardnamen übersetzen?

0 : Nein. In diesem Fall werden für die Standardstile die englischen Bezeichnungen zurückgegeben. In einer deutschen InDesign®-Version heißt das:
  • "[Ohne]" --> "[None]"
  • "[Einfacher Grafikrahmen]" --> "[Normal Graphics Frame]"
  • "[Einfacher Textrahmen]" --> "[Normal Text Frame]"


1 : Standardnamen in die Sprache der InDesign®-Version übersetzen

v3.2.3 R2630, 5.Sept. 2011
Parameter doTranslate seit v3.4 R5627, 27. Aug 2014

priint:comet InDesign® Plug-Ins, comet_pdf

set_objectstyle
comet.CPageItem.getObjectStyle

static int frame::insert_crossref(
  ItemRef frameRef,
  int index,
  int len,
  char* name,
  int classid = 0,
  int id = 0,
  int id2 = 0,
  int id3 = 0,
  char* sid = "",
  int borderVisble = 0,
  int borderWidth = 1,
  int borderHilite = 3,
  int borderStyle = 1,
  float borderCol1 = -1.0,
  float borderCol2 = -1.0,
  float borderCol3 = -1.0,
  float borderCol4 = -1.0,
  int* delBefore = 0)

Einfügen einer Querverweis-Definition in einen Text. Querverweise dürfen nur innerhalb eines Comet-Platzhalters oder komplett außerhalb von Comet-Platzhaltern liegen. Es ist dringend geraten, als Länge der Referenzen 0 zu wählen! Eine eingefügte Referenz fügt ein Zeichen ins Dokument ein. Die Positionsangabe bezieht sich auf die gesamte Textlänge im Textrahmen frameRef.

Eine ausführliche Beschreibung zu Comet-Querverweisen finden sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmenreferenz
0 : Aktueller Rahmen
index int - rahmenrelative Position der neuen Referenz
len int - Länge der Referenz. Es ist dringend geraten, als Länge der Referenzen 0 zu wählen!. Als Länge der Referenz wird der Anzahl der Dokumentzeichen bezeichnet, um die die Referenz ihren Rahmen legt. Die eigentliche Länge ist um eins größer, da die Referenz selbst auch ein Textzeichen belegt. Die Angabe 0 erzeugt also eine Referenz der Länge 1, die kein weiteres Zeichen umfasst.
name String oder char* - Name der Referenz.

"" : Querverweis wird als Name verwendet
classid int 0 Klassennummer des Objektes

-2 : [seit v5.0 R36440] Verwende nur sid als Zielname
id, id2, id3 int 0 Objekt-IDs
sid String oder char* "" StringID des Objektes. Aus den Objekt-IDs und der StringID wird der Zielname der Referenz gebildet : id id2 id3 'sid'.
borderVisble int 0 Soll der Verweis sichtbar sein?

0 : Nein
1 : Ja. Verweise der Länge 0 bekommen dann einen kleinen senkrechten Strich im Text.
borderWidth int 1 Stärke des Rahmens. InDesign® unterstützt hier nur drei Größen:

1 : Dünn
2 : Mittel
3 : Stark
borderHilite int 3 Wie soll der Rahmen gezeichnet werden?
1 : Invers zeichen (Nicht unterstützt in InDesign® , aber sichtbar im PDF-Export der Datei)
2 : Innenrahmen
3 : Außenrahmen
borderStyle int 1 Art der Rahmenlinie. InDesign® unterstützt nur die folgenden zwei Werte:
0 : Durchgängig
1 : Gestrichelt
borderCol1, borderCol2, borderCol3, borderCol4 float -1.0 Farbe des Rahmens. Angaben im Bereich 0.0 - 100.0 (oder -1.0) Sind die ersten drei Werte >= 0.0 wird eine RGB-Farbe verwendet. Ist auch der letzte Wert >= 0.0 wird CMYK verwendet (aber das scheint irgendwie noch nicht zu funktionieren). Sind die Farbwerte nicht vollständig definiert, wird Orange als Rahmenfarbe verwendet.
delBefore int* 1 Achtung : Das ist eine Adresse. Soll überprüft werden, ob genau vor der Einfügestelle bereits ein gleicher Verweis steht (*delBefore = 1) oder nicht (*delBefore = 0). Als Rückgabe enthält die Variable eine Angabe, ob tatsächlich eine Referenz vor dem Einfügepunkt lag. Wenn Sie einer Schleife durch den Platzhaltertext laufen, kann das den nächsten Index beeinflussen.

Bei textmodel::insert_crossref finden Sie ein Beispiel, wie ein Querverweis auf einen Text gemacht wird. Analog verfahren Sie mit Verweisen auf Rahmen.


Version 2.1 R668, 14. April 2008

priint:comet InDesign® Plug-Ins

textmodel::insert_crossref
document::update_crossrefs
hyperlink::find
hyperlink::find1
link
w2cross-Tag
comet.CTextModel.insertCrossRef

static int frame::getbbox_before_adapt(
  ItemRef frameRef,
  float* fbox_l = 0,
  float* fbox_t = 0,
  float* fbox_r = 0,
  float* fbox_b = 0,
  float* ibox_l = 0,
  float* ibox_t = 0,
  float* ibox_r = 0,
  float* ibox_b = 0)

Welche Originalposition und -größe hatte ein Dokumentrahmen zum Beginn der Seitenadaption? In Skripten außerhalb der Seitenadaption liefert das Skript einen Fehler zurück. Bei Textrahmen sind die Angaben zum Bildrahmen leer.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Referenz auf einen Dokumentrahmen
fbox_l, fbox_t, fbox_r, fbox_b float* 0 Angaben zum Dokumentrahmen in Punkten (left, top, right, bottom)
ibox_l, ibox_t, ibox_r, ibox_b float* 0 Angaben zum Bildrahmen relativ zum Dokumentrahmen in Punkten (left, top, right, bottom). Bei Textrahmen erhalten Sie die Werte 0.0.

Version 2.1 R714, 19. Mai 2008

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::get_display_details(
  ItemRef frameRef,
  int what,
  int stripWidths = 1,
  float* l = 0,
  float* t = 0,
  float* r = 0,
  float* b = 0)

Ermittle die in der Seitenadaption erlaubten Bildausschnitte. Bei Textrahmen gibt die Funktion einen Fehler zurück.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Referenz auf einen Grafikrahmen
what int - Welcher Bildausschnitt soll geholt werden?

0 : Bildausschnitt 1 (minimaler Bildausschnitt)
1 : Bildausschnitt 2 (maximaler Bildbereich)
stripWidths int 1 1 : Die Ergebnisse enthalten die Breite der Streifen, um die das Bild jeweils beschnitten wird. Die Angaben sind in Punkten und entsprechen den Werten im unskalierten Bild.

0 : Die Ergebnisse beschreiben das Rechteck, das durch die Streifen innerhalb des Bildes gebildet wird. Die aktuelle Skalierung des Bildes wird dabei beachtet. Die Angaben sind relativ zum Rahmen des Bildes. Ein Bild der Größe 300x300 hat an jeder Seite eine Beschneidung von 100 Punkten. Es bleibt also der Ausschnitt 100, 100, 200, 200 stehen. Wird das Bild mit 50% Skalierung (in x- und y-Richtung) angezeigt, ergibt sich also 50, 50, 100, 100.
l, t, r, b float* 0 Ergebisse in Punkten.

Version 2.1 R714, 16. Mai 2008

priint:comet InDesign® Plug-Ins

static int frame::apply_display_details(
  ItemRef frameRef,
  int refPoint,
  int xposMethod = 1,
  int yposMethod = 1,
  int canChangeLeft = 1,
  int canChangeTop = 1,
  int canChangeRight = 1,
  int canChangeBottom = 1)

Anwenden der über die Seitenadaption festgelegten Bildbeschneidungen. Bei Textrahmen hat der Aufruf keine Wirkung.

In der Palette Seitenadaption können in Bildern von Grafikrahmen zwei Bildausschnitte festgelegt werden. Die Angaben legen jeweils die Breite der Streifen von der entsprechenden Bildseite aus fest.

    

Der innere Bildteil soll immer sichtbar sein. Die grün hervorgehobenen Streifen dürfen sichtbar werden, die orangen Bildstreifen sollen immer unsichtbar sein. Der Aufruf von apply_display_details analysiert die angegebenen Bildbereiche und verändert die Größe des Grafikrahmens so, dass diese Vorgaben erfüllt werden. Durch die Größenänderungen verändert sich auch die Position des Rahmens. Mit dem Parameter refPoint legen Sie fest, an welcher Stelle der Grafikrahmen dabei festgehalten wird.

Die durch Nägel der Seitenadaption festgelegten Abstände zur Dokumentseite können durch diese Größenänderungen verändert werden.

Nachdem die Seitenadaption die Größe eines Grafikrahmens verändert hat (und vor dem Anpassen der Rahmengröße}), kann es erwünscht sein, auch die Position des Bildes anzupassen. Die Bildpositionierung können Sie mit Hilfe der Parameter xposMethod und yposMethod steuern. Folgende Angaben werden unterstützt :
Wert Beschreibung Bemerkungen
kIgnore Keine Bildpositionierung
kRequiredStrips, kForbiddenStrips Verwende die Lage grünen/orangen Streifen als Basis für Bildpositionierung : Waren vom grünen Streifen links 10 Punkte und rechts 20 Punkte sichtbar, wird eine Größenänderung im Verhältnis 1:2 verteilt - bei 9 Punkten wird das Bild also 3 Punkte nach links verschoben. Nur bei Aufrufen innerhalb einer Seitenadaption, sonst wie kIgnore
kRequiredStripsUniform, kForbiddenStripsUniform Positioniere das Bild so, dass auf beiden gleich breite Streifen (un)sichtbar werden. Die Mitte zwischen den Streifen liegt also in der Rahmenmitte. Ist der Bildrahmen z.B. 9 Punkte größer als der minimal erlaubte Bildbereich, wird das Bild bei 4.5 Punkten positioniert - egal, wie das Bild vorher positioniert war.
kRequiredStripsProp, kForbiddenStripsProp Positioniere das Bild so, dass die Breite der (un)sichtbaren Streifen dem Verhältnis der Breite der ganzen Streifen entspricht. Sind links etwa 10 und rechts 20 Punkte festgelegt und der Bildrahmen ist 9 Punkte größer als der minimal erlaubte Bereich, wird das Bild bei 3 Punkten positioniert - egal, wie das Bild vorher positioniert war.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Referenz auf einen Grafikrahmen
refPoint int kRefPointTopLeft In Inlinerahmen wird die Angabe ignoriert. Referenzpunkt der Skalierung

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
xposMethod, yposMethod int kRequiredStrips Bildpositionierung, siehe obige Tabelle

kIgnore
kRequiredStrips
kForbiddenStrips
kRequiredStripsUniform
kForbiddenStripsUniform
kRequiredStripsProp
kForbiddenStripsProp

kRefPointNone
canChangeLeft, canChangeTop, canChangeRight, canChangeBottom int 1 Mit diesen Angaben können Sie eine Größenänderung in der angegebenen Richtung unterdrücken. Dadurch können gewünschte/verbotene Bildteile unsichtbar/sichtbar werden.
#include "internal/text.h"
#include "internal/types.h"

Version 2.1 R714, 20. Mai 2008

priint:comet InDesign® Plug-Ins

static int frame::get_nail(
  ItemRef frameRef,
  int refPoint,
  int* preferMax = 0)

Ist an einer Rahmenkante oder Ecke eines Rahmens ein Nagel der Seitenadaption gesetzt?

Name Typ Default Beschreibung
Return int   0 : kein Nagel oder Fehler
1 : normaler Nagel
2 : Prozentnagel
3 : Magnet (Nur wenn der Rahmen an dieser Seite nicht genagelt ist)
4 : Prozentmagnet (Nur wenn der Rahmen an dieser Seite nicht genagelt ist)
frameRef ItemRef - Referenz auf einen Rahmen
refPoint int - kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
preferMax int* 0 1 : Bei Ecknägeln, die das Maximum der Größenveränderung wählen
0 : sonst
#include "internal/types.h"
int preferMax;
wlog ("", "Nail top left : %d (%d)\n",   frame::get_nail (gFrame, kRefPointTopLeft, &preferMax),   preferMax); wlog ("", "Nail top : %d (%d)\n",   frame::get_nail (gFrame, kRefPointTopCenter, &preferMax),   preferMax); wlog ("", "Nail top right : %d (%d)\n",   frame::get_nail (gFrame, kRefPointTopRight, &preferMax),   preferMax);
wlog ("", "Nail left : %d (%d)\n",   frame::get_nail (gFrame, kRefPointLeftCenter, &preferMax),   preferMax); wlog ("", "Nail right : %d (%d)\n",   frame::get_nail (gFrame, kRefPointRightCenter, &preferMax),   preferMax);
wlog ("", "Nail bottom left : %d (%d)\n",   frame::get_nail (gFrame, kRefPointBottomLeft, &preferMax),   preferMax); wlog ("", "Nail bottom : %d (%d)\n",   frame::get_nail (gFrame, kRefPointBottomCenter, &preferMax),   preferMax); wlog ("", "Nail bottom right : %d (%d)\n",   frame::get_nail (gFrame, kRefPointBottomRight, &preferMax),   preferMax);

Version 2.1 R835, 28. Juli 2008

priint:comet InDesign® Plug-Ins, comet_pdf

incoming_magnets
outgoing_magnets
apply_magnets
comet.CFrame.getNail

static int frame::set_nail(
  ItemRef frameRef,
  int refPoint,
  int type = 0,
  int preferMax = 0)

Nagel für priint::adjust setzen oder entfernen.

Nur zur internen Verwendung!

Sie können die Funktion verwenden, beachten Sie aber bitte, dass die Funktion nicht Teil von Support-Leistungen ist.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - gültige Rahmenreferenz

0 : aktueller Skriptrahmen
refPoint int - kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
type int 0 0 : Entfernen
1 : Normaler (grüner) Nagel
2 : Relativer (roter) Nagel
-1 : Toggle
preferMax int 0 Eckentyp, nur bei Ecknägeln und ignoriert wenn type==-1

0 : Kurze Seite als Referenz verwenden
1 : Lange Seite als Referenz verwenden
#include "internal/types.h"

v4.0.5, R10330, 11. Mar 2016

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
comet.CFrame.setNail

static int frame::set_magnet(
  ItemRef fromRef,
  int fromSide,
  ItemRef toRef = 0,
  int toSide = -1,
  int type = 0,
  int isWhite = 0,
  int canAlt = 0)

Magnet für priint::adjust setzen oder entfernen.

Nur zur internen Verwendung!

Sie können die Funktion verwenden, beachten Sie aber bitte, dass die Funktion nicht Teil von Support-Leistungen ist.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fromRef ItemRef - Gültige Rahmenreferenz für den Ausganspunkt des Magneten

0 : Aktueller Skriptrahmen
fromSide int - Startseite des Magneten

0 : links
1 : oben
2 : rechts
3 : unten
toRef ItemRef 0 gültige Rahmenreferenz für den Zielpunkt des Magneten. Die Angabe wird beim Löschen von Magneten ignoriert.
toSide int -1 Zielseite des Magneten

0 : links
1 : oben
2 : rechts
3 : unten
type int 0 Die Angaben entsprechen den Rückgabewerten von frame::get_magnet_type.

0 : Entfernen
3 : Normaler (grüner) Magnet
4 : Relativer (roter) Magnet
isWhite int 0 0 : Normaler Rahmenmagnet
1 : Magnet zum Bild des Rahmens
canAlt int 0 0 : Besteht bereits ein Magnet zur Zielseite, wird dieser Magnet entfernt.

1 : Besteht bereits ein Magnet zur Zielseite, wird der neue Magnet als Alternative angelegt.

Vor dem Löschen eines Rahmens werden ein- und ausgehende v ertikale Magneten vom Vorgänger zum Nachfolger umgeleitet.

int main ()
{
    List		in		= list::alloc ();
    List		out		= list::alloc ();
    ItemRef		fr_in	= item::alloc ();
    ItemRef		fr_out	= item::alloc ();
    int			magRef, magType, magWhite;
    int			i;
frame::incoming_magnets (in, gFrame, 1); if (list::length (in) > 0) { frame::get_magnet_reference (fr_in, gFrame, list::get (in, 0));
frame::outgoing_magnets (out, gFrame, 3);
for (i = 0; i < list::length (out); i++) { magRef = list::get (out, i);
frame::get_magnet_reference (fr_out, gFrame, magRef); magType = frame::get_magnet_type (gFrame, magRef); magWhite = frame::get_magnet_is_white (gFrame, magRef);
if (magType) { frame::set_magnet (   fr_in, 3,   fr_out, 1,   magType,   magWhite,   0); } } }
frame::remove (gFrame); return 0; }

Vor dem Löschen eines Rahmens (hier mit der UID 229) werden dessen Magnete auf einen anderen Rahmen (hier gFrame) übertragen.

int main ()
{
    List		in		= list::alloc ();
    List		out		= list::alloc ();
    ItemRef		fr		= item::alloc ();
    ItemRef		fr_in	= item::alloc ();
    ItemRef		fr_out	= item::alloc ();
    int			magRef, magType, magWhite;
    int			i;
item::define (fr, gFrame, 229);
frame::incoming_magnets (in, fr, 1); if (list::length (in) > 0) { magRef = list::get (in, i); frame::get_magnet_reference (fr_in, fr, magRef); frame::set_magnet (   fr_in, 3,   gFrame, 1,   frame::get_magnet_type (0, magRef),   frame::get_magnet_is_white (0, magRef),   0); }
frame::outgoing_magnets (out, fr, 3); for (i = 0; i < list::length (out); i++) { magRef = list::get (out, i); frame::get_magnet_reference (fr_out, gFrame, magRef); wlog ("", "TTT %d\n", frame::get_magnet_type (0, magRef)); frame::set_magnet (   gFrame, 3,   fr_out, 1,   frame::get_magnet_type (0, magRef),   frame::get_magnet_is_white (0, magRef),   0); }
frame::remove (fr);
return 0; }

v4.0.5, R10330, 11. Mar 2016

priint:comet InDesign® Plug-Ins, comet_pdf

set_nail
incoming_magnets
outgoing_magnets
get_magnet_reference
get_magnet_type
get_magnet_is_white
comet.CFrame.setMagnet

static int frame::incoming_magnets(
  List resultList,
  ItemRef frameRef,
  int side)

Hole eine Liste aller Magneten, die auf eine Seite eines Rahmens zeigen. Der erste Eintrag der Liste ist dabei der "Haupt"-Magnet. Zeigen weitere Magnete auf die Seite, sind das Alternativen zu diesem Magneten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultList List - Allokierte Liste für die Ergebnisse. Die Liste enthält Referenzen auf die gefundenen Magneten. Die Liste wird zum Beginn der Funktionsausführung geleert. Die Einträge der Liste können in den Funktionen get_magnet_type, get_magnet_is_white, get_magnet_is_rotation_only und get_magnet_reference verwendet werden.
frameRef ItemRef - gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
side int - Seite des Rahmens

0 : links
1 : oben
2 : rechts
3 : unten

Schreibe alle Magneten zur Oberkante und von der Unterkante eines Rahmens ins Logfile.

int main ()
{
    List	magnets	= list::alloc ();
    ItemRef	item	= item::alloc ();
    int		i;
    int		res;
res = frame::incoming_magnets (magnets, gFrame, 1); wlog ("", "incomings @ top : %d (result = %d)\n", list::length (magnets), res); for (i = 0; i < list::length (magnets); i++) { frame::get_magnet_reference (item, gFrame, list::get (magnets, i)); wlog ("", " %d : %d\n", i+1, item::getint (item)); }
frame::outgoing_magnets (magnets, gFrame, 3); wlog ("", "outgoings @ bottom : %d (result = %d)\n", list::length (magnets), res); for (i = 0; i < list::length (magnets); i++) { frame::get_magnet_reference (item, gFrame, list::get (magnets, i)); wlog ("", " %d : %d\n", i+1, item::getint (item)); }
return 0; }

Ein Rahmen wird von einem Magneten vertikal verschoben soll aber gleichzeitig dessen Breite an die eigene Breite anpassen. Der Kurzschluss zwischen den Magneten verhindert aber, dass die Adaption der Rahmen ausgeführt wird. Mit folgendem Skript (das nur auf den Hauptmagneten achtet!) können Sie das Problem ohne Rückmagnet lösen. Es kann als Adapterregel (am besten "Nach der Adaption") an den unteren Rahmen angefügt werden.

int main ()
{
    List		magnets	= list::alloc ();
    ItemRef		item	= item::alloc ();
    int			res;
    float		l1, t1, r1, b1;
    float		l2, t2, r2, b2;
res = frame::incoming_magnets (magnets, gFrame, 1); // oben if (res) return 0; if (list::length (magnets) == 0) return 0;
frame::get_magnet_reference (item, gFrame, list::get (magnets, 0)); // Hauptmagnet frame::bbox (gFrame, &l1, &t1, &r1, &b1); frame::bbox (item, &l2, &t2, &r2, &b2); if (r1-l1 < 10.0) return 0; if (b2-t2 < 10.0) return 0;
frame::resize (item, r1-l1, b2-t2);
return 0; }

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_type
get_magnet_is_white
get_magnet_is_rotation_only
get_magnet_reference
apply_magnets
comet.CFrame.getIncomingMagnets

static int frame::outgoing_magnets(
  List resultList,
  ItemRef frameRef,
  int side)

Hole eine Liste aller Magneten, die von einer Seite eines Rahmens zu anderen Rahmen führen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultList List - Allokierte Liste für die Ergebnisse. Die Liste enthält Referenzen auf die gefundenen Magneten. Die Liste wird zum Beginn der Funktionsausführung geleert. Die Einträge der Liste können in den Funktionen get_magnet_type, get_magnet_is_white, get_magnet_is_rotation_only und get_magnet_reference verwendet werden.
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen
side int - Seite des Rahmens

0 : links
1 : oben
2 : rechts
3 : unten

Schreibe alle Magneten zur Oberkante und von der Unterkante eines Rahmens ins Logfile.

int main ()
{
    List	magnets	= list::alloc ();
    ItemRef	item	= item::alloc ();
    int		i;
    int		res;
res = frame::incoming_magnets (magnets, gFrame, 1); wlog ("", "incomings @ top : %d (result = %d)\n", list::length (magnets), res); for (i = 0; i < list::length (magnets); i++) { frame::get_magnet_reference (item, gFrame, list::get (magnets, i)); wlog ("", " %d : %d\n", i+1, item::getint (item)); }
frame::outgoing_magnets (magnets, gFrame, 3); wlog ("", "outgoings @ bottom : %d (result = %d)\n", list::length (magnets), res); for (i = 0; i < list::length (magnets); i++) { frame::get_magnet_reference (item, gFrame, list::get (magnets, i)); wlog ("", " %d : %d\n", i+1, item::getint (item)); }
return 0; }

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_type
get_magnet_is_white
get_magnet_is_rotation_only
get_magnet_reference
apply_magnets
comet.CMagnet.getOutgoingMagnets

static int frame::get_magnet_type(ItemRef frameRef, int magnetRef)

Typ eines Magneten.

Name Typ Default Beschreibung
Return int   Magnettyp oder 0:

0 : Fehler
3 : normaler Magnet
4 : Prozentmagnet
frameRef ItemRef - Wird ignoriert und kann auf 0 gesetzt werden.
magnetRef int - Magnetreferenz
Magnetreferenzen können über die Funktionen incoming_magnets und outgoing_magnets ermittelt werden und aus den dort erhaltenen Listen geholt werden.

Schreibe die Typen aller unten aus einem Rahmen hinausgehenden Magneten ins Logfile.

int main ()
{
    List	magnets	= list::alloc ();
    int		i;
frame::outgoing_magnets (magnets, gFrame, 3); for (i = 0; i < list::length (magnets); i++) { wlog ("", " %d : %d\n",   i+1,   frame::get_magnet_type (gFrame, list::get (magnets, i))); }
return 0; }

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_is_white
get_magnet_is_rotation_only
get_magnet_reference
apply_magnets
comet.CMagnet.getType

static int frame::get_magnet_is_white(ItemRef frameRef, int magnetRef)

Ist ein Magnet ein Rahmen- oder Bild (weisser)-Magnet?

Name Typ Default Beschreibung
Return int   0 : Rahmenmagnet
1 : Bildmagnet
frameRef ItemRef - Wird ignoriert und kann auf 0 gesetzt werden
magnetRef int - Magnetreferenz
Magnetreferenzen können über die Funktionen incoming_magnets und outgoing_magnets ermittelt werden und aus den dort erhaltenen Listen geholt werden.

Ein Beispiel finden Sie unter get_magnet_type.

 

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_type
get_magnet_is_rotation_only
get_magnet_reference
apply_magnets
comet.CMagnet.isImage

static int frame::get_magnet_is_rotation_only(ItemRef frameRef, int magnetRef)

Wird der Magnet für die Adaption oder in der Rotation verwendet?

Name Typ Default Beschreibung
Return int   0 : Adaption
1 : Rotation
frameRef ItemRef - Wird ignoriert und kann auf 0 gesetzt werden
magnetRef int - Magnetreferenz
Magnetreferenzen können über die Funktionen incoming_magnets und outgoing_magnets ermittelt werden und aus den dort erhaltenen Listen geholt werden.

Ein Beispiel finden Sie unter get_magnet_type.

 

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_type
get_magnet_is_white
get_magnet_reference
apply_magnets
comet.CMagnet.isRotationOnly

static int frame::get_magnet_reference(
  ItemRef resultRef,
  ItemRef frameRef,
  int magnetRef)

Hole den Rahmen am anderen Ende des Magnetes.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultRef ItemRef - allokierte Variable für das Ergebnis
frameRef ItemRef - gültige Rahmenreferenz

0 : aktueller Skriptrahmen

Anders als in den Funktionen frame::get_magnet_type, ... wird die Rahmenreferenz hier tatsächlich benötigt : Sie ist nötig zur vollständigen Definition der Ergebnisreferenz.
magnetRef int - Magnetreferenz
Magnetreferenzen können über die Funktionen incoming_magnets und outgoing_magnets ermittelt werden und aus den dort erhaltenen Listen geholt werden.

Ein Rahmen wird von einem Magneten vertikal verschoben soll aber gleichzeitig dessen Breite an die eigene Breite anpassen. Der Kurzschluss zwischen den Magneten verhindert aber, dass die Adaption der Rahmen ausgeführt wird. Mit folgendem Skript (das nur auf den Hauptmagneten achtet!) können Sie das Problem ohne Rückmagnet lösen. Es kann als Adapterregel (am besten "Nach der Adaption") an den unteren Rahmen angefügt werden.

int main ()
{
    List	magnets	= list::alloc ();
    ItemRef	item	= item::alloc ();
    int		res;
    float	l1, t1, r1, b1;
    float	l2, t2, r2, b2;
res = frame::incoming_magnets (magnets, gFrame, 1); // oben if (res) return 0; if (list::length (magnets) == 0) return 0;
frame::get_magnet_reference (item, gFrame, list::get (magnets, 0)); // Hauptmagnet frame::bbox (gFrame, &l1, &t1, &r1, &b1); frame::bbox (item, &l2, &t2, &r2, &b2); if (r1-l1 < 10.0) return 0; if (b2-t2 < 10.0) return 0;
frame::resize (item, r1-l1, b2-t2);
return 0; }

Version 3.2 R2250, 27. Jan. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_nail
get_magnet_type
get_magnet_is_white
get_magnet_is_rotation_only
apply_magnets

static int frame::inline_(
  ItemRef textFrameRef,
  int pos,
  ItemRef frameRef = 0,
  int flag = 1,
  float yoff = 0.0,
  int lock = 0)

Setze einen Rahmen als Inline-Rahmen in einen Text. Die Funktion kann auch dafür verwendet werden, die Eigenschaften eines bereits gesetzten Inlines oder Ankers an der gegebenen Stelle zu verändern.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
textFrameRef ItemRef - Gültige Textrahmen-Referenz
pos int - Textposition für den Inline-Rahmen (Eingebunden)
frameRef ItemRef 0 Rahmen, der zum Inline gemacht werden soll. Die Angabe darf leer sein, wenn flag = 2 ist. Wurde der Rahmen erforlgreich in ein Inline umgewandelt, enthält die Variable nach Ausführung der Funktion den neuen Rahmen, frameRef wird bei erfolgreicher Ausführung verändert!
flag int 1 Was soll gemacht werden, wenn an der Stelle schon ein Inline oder veranktertes Objekt liegt?

0 - trozdem anlegen
1 - löschen und neu anlegen
2 - nicht anlegen, aber Eigenschaften ändern
yoff float 0.0 y-Offset in Punkten
lock int 0 Manuelle Positionierung verhindern

0 : nein
1 : ja

Importiere einige Templates, gruppiere sie zu einem Rahmen und füge sie als Inline in einen Text ein.

#include "internal/text.h"
#include "internal/types.h"
int main () { DataPool pool = datapool::alloc (); ItemList frames = itemlist::alloc (); ItemRef groupRef= item::alloc (); ItemList items = 0; float l = 0.0; float t = 0.0; float r, b; int i; int textpos = 200; int res;
if (!textmodel::available ()) return 0;
// Füge einige Rahmen ins Dokument ein // Templates 41 und 42 müssen angelegt sein! for (i = 41; i<43; i++) { // Template einfügen // items wird dabei automatisch allokiert items = document::place_items (pool, "data", "pageitems", i, l, t);
// Eingefügte Rahmen sammlen itemlist::appendlist (frames, items);
// Nächste Templateposition // Danach wird die Liste items gelöscht. itemlist::bbox (items, &l, &t, &r, &b); itemlist::release (items); items = 0;
t = b + 2.0; }
// Eingefügte Templates gruppieren frame::group (frames, groupRef);
// Gruppe als Inline-Rahmen ein // groupRef ändert sich dabei! res = frame::inline_ (   gFrame,   textpos,   groupRef,   0, // 0 - immer anlegen,   // 1 - evtl. löschen und anlegen,   // 2 - anlegen oder ändern   12.3, // yoff   1); // lock wlog ("", "inline_ returns %d\n", res);
return 0; }

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

frame::inline_above
frame::anchor
frame::get_anchor
inline_
release_inline

static int frame::inline_above(
  ItemRef textFrameRef,
  int pos,
  ItemRef frameRef = 0,
  int flag = 1,
  int halign = 3,
  float spaceBefore = 0.0,
  float spaceAfter = 0.0,
  int lock = 0)

Setze einen Rahmen als Inline "über der Zeile"-Rahmen in einen Text. Die Funktion kann auch dafür verwendet werden, die Eigenschaften eines bereits gesetzten Inlines oder Ankers an der gegebenen Stelle zu verändern.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
textFrameRef ItemRef - Gültige Textrahmen-Referenz
pos int - Textposition für den Inline-Rahmen (über Zeile)
frameRef ItemRef 0 Rahmen, der zum Inline gemacht werden soll. Die Angabe darf leer sein, wenn flag = 2 ist. Wurde der Rahmen erforlgreich in ein Inline umgewandelt, enthält die Variable nach Ausführung der Funktion den neuen Rahmen, frameRef wird bei erfolgreicher Ausführung verändert!
flag int 1 Was soll gemacht werden, wenn an der Stelle schon ein Inline oder veranktertes Objekt liegt?

0 - trozdem anlegen
1 - löschen und neu anlegen
2 - nicht anlegen, aber Eigenschaften ändern
halign int 3 Ausrichtung des Inlines

0 : Rechts
1 : Zentriert
2 : Links
3 : (Textausrichtung)
4 : zum Buchrücken hin
5 : vom Buchrücken weg
spaceBefore float 0.0 "Abstand vor" in Punkten
spaceAfter float 0.0 "Abstand nach" in Punkten
lock int 0 Manuelle Positionierung verhindern

0 : nein
1 : ja

Importiere einige Templates, gruppiere sie zu einem Rahmen und füge sie als Inline über der Zeile in einen Text ein.

#include "internal/text.h"
#include "internal/types.h"
int main () { DataPool pool = datapool::alloc (); ItemList frames = itemlist::alloc (); ItemRef groupRef= item::alloc (); ItemList items = 0; float l = 0.0; float t = 0.0; float r, b; int i; int textpos = 200; int res;
if (!textmodel::available ()) return 0;
// Füge einige Rahmen ins Dokument ein // Templates 41 und 42 müssen angelegt sein! for (i = 41; i<43; i++) { // Template einfügen // items wird dabei automatisch allokiert items = document::place_items (pool, "data", "pageitems", i, l, t);
// Eingefügte Rahmen sammeln itemlist::appendlist (frames, items);
// Nächste Templateposition // Danach wird die Liste items gelöscht. itemlist::bbox (items, &l, &t, &r, &b); itemlist::release (items); items = 0;
t = b + 2.0; }
// Eingefügte Templates gruppieren frame::group (frames, groupRef);
// Gruppe als Inline-Above-Rahmen einfügen // groupRef ändert sich dabei! res = frame::inline_above (   gFrame,   textpos,   groupRef,   0, // 0 - immer anlegen,   // 1 - evtl. löschen und anlegen,   // 2 - anlegen oder ändern   4, // zum Buchrücken   11.1, // space before   22.2, // space after   1); // lock wlog ("", "inline_above returns %d\n", res);
return 0; }

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

frame::inline_
frame::anchor
frame::get_anchor
inline_above
release_inline

static int frame::anchor(
  ItemRef textFrameRef,
  int pos,
  ItemRef frameRef = 0,
  int flag = 1,
  int spine = 0,
  int ref_obj = 0,
  int ref_pt = 3,
  int xrel = 4,
  float xoff = 0.0,
  int yrel = 4,
  float yoff = 0.0,
  int keepWithin = 1,
  int lock = 0)

Setze einen Rahmen als verankerten Rahmen in einen Text. Die Funktion kann auch dafür verwendet werden, die Eigenschaften eines bereits gesetzten Inlines oder Ankers an der gegebenen Stelle zu verändern.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
textFrameRef ItemRef - Gültige Textrahmen-Referenz
pos int - Textposition für den verankerten Rahmens
frameRef ItemRef 0 Rahmen, der verankert werden soll. Die Angabe darf leer sein, wenn flag = 2 ist. Wurde der Rahmen erforlgreich in ein Inline umgewandelt, enthält die Variable nach Ausführung der Funktion den neuen Rahmen, frameRef wird bei erfolgreicher Ausführung verändert!
flag int 1 Was soll gemacht werden, wenn an der Stelle schon ein Inline oder veranktertes Objekt liegt?

0 - trozdem anlegen
1 - löschen und neu anlegen
2 - nicht anlegen, aber Eigenschaften ändern
spine int 0 Relativ zum Rücken

0 : Nein
1 : Ja
ref_obj int kRefPointTopLeft Ursprung verankertes Objekt

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
ref_pt int kRefPointLeftCenter Ursprung verankertes Position. Achtung : Nicht alle Angaben können in allen Kombinationen der Eingabewerte verwendet werden!

kRefPointTopLeft
kRefPointTopCenter
kRefPointTopRight
kRefPointLeftCenter
kRefPointCenter
kRefPointRightCenter
kRefPointBottomLeft
kRefPointBottomCenter
kRefPointBottomRight
xrel int 4 x relativ zu

0 : Spaltenrand
1 : Textrahmen
2 : Seitenrand
3 : Seitenkante
4 : Ankermarke
xoff float 0.0 "x-Offset" in Punkten
yrel int 4 y relativ zu

0 : Spaltenrand
1 : Textrahmen
2 : Seitenrand
3 : Seitenkante
4 : Zeile (Grundlinie)
5 : Zeile (X-Höhe)
6 : Zeile (Großbuchstabenhöhe)
7 : Zeile (unterer Zeilenabstand)
8 : Zeile (oberer Zeilenabstand)
9 : Em-Box oben
10 : Em-Box mitte
11 : Em-Box unten
yoff float 0.0 "y-Offset" in Punkten
keepWithin int 1 Nicht aus Spaltengrenzen hinausbewegen

0 : nein
1 : ja
lock int 0 Manuelle Positionierung verhindern

0 : nein
1 : ja
#include "internal/types.h"

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

frame::inline_
frame::inline_above
frame::get_anchor
anchor
release_inline

static int frame::get_anchor(
  ItemRef textFrameRef,
  int pos,
  int len,
  int* out_pos,
  int* out_type = 0,
  ItemRef out_frameRef = 0,
  int* rel_to_spine = 0,
  int* refpoint_obj = 0,
  int* refpoint_pt = 0,
  int* xrel = 0,
  float* xoff = 0,
  int* yrel = 0,
  float* yoff = 0,
  int* keepWithin = 0,
  int* locked = 0,
  int* halign = 0,
  float* spaceBefore = 0,
  float* spaceAfter = 0,
  float* yoff_inline = 0 )

Ermittle die Eigenschaften eines Inline- oder verankerten Rahmens an einer Textstelle oder in einem Textbereich. Wurde ein Objekt gefunden, werden die Ergebnisvariablen gefüllt. Dabei werden nur die Variablen mit sinnvollen Werten gefüllt, die zum Objekttyp passen (siehe unten). Die Funktion hat sehr viele Parameter, die meisten können Sie wahrscheinlich auf 0 setzen, weil deren Werte nicht benötigt werden. Sie müssen aber immer die führenden Parameter angeben . Wollen Sie etwa die Eigenschaft locked wissen, müssen Sie nach out_frameRef 8 mal eine 0 (oder einen entsprechende Zeiger) angeben. Den Rest dahinter dürfen Sie dann aber weglassen. Ist das auch was. Und was glauben Sie denn, mir hat das auch Arbeit gemacht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode Der Fehlercode 0 (kein Fehler) bedeutet nicht, dass kein Inline oder verankerter Rahmen gefunden wurde. Ob ein solches Objekt gefunden wurde, gibt die Variable out_pos == -1 an.
textFrameRef ItemRef - Gültige Textrahmen-Referenz
pos int - Textposition, ab/an der ein verankertes Objekt gesucht werden soll. Die Angabe ist rahmenrelativ, nicht platzhalterrelativ.
len int - Länge des Textes, in dem gesucht werden soll (Minimum 1)
kEnd : Bis zum Textende
out_pos int* 0 Textposition, an der im durchsuchten Bereich ein verankertes Objekt gefunden wurde.
-1 : Kein Objekt gefunden
out_type int* 0 Typ des Objektes

0 : Inline
1 : Verankerter Rahmen
2 : über Linie
out_frameRef ItemRef 0 gefundener Rahmen. Wenn Sie eine Antwort ohne Absturz wollen, müssen Sie die Variable zuvor allokieren!
rel_to_spine int* 0 nur bei Ankern, out_type == 1 Relativ zum Rücken?
refpoint_obj int* 0 nur bei Ankern, out_type == 1 Ursprung verankertes Objekt
refpoint_pt int* 0 nur bei Ankern, out_type == 1 Ursprung verankertes Position
xrel int* 0 nur bei Ankern, out_type == 1 x relativ zu
xoff float* 0 nur bei Ankern, out_type == 1 x-Offset in Punkten
yrel int* 0 nur bei Ankern, out_type == 1 y relativ zu
yoff float* 0 nur bei Ankern, out_type == 1 y-Offset in Punkten
keepWithin int* 0 nur bei Ankern, out_type == 1 Nicht aus Spaltengrenzen hinausbewegen?
locked int* 0 out_type == 0 | 1 | 2 Manuelle Positionierung verhindern?
halign int* 0 nur bei Inlines über der Zeile, out_type == 2 Ausrichtung des Inlines
spaceBefore float* 0 nur bei Inlines über der Zeile, out_type == 2 "Abstand vor" in Punkten
spaceAfter float* 0 nur bei Inlines über der Zeile, out_type == 2 "Abstand nach" in Punkten
yoff_inline float* 0 nur bei Inlines, out_type == 0 y-Offset in Punkten
#include "internal/text.h"

Durchlaufe einen Text und schreibe für jeden Inline- und verankerten Rahmen dessen Einstellungen ins Logfile. Die aktuelle Position pos wird gleichzeitig als Ein- und Ausgabe verwendet. Achten Sie darauf, am Ende eines Durchlaufes die Position eins hochzuzählen, sonst finden Sie immer wieder den gleichen Inline-Rahmen!

#include "internal/text.h"
#include "internal/types.h"
int main () { int pos = 0; int type, rel_to_spine, refpoint_obj, refpoint_pt, xrel, yrel, keepWithin; int locked, halign; float xoff, yoff, yoff2, spaceBefore, spaceAfter; ItemRef inlineRef = item::alloc (); int res;
while (1) { res = frame::get_anchor (   gFrame,   pos,   kEnd,   &pos, // out_pos   &type,   inlineRef,   // Anchor   &rel_to_spine,   &refpoint_obj,   &refpoint_pt,   &xrel, &xoff,   &yrel, &yoff,   &keepWithin,   &locked,   // Inline_Above   &halign,   &spaceBefore,   &spaceAfter,   // Inline   &yoff2);
if (res != 0 || pos < 0) break;
if (type == 0) { // Inline wlog ("", "%d : Inline found (UID = %d)\n", pos, item::getint (inlineRef)); wlog ("", "\ty-Offset : %f\n", yoff2); wlog ("", "\tLocked : %d\n", locked); } else if (type == 1) { // Anchor wlog ("", "%d : Anchor found (UID = %d)\n", pos, item::getint (inlineRef)); wlog ("", "\tSpine : %d\n", rel_to_spine); wlog ("", "\tRefpoint Object : %d\n", refpoint_obj); wlog ("", "\tRefpoint Position : %d\n", refpoint_pt); wlog ("", "\tX Relative To : %d\n", xrel); wlog ("", "\tX-Offset : %f\n", xoff); wlog ("", "\tY Relative To : %d\n", yrel); wlog ("", "\tY-Offset : %f\n", yoff); wlog ("", "\tKeep Within : %d\n", keepWithin); wlog ("", "\tLocked : %d\n", locked); } else if (type == 2) { // Inline Above wlog ("", "%d : Inline above found (UID = %d)\n", pos, item::getint (inlineRef)); wlog ("", "\tAlign : %d\n", halign); wlog ("", "\tSpace before : %f\n", spaceBefore); wlog ("", "\tSpace After : %f\n", spaceAfter); }
pos = pos+1;
} return 0; }

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

frame::inline_
frame::inline_above
frame::anchor
get_anchor

static int frame::release_inline(
  ItemRef inlineRef,
  float new_left = -10000.0,
  float new_right = -10000.0)

Mache einen Inline zu einem 'normalen' Rahmen, d.h. der Rahmen ist dann nicht mehr Teil des Textes sondern ein Seitenrahmen. Ist der übergebene Rahmen kein Inline, gibt der Aufruf einen Fehler zurück.

Inlines, die über den Seitenrand hinausragen, können durch den Aufruf der Funktion die Seite wechseln oder ganz in den Arbeitsbereich fallen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
inlineRef ItemRef - Referenz eines Inline-Rahmens. Mit Hilfe der Funktion get_anchor können Sie die Inlines eines Textes ermitteln.
new_left, new_right float -10000.0 Neue Position des Rahmens

-10000.0, -10000.0 oder fehlende Angaben : Der Rahmen behält seine ursprüngliche Position.

Version 2.1, R1789, 1. März 2010
Parameter new_left, new_right seit v4.0.5, R10912, 19. Apr 2016
Verfügbar für InDesign®-Server seit v4.0.5 R12022, 11. Jul 2016

priint:comet InDesign® Plug-Ins, comet_pdf

is_inline
get_anchor
anchor
inline_above
inline_
textmodel::get_anchor
textmodel::anchor
textmodel::inline_above
textmodel::inline_

static int frame::lock(ItemRef frameRef = 0)

Rahmen vor manuellen Änderungen schützen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültige Rahmenreferenz
0 : aktueller Skriptrahmen

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

unlock
is_locked
comet.CPageItem.setLocked

static int frame::unlock(ItemRef frameRef = 0)

Manuelle Änderungen an einem Rahmen erlauben.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültige Rahmenreferenz
0 : aktueller Skriptrahmen

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

lock
is_locked
comet.CPageItem.setLocked

static int frame::is_locked(ItemRef frameRef = 0)

Ist ein Rahmen vor manuellen Änderungen geschützt?

Name Typ Default Beschreibung
Return int   0 : Nein
1 : Ja, Rahmen ist geschützt
frameRef ItemRef 0 Gültige Rahmenreferenz
0 : aktueller Skriptrahmen

Version 2.1 R1145, 28. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

lock
unlocked
comet.CPageItem.getLocked

static int frame::get_cometgroup(ItemRef frameRef, int searchHierarchy = 1)

Ermittle die ID der Comet-Gruppe eines Rahmens.

Name Typ Default Beschreibung
Return int   Comet-Gruppe oder 0, wenn der Rahmen keiner Gruppe zugeordnet sind
frameRef ItemRef - Gültige Rahmenreferenz
0 : aktueller Skriptrahmen
searchHierarchy int 1 soll in der Dokumentenhierarchie gesucht werden, wenn der Rahmen keiner Gruppe zugeordnet ist?

Die Funktion löscht alle Comet-Untergruppen, die ein Rahmen hat. Comet-Untergruppen entstehen z.B. dann, wenn ein Ladenskript mit document::place_items oder frame::create neue Rahmen anlegt. Diese Rahmen sollten natürlich vor einem erneuten Laden gelöscht werden.
Die Funktion kann ab Comet 3.1 R1616 durch einen Aufruf von frame::remove_sub_cometgroups ersetzt werden.

int remove_subgroups (ItemRef frame)
{
    int 		groupID	= frame::get_cometgroup (gFrame, 0);
    ItemList	group	= 0;
    ItemRef		mb		= item::alloc ();
    int			mbID	= 0;
    int 		i;
if (groupID == 0) return 0;
group = itemlist::get_cometgroup_members (0, groupID, 1); if (!group) return 0;
for (i = 0; i < itemlist::length (group); i++) { mb = itemlist::get (group, mb, i); mbID = frame::get_cometgroup (mb, 0); if (mbID!=groupID) { frame::remove (mb); } }
return 0; }

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::get_cometgroup
comet.CFrame.getCometGroupID

static int frame::get_cometgroup_member(
  ItemRef frameRef,
  char* label,
  ItemRef outMember)

Suche in der Cometgruppe eines Rahmens nach einem Rahmen einer bestimmten Kennung. Gehört der Rahmen zu einer Fortsetzungsgruppe, wird dabei zuerst in dieser Gruppe gesucht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz
0 : aktueller Skriptrahmen
label String oder char* - Kennung eines Rahmens. Kennungen können in der Palette Template-Verhalten gesetzt werden und sind Strings der Länge 1.
outMember ItemRef 0 Allokierter Speicher für das Ergebnis (darf 0 sein).

Suche den Rahmen mit der Kennung "A" in der Cometgruppe von gFrame.

int main ()
{
    ItemRef		member	= item::alloc ();
frame::get_cometgroup_member (gFrame, "A", member); wlog ("", "# UID of member '%s' : %d\n", "A", item::getint (member));
return 0; }

v3.2.3 R2401, 18.04.2011

priint:comet InDesign® Plug-Ins, comet_pdf

get_cometgroup
itemlist::get_cometgroup_members

static int frame::remove_sub_cometgroups(ItemRef frameRef)

Lösche alle Rahmen aller Comet-Untergruppen eines Rahmens.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültige Rahmenreferenz
0 : aktueller Skriptrahmen

Da die Funktion nicht in Comet 3.1 definiert ist, hier ein Workaround:

int remove_subgroups (ItemRef frame)
{
    int 		groupID	= frame::get_cometgroup (gFrame, 0);
    ItemList	group	= 0;
    ItemRef		mb		= item::alloc ();
    int			mbID	= 0;
    int 		i;
if (groupID == 0) return 0;
group = itemlist::get_cometgroup_members (0, groupID, 1); if (!group) return 0;
for (i = 0; i < itemlist::length (group); i++) { mb = itemlist::get (group, mb, i); mbID = frame::get_cometgroup (mb, 0); if (mbID!=groupID) { frame::remove (mb); } }
return 0; }

Version 3.1 R1616, 30.10.2010

priint:comet InDesign® Plug-Ins, comet_pdf

get_cometgroup

static int frame::is_member_of(
  ItemRef frameRef,
  int groupID,
  int searchHierarchy = 1)

Prüfe, ob ein Rahmen (implizit oder direkt) Mitglied einer Comet-Gruppe ist.

Name Typ Default Beschreibung
Return int   1, wenn der Rahmen Mitglied der Gruppe ist, sonst 0
frameRef ItemRef - Gültige Rahmenreferenz
0 : aktueller Skriptrahmen
groupID int - Comet-Gruppen ID
searchHierarchy int 1 soll in der Dokumentenhierarchie gesucht werden, wenn ein Rahmen keiner Gruppe zugeordnet ist?

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::are_members_of

static int frame::add_to_cometgroup(
  ItemRef frameRef,
  int groupID,
  int invalidateView = 0)

Füge einen Rahmen einer Comet-Gruppe hinzu. Ist der Rahmen Elternrahmen einer Comet-Gruppe, wird die gesamte Gruppe hinzugfügt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz
0 : aktueller Skriptrahmen
groupID int - Comet-Gruppen ID
invalidateView int 0 soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::add_to_cometgroup
comet.CFrame.setCometGroupID

static int frame::remove_from_cometgroup(
  ItemRef frameRef,
  int groupID,
  int invalidateView = 0)

Löse einen Rahmen aus einer Comet-Gruppe. In der Regel ist der Rahmen danach keiner Gruppe mehr zugeordnet, Ausnahme gilt für Rahmen, die selber Hauptrahmen einer Gruppe sind: diese Mitgliedschaft bleibt erhalten.

Wird als Comet-Gruppen ID -1 übergeben wird der Rahmen aus einer beliebigen Mitgliedschaft gelöst, sonst nur, wenn er Mitglied der angegeben Gruppe ist.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, der gelöst werden soll
groupID int - Comet-Gruppen ID

-1 : Entferne Mitgliedschaft aus einer beliebigen Comet-Gruppe
invalidateView int 0 soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::remove_from_cometgroup
comet.CFrame.removeFromCometGroup

static int frame::apply_layout_rules(
  ItemRef frameRef,
  int what,
  ItemRef caller = 0,
  char* key = 0,
  char* callerData1 = 0,
  char* callerData2 = 0,
  int id = 0,
  int id2 = 0,
  int id3 = 0,
  char* sid = 0)

Ausführen der Gestaltungsregeln eines Rahmens. Sie können festlegen, welche Gestaltungsregeln ausgeführt werden soll. Ist der Typ der Gestaltungsregel abgeschaltet (durch system::suppres_layoutrules oder allgemein durch die Plugins) werden diese Regeln nicht ausgeführt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
what int - Welche Gestaltungsregeln sollen ausgeführt werden?

2 : nach Platzhalterladen
1 : nach Rahmenanlegen
32 : beim Aufbau
4 : bei Reorganisation
8 : nach Größen- und Positionsänderungen
caller ItemRef 0 Nur wenn Ereignisse gesendet werden sollen. In diesem Fall enthält die Variable die Referenz auf den Sender
key String oder char* 0 Nur wenn Ereignisse gesendet werden sollen. In diesem Fall enthält die Variable den Schlüssel für das Ereignis
callerData1, callerData2 String oder char*, String oder char* "", "" Nur wenn Ereignisse gesendet werden sollen. In diesem Fall können hier Zusatzparameter für den Empfänger angegeben werden.
id, id2, id3, sid int, int, int, String oder char* 0, 0, 0, "" Nur bei Rahmen, die noch nicht verknüpft sind und bei Laden-Aktionen. In diesen Fällen können Sie hier eine Objekt-ID übergeben.

Ein Rahmen hat ein Gestaltungsregel, die einfach nur ein Showmessage macht :

Wenn Ereignis "from script" dann
    showmessage ("Hallo");
End

Ein zweiter Rahmen hat unten stehendes Skript. Wird dieses Skript ausgeführt, zeigt der erste Rahmen seine Nachricht.

int main ()
{
    ItemRef        receiver    = item::alloc ();
item::define (receiver, gFrame, 222);// 222 ist die UID des ersten Rahmens frame::apply_layout_rules (receiver, 15, gFrame, "from script");
return 0; }

Version 3.1, R1550, 18. Sept. 2009
Parameter caller, keycallerData1, callerData2, id, id2, id3, sid seit v3.3 R3388, 7. Jan. 2013

priint:comet InDesign® Plug-Ins, comet_pdf

system::suppress_layout_rules
system::wakeup_layout_rules
itemlist::apply_layout_rules
Illustrator
comet.CFrame.applyLayoutRules

static int frame::set_top_options(
  ItemRef frameRef = 0,
  int textAlign = 4,
  int pathAlign = 3,
  int effectType = 1,
  int overlapOffset = 0,
  int flip = 0)

Setze die Eigenschaften eines Textes auf einem Pfad (text on path).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen mit Text auf Pfad
0 : aktueller Skriptrahmen
textAlign int 4 Ausrichtung - einer der folgenden Werte. Andere Werte können zu Fehlern führen.

1 : Oberlänge
2 : Unterlänge
3 : Zentrieren
4 : Grundlinie
5 : über rechter Em-Box
6 : Unter linker Em-Box
7 : über rechter ICF-Box
8 : Unter linker ICF-Box
pathAlign int 4 Ausrichtng am Pfad - einer der folgenden Werte, Andere Werte können zu Fehlern führen.

1 : Oben
2 : Unten
3 : Zentrieren
effectType int 4 Effekt - einer der folgenden Werte. Andere Werte können zu Fehlern führen.

1 : Regenbogen
2 : Verzerren
3 : 3D-Band
4 : Treppenstufe
5 : Schwerkraft
overlapOffset int 0 Ein Wert zwischen -800 und 800. Andere Werte können zu Fehlern führen.
flip int 0 Text spiegeln?

0 : Nein
1 : Ja

Version 2.1 R1611, 19. Oktober 2009

priint:comet InDesign® Plug-Ins

is_textonpath

int frame::get_z_order(ItemRef frameRef, int respectTo)

Ermittle die Z-Ordnung eines Rahmens. Ist der übergebene Rahmen eine Gruppe, wird diese Gruppe als ein Objekt behandelt, bei alle anderen Gruppierungen werden die Rahmen jeweils als einzelne Objekte behandelt.

Name Typ Default Beschreibung
Return int   <=0 : Fehler
sonst : 1-basierte Z-Ordnung des Rahmens. Je größer der Wert, um so weiter liegt der Rahmen im Hintergrund
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen
respectTo int 0 0 :Z-Order innerhalb des Spreads bestimmen
1 : Verwende zum Ermitteln der Z-Ordnung nur die Rahmen, die den angegebenen Rahmen überschneiden. Der Rahmen, der dabei am weitesten vorne liegt, hat die Z-Ordnung 1 - er muss aber nicht der vorderste Rahmen des Spreads sein (siehe is_in_front). Ebenso muss natürlich der Rahmen mit dem grössten Z-Wert nicht der unterste Rahmen (is_at_back) des Spreads sein. Die Liste der Rahmen, die überscheidungen mit dem angegebenen Rahmen haben, erhalten Sie mit itemlist::intersections.

Informationen über die Z-Ordnung eines Rahmens.

int main()
{
    wlog ("", "Z-Order (page rel) : %d\n", 	frame::get_z_order (gFrame, 0));
    wlog ("", "Z-Order 		: %d\n", 	frame::get_z_order (gFrame, 1));
    wlog ("", "in front 	: %d\n", 	frame::is_in_front (gFrame));
    wlog ("", "at back 		: %d\n", 	frame::is_at_back (gFrame));
return 0; }

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

is_in_front
is_at_back
itemlist::intersections
comet.CPageItem.getZOrder

static int frame::bring_to_front(ItemRef frameRef)

Mache den Rahmen zum obersten Rahmen der Seite.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.moveToFront

static int frame::bring_forward(ItemRef frameRef)

Hole den Rahmen um eine Z-Ebene in den Vordergrund.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.moveForward

static int frame::send_backward(ItemRef frameRef)

Schiebe den Rahmen eine Z-Ebene in den Hintergrund.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.moveBackward

static int frame::send_to_back(ItemRef frameRef)

Schiebe den Rahmen in den Hintergrund.

Ab Version v3.3 werden auch gesperrte Rahmen verändert. Versionen vor v3.3 können bei gesperrten Rahmen zum Absturz von InDesign® führen. Die Rahmen sollten daher mit Hilfe der Funktionen frame::is_locked, frame::unlock und frame::lock geprüft, entsperrt und am Ende wieder gesperrt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.moveToBack

static int frame::is_in_front(ItemRef frameRef)

Ist der Rahmen der oberste Rahmen der Seite?

Name Typ Default Beschreibung
Return int   0 : Nein oder Fehler
1 : Ja
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.isInFront

static int frame::is_at_back(ItemRef frameRef)

Ist der Rahmen der unterste Rahmen der Seite?

Name Typ Default Beschreibung
Return int   0 : Nein oder Fehler
1 : Ja
frameRef ItemRef - Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPageItem.isInBack

static int frame::is_masteritem_overriden(
  ItemRef masterItem,
  int pgNum,
  ItemRef pageItem)

Ist ein Musterseiten-Rahmen auf einer gegebenen Seite lokalisiert? Achten Sie darauf, dass diese Methode im Gegensatz zu is_overriden_masteritem eine Seitenangabe benötigt. Lokalisierungen erfolgen immer seitenweise.

Name Typ Default Beschreibung
Return int   0 : nicht überschrieben, kein Musterseitenrahmen, Fehler
1 : Ja, der Rahmen wurde für die gegebene Seite lokalisiert
masterItem ItemRef - Gültiger Musterseiten-Rahmen
pgNum int - 1-basierter Seitenindex im Dokument
pageItem ItemRef 0 Ist der Rahmen lokalisiert, enthält die Variable nach erfolgreicher Ausführung die Referenz des lokalisierten Rahmens. Der Wert darf 0 sein, sonst muss er auf eine allokierte Referenz zeigen (item::alloc).

Das Skript holt die Musterseitenelemente der ersten Dokumentseite und überschreibt den ersten Musterseitenrahmen. Danach wird aus beiden Richtungen (vom Musterseitenelement und vom (neuen) PageItem) ausgehend der zugehörige Rahmen ermittelt. Die Ergebnisse sollten dann auf jeden Fall gleich sein.

int main ()
{
    ItemList		masters		= itemlist::masteritems (0, "", 1, 0);
    ItemRef			masterItem	= item::alloc ();
    ItemRef			pageItem	= item::alloc ();
    int				result;
itemlist::get (masters, masterItem, 0);
result = frame::override_masteritem (masterItem, 3, pageItem); wlog ("", "# Action Result Masteritem PageItem\n"); wlog ("", "# Override %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_masteritem_overriden (masterItem, 3, pageItem); wlog ("", "# IsMasterOverriden %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_overriden_masteritem (pageItem, masterItem); wlog ("", "# IsOverridenMaster %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem)); wlog ("", "\n");
return 0; }

Version 2.1, R1760, 22.2.2010

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::masteritems
is_overriden_masteritem
override_masteritem
remove_masteritem_override
comet.CPageItem.isMasteritemOverriden

static int frame::is_overriden_masteritem(ItemRef pageItem, ItemRef masterItem = 0)

Ist ein Seiten-Rahmen ein freigestellter Musterseiten-Rahmen? Im Gegensatz zu is_masteritem_overriden benötigt die Funktion keine Seitenangabe, die Seitennummer lässt sich ja implizit aus der gegebenen Rahmenreferenz ermitteln.

Name Typ Default Beschreibung
Return int   0 : nicht freigestellt, Rahmen kommt gar nicht von einer Musterseite, Fehler
1 : Ja, der Rahmen ist ein lokalisierter Musterseitenrahmen
pageItem ItemRef - Gültiger Seitenrahmen
masterItem ItemRef 0 Ist der Rahmen ein lokalisierter Musterseitenrahmen, enthält die Variable nach erfolgreicher Ausführung die Referenz auf den Musterseitenrahmen. Der Wert darf 0 sein, sonst muss er auf eine allokierte Referenz zeigen (item::alloc).

Das Skript holt die Musterseitenelemente der ersten Dokumentseite und überschreibt den ersten Musterseitenrahmen. Danach wird aus beiden Richtungen (vom Musterseitenelement und vom (neuen) PageItem) ausgehend der zugehörige Rahmen ermittelt. Die Ergebnisse sollten dann auf jeden Fall gleich sein.

int main ()
{
    ItemList		masters		= itemlist::masteritems (0, "", 1, 0);
    ItemRef			masterItem	= item::alloc ();
    ItemRef			pageItem	= item::alloc ();
    int				result;
itemlist::get (masters, masterItem, 0);
result = frame::override_masteritem (masterItem, 3, pageItem); wlog ("", "# Action Result ParentItem PageItem\n"); wlog ("", "# Override %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_masteritem_overriden (masterItem, 3, pageItem); wlog ("", "# IsParentOverriden %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_overriden_masteritem (pageItem, masterItem); wlog ("", "# IsOverridenParent %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem)); wlog ("", "\n");
return 0; }

Version 2.1, R1760, 22.2.2010

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::masteritems
is_masteritem_overriden
override_masteritem
remove_masteritem_override
comet.CPageItem.isOverridenMasteritem

static int frame::override_masteritem(
  ItemRef masterItem,
  int pgNum,
  ItemRef newItem)

Lokalisiere einen gegebenen Musterseitenrahmen für eine Dokumentseite.

Achtung: Einseitige Musterseiten auf Doppelseiten und doppelseitige Musterseiten auf Einzelseiten werden unterstützt. Aber um horizontale Verschiebungen der freigestellten Rahmen zu vermeiden, müssen Spreads mit mehr als zwei Seiten Musterseiten mit mind. der gleichen Seitenzahl verwenden. Andernfalls müssen Sie den horizontalen Shift in Ihren Skripten korrigieren.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
masterItem ItemRef - Gültiger Musterseitenrahmen
pgNum int - 1-basierter Seitenindex einer Dokumentseite
newItem ItemRef 0 Bei erfolgreicher Ausführung enthält die Variable eine Referenz auf den neu lokalisierten Seitenrahmen. Der Wert darf 0 sein, sonst muss er auf eine allokierte Referenz zeigen (item::alloc).

Das Skript holt die Musterseitenelemente der ersten Dokumentseite und überschreibt den ersten Musterseitenrahmen. Danach wird aus beiden Richtungen (vom Musterseitenelement und vom (neuen) PageItem) ausgehend der zugehörige Rahmen ermittelt. Die Ergebnisse sollten dann auf jeden Fall gleich sein.

int main ()
{
    ItemList	masters		= itemlist::masteritems (0, "", 1, 0);
    ItemRef		masterItem	= item::alloc ();
    ItemRef		pageItem	= item::alloc ();
    int			result;
itemlist::get (masters, masterItem, 0);
result = frame::override_masteritem (masterItem, 3, pageItem); wlog ("", "# Action Result ParentItem PageItem\n"); wlog ("", "# Override %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_masteritem_overriden (masterItem, 3, pageItem); wlog ("", "# ParentOver %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem));
result = frame::is_overriden_masteritem (pageItem, masterItem); wlog ("", "# OverParent %d %d %d\n", result, item::getint (masterItem), item::getint (pageItem)); wlog ("", "\n");
return 0; }

Version 2.1, R1760, 22.2.2010

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::masteritems
is_masteritem_overriden
is_overriden_masteritem
remove_masteritem_override
comet.CPageItem.overrideMasteritem

static int frame::remove_masteritem_override(ItemRef & pageItem)

Entferne alle lokalen überschreibungen eines Rahmens. Die Funktion prüft, ob der Rahmen überhaupt ein überschriebener Musterseitenrahmen ist und stellt ggf. den ursprünglichen Zustand des Musterseitenrahmens wieder her. Der Rahmen ist danach nicht mehr lokalisiert. Ist der übergebene Rahmen pageItem ein Unterelement einer InDesign®-Gruppe, wird automatisch die gesamte Gruppe bearbeitet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
pageItem ItemRef - Gültige Rahmenreferenz

Im folgenden Beispiel ist der Test eigentlich gar nicht nötig:

int main ()
{
    int				result;
if (frame::is_overriden_masteritem (gFrame)) { wlog ("", "# overridden parent item selected, removing overrides\n"); result = frame::remove_masteritem_override (gFrame); wlog ("", "# result %d\n", result); } return 0; }

Version 2.1, R1760, 22.2.2010

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::masteritems
is_masteritem_overriden
is_overriden_masteritem
override_masteritem
comet.CPageItem.removeMasteritemOverride

static int frame::copy_image(
  ItemRef source,
  ItemRef dest,
  int applyLayoutRules = 0)

Kopiere den Bildinhalt eines Bildrahmens in einen anderen Rahmen. Ist der Zielrahmen kein Bildrahmen, wird er konvertiert. Eventuelle Textinhalte werden dabei gelöscht. Das Bild wird in der aktuellen Größe, Position, Skalierung, Drehung und Verzerrung kopiert. Alle Effekte des Originales werden auch in der Kopie eingerichtet. Nach dem Kopieren können optional die Gestaltungsregeln Nach Geomentrieänderungen ausgeführt werden.

Name Typ Default Beschreibung
Return int   0 or ErrorCode
source ItemRef - Valid page item
dest ItemRef - Destination frame
applyLayoutRules int 1 Gestaltungsregeln Nach Geomentrieänderungen ausführen?

1 : Ja
0 : Nein
int main ()
{
    ItemRef		r1	= item::alloc ();
    ItemRef		r2	= item::alloc ();
item::define (r1, document::current (), 206); item::define (r2, document::current (), 318);
frame::copy_image (r1, r2, 1);
return 0; }

Version 3.2 R2127, 14. Sept. 2010

priint:comet InDesign® Plug-Ins

static float frame::get_visible_area(ItemRef frameRef, int flags = 0)

Berechne die Größe der sichtbaren Fläche(n) eines Rahmens. Bei Bildrahmen kann als Berechnungsgrundlage auch der aktuell verwendete Beschneidungspfad verwendet werden. Rahmen und Bildfläche dürfen beliebige Formen haben. Die sichtbare Fläche eines Rahmens ist die Fläche, die sich aus der folgenden Schnittmenge ergibt :

Wie Sie sich sicher denken können, ist das Verfahren zur Berechnung der Schnittflächen und Größen beliebiger Formen nicht ganz einfach. Die Integrale der Kurven (Bézier-Kurven) werden durch Interpolation berechnet. Dabei ergibt sich ein kleiner Rundungsfehler von durchschnittlich 0,03 ‰. Das ist etwa 150-mal weniger als der in alkoholfreiem Bier tolerierte Alkoholgehalt. Eine Verkleinerung des Fehlers um eine weitere 0 nach dem Komma bedeutet einen etwa 100-mal größeren Rechenaufwand (aus jeder Sekunde werden also fast 2 Minuten!).

Name Typ Default Beschreibung
Return float   Größe der sichtbaren Flächen in Quadratpunkten oder 0.0
frameRef ItemRef - Gültige Rahmenreferenz
flags int 0 Steuerung der Berechnung

kUseClippath : Verwende bei Bildern den Bildinhalt. Wird das Bild mit einem Beschneidungspfad angezeigt, wird dieser Pfad verwendet. Der Pfad darf beliebig komplex sein und wird immer mit der Form des Rahmens geschnitten.

kAllowHoles : Löcher im Bild werden normalerweise zur Bildfläche hinzugerechnet. Mit dieser Option werden Löcher im Bild nicht zur Bildfläche hinzugerechnet. Die Option ist nur aktiv, wenn kUseClippath verwendet wird.

kCheckTransparenz : Der Rahmenhintergrund von Bildern kann selbst undurchsichtig sein. Nicht-transparente Bildhintergründe werden im Normalfall ignoriert und nicht zur Rahmenfläche hinzugerechnet. Soll bei nicht-transparenten Bildhintergründen der gesamte Rahmen als Fläche verwendet werden, setzen Sie dieses Flag. Rahmenhintergründe sind transparent, wenn eine der folgenden Eigenschaften gesetzt ist :
  • Keine Hintergrundfarbe
  • Effekte : Füllmethode ungleich "Normal"
  • Effekte : Deckkraft < 100.0
Die Option ist nur aktiv, wenn kUseClippath verwendet wird. Das Flag wird nicht verwendet, um bei Rahmenüberlappungen die Transparenz der überlappenden Rahmen zu prüfen!

kIgnoreOverlaps : überdeckungen von anderen Rahmen werden ignoriert. Die überdeckten Teile werden als zur Fläche hinzugezählt.

kUseMargins : Es werden immer nur die sichtbaren Flächenteile des Rahmens berechnet. Rahmenteile, die in die Montagefläche ragen, werden ignoriert. Ist das Flag kUseMargins gesetzt, wird die zu berücksichtigende Fläche weiter verkleinert auf die Seite des Rahmens ohne deren Seitenanschnitt. Die Seite des Rahmens ist die Seite des Spreads, auf der der grösste Teil der Boundingbox um den Rahmen liegt.
#include "internal/types.h"

Das Beispiel zeigt eine Gestaltungsregel, die bei Änderungen der Geometrie eines Rahmens der Seite für alle Seitenrahmen die Flächen neu berechnet und ins Logfile schreibt. Bei Texrahmen wird die Größe auch in den Text geschrieben.

#include "internal/types.h"
int gFlags = kUseClippath+kUseMargins;
int recalc_area (ItemRef fr) { float A = frame::get_visible_area (fr, flags); char str [5000];
sprintf (str, "Fläche :%f pt2\n", A); strreplace (str, ".", ","); frame::replace (fr, str); wlog ("", "%d : %f square points\n", item::getint (fr), A);
return 0; } int main () { ItemList inter = itemlist::pageframes (page::get (gFrame)); ItemRef f = item::alloc (); int i;
for (i = 0; i < itemlist::length (inter); i++) { itemlist::get (inter, f, i); recalc_area (f); }
return 0; }

Version 3.2 R2210, 2. Dez. 2010

priint:comet InDesign® Plug-Ins

get_fill_level
document::get_visible_areas

static float frame::get_fill_level(
  ItemRef frameRef,
  int flags = 0,
  float* fa = 0,
  float* fi = 0,
  float* fv = 0,
  float* fh = 0)

Berechne die Flächen eines Rahmens und (wenn verfügbar) des Bildes im Rahmen. Zusätzlich kann die Größe der sichtbaren und der versteckten Bildbereiche berechnet werden. Rahmen und Bild können beliebige (auch runde) Formen haben. Angewendete Beschneidungspfade des Bildes werden berücksichtigt. Die Funktion gibt den Füllpegel des Rahmens in Prozent zurück.

Name Typ Default Beschreibung
Return float   Füllstatus (0.0 - 100.0) des Bildrahmens

-1.0 : bei
  • Textrahmen
  • leeren Bildrahmen
  • kCheckTransparenz und "undurchsichtigem" Rahmenhintergrund, siehe unter Parameter flags.
  • Fehler
Ausser im Fehlerfall wird die Größe der Rahmenfläche in jedem der Fälle berechnet.
frameRef ItemRef - Gültige Rahmenreferenz
flags int 0 Steuerung der Berechnung

kAllowHoles : Löcher im Bild werden normalerweise zur Bildfläche hinzugerechnet. Mit dieser Option werden Löcher im Bild nicht zur Bildfläche hinzugerechnet.

kCheckTransparenz : Der Rahmenhintergrund von Bildern kann selbst undurchsichtig sein. Nicht-transparente Bildhintergründe werden im Normalfall ignoriert und nicht zur Rahmenfläche hinzugerechnet. Soll bei nicht-transparenten Bildhintergründen der gesamte Rahmen als Fläche verwendet werden, setzen Sie dieses Flag. Rahmenhintergründe sind transparent, wenn eine der folgenden Eigenschaften gesetzt ist :
  • Keine Hintergrundfarbe
  • Effekte : Füllmethode ungleich "Normal"
  • Effekte : Deckkraft < 100.0
fa float* 0 Rahmenfläche in Quadratpunkten
fi float* 0 Bildfäche in Quadratpunkten

0.0 bei Textrahmen und leeren Bildrahmen
fv float* 0 sichtbare Bildfäche in Quadratpunkten

0.0 bei Textrahmen und leeren Bildrahmen
fh float* 0 unsichtbare Bildfäche in Quadratpunkten

0.0 bei Textrahmen und leeren Bildrahmen
#include "internal/types.h"
#include "internal/types.h"
int main () { int flags = kAllowHoles + kCheckTransparenz; float fa, fi, fv, fh; float level = frame::get_fill_level (gFrame, flags, &fa, &fi, &fv, &fh);
wlog ("", "# Fill level of %d : %f\n", item::getint (gFrame), level); wlog ("", "# Shape : %f\n", fa); wlog ("", "# Image : %f\n", fi); wlog ("", "# Visible : %f\n", fv); wlog ("", "# Hidden : %f\n", fh); wlog ("", "# Free : %f\n", fa-fv);
return 0; }

Version 3.2 R2210, 2. Dez. 2010

priint:comet InDesign® Plug-Ins

get_visible_area

static int frame::hide(ItemRef frameRef)

Rahmen unsichtbar machen. Der Rahmen bleibt weiter vollständig im Dokumet erhalten ist aber unsichtbar. Für die Anweisung ist mind. CS5 erforderlich. In früheren InDesign®-Versionen erzeugt die Funktion einen Fehlercode.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen

Verstecke alle Cometgruppen-Geschwister eines Rahmens.

int main ()
{
    int 		groupID	= frame::get_cometgroup (gFrame, 0);
    ItemList	group	= 0;
    ItemRef		mb		= item::alloc ();
    int 		i;
if (groupID == 0) return 0; group = itemlist::get_cometgroup_members (0, groupID, 1); if (!group) return 0;
for (i = 0; i < itemlist::length (group); i++) { mb = itemlist::get (group, mb, i);
if (item::getint (gFrame) != item::getint (mb)) { frame::hide (mb); } } }

CS5 Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

show
is_hidden
comet.CPageItem.setVisible

static int frame::show(ItemRef frameRef, int visibility = 1)

Setze den Sichtbarkeitsstatus eines Rahmens. Die Anweisung ist nicht nötig, wenn Sie neue Rahmen anlegen (frame::create, <in>-Tag, Einsetzen von Templates, ...).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen
visibility int 1 neue Sichtbarkeit

0 : unsichtbar
1 : sichtbar

CS5 Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

hide
is_hidden
comet.CPageItem.setVisible

static int frame::is_hidden(ItemRef frameRef)

Sichtbarkeitsstatus eines Rahmens erfragen.

Name Typ Default Beschreibung
Return int   1 : sichtbar
0 : Versteckt oder Fehler
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen

CS5 Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

show
hide
comet.CPageItem.getVisible

static char* frame::get_name(
  ItemRef frameRef,
  int nameType = 0,
  int doTranslate = 0)

Hole den Namen eines Rahmens. Die Rahmennamen werden in der Ebenen-Palette angezeigt und können dort auch manuell geändert werden.

Zum Ändern des Namens wählen Sie den gewünschtn Rahmen in der Ebenen-Palette aus. Nach einem kurzen Augenblick klicken Sie den ausgewählten Eintrag erneut. Achten Sie darauf, dass der Zeitraum zwischen den beiden Klicks länger ist als bei einem Doppelklick! Kurz nach dem zweiten Klick ändert sich der Rahmenname zu einem editierbaren Feld und Sie können jetzt einen eigenen Namen festlegen. Eigene Namen sollten nicht mit einem # beginnen!

Name Typ Default Beschreibung
Return char*   Name des Rahmens. Im Fehlerfall ist das Ergebnis leer ("").

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen
nameType int 0 Welcher Name soll ermittelt werden?

0 : Benutzerdefinierter Name oder, wenn der nicht gesetzt ist, Defaultname des Rahmens
1 : Defaultname
2 : Benutzerdefinierter Name. Ist der nicht gesetzt, wird ein Leerstring ("") zurückgegeben.
doTranslate int 0 Soll der Defaultname übersetzt werden? Der interne nicht übersetzte Name eines leeren Grafikrahmens etwa ist #Graphicframe. Das wird in einem deutschen InDesign® mit Grafikrahmen übersetzt.

0 : nicht übersetzen
1 : übersetzen

Setze die Namen aller Rahmen einer Cometgruppe.

int main ()
{
    int 		groupID	= frame::get_cometgroup (gFrame, 0);
    ItemList	group	= 0;
    ItemRef		mb		= item::alloc ();
    int 		i;
    char		name[2000];
    if (groupID == 0)	return 0;
    group = itemlist::get_cometgroup_members (0, groupID, 1);
    if (!group)			return 0;
for (i = 0; i < itemlist::length (group); i++) { mb = itemlist::get (group, mb, i);
wlog ("", "# Frame %d :\n", item::getint (mb)); wlog ("", "# '%s'\n", frame::get_name (mb));
sprintf (name, "Cometgroup %d.%d", groupID, i+1); frame::set_name (mb, name);
wlog ("", "# '%s'\n", frame::get_name (mb)); } }

CS5 Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

set_name
itemlist::pageframes
comet.CPageItem.getName

static int frame::set_name(ItemRef frameRef, char* newName = 0)

Setze den Namen eines Rahmens. Die Rahmennamen werden in der Ebenen-Palette angezeigt.

Zum Ändern des Namens wählen Sie den gewünschtn Rahmen in der Ebenen-Palette aus. Nach einem kurzen Augenblick klicken Sie den ausgewählten Eintrag erneut. Achten Sie darauf, dass der Zeitraum zwischen den serbeiden Klicks länger ist als bei einem Doppelklick! Kurz nach dem zweiten Klick ändert sich der Rahmenname zu einem editierbaren Feld und Sie können jetzt einen eigenen Namen festlegen. Eigene Namen sollten nicht mit einem # beginnen!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Skriptrahmen
newName String oder char* 0 Neuer Name des Rahmens

0 oder "" : Zurücksetzen des Rahmennamens auf den InDesign®-Default.

Setze die Namen aller Rahmen einer Cometgruppe.

int main ()
{
    int 		groupID	= frame::get_cometgroup (gFrame, 0);
    ItemList	group	= 0;
    ItemRef		mb		= item::alloc ();
    int 		i;
    char		name[2000];
    if (groupID == 0)	return 0;
    group = itemlist::get_cometgroup_members (0, groupID, 1);
    if (!group)			return 0;
for (i = 0; i < itemlist::length (group); i++) { mb = itemlist::get (group, mb, i);
wlog ("", "# Frame %d :\n", item::getint (mb)); wlog ("", "# '%s'\n", frame::get_name (mb));
sprintf (name, "Cometgroup %d.%d", groupID, i+1); frame::set_name (mb, name);
wlog ("", "# '%s'\n", frame::get_name (mb)); } }

CS5 Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

get_name
itemlist::pageframes
comet.CPageItem.setName

static int frame::get_page_element(
  ItemRef frameRef = 0,
  int chkGroup = 0,
  int checkLeftTopOnly = 0,
  char* out_element_name = 0,
  int queryNearest = 0)

Ermittle das Seitenelement, in dem ein Rahmen oder die Cometgruppe des Rahmens liegt. Die Zuordnung zu einem Seitenelement wird dabei ich über dßie aktuelle XY-Position des Rahmens (oder der Cometgruppe des Rahmens) und das aktuelle Seitentemplate ermittelt.

Name Typ Default Beschreibung
Return int   1-basierte Sequenznummer des Seitenelementes oder -1 im Fehlerfall
frameRef ItemRef 0 gültige Rahmenreferenz

0 : aktueller Skriptrahmen
chkGroup int 0 0 : nur den Rahmen selbst verwenden

1 : Cometgruppe des Rahmens zur Berechnung verwenden
checkLeftTopOnly int 0 0 : Die Boundingbox um den Rahmen oder die Cometgruppe muss ins Seitenelement passen

1 : Die linke obere Ecke der Boundingbox muss im Seitenelement liegen
out_element_name String oder char* 0 Allokierter Speicher für den Namen des gefundenen Seitenelementes

0 : Namen nicht ermitteln
queryNearest int 0 Verhalten bei überlappenden Elementen und nur wenn

0 : Erstes gefundenes Element verwenden (Das ist das Element mit der kleinsten Sequenznummer.)

1 : Nimm das Element, dessen linke obere Ecke am nächsten zur linken oberen Ecke des Rahmen/der Cometgruppe liegt

Der Parameter wird nur ausgewertet wenn checkLeftTopOnly == 1 ist.

Auf welchem Stellplatz liegt ein Rahmen. Dazu wird die linke obere Rahmenecke geprüft.

int main ()
{
    char		ename [2000];
    int			seq;
seq = frame::get_page_element (gFrame, 0, 1, ename);
wlog ("", "# Frame %d\n", item::getint (gFrame)); wlog ("", "# Element : %d (%s)\n", seq, ename);
return 0; }

Version 3.2 R2267, 8. Feb. 2011
queryNearest seit v4.0.5 R20456, 10. Okt. 2017

priint:comet InDesign® Plug-Ins, comet_pdf

productlist::get_established
get_template
get_chapter_id
get_smart_item_data
datapool::get_main_template
datapool::get_template_name
comet.CFrame.getPageElement

static int frame::get_template(ItemRef frameRef = 0, char* out_template_name = 0)

Ermittle das Template, das einen Rahmen ins Dokument eingefügt hat.

Name Typ Default Beschreibung
Return int   TemplateID oder 0 im Fehlerfall
frameRef ItemRef 0 gültige Rahmenreferenz

0 : aktueller Skriptrahmen
out_template_name String oder char* 0 Allokierter Speicher für den Namen des gefundenen Templates

0 : Namen nicht ermitteln
int main ()
{
    char		ename [2000];
    int			tid;
    int			ttid, l, m, r, cl, cm, cr;
tid = frame::get_template (gFrame); ttid = datapool::get_main_template (tid, &l, &m, &r, &cl, &cm, &cr);
wlog ("", "# Frame %d\n", item::getint (gFrame)); wlog ("", "# Template : %d of %d (%s) with [%d, %d, %d, %d, %d, %d]\n", tid, ttid, datapool::get_template_name (tid), l, m, r, cl, cm, cr);
return 0; }

Version 3.2 R2267, 8. Feb. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

productlist::get_established
get_page_element
get_chapter_id
get_smart_item_data
datapool::get_main_template
datapool::get_template_name
comet.CFrame.getTemplate

static int frame::get_chapter_id(ItemRef frameRef = 0)

Ermittle die (intern vergebene) ID des Kapitels, zu der ein Rahmen gehört. Kapitel-IDs werden beim Produktaufbau vergeben um Seitenumbrüche zu verwalten.

Name Typ Default Beschreibung
Return int   TemplateID oder 0 im Fehlerfall
frameRef ItemRef 0 gültige Rahmenreferenz

0 : aktueller Skriptrahmen

Version 3.2 R2267, 8. Feb. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

productlist::get_established
get_page_element
get_template
get_smart_item_data
datapool::get_main_template
datapool::get_template_name

static int frame::get_smart_item_data(
  ItemRef frameRef = 0,
  char* label = 0,
  int* seq = 0,
  int* type = 0,
  int* prerule = 0,
  int* forTextflow = 0,
  int* forBuild = 0,
  int* flags = 0,
  int* nettoAreaType = 0)

Ermittle die in einem Rahmen zur Aufbau-Unterstützung hinterlegten Daten. Diese Einstellungen werden in der Palette 'Template-Verhalten' gemacht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 gültige Rahmenreferenz

0 : aktueller Skriptrahmen
label String oder char* 0 Kennung
seq int* 0 Sequenznummer
type int* 0 Typ

0 : normal
1 : kann fortgesetzt werden
2 : wiederholen (z. Zt. nicht unterstützt)
3 : kann fortgesetzt werden, ändert aber seine Höhe nicht
prerule int* 0 Regel, die vor dem Einfügen ausgeführt wird

-3 : neue rechte Seite
-2 : neue linke Seite
-1 : neue Seite
forTextflow int* 0 Im Textfluss benutzt?

0 : Textinhalt einfügen
1 : als Inline einfügen
2 : nicht verwenden
forBuild int* 0 Beim Aufbau benutzt?

0 : verwenden
1 : nicht verwenden
2 : aufbauen, aber bei Reorganisationen ignorieren
flags int* 0 Bitfeld mit Zusatzinfos

0x00000001 : Rahmenplatzhalter laden
0x00000002 : Textplatzhalter laden
nettoAreaType int* 0 Flächentyp

0 : Bounding Box
1 : Pfad (Stern)
2 : Pfad mit Löchern (ungefüllter Stern)
3 : ignorieren (Minus)
int main ()
{
    char			label [128];
    int 			seq, type, prerule, text, build;
strcpy (label, ""); frame::get_smart_item_data (gFrame, label, &seq, &type, &prerule, &text, &build); wlog ("", "# Frame %d\n", item::getint (gFrame)); wlog ("", "# Label : '%s'\n", label); wlog ("", "# Seq : %d\n", seq); wlog ("", "# Type : %d\n", type); wlog ("", "# Pre : %d\n", prerule); wlog ("", "# Text : %d\n", text); wlog ("", "# Build : %d\n", build);
return 0; }

Version 3.2 R2267, 8. Feb. 2011
Parameter flags und nettoAreaType seit v3.3 R3237, 25.10.2012

priint:comet InDesign® Plug-Ins, comet_pdf

productlist::get_established
get_page_element
get_template
get_chapter_id
datapool::get_main_template
datapool::get_template_name
placeholder::sget_value
placeholder::change_tags
comet.CFrame.getSmartItemData

static int frame::set_smart_item_data(
  ItemRef frameRef = 0,
  char* label = 0,
  int seq = -1,
  int type = -1,
  int prerule = -1,
  int forTextflow = -1,
  int forBuild = -1,
  int flags = -1,
  int nettoAreaType = -1)

Ändere die in einem Rahmen zur Aufbau-Unterstützung hinterlegten Daten. Vorsicht : Änderungen können das Verhalten von Produktaufbau und die -reorganisation wesentlich ändern!.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 gültige Rahmenreferenz

0 : aktueller Skriptrahmen
label String oder char* 0 Kennung. Nur das erste Zeichen des Strings wird verwendet.

0 : unverändert lasssen
seq int -1 Sequenznummer

-1 : unverändert lasssen
type int -1 Typ

-1 : unverändert lasssen
0 : normal
1 : kann fortgesetzt werden
2 : wiederholen (z. Zt. nicht unterstützt)
3 : kann fortgesetzt werden, ändert aber seine Höhe nicht
prerule int -4 Regel, die vor dem Einfügen ausgeführt wird

-4 : unverändert lasssen
-3 : neue rechte Seite
-2 : neue linke Seite
-1 : neue Seite
forTextflow int -1 Im Textfluss benutzt?

-1 : unverändert lasssen
0 : Textinhalt einfügen
1 : als Inline einfügen
2 : nicht verwenden
forBuild int -1 Beim Aufbau benutzt?

-1 : unverändert lasssen
0 : verwenden
1 : nicht verwenden 2 : aufbauen, aber bei Reorganisationen ignorieren
flags int -1 Bitfeld mit Zusatzinfos

-1 : unverändert lasssen
0x00000001 : Rahmenplatzhalter laden
0x00000002 : Textplatzhalter laden
nettoAreaType int -1 Flächentyp

-1 : unverändert lasssen
0 : Bounding Box
1 : Pfad (Stern)
2 : Pfad mit Löchern (ungefüllter Stern)
3 : ignorieren (Minus)

v3.3 R3237, 25.10.2012

priint:comet InDesign® Plug-Ins, comet_pdf

frame::get_smart_item_data
placeholder::sget_value
placeholder::change_tags
comet.CFrame.setSmartItemData

static int frame::change_rule_param(int index, char* str)

ändere den Parameter einer Gestaltungsregel. Die Funktion hat nur in Gestaltungsregeln eine Wirkung und kann nur die Parameter der gerade ausgeführten Regel ändern. Parameter dürfen nicht länger als 5000 Zeichen sein.

Sie können die in Gestaltungsregeln definierten Variablen gParam1, ..., gParam4 auch direkt im Skript ändern. Auch hier gilt aber die Beschränkung auf 5000 Zeichen. Diese Änderungen haben keine Auswirkung auf das Dokument. Bei der nächsten Ausführung der Regel wird wieder der im Dokument hinterlegte Parameterwert verwendet. Mit change_rule_param können Sie den Parameterwert dauerhaft ändern.

Achtung : Durch den Aufruf wird auch der im Skript verwendete Wert der entsprechenden Variable gParam1, ... bzw gParam4 geändert!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
index int - 1-4 für den entsprechenden Parameter
str String oder char* - Neuer Wert des Parameters. Achtung : Durch den Aufruf wird auch der im Skript verwendete Wert der entsprechenden Variable gParam1, ... bzw gParam4 geändert!

Jedesmal, wenn die Regel ausgeführt wird, wird der Parameter 2 der Regel um eins hochgezählt. Der Parameter 2 muss mit einer Zahl initialisiert sein.

int main ()
{
    frame::change_rule_param (2, itoa (val (gParam2)+1));
    return 0;
}

Bei jeder Ausführug der Regel wird das Bild des Rahmens an einer anderen Stelle platziert. Der Parameter 1 muss mit einer Zahl im Bereich 1-9 initialisiert sein.

int main ()
{
    int 			alig	= val (gParam1);
alig = alig + 1; if (alig > 9) alig = 1;
frame::fit_image (gFrame, 5, alig, 195.0);
wlog ("", "111 : %s\n", gParam1); frame::change_rule_param (1, itoa (alig)); wlog ("", "222 : %s\n", gParam1);
return 0; }

Version 3.2.3 R2310, 26.04.2011

priint:comet InDesign® Plug-Ins

static int frame::shows_textend(ItemRef frameRef)

Ist im gegebenen Rahmen der Text zu Ende?

Name Typ Default Beschreibung
Return int   -1 : Fehler

0 : nein (Der Rahmen hat entweder einen Übersatz oder er ist mit einem weiteren Textrahmen verlinkt.)

1 : Ja, der Text ist hier zu Ende.

2 : Der Rahmen zeigt keinen Text mehr. Dieser Fall tritt auf, wenn Textrahmen verkettet sind und der Text nicht bis zum Rahmen reicht.
frameRef ItemRef 0 Gültige Rahmenreferenz

0 : aktueller Skriptrahmen

Version 3.2.3 R2312, 29.04.2011

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

textmodel::overset
comet.CFrame.showsTextEnd

static int (
  ItemRef frameRef,
  ItemRef out_mso,
  int* out_state)

DEPRECATED! Verwenden Sie stattdessen die Funktion interactive::get.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

Verwenden Sie stattdessen die Funktioninteractive::get.

static int (
  ItemRef frameRef,
  ItemRef out_mso,
  int* out_state)

Deprecated! Verwenden Sie stattdessen bitte die Funktion interactive::get.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

Verwenden Sie stattdessen die Funktion interactive::get.

static int frame::set_area_build_parameter(
  ItemRef frameRef,
  int parameterType,
  int value)

Setze einen Layoutparameter für den Bereichsaufbaumodus.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen
parameterType int - Welcher Layoutparameter soll gesetzt werden?
Wert Layoutparameter der gesetzt wird Mögliche werte für value Datentyp
0 Aufbaumodus
Eine Änderung dieses Parameters setzt alle Ausrichtungsparameter auf ihre Standardwerte zurück.
  • 0: Zeilenweise
  • 1: Spaltenweise
int
1 Horizontale Aufbaurichtung
  • 0: Links nach rechts
  • 1: Rechts nach links
2 Vertikale Aufbaurichtung
  • 0: Oben nach unten
  • 1: Unten nach oben
3 Interne Zeilen/Spaltenausrichtung:
Erste Zeile/Spalte
  • 0: Oben/Links
  • 1: Zentriert
  • 2: Unten/Rechts
4 Interne Zeilen/Spaltenausrichtung:
Zwischenzeilen/Spalten
  • 0: Oben/Links
  • 1: Zentriert
  • 2: Unten/Rechts
5 Interne Zeilen/Spaltenausrichtung
Letzte Zeile/Spalte
  • 0: Oben/Links
  • 1: Zentriert
  • 2: Unten/Rechts
6 Zeilen/Spalten Ausrichtung am Rahmen
Erste Zeile/Spalte
  • 0: Links/Oben
  • 1: Zentriert
  • 2: Rechts/Unten
  • 3: Horizontaler/Vertikaler Keil
7 Zeilen/Spalten Ausrichtung am Rahmen
Zwischenzeilen/Spalten
  • 0: Links/Oben
  • 1: Zentriert
  • 2: Rechts/Unten
  • 3: Horizontaler/Vertikaler Keil
8 Zeilen/Spalten Ausrichtung am Rahmen
Letzte Zeile/Spalte
  • 0: Links/Oben
  • 1: Zentriert
  • 2: Rechts/Unten
  • 3: Horizontaler/Vertikaler Keil
9 Zeilen/Spaltenverteilung im Rahmen
  • 0: Oben/Links
  • 1: Zentriert
  • 2: Unten/Rechts
  • 3: Vertikaler/Horizontaler Keil
10 X-Minimalabstand float
11 Y-Minimalabstand
12 Unsichtbar machen
  • 0: Nein
  • 1: Ja
int
value int/float - Neuer Wert - der Datentyp dieses Parameters ist abhängig von dem Parametertyp (siehe Tabelle parameterType oben).

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau
frame::get_area_build_parameter

static int frame::get_area_build_parameter(ItemRef frameRef, int parameterType)

Hole einen Parameter des Bereichsaufbaumodus.

Name Typ Default Beschreibung
Return int/float   Wert des gefragten Parameters. Der Datentyp ist abhängig von dem gefragten Parameter (siehe Tabelle bei frame::set_area_build_parameter).
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen
parameterType int - Welcher Layoutparameter soll geholt werden? Siehe Tabelle bei frame::set_area_build_parameter

Hole den Bereichsaufbaumodus des aktuellen Rahmens (Zeilen/Spalten)

int main()
{
    int 	mode = -1;
mode = frame::get_area_build_parameter(gFrame, 0); if (mode == 0) { showmessage("Frame is in row build mode"); } else if (mode == 1) { showmessage("Frame is in column build mode"); } else { showmessage("Failed to get mode from frame"); }
return 0; }

Hole den X-Minimalabstand des aktuellen Rahmens (Float-Wert)

int main()
{
    float xDistance = -1.0;
xDistance = frame::get_area_build_parameter(gFrame, 10); if (xDistance >= 0.0) { showmessage("Frame has minimum x distance of %.2fpt set", xDistance); }
return 0; }

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau
frame::set_area_build_parameter

static int frame::is_area_build_masterframe(ItemRef frameRef)

Gibt an, ob der Rahmen das erste Element einer Bereichsaufbau Rahmenkette ist.

Name Typ Default Beschreibung
Return int   0 (Nein) oder 1 (Ja)
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::add_to_area_build_chain(ItemRef frameOfExistingChain, ItemRef frameRef)

Fügt einen Rahmen einer Bereichsaufbau Rahmenkette hinzu.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameOfExistingChain ItemRef - Rahmen einer bestehenden Rahmenkette oder Rahmen mit Bereichsaufbau Platzhalter
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::remove_from_area_build_chain(ItemRef frameRef)

Entfernt einen Rahmen aus einer Bereichsaufbau Rahmenkette. Funktioniert nicht beim ersten Rahmen der Kette.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::get_area_build_order(ItemRef frameRef)

Holt die Reihenfolge eines Rahmens einer Bereichsaufbau Rahmenkette. Der Ergebniswert ist ein vielfaches von Zehn oder -1 (Rahmen gehört zu keiner Kette).

Name Typ Default Beschreibung
Return int   Reihenfolgennummer in der Rahmenkette. (-1 = Rahmen gehört zu keiner Kette. 0 = Rahmen ist erster Rahmen der Kette).
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::move_in_area_build_order(ItemRef frameRef, int moveUp)

Verschiebt einen Rahmen in der Reihenfolge einer Bereichsaufbau Rahmenkette. Funktioniert nicht beim ersten Rahmen der Kette, oder wenn der Rahmen nicht verschoben werden kann (z.B. beim Versuch den letzten Rahmen der Kette in der Reihenfolge nach unten zu verschieben).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen
moveUp int - Rahmen nach oben oder unten verschieben?

0: Nach unten
1: Nach oben

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::get_area_build_chain_members(ItemRef frameRef, ItemList memberList)

Holt eine Liste aller Rahmen der Bereichsaufbau Rahmenkette zu der der Rahmen gehört. Der Rahmen selbst ist in der Liste ebenfalls enthalten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültige Rahmenreferenz

0 : aktueller Rahmen
memberList ItemList - Eine mit itemlist::alloc allokierte Liste für die Ergebnisse. Bleibt die Liste leer gehört der Rahmen zu keiner Kette.

Version 4.1 R14700

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::reorganize_area_build_frames(ItemRef frameRef)

Reorganisiert die im Dokument bereits aufgebauten wiederholenden Elemente eines Bereichsaufbaus. Wiederholende Elemente die nicht mehr in die Layoutrahmen passen werden dabei gelöscht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Erster Layoutrahmen des Bereichsaufbaues.

0 : aktueller Rahmen

Version 4.1 15678

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::get_area_build_placed_into(ItemRef frameRef)

Hole den Layoutrahmen in den ein Rahmen eines Elementes des Bereichsaufbaus aufgebaut wurde. Das Ergebnis kann auf zwei Arten ermittelt werden:

Aufbauinformation: Hole den Rahmen der währen des Aufbaus der Elemente der entsprechende Layoutrahmen war.

Geometrie: Hole den ersten Layoutrahmen der Rahmenkette der den Rahmen des Elementes komplett einschließt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultFrame ItemRef - Reservierter Speicher für das Ergebnis.
inputFrame ItemRef - Rahmen des Elementes.
mode int 0 Modus

0: Aufbauinformation
1: Geometrie

Version 4.1 21612

priint:comet InDesign® Plug-Ins, comet_pdf

Dokumentation zum Bereichsaufbau

static int frame::get_printable(ItemRef frameRef = 0)

Druckbarkeit* von Rahmen. Wird der Rahmen gedruckt oder nicht?

*) "Druckbar" bedeutet die "normale" Druckerausgabe und PDF-Exporte.

Name Typ Default Beschreibung
Return int   Ist der Rahmen druckbar oder nicht?
1 : ja
0 : nein
frameRef ItemRef 0 Gültiger Dokumentrahmen
0 : aktueller Skriptrahmen

v3.3 R2800, 21. Feb. 2012

priint:comet InDesign® Plug-Ins

document::get_notes_printable
document::set_notes_printable
comet.CPageItem.getPrintable

static int frame::set_printable(ItemRef frameRef = 0, int newState = 0)

Setze die Druckbarkeit* eines Rahmens. Soll der Rahmen gedruckt oder nicht?

*) "Druckbar" bedeutet die "normale" Druckerausgabe und PDF-Exporte.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Dokumentrahmen
0 : aktueller Skriptrahmen
newState int 0 Druckbarkeit
0 : nicht druckbar oder in PDFs exportieren
1 : drucken und in PDFs exportieren

ändere den Druck-Status eines Rahmens.

int main ()
{
    frame::set_printable (gFrame, !frame::get_printable (gFrame));
    return 0;
}

v3.3 R2800, 21. Feb. 2012

priint:comet InDesign® Plug-Ins

document::get_notes_printable
document::set_notes_printable
comet.CPageItem.setPrintable

static int frame::set_alt(
  ItemRef fr,
  int source,
  char* altText,
  int delUserAlt = 1)

Definiere einen Alternativtext als Rahmen- bzw. Bildbeschreibung. Manuell kann diese Einstellung in InDesign® mit Hilfe des Dialoges Objekt -> Objektexportoptionen... in der Kategorie Alternativtext gemacht werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fr ItemRef - Gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
source int 0 Quelle für alternativen Text

0 : Benutzerdefiniert. Der Text wird im Parameter altText angegeben.

Achtung : Auch wenn Sie mit frame::set_pdf_accessibility explizit eine Festlegung für die PDF-Ausgabe (PDF mit Tags) festlegen, wird die Vorlese-Funktion von Adobe Acrobat den hier festgelegten Alternativtext verwenden (und nicht den in der PDF-Accessibilty-Struktur festgelegten Text).

8 : Dekoratives Bild (kein alternativer Text).

Die Texte für die folgenden Angaben werden aus dem IPTC Core der XMP-Struktur des Bildes ermittelt. Sie können diese Angaben etwa mit Hilfe der Metadaten-Palette von Adobe Bridge definieren.
1 : Aus XMP:Titel
2 : Aus XMP:Beschreibung
3 : Aus XMP:Überschrift
6 : Von XMP:Alternativer Text (Barrierefreiheit)
7 : Von XMP:Erweiterte Beschreibung (Barrierefreiheit)

Die Werte werden gesetzt aber von priint:comet nicht weitergehend unterstützt.
4 : Aus anderer XMP
5 : Aus Struktur
altText char* oder String 0 Benutzerdefinierter alternativer Text. Die Angabe wird nur bei Quelle 0 (Benutzerdefiniert) verwendet.
delUserAlt int 1 Soll ein evtl. gesetzter benutzerdefinierter alternativer Text gelöscht werden? Der Parameter wird nur ausgewertet, wenn source > 0 ist. Hintergrund ist, dass frame::get_alt unabhängig von der gewählten Quelle immer den benutzerdefinierten alternativen Text liefern wird, sobald dieser Text nicht leer ist.

0 : Nein
1 : Ja, evtl. festgelegten benutzerdefinierten alternativen Text entfernen

v5.0 R35020

priint:comet InDesign® Plug-Ins

Parameter delUserAlt seut v5.0 R36210
get_alt
set_pdf_accessibility
get_pdf_accessibility
comet.CPageItem.setAlternativeText

static int frame::get_alt(
  ItemRef fr,
  int* source,
  char* altText,
  char* nsPrefix,
  char* propertyPath)

Ermittle die Einstellungen für den Alternativtext eines Rahmens. Manuell kann diese Einstellung in InDesign® mit Hilfe des Dialoges Objekt -> Objektexportoptionen... in der Kategorie Alternativtext gemacht werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fr ItemRef - Gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
source int* 0 Variable für den ermittelte Quelle des alternativen Textes. Eine Beschreibung der Werte finden Sie in frame::set_alt.

0 : Wert ignorieren
altText char* oder String 0 Variable für den benutzerdefinierten Alternativtext. Es ist dabei unerheblich, ob der Rahmen diesen Text wirklich verwendet (Type 0) oder nicht.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!

Ist im Rahmen ein benutzerdefinerter Alternativtext definiert, wird unabhängig von der eingestellten Quelle immer dieser Text zurückgegeben!
nsPrefix char* oder String 0 Variable für den Namespace-Präfix im XMP-Header. Der Wert wird bei den XMP-basierten Texten automatisch definiert und ist nur von technischem Interesse.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!
propertyPath char* oder String 0 Variable für den Eigenschaftspfad im XMP-Header. Der Wert wird bei den XMP-basierten Texten automatisch definiert und ist nur von technischem Interesse.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!

v5.0 R35020

priint:comet InDesign® Plug-Ins

set_alt
set_pdf_accessibility
get_pdf_accessibility
comet.CPageItem.getAlternativeText

static int frame::set_pdf_accessibility(
  ItemRef fr,
  int type,
  int source,
  char* text)

Definiere einen Text zur barrierefreien Beschreibung des Inhaltes eines Rahmens. Manuell kann diese Einstellung in InDesign® mit Hilfe des Dialoges Objekt -> Objektexportoptionen... in der Kategorie PDF mit Tags gemacht werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fr ItemRef - Gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
type int 0 Tag anwenden:

0 : Aus Struktur
1 : Außertextliches Element
2 : Basierend auf Objekt
source int 0 Quelle für tatsächlichen Text

0 : Benutzerdefiniert. Der Text wird im Parameter text angegeben.

Die Texte für die folgenden Angaben werden aus dem IPTC Core der XMP-Struktur des Bildes ermittelt. Sie können diese Angaben etwa mit Hilfe der Metadaten-Palette von Adobe Bridge definieren.
1 : Aus XMP:Titel
2 : Aus XMP:Beschreibung
3 : Aus XMP:Überschrift
6 : Von XMP:Alternativer Text (Barrierefreiheit)
7 : Von XMP:Erweiterte Beschreibung (Barrierefreiheit)

Die Werte werden gesetzt aber von priint:comet nicht weitergehend unterstützt.
4 : Aus anderer XMP
5 : Aus Struktur
text char* oder String 0 Benutzerdefinierter Beschreibungstext. Die Angabe wird nur bei Quelle 0 (Benutzerdefiniert) verwendet.

v5.0 R35020

priint:comet InDesign® Plug-Ins

get_pdf_accessibility
set_alt
get_alt
comet.CPageItem.setPDFAccessibility

static int frame::get_pdf_accessibility(
  ItemRef fr,
  int* type,
  int* source,
  char* text,
  char* nsPrefix,
  char* propertyPath)

Ermittle die Einstellungen für barrierefreien Beschreibugstext eines Rahmens. Manuell kann diese Einstellung in InDesign® mit Hilfe des Dialoges Objekt -> Objektexportoptionen... in der Kategorie PDF mit Tags gemacht werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fr ItemRef - Gültige Rahmenreferenz

0 : Aktueller Skriptrahmen
type int* 0 Variable für den Typ der Quelle des barrierefreien Beschreibungstextes. Eine Beschreibung der Werte finden Sie in frame::set_pdf_accessibility.

0 : Wert ignorieren
source int* 0 Variable für die ermittelte Quelle des barrierefreien Beschreibungstextes. Eine Beschreibung der Werte finden Sie in frame::set_pdf_accessibility.

0 : Wert ignorieren
text char* oder String 0 Variable für den benutzerdefinierten barrierefreien Beschreibungstext. Es ist dabei unerheblich, ob der Rahmen diesen Text wirklich verwendet (Type 0) oder nicht.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!
nsPrefix char* oder String 0 Variable für den Namespace-Präfix im XMP-Header. Der Wert wird bei den XMP-basierten Texten automatisch definiert und ist nur von technischem Interesse.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!
propertyPath char* oder String 0 Variable für den Eigenschaftspfad im XMP-Header. Der Wert wird bei den XMP-basierten Texten automatisch definiert und ist nur von technischem Interesse.

0 : Wert ignorieren
sonst : String- oder char*|[..]-Variable. Im Fall von char*|[..] muß die Variable groß genug allokiert sein um das Ergebnis aufnehmen zu können!

v5.0 R35020

priint:comet InDesign® Plug-Ins

set_pdf_accessibility
set_alt
get_alt
comet.CPageItem.getPDFAccessibility

static int frame::store_magnet_distances(ItemRef frames)

Sichere die Magnetabstände eines Rahmens und aller Rahmen, die von dem Rahmen erreicht werden können.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Gültiger Dokumentrahmen

0 : aktueller Skriptrahmen
int main ()
{
    frame::store_magnet_distances (0);
    return 0;
}

v3.3 R850, 29.03.2012

priint:comet InDesign® Plug-Ins

itemlist::store_magnet_distances

static int frame::set_corner(
  ItemRef frameRef = 0,
  int corner = 0,
  int type = 0,
  float radius = 0.0)

Eckenoptionen einer Ecke eines Rahmens setzen. Zur Definition der Linienenden der Kontur (line cap) und wie die Linien der Kontur sich treffen (join type) verwenden Sie die Funktionen color, color_rgb bzw. color_cmyk

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültiger Dokumentrahmen

0 : aktueller Skriptrahmen
corner int 0 Welche Ecke soll gesetzt werden?

0 : alle Ecken

Alle weiteren Einstellungen gehen erst ab CS5.

1 : links oben
2 : rechts oben
3 : links unten
4 : rechts unten
type int 0 Eckentyp

0 : normale Ecke
1 : abgerundet
2 : nach innen gewölbt
3 : innerer Versatz
4 : abgeflachte Kante
5 : Ornament
radius float 0.0 Radius der Ecke in Punkten

v3.3 R3136, 29.08.2012

priint:comet InDesign® Plug-Ins, comet_pdf

get_corner

static int frame::get_corner(
  ItemRef frameRef = 0,
  int corner = 0,
  int* type = 0,
  float* radius = 0)

Eckenoptionen einer Ecke eines Rahmens ermitteln.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültiger Dokumentrahmen

0 : aktueller Skriptrahmen
corner int 0 Welche Ecke soll erfragt werden?

0 : Alle Ecken Nur erfolgreich, wenn alle Ecken die gleichen Einstellungen haben.
1 : links oben
2 : rechts oben
3 : links unten
4 : rechts unten
type int* 0 Nach erfolgreicher Ausführung enthält die Variable den Eckentyp

0 : normale Ecke
1 : abgerundet
2 : nach innen gewölbt
3 : innerer Versatz
4 : abgeflachte Kante
5 : Ornament
radius float* 0.0 Nach erfolgreicher Ausführung enthält die Variable den Radius der Ecke in Punkten

v3.3 R3136, 29.08.2012

priint:comet InDesign® Plug-Ins, comet_pdf

set_corner

static int frame::apply_magnets(
  ItemRef frame = 0,
  int applyRules = 0,
  int applyBuildActions = 1)

Magnetabstände eines Rahmens wiederherstellen. Rekursiv werden alle Rahmen bearbeitet, die duch Magneten des Rahmens verändert werden können.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef 0 Gültiger Dokumentrahmen

0 : aktueller Skriptrahmen
applyRules int 0 Adapterregeln der Rahmen ausführen?

0 : Nein
1 : Ja
applyBuildActions int 1 Adapterregeln "Während Produktaufbau" der Rahmen ausführen?

0 : Nein
1 : Ja

v3.3 R4100, 1. Aug. 2013

priint:comet InDesign® Plug-Ins, comet_pdf

Parameter applyRules und applyBuildActions seit v4.0.5 R11000
get_nail
incoming_magnets
outgoing_magnets
get_magnet_type
get_magnet_reference
comet.CFrame.applyMagnets

static int frame::apply_magnet_rules(
  ItemRef frame,
  int actionType,
  int actionIndex)

Ausführen der Adapter-Regeln eines Rahmens.

Die in den Regeln definierten globalen Variablen gPage~Org, gPage~New, g~Resize~, gOrgFrame~, gLastFrame~, gOrgImage~ beziehen sich immer auf die aktuelle Adaption und haben in den Aufrufen mglw. keine gültigen Werte!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen

0 : aktueller Skriptrahmen
actionType int - Regeln dieses Typs ausführen:

1 : Vor Adaption
2 : Nach Verschiebung
3 : Nach Größenänderung
4 : Nach Adaption
6 : Während Produktaufbau
actionIndex int - Index der Regel im Rahmen

-1 : Alle Regeln des angegebenen Typs ausführen

sonst : 0-basierter Index der Regel. Typ und Aktivierung der Regel werden dabei ignoriert (Es werden auch also auch deaktivierte Regeln ausgeführt. Sie können diese Eigenschaft verwenden, um im Rahmen Regeln zu definieren, die nur von dieser Funktion ausgeführt werden, von Adaption selbst aber ignoriert werden.

v4.0.5 R11000, 21. Apr 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int frame::rmv_magnets(ItemRef frame, int full_closure = 0)

Lösche alle Magnete, Nägel und Adapterskripte eines Rahmens

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Rahmen
full_closure int 0 0 : Nur den angegebenen Rahmen bearbeiten.

Sonst : auch alle Rahmen bearbeiten, die vom gegebenen Rahmen über Magneten erreichbar sind.

v3.4 R5356, 2. Jul 2014

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::rmv_magnets
comet.CFrame.removeMagnets

static int frame::is_note(ItemRef frame = 0)

Ist ein gegebener Rahmen eine Comet-Notiz oder nicht?

Name Typ Default Beschreibung
Return int   0 : Keine Comet-Notiz oder Fehler
1 : Der Rahmen ist eine Comet-Notiz
frameRef ItemRef 0 Gültiger Dokumentrahmen

0 : Aktueller Skriptrahmen

v3.3 R2310, 3. Feb 2011

priint:comet InDesign® Plug-Ins

comet.CFrame.isNote

static int frame::write_frame_info(ItemRef document, ItemRef frame)

Schreibe Informationen eines Rahmens in die Datenquellen. Kann existierende Einträge im Datenbestand überschreiben. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frame ItemRef - Rahmen
frameSearchFlags int kUseDefault Auf welche Art und Weise sollen Rahmen zum überschreiben identifiziert werden?
Kombination folgender Flags:
kUseDefault (kUseTemplateId + kUseFrameLabel + kUseRecordStringId + kUseBuildByRecordStringId)
kUseTemplateId
kUseFrameLabel
kUseRecordStringId
kUseBuildByRecordStringId
kUsePlaceholderId
kUseFrameType
kUseScriptTags
kUseRecordStringId
kUseFrameUID
kUsePlaceholderInfo1
kUsePlaceholderInfo2
kUseFrameInfoId Benutzt den Wert des Rahmenetikettes (Scripttags) "frameInfoId"
kUseRecordId
kUseRecordId2
kUseRecordId3
kUseBuildByRecordId
kUseBuildByRecordId2
kUseBuildByRecordId3
documentType int kLocalDoc In welchem Dokument soll nach bereits existierenden Rahmen gesucht werden?
kLocalDoc
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
kThrowError Lässt den Rahmen unverändert und gibt eine Fehlermeldung ins logfile aus.
kUseLatest Verwendet die Rahmeninformation mit dem jüngsten Updatedatum.
#include "internal/frameinfos.h"

Den aktuellen Rahmen schreiben

int main ()
{
    return frame::write_frame_info(gDocument, gFrame);
}

v4.0.5

priint:comet InDesign® Plug-Ins, comet_pdf

frame::apply_frame_info

static int frame::apply_frame_info(
  ItemRef document,
  ItemRef frame,
  int propertyFlags,
  int searchType,
  int documentType,
  StringList keyValues = 0)

Stelle gespeicherte Rahmeninformationen aus den Datenquellen wieder her und setze den Rahmen auf diese Informationen zurück. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frame ItemRef - Rahmen
propertyFlags int - Welche Informationen sollen wiederhergestellt werden?
Kombination aus den folgenden Flags:
kApplyScriptTags
kApplyPage
kApplyLayer
kApplyXPosAbs
kApplyYPosAbs
kApplyXPosRel : Nicht möglich wenn kApplyXPosAbs gesetzt ist!
kApplyYPosRel : Nicht möglich wenn kApplyYPosAbs gesetzt ist!
kApplyWidth
kApplyHeight
kApplyFrameRotate
kApplyFrameSkew
kApplyImageXOffset : Nur bei BildRahmen
kApplyImageYOffset : Nur bei BildRahmen
kApplyImageXScale : Nur bei BildRahmen
kApplyImageYScale : Nur bei BildRahmen
kApplyImageRotate : Nur bei BildRahmen
kApplyImageSkew : Nur bei BildRahmen
kApplyObjectStyle
frameSearchFlags int kUseDefault Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Kombination folgender Flags:
kUseDefault (kUseTemplateId + kUseFrameLabel + kUseRecordStringId + kUseBuildByRecordStringId)
kUseTemplateId
kUseFrameLabel
kUseRecordStringId
kUseBuildByRecordStringId
kUsePlaceholderId
kUseFrameType
kUseScriptTags
kUseRecordStringId
kUseFrameUID
kUsePlaceholderInfo1
kUsePlaceholderInfo2
kUseFrameInfoId Benutzt den Wert des Rahmenetikettes (Scripttags) "frameInfoId"
kUseRecordId
kUseRecordId2
kUseRecordId3
kUseBuildByRecordId
kUseBuildByRecordId2
kUseBuildByRecordId3
documentType int kLocalDoc Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
kLocalDoc
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
kThrowError Lässt den Rahmen unverändert und gibt eine Fehlermeldung ins logfile aus.
kUseLatest Verwendet die Rahmeninformation mit dem jüngsten Updatedatum.
#include "internal/frameinfos.h"

Rahmengeometrie des aktuellen Rahmens wiederherstellen

#include "internal/frameinfos.h"
int main () { int propertyFlags = kApplyXPosAbs   + kApplyYPosAbs   + kApplyWidth   + kApplyHeight   + kApplyFrameRotate   + kApplyFrameSkew;
return frame::apply_frame_info(gDocument, gFrame, propertyFlags, kUseDefault, kLocalDoc); }

Alle Rahmeneigenschaften des aktuellen Rahmens wiederherstellen

#include "internal/frameinfos.h"
int main () { int propertyFlags = kApplyScriptTags   + kApplyXPosAbs   + kApplyYPosAbs   + kApplyWidth   + kApplyHeight   + kApplyFrameRotate   + kApplyFrameSkew   + kApplyImageXOffset   + kApplyImageYOffset   + kApplyImageXScale   + kApplyImageYScale   + kApplyImageRotate   + kApplyImageSkew;
return frame::apply_frame_info(gDocument, gFrame, propertyFlags, kUseDefault, kLocalDoc); }

v4.0.5

priint:comet InDesign® Plug-Ins, comet_pdf

frame::write_frame_info
itemlist::write_frame_info
itemlist::write_frame_info2
document::write_frame_info

static int frame::delete_frame_info(
  ItemRef docRef,
  ItemRef frameRef,
  int frameSearchFlags = kUseDefault,
  int documentType = kLocalDoc,
  int conflictBehavior = kThrowError)

Lösche Rahmeninfos aus den Datenquellen
Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frame ItemRef - Rahmen
frameSearchFlags int kUseDefault Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Siehe frame::apply_frame_info
documentType int kLocalDoc Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::apply_frame_info
#include "internal/frameinfos.h"

Rahmeninfos des aktuellen Rahmens aus den Datenquellen löschen

#include "internal/frameinfos.h"
int main () { if (gRun > 1) { return 0; } frame::delete_frame_info(gDocument, gFrame);
return 0; }

v4.0.5 R8650

priint:comet InDesign® Plug-Ins, comet_pdf

frame::write_frame_info
frame::apply_frame_info
itemlist::delete_frame_info
itemlist::delete_frame_info2
document::delete_frame_info

static int frame::set_frameinfoid(ItemRef frame, char* value)

Setzt das Rahmenetikett (Scripttag) mit dem Schlüssel "frameInfoId" auf den angegebenen Wert

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen für den dass Etikett gesetzt werden soll.
value String oder char* - Neuer Wert des Etiketts

v4.0.5 R8423

priint:comet InDesign® Plug-Ins

frame::apply_frame_info
frame::get_frameinfoid

static char* frame::get_frameinfoid(ItemRef frame)

Gibt den Wert des Rahmenetiketts (Scripttags) mit dem Schlüssel "frameInfoId" zurück.

Name Typ Default Beschreibung
Return char*   Wert des Etiketts
frameRef ItemRef - Rahmen für von dem das Etikett geholt werden soll.

v4.0.5 R8423

priint:comet InDesign® Plug-Ins

frame::apply_frame_info
frame::set_frameinfoid

static int frame::prepare_translations(
  ItemRef frameRef,
  int placeholderID,
  int autoStore,
  int get_record_id_func,
  IDType recordID,
  int behavior = 0)

Wie document::prepare_translations, aber es wird der Text bearbeitet, den ein gegebener Rahmen (evtl. auch nur teilweise) anzeigt.

Auch wenn der Rahmen Teil einer Textkette ist, wird der gesamte Text dieser Kette bearbeitet. Beim Bearbeiten von Rahmenlisten können dadurch Texte mehrfach bearbeitet werden.

Beachten Sie bitte, dass beim Aufruf einzelner Textketten das Beispiel aus document::prepare_translations nur ungenügend funktioniert. Dort wird ja mit der Zählung der RecordID immer bei 100 begonnen. Um das zu verhindern, sollte als RecordID hier eine globale Variable verwendet werden.

document.html#prepare_translations>Siehe document::prepare_translations

v4.0.4 R8160, 18 Jun 2015

priint:comet InDesign® Plug-Ins

document::prepare_translations

static int frame::link_with_unique_placeholder(
  ItemRef frameRef,
  int placeholderID,
  int autoStore,
  int get_record_id_func,
  IDType recordID)

Synonym für prepare_translations.

prepare_translations

static int frame::export_embedded_image(
  ItemRef frameRef,
  char* path,
  char* outpath)

Exportiere ein eingebettetes Bild in eine Bilddatei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Dokumentrahmen

0 : Aktueller Skriptrahmen
path String oder char* - Vollständiger Pfad auf für die Zieldatei. Eine bereits bestehende Zieldatei wird überschrieben.
outpath String oder char* 0 Eingebettete Bilder können unterschiedliche Formate haben. An den in path übergebenen Zielpfad kann deshalb automatisch die passende Endung angefügt werden.

0 : Keine Endung anfügen/ersetzen
allokierter Speicher : Endung an den Zielpfad anfügen/ersetzen. Die Variable enthält bei Rückkehr der Funktion den vollständigen Pfad auf die erzeugte Bilddatei.

v4.0.5 R9813, 8 Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int (
  char* outputFolder,
  char* outputName,
  int startPos = 0,
  int length = -1,
  int copyImages = 0,
  char* resultString = 0,
  char* title = 0,
  char* css = 0,
  int flags = 0)

DEPRECATED! Verwenden Sie stattdessen die Funktion html::export_.Exportiert das Textmodell eines Rahmens als HTML Datei. Stilinformationen werden in einen seperaten Unterordner im Zielordner als .css Datei abgelegt. Weitere Informationen finden Sie hier.

Name Typ Default Beschreibung
Return int   0 or ErrorCode
frameRef ItemRef 0 Rahmen
outputFolder String oder char* - Zielordner
outputName String oder char* - Name der Ausgabedatei (ohne Endung)
startPos int 0 Anfangsindex im Textmodell
length int -1 Länge im Textmodell (-1 = bis Ende)
copyImages int 0 Bilder verlinken oder kopieren? (0 = verlinken, 1 = kopieren)
resultString String oder char* 0 Ergebnis in diesen String schreiben. Wenn dieser Parameter übergeben wird, wird das Schreiben in eine Datei verhindert.
title String oder char* 0 Titel für das HTML Dokument (sonst wird der Dateiname verwendet)
css String oder char* 0 Pfad zu alternativem CSS oder String der CSS Stile enthält
flags int 0 Zusätzliche Exportoptionen
Kombination folgender Flags:
kExportUnsupported (Nicht HTML-Unterstützte Bildformate werden als .png exportiert)
kExportNonExisting (Nicht exisitierende Bilder werden aus den Previews als .png exportiert)
#include "internal/types.h"

4.0.5 R13882

priint:comet InDesign® Plug-Ins
Verwenden Sie stattdessen die Funktion html::export_.
textmodel::export_html

static int frame::has_linked_url(ItemRef frameRef = 0, char* used_url = 0)

Hat ein Rahmen ein Web-Bild? Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 : Nein oder Fehler
1 : Ja
frameRef ItemRef 0 Rahmen-Referenz

0 : aktueller Skriptrahmen
used_url char* oder String 0 Rückgabewert, URL des Bildes. Allokierter char* oder String oder 0

v.4.0.5 R19777 (24. Jul 2017)
Parameter used_url seit v4.1 R23560 (16. Aug 2018)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::linked_urls
document::linked_urls

static int frame::has_embedded_url(ItemRef frameRef)

überprüfe, ob der Rahmen ein eingebettetes Web-Bild hat. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 : Nein oder Fehler
1 : Ja
frameRef ItemRef - Gültiger Rahmenverweis

0 : aktueller Rahmen des Skriptes

v4.0.5 R19777, 20. Jul 2017

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::embedded_urls
document::embedded_urls

static int frame::link_url(
  ItemRef frameRef,
  char* url,
  int alignment = 5,
  float boundingBox = 0.0,
  int pathindex = -2,
  char* pathname = nil,
  int flags = 0,
  int cliptoFrame = 0,
  float tolerance = 0.0,
  float minPathSize = 0.0,
  float inset = 0.0,
  int alphaIndex = -2,
  char* alphaChannel = nil,
  int treshold = 255,
  int updateFlags = 16)

Platziere eine Datei einer gültigen URL in einen Rahmen. Das Bild wird zuerst vom Server geladen und dann im Dokument verlinkt. Allgemeine Infos zu Web-Bildern finden Sie hier.

Der Download wird standardmäßig ohne Progressbalken gemacht. Mit prefs::show_url_progress können Sie den Progressbalken für URL-Downloads aktivieren.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen, in den das Bild eingefügt werden soll 0 : aktueller Skriptrahmen
url char* - Gültige URL (http, https, ftp, ftps)
alignment int kMiddle siehe Bildpositionen
boundingBox float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
⇨ Freistellpfad
pathindex int 0 0-basierter Index des Freistellpfades

kIgnoreClipping : Freistellpfad unverändert lassen.
kResetClipping : Freistellpfad beim Einfügen des Bildes zurücksetzen.
-1 : pathname verwenden
≥ 0 : 0-basierter Pfadindex. Pfadindexe > 0 werden von comet_pdf ignoriert und stattdessen der Wert pathname verwendet.
pathname String oder char* "" Name des Freistellpfades

Ist pathindex ≥ 0, wird diese Angabe unter InDesign® ignoriert.
⇨ Konfiguration des verwendeten Pfades. Die Werte werden auch bei Alphakanälen verwendet.
flags int 0 Parameter für die Art der Bildfreistellung. Die Werte werden als Bitfeld addiert.

kInvertFlag Invert the resulting path by combining with a path equal to the bounds of the image.
kAllowHolesFlag For edge detection, do we remove the holes or leave them in.
kRestrictToFrameFlag Bild auf den Bildrahmen beschneiden.

Der Parameter wird von comet_pdf nicht angewendet.
cliptoFrame int 0 Soll der Freistellpfad als Rahmenbegrenzung verwendet werden?

0 : Bestehenden Rahmen behalten
1 : Rahmen ändern
tolerance float 0.0 A tolerance value in the range of 0.0 to 10.0 specifying how close to the original path we must be if we smooth the path. 0.0 indicates a perfect match. Smoothing may simplify the path, reducing the number of points.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
minPathSize float 0.0 Subpaths smaller than the minPathSize will be deleted.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
inset float 0.0 How far to inset the path. Given in points.

Der Parameter wird von Indesign® Server und comet_pdf nicht angewendet.
⇨ Alphakanal
alphaIndex int 0 0-basierter Index des Alphakanales, siehe image::alpha_channel_index

kIgnoreClipping : Alphakanal unverändert lassen.
kResetClipping : Alphakanal beim Einfügen des Bildes zurücksetzen.
-1 : Verwenden den Wert aus alphaChannel ≥ 0 : 0-basierter Index des Alphakanales. Werte > 0 werden von comet_pdf ignoriert; statdessen wird die Angabe aus alphaChannel verwdendet.
alphaChannel String or char* "" Name des Alphakanals

Wird ignoriert, wenn der Kanal bereits durch seinen Index definiert, also alphaIndex ≥ 0 ist .
treshold int 255 Schwellwert für Alphakanal.

0-255 : Der Alphakanal wird nach dem Bildimport angewendet. Das Ergebnis entspricht dem Menü Objekt -> Beschneidungspfad -> Optionen... und das ist, nun ja, ... .

> 255 : Empfohlen! Wenden Sie den Alphakanal direkt beim Importieren des Bildes an. Alternativ dazu können Sie auch den Wert kAllowHolesFlag zu src{flags} hinzufügen.
⇨ Update Flags
updateFlags int 0 Nur bei Web-Bildern (URLs)

16 : Existiert die lokale Bilddatei bereits, wird sie ohne weitere Prüfung verwendet.
#include "internal/types.h"
int main ()
{
    String	str 	= string::alloc ();
    int 	result;
if (!system::shiftkey ()) { frame::gettext (gFrame, str); result = frame::link_url (gFrame, string::get (str), 9, 0.0); string::release (str); } else { frame::check_url_link (gFrame); }
return 0; }

v.4.0.5 R19777 (24. Jul 2017)
Parameter updateFlags seit v4.3 R34200, 23. Jan 2024

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::has_linked_url
frame::has_embedded_url, frame::check_url_link
frame::get_url
prefs::show_url_progress

static int frame::embed_url(
  ItemRef frameRef,
  char* url,
  int alignment = 5,
  float boundingBox = 0.0,
  char* formatString = 0)

MAGIC  Einbetten eines über eine URL definierten Bildes. Allgemeine Infos zu Web-Bildern finden Sie hier. Bilder mit Internet-URLs

behalten dabei eine Verbindung zum Originalbild und können jederzeit aktualisiert oder wiederhergestellt werden. Bilder mit lokalen URLs (file:) werden wie in frame::embed_image ohne Bezug zum Original eingebettet.

Hat ein Rahmen bereits eine Bild-URL, kann die Funktion ohne Angabe der URL aufgerufen werden. Das ist hilfreich bei entfernten Aktualisierungen des Dokumentes:

  1. Benutzer 1 bettet das Bild am Ort A ein. Dafür kennt er natürlich die Bild-URL.
  2. Benutzer 1 schickt das Dokument an Benutzer 2 am Ort B.
  3. Benutzer 2 aktualisiert die Bilder ohne die Bild-URLs zu kennen.

Vor dem Versenden der Datei können die Bilder der Bild-URL auch aus dem Dokument entfernt werden. Das verringert die Dateigröße - aber dann müssen am Ziel natürlich alle Bilder neu geladen werden.

Beim Aktualisieren des Bildes werden Position, Drehung, Skalierung und Verschränkung des Bildes wieder hergestellt, wenn das aktualisierte Bild die gleichen Proportionen hat. Sonst wird das aktualisierte Bild gemäß den Platzierungshinweisen des Aufrufes neu platziert.

Der Download wird standardmäßig ohne Progressbalken gemacht. Mit prefs::show_url_progress können Sie den Progressbalken für URL-Downloads aktivieren.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Gültiger Rahmenverweis. Ist der Rahmen kein Grafikrahmen, wird er zu einem Grafikrahmen konvertiert.

0 : aktueller Rahmen des Skriptes
url char* - Gültige URL des Bildes

"" : Enthält der Rahmen bereits eine Bild-URL, muß die URL nicht mehr angegeben werden, um das Bild zu überprüfen und mglw. neu zu laden. In diesem Fall kann die im Rahmen hinterlegte URL zur Identifizierung des Bildes verwendet werden.
alignment int kMiddle Siehe Bildpositionen. Die Positionierungen kConstrainToCell, kConstrainToCellWidth und kConstrainToCellHeight haben keine Wirkung.
boundingBox float kFitBigContentProp Angabe zur Größe des Bildes im Rahmen. Angabe in Punkten.

kFitBigContentProp : Bild proportional in den Rahmen einpassen. Ist das Bild kleiner als der Rahmen, wird es nicht verändert.

>0.0 : Bild proportional in einen quadratischen Rahmen dieser Größe einpassen. Ist das Bild kleiner, wird es nicht verändert.

<0.0 : Bild proportional in einen quadratischen Rahmen des Betrages dieser Größe einpassen. Ist das Bild kleiner, wird es entsprechend vergössert.
formatString char* 0 Der Parameter wird nur von comet_pdf verwendet. Format des Bildes als Dateiendung (z.B. "png"). Die Angabe ist nur bei späteren Aufrufen der Funktion export_embedded_image von Bedeutung.
#include "internal/types.h"

Einbetten eines URL-definierten Bildes. Die URL wird dabei als Text im Rahmen angegeben. Ist das Bild einmal eingebettet, kann mit gehaltener Shift-Taste der aktuelle Status des Bildes erfragt werden.

#include "internal/types.h"
int main () { String str = string::alloc (); int result; if (!system::shiftkey ()) { frame::gettext (gFrame, str); result = frame::embed_url (gFrame, string::get (str), 9, 0.0, 0); string::release (str); } else { frame::check_embedded_url (gFrame); }
return 0; }

v4.0.5 R19777, 20. Jul 2017

priint:comet InDesign® Plug-Ins, comet_pdf

embed_file
has_embedded_url
remove_url_link
itemlist::embed_urls

static int frame::check_url_link(ItemRef frameRef, int* state)

überprüfe, ob der Link eines Web-Bildes noch aktuell ist. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Rahmen-Referenz 0 : aktueller Skriptrahmen
state int* - Enthält nach Ausführung den Status des Web-Bildes

-1: Fehler bei der Statusüberprüfung
0: Ok
1: Veraltet, update nötig

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::check_url_links
document::check_url_links

static int frame::update_url_link(ItemRef frameRef, int flags)

Aktualisieren eines Web-Bildes. Allgemeine Infos zu Web-Bildern finden Sie hier. Beachten Sie bitte auch die Regeln für die Bildplatzierung von Web-Bildern.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Rahmen, der aktualisiert werden soll
flags int 0 1: Progressbalken zeigen

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::update_url_links
document::update_url_links

static int frame::remove_url_link(ItemRef frameRef)

Entferne den Verweis auf ein Web-Bild aus dem Rahmen. Das Bild des Rahmens bleibt dabei bestehen, lediglich der Verweis auf die Web-Adresse des Bildes (URL) und zugehörige Informationen werden entfernt. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemRef - Gültige Rahmenreferenz

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

itemlist::remove_url_links
document::remove_url_links

static char* frame::get_url(ItemRef frameRef = 0)

Hole die Web-Adresse (URL), die in einem Rahmen hinterlegt ist. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return char*   Web-Adresse (URL) des Bildes

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef - Rahmen-Referenz 0 : aktueller Skriptrahmen

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static char* frame::get_url_importresult(ItemRef frameRef = 0)

Hole das letzte Importergebnis eines Web-Bildes. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return char*   Letztes Importergebnis.

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static int frame::get_url_state(ItemRef frameRef = 0, int doCheck = 1)

Ermittle den Status eines Web-Bildes. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 : Okay
1 : Bild am Server geändert
2 : Bild nicht verfügbar
frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
doCheck int 1 Status vorher prüfen?

0 : Nein
1 : Ja
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static int frame::get_url_alignment(ItemRef frameRef = 0)

Mit welchem Platzierungshinweis wurde das Web-Bild eingefügt? Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   Ursprüngliches Alignment des Bildes
frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static char* frame::get_url_filedate(ItemRef frameRef = 0)

Im Web-Bild hinterlegtes Datum der Originaldatei als Timestamp. Der Timestamp der Original-Datei kann sich inzwischen geändert haben. Um den aktuellen Timestamp zu erhalten, rufen Sie vorher bitte die Funktion get_url_state. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return char*   Timestamp der Originaldatei als char*.

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static char* frame::get_url_importdate(ItemRef frameRef = 0)

Wann wurde das Web-Bild das letzte Mal importiert?
Format: DD.MM.YYYY HH:MM:SS
z.B. 03.12.1986 14:32:47

Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return char*   Zeitpunkt des letzten Imports

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

static float frame::get_url_sizeinfo(ItemRef frameRef = 0)

Maximalgröße, mit der das URL-Bild ursprünglich eingefüfgt wurde. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return float   Maximalgröße, mit der das Web-Bild ursprünglich eingefügt wurde.
frameRef ItemRef 0 Rahmen-Referenz 0 : aktueller Skriptrahmen
int main ()
{
    if (frame::has_linked_url (gFrame) || frame::has_embedded_url (gFrame))
    {
        showmessage ("Frame %d\nURL\t\t: %s\nState\t\t: %d\nAlign\t\t: %d\nSzInfo\t\t: %f\nTimestamp\t: %s\nImported\t\t: %s\nResult\t\t: %s",
         			item::getint (gFrame),
         			frame::get_url (gFrame),
         			frame::get_url_state (gFrame),
         			frame::get_url_alignment (gFrame),
         			frame::get_url_sizeinfo (gFrame),
         			frame::get_url_filedate (gFrame),
         			frame::get_url_importdate (gFrame),
         			frame::get_url_importresult (gFrame));
    }
    else
    {
        showmessage ("No Web Image in frame");
    }
    return 0;
}

v.4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_image_url_folder
document::check_url_links
document::update_url_links
frame::get_url
frame::has_linked_url
frame::has_embedded_url

static int frame::doclink::get(ItemRef fr, ItemRef lk)

Hole die Referenz der Rahmenverknüpfung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

noImageErr (101) : Der Rahmen ist kein Bild
fr ItemRef - Gültige Rahmenreferenz
lk ItemRef - Allokierte Referenz für das Ergebnis.

In InDesign® ist diese Referenz kein Dokumentrahmen. Sie können das Ergebnis nur in den anderen doclink-Methoden verwenden. Die Verwendung in anderen Rahmen-Methoden führt zu Fehlern in der Ausführung! Um den eigentlichen Dokumentrahmen zu erhalten, verwenden Sie die Funktion frame::doclink::get_frame.

In comet_pdf enthält die Referenz im Erfolgsfall den Eingaberahmen fr und kann neben den doclink-Methoden auch in allen anderen Rahmenfunktionen direkt verwendet werden.
#pragma plain
#include "internal/types.h"
int main () { ItemList lks = itemlist::alloc (); ItemRef lk = item::alloc (); ItemRef fr = item::alloc (); char p [5000]; int i;
document::get_links (0, 0, "", lks); wlog ("", "%d links found\n", itemlist::length (lks));
for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i); frame::doclink::get_frame (lk, fr); frame::doclink::get_path (lk, p); wlog ("", "Link %d\t-> %d [type = %d, state = %d, path = '%s']\n",   item::getint (lk),   item::getint (fr),   frame::doclink::get_type (lk),   frame::doclink::get_state (lk),   p); }
return 0; }

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

doclink::get_frame
document::get_links
comet.CFrame.getDocLink

static int frame::doclink::get_frame(ItemRef lk, ItemRef fr)

Hole den Rahmen einer Verknüpfung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
lk ItemRef - Gültige Referenz einer Verknüpfung
fr ItemRef - Allokierte Rahmenreferenz für das Ergebnis

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

doclink::get
document::get_links
comet.CDocLink.getFrame

static int frame::doclink::get_state(ItemRef lk)

Ermittle den Status einer Rahmen-Verknüpfung.

Name Typ Default Beschreibung
Return int   Status der Verknüpfung

-1 : Fehler
0 : aktuell
1 : nicht aktuell
2 : eingebettet und aktuell
3 : cached und aktuell
4 : enthalten und aktuell
5 : Verknüpfung fehlt
6 : Verknüpfung kann vom Benutzer nicht verwendet werden
7 : Status wartet auf Aktualisierung
8 : Status kann nicht ermittelt werden

Von comet_pdf werden nur die Stati -1 (Fehler), 0 (Bilddatei existiert), 2 (Eingebettet) und 5 (Bilddatei fehlt) unterstützt.
lk ItemRef - Gültige Referenz einer Verknüpfung
#pragma plain
#include "internal/types.h"
int main () { ItemList lks = itemlist::alloc (); ItemRef lk = item::alloc (); ItemRef fr = item::alloc (); char p [5000]; int i;
document::get_links (0, 0, "", lks); wlog ("", "%d links found\n", itemlist::length (lks));
for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i); frame::doclink::get_frame (lk, fr); frame::doclink::get_path (lk, p); wlog ("", "Link %d\t-> %d [type = %d, state = %d, path = '%s']\n",   item::getint (lk),   item::getint (fr),   frame::doclink::get_type (lk),   frame::doclink::get_state (lk),   p); }
return 0; }

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links
comet.CDocLink.getState

static int frame::doclink::get_type(ItemRef lk)

Ermittle den Typ einer Rahmen-Verknüpfung. Neben Verknüpungen zu Bildern können in InDesign® auch Verknüpfungen zu Textrahmen erstellt werden, Verwenden Sie dazu das Menü Bearbeiten -> Platzieren und Verknüpfen.

Verknüpfungen zu Textrahmen werden von comet_pdf nicht unterstützt!

Name Typ Default Beschreibung
Return int   Typ der Verknüpfung

-1 : Fehler
0 : Intern
1 : Bild
2 : Textrahmen
lk ItemRef - Gültige Referenz einer Verknüpfung
#pragma plain
#include "internal/types.h"
int main () { ItemList lks = itemlist::alloc (); ItemRef lk = item::alloc (); ItemRef fr = item::alloc (); char p [5000]; int i;
document::get_links (0, 0, "", lks); wlog ("", "%d links found\n", itemlist::length (lks));
for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i); frame::doclink::get_frame (lk, fr); frame::doclink::get_path (lk, p); wlog ("", "Link %d\t-> %d [type = %d, state = %d, path = '%s']\n",   item::getint (lk),   item::getint (fr),   frame::doclink::get_type (lk),   frame::doclink::get_state (lk),   p); }
return 0; }

v4.1.6 R26314, 22. Nov 2019
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links
comet.CDocLink.getType

static int frame::doclink::get_path(ItemRef lk, char* fullpath)

Ermittle den Zielpfad einer Rahmen-Verknüpfung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
lk ItemRef - Gültige Referenz einer Verknüpfung
fullpath String oder char* - allokierter Speicher für den vollständigen Pfad der Verknüpfung

Das Ergebnis ist vom Typ des Links abhängig, siehe doclink::get_type:
  1. (Intern) : UID des Textrahmen (als char* oder String!), nur InDesign®
  2. (Bild) : Vollständiger Pfad zum verknüpften Bild
  3. (Textrahmen) : Leer (""), nur InDesign®
Eingebettete Bilder mit Verweis auf ihre Originaldatei liefern den Pfad dieser Originaldatei.

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links
comet.CDocLink.getPath

static int frame::doclink::update(ItemRef lk)

Aktualisieren des Links durch erneuten Import der Daten. Das Update verwendet die zuletzt verwendete Einstellung zum Importieren der Daten. Sind die Einstellungen des Importfilters nicht mehr geeignet und der Import schlägt fehl, wird der Standard-Import verwendet und ein neuer Importfilter ausgewählt.

Unter comet_pdf ist der Befehl verfügbar, führt aber nichts aus.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
lk ItemRef - Gültige Referenz einer Verknüpfung
#pragma plain
#include "internal/types.h"
int main () { ItemList lks = itemlist::alloc (); ItemRef lk = item::alloc (); ItemRef fr = item::alloc (); char p [5000]; int i;
document::get_links (0, 0, "", lks); wlog ("", "%d links found\n", itemlist::length (lks));
for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i); frame::doclink::get_frame (lk, fr); frame::doclink::get_path (lk, p); wlog ("", "Link %d\t-> %d [type = %d, state = %d, path = '%s']\n",   item::getint (lk),   item::getint (fr),   frame::doclink::get_type (lk),   frame::doclink::get_state (lk),   p); }
return 0; }

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links
comet.CDocLink.update

static int frame::doclink::relink(ItemRef lk, char* path)

Lade ein neues Bild in den Rahmen eines Linkverweises. Die Funktion entspricht frame::image mit dem Rahmen des doclink-Objektes und der Platzierung kPlaceLikeExisting.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
lk ItemRef - Gültige Referenz einer Verknüpfung
fullpath char* oder String - Vollständiger Pfad der Bilddatei

v4.1 R24141, 20. Nov 2018
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links
comet.CDocLink.relink

static int frame::doclink::copy_to_folder(
  ItemRef lk,
  char* destPath,
  int relink = 0)

Kopiert die Datei eines Links in den angegebenen Ordner und verlinkt den Rahmen auf Wunsch mit der exportierten Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

-1122 : kCannotCopyLinkToFolderErr
lk ItemRef - Gültige Referenz einer Verknüpfung
destPath String oder char* - vollständiger Pfad des Zielordners. Existiert der Ordner nicht, wird er angelegt.
relink int 0 Rahmenverknüpfung aktualisieren?

0 : nein, unverändert lassen
1 : Rahmenverknüpfung so ändern, dass sie auf die kopierte Datei zeigt.
int main ()
{
    ItemList  		lks    	= itemlist::alloc ();
    ItemRef      	lk     	= item::alloc ();
    int           	i;
document::get_links (0, 0, "", lks);
for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i); frame::doclink::copy_to_folder (lk, "$DESKTOP/aaabbb", 1); }
return 0; }

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_links

static int frame::note::get_dest(
  ItemRef nt,
  int* type = 0,
  int* dest = 0)

Ermittle Typ und Ziel einer Comet-Notiz.

Die Notiz wird über ihre Dokument-Referenz definiert (und nicht über ihre ID).doc In InDesign® entspricht diese Referenz dem Dokumentrahmen. In comet_pdf zeigt die Referenz direkt auf das Notiz-Objekt (und darf daher auch keinesfalls in Rahmenfunktionen verwendet werden!). Gültige Referenzen auf Comet-Notizen erhalten Sie mit Hilfe der Funktionen itemlist::~_notes.

Über die Bearbeitung von Notizen über ihre ID siehe hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
nt ItemRef - Gültige Notiz-Referenz. Notizen können mit den Funktionen itemlist::~_notes geholt werden.
type int* 0 Bei erfolgreicher Ausführung enthält die Variable den Typ der Notiz:

kNoteTypePage
kNoteTypePageIndex
kNoteTypeGroup
kNoteTypeFrame
dest int* 0 Bei erfolgreicher Ausführung enthält die Variable das Ziel der Notiz als Ganzzahl.

Mit item::define können Sie das Ergebnis für Rahmen- und Seitennotizen zu einem ItemRef machen.
#include "internal/types.h"

Hole alle Comet-Notizen eines Dokumentes.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i, tyte, dest, result; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::doc_notes (); itemlist::select (notes);
for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::get_dest (fr, &type, &dest); wlog ("", "Note %d : Type = %d, Dest = %d\n", item::getint (fr), type, dest); }
itemlist::release (notes); item::release (fr);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::doc_notes
itemlist::page_notes
itemlist::group_notes
itemlist::frame_notes
frame::note::change_dest
frame::note::remove
document::notes::find
document::notes::delete_note

static int frame::note::change_dest(
  ItemRef nt,
  int type,
  int dest)

Ändere das Ziel einer Comet-Notiz. Die Funktion prüft vor der Zieländerung, ob das Ziel existiert und gibt bei fehlendem Ziel einen Fehlercode zurück. Nach erfolgreicher Neuverknüpfung wird die Notiz bei Bedarf auf die richtige Seite verschoben und neu am Ziel ausgerichtet.

Die Notiz wird über ihre Dokument-Referenz definiert (und nicht über ihre ID). In InDesign® entspricht diese Referenz dem Dokumentrahmen. In comet_pdf zeigt die Referenz direkt auf das Notiz-Objekt (und darf daher auch keinesfalls in Rahmenfunktionen verwendet werden!). Gültige Referenzen auf Comet-Notizen erhalten Sie mit Hilfe der Funktionen itemlist::~_notes.

Über die Bearbeitung von Notizen über ihre ID siehe hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
nt ItemRef - Gültige Notiz-Referenz. Notizen können mit den Funktionen itemlist::~_notes geholt werden.
type int - Neuer Typ der Notiz. Folgende Angaben sind erlaubt:

kNoteTypePage
kNoteTypePageIndex
kNoteTypeGroup
kNoteTypeFrame
dest int - Neues Verweisziel. Beachten Sie bitte, dass immer eine Ganzzahl erwartet wird.

Für Rahmen-Notizen (kNoteTypeFrame) erhalten Sie die entsprechende Angabe mit Hilfe von item::getint.

Für Seiten-Notizen (kNoteTypePage) erhalten Sie die entsprechende Angabe mit Hilfe von page::get_uid.

Seitenindexe (kNoteTypePageIndex) werden 1-basiert angegeben.
#include "internal/types.h"

Verschiebe alle Notizen der Cometgruppe des aktuellen Rahmens an die Cometgruppe 25185.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::group_notes (); for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::change_dest (fr, kNoteTypeGroup, 25185); }
itemlist::select (notes);
return 0; }

Verschiebe alle seitenindizierten Comet-Notizen auf Seite 1. Dann mach 'irgendetwas' mit Seitenlöschen etc. Lege danach neue Seiten an. Und verschiebe zum Schluß die Notizen wieder auf die Seite, wo sie am Anfang lagen. Fehlt die Seite inzwischen, wird die Notiz gelöscht.

#include "internal/types.h"
int change_pageindex (ItemList notes, int pindex) { ItemRef fr = item::alloc (); int n, result;
for (n = 0; n < itemlist::length (notes); n++) { itemlist::get (notes, fr, n); result = frame::note::change_dest (fr, kNoteTypePageIndex, pindex); if (result != 0) { frame::note::remove (fr); } }
item::release (fr);
return 0; } int main () { int pages = document::pages (); int p; ItemListList allNotes = itemlistlist::alloc (); ItemList notes;
if (gRun > 1) return 0; if (pages == 1) return 0;
document::notes::show ();
// Page 1 will certainly not be deleted. // So move all notes to page index 1 // for (p = 2; p <= pages; p++) { notes = itemlist::page_notes (0, p, kNoteTypePageIndex); itemlistlist::append (allNotes, notes); // Remember those notes change_pageindex (notes, 1); }
// For testing purposes remove all pages except the first one // for (p = 2; p <= pages; p++) { page::remove (2); }
// Then create one page less than before // page::create (pages-2);
// And move back all notes to their old pages. // Superfluous notes are deleted. // p = 2; for (notes = itemlistlist::first (allNotes); notes; notes = itemlistlist::next (allNotes)) { change_pageindex (notes, p); itemlist::release (notes); // We don't need this list anymore p++; }
// Clean up // itemlistlist::release (allNotes);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::doc_notes
itemlist::page_notes
itemlist::group_notes
itemlist::frame_notes
frame::note::get_dest
frame::note::remove
document::notes::find
document::notes::delete_note

static int frame::note::remove(ItemRef nt)

Entferne eine Notiz aus dem Dokument.

Die Notiz wird über ihre Dokument-Referenz definiert (und nicht über ihre ID). In InDesign® entspricht diese Referenz dem Dokumentrahmen. In comet_pdf zeigt die Referenz direkt auf das Notiz-Objekt (und darf daher auch keinesfalls in Rahmenfunktionen verwendet werden!). Gültige Referenzen auf Comet-Notizen erhalten Sie mit Hilfe der Funktionen itemlist::~_notes.

Über die Bearbeitung von Notizen über ihre ID siehe hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
nt ItemRef - Referenz der zu löschenden Notiz. Notizen können mit den Funktionen itemlist::~_notes geholt werden.

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::doc_notes
itemlist::page_notes
itemlist::group_notes
itemlist::frame_notes
frame::note::get_dest
frame::note::change_dest
document::notes::find
document::notes::delete_note

Preconditions
#include "internal/types.h"

Das folgende Beispiel zeigt einige der typischen frame-Befehle. Das Bild zeigt das Ergebnis der Skriptausführung.

#include "internal/types.h"
main () { ItemRef frame = item::alloc (); ItemRef frame2 = item::alloc (); char layerName[256]; char tt[2000]; int result;
color::define ("Dark orange", 255, 90, 0); color::define ("Orange", 255, 127, 0); color::define ("Light orange", 255, 190, 0);
result = frame::create_textframe (   frame,   10, 10, 200, 200,   document::page (),   layer::name (2, layerName)); if (result != 0) { showmessage ("Error %d",result); item::release (frame); return; }
frame::star (frame, 21, 10); frame::color (frame, "Orange"); frame::stroke (frame, "Orange", 1.5); frame::shadow (frame, "Dark orange",   50.0, 1, // tint, blendmode   8.3, 9.3,// xd, yd   3.0); // blur
result = frame::create_textframe (   frame2,   10, 210, 300, 400   document::page (),   layer::name (2, layerName));
frame::color (frame2, "Light orange"); frame::stroke (frame2, "Orange", 12.3); frame::shadow (frame2, "Dark orange",   50.0, 1, // tint, blendmode   8.3, 9.3,// xd, yd   3.0); // blur frame::vignette (frame2, 3, 10.0, 1, 100.0, 100.0);
frame::link (frame, frame2);
tt = "%!TT<ParaStyle:description>"; tt += "The globe thistle in Latin is called "; tt += "<CharStyle:batch name><w2:1,3, -22, -33>X</w2>"; tt += "<CharStyle:> And this is how is looks : ";
tt += "#<in: 100.0, 100.0, 11, 3, -66, -99>Trulla du!</in>#";
tt += "*<in: 100.0, 100.0>"; tt += "%!TT<ParaStyle:description>"; tt += "Wie sagt der Unterrahmen zr Wegwarte? "; tt += "<CharStyle:batch name><w2:1,1, -22, -33>X</w2>! <CharStyle:>"; tt += "!Ach so, na klar!"; tt += "</in>";
tt += "*Sch<0x00F6>n wa?";
frame::insert (frame, tt, 0, true);
item::release (frame); item::release (frame2);
return 0; }

Das Skript löst die Gruppierung eines Rahmens auf und erzeugt neben der Gruppe einen neuen Rahmen. Die alten Rahmen und der neu erzeugte Rahmen werden danach wieder gruppiert. Das Skript verzichtet fast vollständig auf das Abfangen von Fehlern. Das ist nur der übersichtlichkeit halber. Wenn Sie das Skript verwenden wollen, sollten Sie sich die kleine Mühe machen, und die Resultcodes der Aufrufe abfragen. Die Abbildungen zeigen den Effekt des Skriptes :

 ⇒ 

#include "internal/types.h"
int main () { ItemRef groupRef = item::alloc (); ItemRef newframe = item::alloc (); ItemList grouped = itemlist::alloc (); float l, t, r, b; char lay[256];
if (gRun > 1) return 0;
if (frame::get_group (gFrame, groupRef) != 0) { showmessage ("Rahmen nicht gruppiert."); return 0; } frame::ungroup (groupRef, grouped);
itemlist::bbox (grouped, &l, &t, &r, &b); frame::create2 (   newframe,   kStar,   r+10.0, t, r+130.0, t+120.0,   page::get (gFrame),   frame::get_layer (gFrame, lay),   0, // Spaltenanzahl   0, // vertikale Spalten   0.0, // Spaltenabstand   5, 40);
frame::color_rgb (newframe, 255, 0, 0, 0); frame::stroke_rgb (newframe, 0, 0, 0, 5.0); itemlist::append (grouped, newframe);
frame::group (grouped, gOutFrame);
return 0; }

Seit
Plugin Version 1.0.10
Letzte Änderung
30.06.2025, 17:48 Uhr
Autor
Paul Seidel, Danke Joseph!

Alphabetic index HTML hierarchy of classes or Java