Thumbnail Viewer Komponente

Zur Vorstellung von Komponenten und Units für Lazarus

Thumbnail Viewer Komponente

Beitragvon theo » 24. Jun 2010, 21:24 Thumbnail Viewer Komponente

Wenn jemand eine ziemlich schnelle Thumbnail Viewer Komponente brauchen kann, stelle ich den Code gerne zur Verfügung.

Features:
- Multithread Option.
- Verschiedene View Modi: Horizontal, Vertikal, Grid, und Automatik sowie Auto-Resize Modi.
- OnSelect Ereignis
- etc..

Im Anhang sieht man den Grid Mode.

Ich habe mir Mühe gegeben und einige Tricks angewendet um das Laden und Resizen so schnell als möglich zu machen.
Wenn das jemand haben möchte, soll er sich einfach melden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon ccmueller » 24. Jun 2010, 21:32 Re: Thumbnail Viewer Komponente

Ich habe Interesse

Vielen Dank im Voraus
Carsten
ccmueller
 
Beiträge: 10
Registriert: 7. Feb 2009, 14:28

Beitragvon theo » 24. Jun 2010, 21:52 Re: Thumbnail Viewer Komponente

ccmueller hat geschrieben:Ich habe Interesse


OK. Ist natürlich beta und du wärst der Erste ausser mir, der das testet.
Hier
http://www.theo.ch/lazarus/thumbview.zip

thumbctrl.lpk installieren und IDE neu bauen.
Dann verwenden wie andere Komponenten.

Für mehr "Flüssigkeit" das property Multithreaded auf true setzen.
Property Directory auf das Zielverzeichnis und los geht's.
Den Rest siehst du dann durch ausprobieren, oder frag mich.

Ach so, die Komponente erscheint im Misc Tab.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon Socke » 24. Jun 2010, 22:48 Re: Thumbnail Viewer Komponente

Für ein anderes Projekt brauch ich auch so etwas, aber dann muss ich das nicht selber schreiben :P
ccmueller hat geschrieben:Ich habe Interesse
/sign
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2557
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon creed steiger » 24. Jun 2010, 22:50 Re: Thumbnail Viewer Komponente

Ich habs mal kurz mit 233 Bildern unter Qt,GTK2 und GTK probiert.
Schaut wirklich sehr schick aus und die Geschwindigkeit ist saugut (für meine lahmen IDE-Platten ;))
(Unter GTK kommen keine Bilder,nungut es stirbt halt langsam.)

Klasse Sache.(naja,bei dir nicht anders zu erwarten ;))
creed steiger
 
Beiträge: 943
Registriert: 11. Sep 2006, 21:56

Beitragvon theo » 24. Jun 2010, 23:05 Re: Thumbnail Viewer Komponente

creed steiger hat geschrieben:Ich habs mal kurz mit 233 Bildern unter Qt,GTK2 und GTK probiert.
Schaut wirklich sehr schick aus und die Geschwindigkeit ist saugut (für meine lahmen IDE-Platten ;))
(Unter GTK kommen keine Bilder,nungut es stirbt halt langsam.)

Klasse Sache.(naja,bei dir nicht anders zu erwarten ;))


Danke :D

Technische Detail zu den "Tricks":
- Multi Threading: hält das Scrolling flüssig.
- JPEG Scaling: hält vielleicht Einzug in die FCL: http://bugs.freepascal.org/view.php?id=16748
- Für die anderen Formate: qualitativ schlechtes, aber sehr schnelles Resizing auf eine "Zwischengrösse", danach feines Resampling auf dem kleineren Bild für die Endgrösse.

Auf GTK1 hab ich's nicht getestet. Es gibt aber keinen plattformabhängigen Code da drin, also nicht mein Problem.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon theo » 24. Jun 2010, 23:39 Re: Thumbnail Viewer Komponente

Achso, hatte noch einen englischen Text verfasst, aber vorhin vergessen beizulegen.
Also hier nachgeliefert:

Thumbnail Component:

Features:
- Fast JPEG loading, fast resizing.
- Different layout modes.
- Multithreading option.
- PictureFrame option.
- Caption option.


Some properties explained:

property MultiThreaded:
If you set this to true, the images will be loaded in the "background" not blocking the application.
Warning: The debugger GDB may not like this setting.

property ShowCaptions:
Show/Hide the filename captions.

property ShowPictureFrame:
Show/Hide picture Frame;

property Layout:
Different modes, basically horizontal, vertical and grid plus autosize and auto layout modes, depending on the size of the control

property FreeInvisibleImages:
Do not keep in memory the bitmaps that are currently invisble. (Slower but less resource hungry).

property OnSelectItem:
Event triggered when a thumbnail is clicked or selected using the enter key.

property OnLoadFile:
Event when image stream data is required. Useful for loading data via http, ftp etc.
Warning: if MultiThreaded=true, this happens in a separate thread context.

Installation:
Install "thumbctrl.lpk" -> "TThumbControl" in the "Misc" tab
Zuletzt geändert von theo am 25. Jun 2010, 00:18, insgesamt 1-mal geändert.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon theo » 24. Jun 2010, 23:51 Re: Thumbnail Viewer Komponente

Und noch eine Information:
Wenn jemand Daten via HTTP oder Datenbank oder was-weiss-ich laden möchte, kann man das so anstellen:
Beispiel für HTTP mit Synapse:

Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
    ThumbControl1.Directory := '';
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  with TStringList.Create do
  begin
    Add('http://wiki.lazarus.freepascal.org/images/thumb/0/0a/Lazarus-0.9.28-linux-gtk2.png/144px-Lazarus-0.9.28-linux-gtk2.png');
    Add('http://www.lazarus.freepascal.org/splash_logo.png');
    Add('http://wiki.lazarus.freepascal.org/images/thumb/0/07/Windows_Vista2.png/144px-Windows_Vista2.png');
    ThumbControl1.URLList := Text;
    Free;
  end;
end;
 
procedure TForm1.ThumbControl1LoadFile(Sender: TObject; URL: string; out Stream:
  TStream);
begin
  if Pos('http://', LowerCase(TrimLeft(URL))) = 1 then
  begin
    Stream := TMemoryStream.Create;
    HttpGetBinary(URL, Stream);
  end;
end;
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon bembulak » 1. Jul 2010, 13:05 Re: Thumbnail Viewer Komponente

Ja, ich habe Interesse! Super und vielen Dank erstmal dafür! Das kommt mir wie gerufen!!! (Mann, ich bin so aus dem Häuschen, ich kann's euch gar nicht sagen)

Leider habe ich beim Installieren Probleme:
Lazarus IDE hat geschrieben:Das Package "thumbctrl 0.0" konnte nicht kompiliert werden.
Aus der Installationsliste nehmen? JA / Übergehen

Nachrichten... hat geschrieben:E:\thumbview\thumbcontrol.pas(65,20) Error: There is no method in an ancestor class to be overridden: "class TThumbControl.GetControlClassDefaultSize:<record type>;"
E:\thumbview\thumbcontrol.pas(172,1) Fatal: There were 1 errors compiling module, stopping


System:
Windows XP 32 bit SP 3 mit allen aktuellen Patches und Updates.
Lazarus: 0.9.28.2 Beta
2009-10-25
FPC: 2.2.4
SVN-Rev: 22279
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

Beitragvon theo » 1. Jul 2010, 13:24 Re: Thumbnail Viewer Komponente

bembulak hat geschrieben:Leider habe ich beim Installieren Probleme:


Lösche dort einfach das Wörtchen "override".
Ist auf 0.9.29 SVN entwickelt, ich habe gar kein 0.9.28.x installiert.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon bembulak » 1. Jul 2010, 14:56 Re: Thumbnail Viewer Komponente

Da ich mit 0.9.28.2 nur Probleme bekam (fpreadpsd, fpreadgif,... fehlen), habe ich auf 0.9.29 ein Update gemacht (bzw. neu installier aus nem Snapshot der Toolbox). Jetzt funktioniert's!
Vielen Dank für die tolle Arbeit und die geile Komponente!
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

Beitragvon theo » 1. Jul 2010, 16:38 Re: Thumbnail Viewer Komponente

bembulak hat geschrieben:Da ich mit 0.9.28.2 nur Probleme bekam (fpreadpsd, fpreadgif,... fehlen), habe ich auf 0.9.29 ein Update gemacht (bzw. neu installier aus nem Snapshot der Toolbox). Jetzt funktioniert's!
Vielen Dank für die tolle Arbeit und die geile Komponente!


Das liegt wiederum an der FPC Version. Diese Units sind neuer in der FCL.
Naja, Hauptsache es klappt jetzt.
Sonst kannst du diese Sachen oft auch einfach auskommentieren.
Es wäre nichts weiter passiert, ausser das psd und gif nicht zur Verfügung gestanden wären.
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon bembulak » 23. Sep 2010, 14:35 Re: Thumbnail Viewer Komponente

Hi!

Die Komponente ist für mich immer noch sehr interessant!
Wird daran noch weiter entwickelt? Dann hätte ich einen Vorschlag:

Support für das Mausrad. Srcollen per Mausrad funktioniert hier bei mir (Win XP SP3, Laz: 0.9.29) leider nicht.
Das wäre noch ganz groß!

Danke!
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

Beitragvon theo » 23. Sep 2010, 14:59 Re: Thumbnail Viewer Komponente

Hmm, ich dachte auf GTK2 geht das auch so. Bin allerdings meistens auf dem Notebook und habe dort das Mousewheel Zeug ausgeschaltet.

Probier mal das: in unit scrollingcontrol

bei TScrollingControl im Bereich interface unter "protected" schreibe:

Code: Alles auswählen
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;


Dann irgendwo im implementation Bereich:

Code: Alles auswählen
function TScrollingControl.DoMouseWheel(Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint): Boolean;
begin
  SetVScrollPos(VScrollInfo.nPos - WheelDelta);
end;


Geht dann was auf Windows (Vertikal) ?
theo
 
Beiträge: 8070
Registriert: 11. Sep 2006, 18:01

Beitragvon bembulak » 25. Sep 2010, 23:03 Re: Thumbnail Viewer Komponente

Geht dann was auf Windows (Vertikal) ?

Ja, es funktioniert jetzt. Ich hatte da wohl was vermurkst beim ersten Test, aber jetzt läuft es.
Bei den großen Bildern meiner DSLR kommt es zwar trotz
Code: Alles auswählen
MultiThreading:= True;
immer noch zu teilweise argen Verzögerungen, aber trotzdem ist diese Komponente sehr, sehr wertvvoll!
Danke also nochmals - bitte weiter dran arbeiten!
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Units/Komponenten



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried