ISlideShow

Aus AquaSoft Wiki
Wechseln zu: Navigation, Suche

 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;