ISlideShow: Unterschied zwischen den Versionen
Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 12: | Zeile 12: | ||
procedure Replace(const OldObject, NewObject: [[ISlideShowObject]]); | procedure Replace(const OldObject, NewObject: [[ISlideShowObject]]); | ||
function LoadASO(const Filename: string): [[ISlideShowObject]]; | function LoadASO(const Filename: string): [[ISlideShowObject]]; | ||
+ | function ResolveFilename(const RelativeFilename: string): string; | ||
function GetRatioX: Integer; | function GetRatioX: Integer; | ||
function GetRatioY: Integer; | function GetRatioY: Integer; | ||
Zeile 59: | Zeile 60: | ||
</code> | </code> | ||
+ | * Dateinamen auflösen (relativ nach absolut, wobei das Verzeichnis der Diashow mit einbezogen wird) | ||
+ | <code> | ||
+ | function ResolveFilename(const RelativeFilename: string): string; | ||
+ | </code> | ||
= Beispiel = | = Beispiel = | ||
Zeile 68: | Zeile 73: | ||
− | * Eine ASO-Datei laden, Platzhalterbilder mit richtigen Dateinamen versehen und das aktuelle Objekt der Diashow gegen ASO austauschen. | + | * Dieses Beispiel stellt die klassischen Form eine Intelligenten Vorlage dar. Eine ASO-Datei laden, Platzhalterbilder mit richtigen Dateinamen versehen und das aktuelle Objekt der Diashow gegen ASO austauschen. Dazu bedarf es folgender Voraussetzungen: |
+ | ** Eine beliebige Animation/Collage etc. wird in der DiaShow gestaltet. Das auszutauschende Bild und Text bekommt auch Zugriffsnamen (hier "background_image" und "title"). Diese Animation wird in die Toolbox gezogen, sodass eine ASO-Datei daraus entsteht. Die ASO wird dann an einen Ort kopiert, auf den Scripte Zugriff haben. | ||
+ | ** In der DiaShow wird ein Blackbox-Objekt mit z.B. einem Bild und einem Text erzeugt. Bild und Text bekommen einen "Zugriffsnamen" (hier "image" und "text"). Diesem Blackboxobjekt wird das hier gezeigte Script zugeordnet. Auch daraus wird eine ASO-Datei erzeugt. Die Vorlage kann nun durch Einfügen dieser ASO-Datei vom Anwender benutzt werden und stellt die "Benutzeroberfläche" für die Animation dar. Denn hieraus wird nur der Bilddateiname und der Textanteil übernommen und in die eigentliche Animation kopiert. | ||
<code> | <code> | ||
procedure OnExpandSlideShow(SlideShowObject: ISlideShowObject); | procedure OnExpandSlideShow(SlideShowObject: ISlideShowObject); | ||
begin | begin | ||
− | var ASO: ISlideShowObject = LoadASO('meine_animation.aso'); | + | var ASO: ISlideShowObject = SlideShow.LoadASO('meine_animation.aso'); |
+ | // SlideShowObject ist das Blackbox-Objekt (also die "Benutzeroberfläche") | ||
+ | // Aufgabe: Übertrage Nutzereingaben aus der "Benutzeroberfläche" in die | ||
+ | // Animation. Die Animation wird durch die ASO repräsentiert. | ||
Inject.Filename.From(SlideShowObject).FindByName('image').To(ASO).FindByName('background_image').Execute; | Inject.Filename.From(SlideShowObject).FindByName('image').To(ASO).FindByName('background_image').Execute; | ||
+ | Inject.Text.From(SlideShowObject).FindByName('text').To(ASO).FindByName('title').Execute; | ||
+ | |||
+ | [...] // weitere "Intelligenz" anwenden, z.B. Timing anpassen, Pfade berechnen etc. | ||
+ | // die nun konfigurierte ASO in die Show einfügen und damit die | ||
+ | // "Benutzeroberfläche" ersetzen. | ||
SlideShow.Replace(SlideShowObject, ASO); | SlideShow.Replace(SlideShowObject, ASO); | ||
end; | end; |
Aktuelle Version vom 4. September 2013, 15:28 Uhr
ISlideShow
function GetCount: Integer;
procedure SetItem(Index: Integer; Item: ISlideShowObject);
function GetItem(Index: Integer): ISlideShowObject;
function Remove(SlideShowObject: ISlideShowObject): Boolean;
procedure InsertBefore(BeforeThis, SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure InsertAfter(AfterThis, SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure InsertAsChild(Parent: ISlideShowObject; SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure CopyContent(SrcContainer, DstContainer: ISlideShowObject);
procedure MoveContent(SrcContainer, DstContainer: ISlideShowObject);
procedure Replace(const OldObject, NewObject: ISlideShowObject);
function LoadASO(const Filename: string): ISlideShowObject;
function ResolveFilename(const RelativeFilename: string): string;
function GetRatioX: Integer;
function GetRatioY: Integer;
end;
var SlideShow: ISlideShow;
Über ein ISlideShow-Objekt kann eine Diashow bearbeitet werden, d.h. es können Objekte eingefügt, gelöscht, etc. werden.
Über die globale Variable SlideShow
steht immer ein SlideShow-Objekt zur Verfügung, dass die aktuelle Diashow referenziert.
Methoden
- Anzahl der Toplevel-Objekte der Diashow
function GetCount: Integer;
- Seitenverhältnis der Show abfragen (X:Y)
function GetRatioX: Integer;
function GetRatioY: Integer;
- Objekte einfügen, Kopieren oder verschieben
procedure InsertBefore(BeforeThis, SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure InsertAfter(AfterThis, SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure InsertAsChild(Parent: ISlideShowObject; SlideShowObject: ISlideShowObject; Offset: Integer = 0; AsNewTrack: Boolean = False);
procedure CopyContent(SrcContainer, DstContainer: ISlideShowObject);
procedure MoveContent(SrcContainer, DstContainer: ISlideShowObject);
- Ein Objekt gegen ein anderes Ersetzen. Das Neue Objekt darf noch nicht Teil der Diashow sein, sondern ist z.B. ein neu erzeugtes oder ein ober LoadASO geladenes.
procedure Replace(const OldObject, NewObject: ISlideShowObject);
- Eine Toolboxanimation laden.
function LoadASO(const Filename: string): ISlideShowObject;
- Dateinamen auflösen (relativ nach absolut, wobei das Verzeichnis der Diashow mit einbezogen wird)
function ResolveFilename(const RelativeFilename: string): string;
Beispiel
- Fügt hinten an die Show ein (leeres) Bildobjekt an
SlideShow.InsertAfter(nil, CreatePicture);
- Dieses Beispiel stellt die klassischen Form eine Intelligenten Vorlage dar. Eine ASO-Datei laden, Platzhalterbilder mit richtigen Dateinamen versehen und das aktuelle Objekt der Diashow gegen ASO austauschen. Dazu bedarf es folgender Voraussetzungen:
- Eine beliebige Animation/Collage etc. wird in der DiaShow gestaltet. Das auszutauschende Bild und Text bekommt auch Zugriffsnamen (hier "background_image" und "title"). Diese Animation wird in die Toolbox gezogen, sodass eine ASO-Datei daraus entsteht. Die ASO wird dann an einen Ort kopiert, auf den Scripte Zugriff haben.
- In der DiaShow wird ein Blackbox-Objekt mit z.B. einem Bild und einem Text erzeugt. Bild und Text bekommen einen "Zugriffsnamen" (hier "image" und "text"). Diesem Blackboxobjekt wird das hier gezeigte Script zugeordnet. Auch daraus wird eine ASO-Datei erzeugt. Die Vorlage kann nun durch Einfügen dieser ASO-Datei vom Anwender benutzt werden und stellt die "Benutzeroberfläche" für die Animation dar. Denn hieraus wird nur der Bilddateiname und der Textanteil übernommen und in die eigentliche Animation kopiert.
procedure OnExpandSlideShow(SlideShowObject: ISlideShowObject);
begin
var ASO: ISlideShowObject = SlideShow.LoadASO('meine_animation.aso');
// SlideShowObject ist das Blackbox-Objekt (also die "Benutzeroberfläche")
// Aufgabe: Übertrage Nutzereingaben aus der "Benutzeroberfläche" in die
// Animation. Die Animation wird durch die ASO repräsentiert.
Inject.Filename.From(SlideShowObject).FindByName('image').To(ASO).FindByName('background_image').Execute;
Inject.Text.From(SlideShowObject).FindByName('text').To(ASO).FindByName('title').Execute;
[...] // weitere "Intelligenz" anwenden, z.B. Timing anpassen, Pfade berechnen etc.
// die nun konfigurierte ASO in die Show einfügen und damit die
// "Benutzeroberfläche" ersetzen.
SlideShow.Replace(SlideShowObject, ASO);
end;