glSlideshow version 0.95Features:
- Main transitions: SlideIn, Wipe, Blind, Fade, Scale, Matrix, Ribbon, Rotate
- Total 23 transitions + random
- Support .bmp, .cur, .icns, .ico, .gif, .jpeg/jpg, .png, .tif/tiff, .tga
- Low hardware requirement, only OpenGL version 1.2
Limitations:
- No full screen preview, no sound, no text support
- Cannot save project, cannot export to avi/mpeg
Changes on version 0.95:
- New transitions: Wipe, Blind, Matrix, Random
- Some cosmetic improvements
- Let OpenGL to handle BGRA images (Thanks Akira1364)
- Better support for PNG and TIFF images (Thanks J-G)
- Replace TOpenPictureDialog with TOpenDialog
- Support more than 10000 slide count
- The form now is resizeable
- Slides can be removed and reorder
- Adjustable delay time before changing slides
- Smoother movement for slow animation
- Support 4x multisampling
- Fix thumbnail preview issue
- Fix sluggishness when animating large images
More info can be found on Readme.txt.
It now can handle graphics files better. TImage cannot fully support .bmp, .png, .tga, .tif/tiff files, so it uses FCL-Image when opening those files. Tested and passed on all the samples provided by J-G.
http://wiki.freepascal.org/fcl-imageNothing wrong with BGRABitmap but I want more people can easily compile and test the code. FCL-Image library is included on Lazarus default installation. And I carefully chose the OpenGL commands used in the code. I have not tested but any hardware that support OpenGL version 1.2 should be able to run the program. On Windows system, you have to make sure the VGA driver is installed properly. To be able to compile this code on Linux, your computer needs
libgl1-mesa-dev library installed.
It's no longer use TOpenPictureDialog when opening file, because it will crash on some 'rare' graphics file.
I haven't tested but it should be able to open more than 10k slides, because it uses TFPList as the container.
Previously, it used TTimer to slow down the animation. But the movement was noticeable ugly if the frame rate is below 20fps. Now frame rate is fixed on ± 62 fps because it now increases/decreases the total frames per slide when changing the speed.
I noticed some slow down when animating extra large images. To solve it, it will automatically scale them down to the size of user monitor's resolution.
I should mention Akira1364 has done many improvements on the code (using BGRABitmap, Advance Record, Matrix Transformation, Vertex Array). But because Vertex Array is only supported on OpenGL 3.0 or above and also I am not good on Maxtrix, so I didn't adopt them. If you're interested to see the code that using more modern version OpenGL, download here:
https://forum.lazarus.freepascal.org/index.php/topic,35313.msg255447.html#msg255447glslideshow_by_handoko
- Can it be a component for Lazarus? Maybe on OPM?
Good suggestion. I will do it, but I can't make any commitment now. If anybody have time, please do it. I have further split the UI section and graphics/animation code.
--- edit ---
Almost forget to mention, the code needs LazOpenGLContext package to compile. To enable it:
Lazarus main menu > Package > Install/Uninstall Packages > select: LazOpenGLContext 0.0.1 > click: Install Selection > Save and rebuild IDE.