pr:mlib
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| pr:mlib [2010/11/02 17:34] – dbase propsal martok | pr:mlib [2011/10/29 20:16] (aktuell) – [Medienbibliothek] martok | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Medienbibliothek/allgemeine Planung | + | ====== Medienbibliothek ====== |
| (Original-Thread [[http:// | (Original-Thread [[http:// | ||
| + | |||
| + | [[pr: | ||
| + | |||
| + | [[pr: | ||
| + | |||
| + | [[pr: | ||
| ===== Features ===== | ===== Features ===== | ||
| Zeile 42: | Zeile 48: | ||
| * Thumbnails neu generieren | * Thumbnails neu generieren | ||
| * mehreren Dateien ein Tag geben | * mehreren Dateien ein Tag geben | ||
| + | |||
| + | ==== Views ==== | ||
| + | * Listentypen | ||
| + | * Liste (" | ||
| + | * Miniaturen | ||
| + | * Miniaturen mit Details | ||
| + | * Galerie (Miniaturen als Coverflow oben/links) | ||
| + | * Einzelansicht (voriges/ | ||
| + | * Fenster | ||
| + | * Suchergebnisse | ||
| + | * Verzeichnis (Tree + Liste) | ||
| + | * Verzeichnis durchsuchen/ | ||
| + | * Merge neuer/ | ||
| + | * Detailansicht | ||
| + | * Tabs mit Daten, ähnlich ACDSee 5 | ||
| + | * Kann gedockt sein oder als Extrafenster | ||
| ===== Tech Details/ | ===== Tech Details/ | ||
| - | * Flatfiles, 1 pro Datei (Shareaza) | + | * FlatDB |
| - | * Key-Value-Store, | + | |
| * wäre auch wiedererkennbar, | * wäre auch wiedererkennbar, | ||
| - | | + | |
| - | ==== dBase via Halcyon | + | |
| - | FILEID = [0-9a-z]{8} | + | ==== Organisationsstruktur |
| - | Strings: immer UTF8 schreiben und beim lesen zurückkonvertieren, um Codepage-Probleme zu umgehen | + | * Archivgruppe |
| + | * Bibliothek (enthält auch Voreinstellungen) | ||
| + | * Datenbank (FlatDB-Ordner) | ||
| + | * Dokumente: [[.: | ||
| + | * Bibliothek ... | ||
| + | |||
| + | ==== Klassen ==== | ||
| + | * Application | ||
| + | * Interface zur Hauptanwendung (Logger etc) | ||
| + | * MetadataExtractor | ||
| + | * Bekommt Datei, Füllt SuperObject | ||
| + | * // | ||
| + | * MetadataViewer | ||
| + | * Zeigt einen Tab in Detailansicht an | ||
| + | * // | ||
| + | * Viewer | ||
| + | * Bekommt Datei, erzeugt daraus einen Renderer passend zum Datentyp | ||
| + | * RendererStill | ||
| + | * Stellt Bildausschnitte auf einem Canvas dar (ImageViewer) | ||
| + | * RendererOther | ||
| + | * bekommt ein WindowHandle, | ||
| - | Tabelle //Files//: | + | 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) |
| - | * FILEID | + | |
| - | * Dateiname | + | |
| - | * Pfad | + | |
| - | * Größe | + | |
| - | * Datum | + | |
| - | Tabelle // | + | Alle Klassen sind auch extern ladbar, aber schon an Delphi gebunden. Keine besondere CallingConvention also. |
| - | * FILEID | + | |
| - | * attrName | + | |
| - | * attrValue | + | |
| - | Tabelle // | + | In Main: Initializatzion-> |
| - | * FILEID | + | |
| - | * attrName | + | |
| - | * BLOB | + | |
| - | Wie speichert man ein... | + | Extern: DLL-Load-> DLL.Register(@RegisterFunction), DLL ruft RegisterFunction mit Instanzen von dem was sie hat auf. (BPL, nur besser) |
| - | * Tag? \\ Tabelle Attribs, attrName=" | + | |
| - | * Exif-Datum? \\ Tabelle Attribs, attrName=" | + | |
| - | * Thumbnail? \\ Tabelle ExtAttribs, attrName=" | + | |
| + | RegisterClass prüft, ob IMediaLibraryModule implementiert wird; Ruft IMediaLibraryModule.Init auf und übergibt IMediaLibraryApplication. | ||
pr/mlib.1288715667.txt.gz · Zuletzt geändert: 2010/11/02 17:34 von martok
