Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | Letzte Überarbeitung Beide Seiten, nächste Überarbeitung | ||
pr:mlib [2011/05/12 23:45] martok |
pr:mlib [2011/08/19 20:56] martok [Klassen] aktualisiert |
||
---|---|---|---|
Zeile 85: | Zeile 85: | ||
* //Beispiele//: ExifViewer, VideoThumbnailSetter, Geotagger | * //Beispiele//: ExifViewer, VideoThumbnailSetter, Geotagger | ||
* Viewer | * Viewer | ||
- | * Bekommt Datei und ein Handle, Malt ein Bild, erstellt Video-Player | + | * Bekommt Datei, erzeugt daraus einen Renderer passend zum Datentyp |
- | * //Beispiele//: ImageViewer, VideoPlayer | + | * RendererStill |
- | Global immer nur ein Objekt, dessen Methoden aufgerufen werden (also SideEffect-frei sein müssen). | + | * Stellt Bildausschnitte auf einem Canvas dar (ImageViewer) |
+ | * RendererOther | ||
+ | * bekommt ein WindowHandle, kann darauf passende Controls erstellen (VideoPlayer) | ||
+ | |||
+ | Global ist ein Plugin immer nur ein Objekt, dessen Methoden aufgerufen werden (also SideEffect-frei sein müssen). Es können aber beliebig viele Schnittstellen implementiert werden (Pflicht: IMediaLibraryModule) | ||
Alle Klassen sind auch extern ladbar, aber schon an Delphi gebunden. Keine besondere CallingConvention also. | Alle Klassen sind auch extern ladbar, aber schon an Delphi gebunden. Keine besondere CallingConvention also. | ||
Zeile 94: | Zeile 99: | ||
Extern: DLL-Load-> DLL.Register(@RegisterFunction), DLL ruft RegisterFunction mit Instanzen von dem was sie hat auf. (BPL, nur besser) | Extern: DLL-Load-> DLL.Register(@RegisterFunction), DLL ruft RegisterFunction mit Instanzen von dem was sie hat auf. (BPL, nur besser) | ||
- | RegisterClass prüft, ob IMLibModule implementiert wird; Ruft IMLibModule.Init auf und übergibt IMLibApplication. | + | RegisterClass prüft, ob IMediaLibraryModule implementiert wird; Ruft IMediaLibraryModule.Init auf und übergibt IMediaLibraryApplication. |