digiKam digest - 2009-08-09

This week we saw: fixing of Exif rotation flags; new layout of RemoveRedEyes KIPI plugin; new widget for lists of images for KIPI plugins; refactoring of ICC code for cleaner code-base, preparation for general bug fixing and easier maintenance in future. More screenshots for newest KIPI plugin - Local contrast plugin.

  • New widget for list of images in KIPI plugins.
    • list-widget.png

Below more screenshots for "Local contrast" new KIPI plugin, one attached to last DD didn't do justice to this feature. As you see with this feature you can restore your lost highlights/shadows or go for slightly unrealistic look of HDR images.

  • localcontrast-pseudohdr
  • Testing Local Constrast/ Local Tonemapping/ Pseudo HDR Digikam plugin : before and after
  • localcontrast2.png

More examples here.

Bug/wish table

Opened bugs Opened last week Closed last week Change Opened wishes Opened last week Closed last week Change

Full tables:

NEWS reports

Issues closed last week (note: due to different methodologies numbers may not add up with table above)


+020 ==> 202332 : View mode: Zooming using Ctrl+Scroll is broken. +021 ==> 197254 : digikam crash at startup. +022 ==> +


+001 ==> AdvancedSlideshow : 142676 : Recursive slideshow option. +002 ==> AdvancedSlideshow : 195772 : Allow to load playlists rather than having to re-add the songs one by one. +003 ==> AdvancedSlideshow : 195699 : Ken Burns : it takes minutes before the slideshow actually starts. +004 ==> AdvancedSlideshow : 182743 : Renders system unresponsive on large image collections. +005 ==> GalleryExport : 202019 : [PATCH] : mpGallery not initialized, crash on destruction if setup not called. +006 ==> AdvancedSlideshow : 131619 : Blend transition in slideshow without OpenGL. +007 ==> SendImages : 147513 : It's non possible to send the file of photo because kmail don't start. +008 ==> BatchProcessImages : 202447 : digiKam crashes after recompressing one or several images. +009 ==> BatchProcessImages : 202706 : digiKam crashes after closing the batch resize window. +010 ==> AdvancedSlideshow : 172384 : digiKam crashes when exiting advanced slide show from kipi-plugins.

Selected commits

KDE/kdegraphics/libs/libkexiv2/libkexiv2 (2009-08-03 21:23)
SVN commit 1006455 by mwiesweg: Move rotation matrix code (with improved, object oriented API) from jpeglossless kipi plugin to libkexiv2 for more general use. Helps to transform EXIF orientation flag to actual transform primitives and to combine an existing flag with an added primitive to an effective primitive or a resulting EXIF flag. 3 files changed
KDE/kdegraphics/libs/libkexiv2/libkexiv2 (2009-08-03 21:25)
SVN commit 1006456 by mwiesweg: If a dedicated orientation flag for the EXIF thumbnail exists adjust it as well. CCBUG: 200357 1 file changed
KDE/kdegraphics/libs/libkexiv2/libkexiv2 (2009-08-03 22:46)
SVN commit 1006504 by mwiesweg: According to MWG guidelines, take orientation for the Exif thumbnail from 1) the dedicated thumbnail orienation flags and 2) from the main image's orienation. E.g. with files from a Nikon camera (only main orientation flag), this is necessary to get the Exif thumbnails correctly oriented. 1 file changed
extragear/graphics/digikam (2009-08-04 15:17)
SVN commit 1006803 by mwiesweg: There is a problem using floor(x*10000)/10000 to reduce precision. For values like 0.50149999999999996 this operation will subtract 1/10000 for every run (5014 -> 5013 -> 5012...). It's not mathematical correct but floating point arithmetics on a computer are not mathematically correct sometimes. If such a value is calculated for fit-to-window as 5014 and truncated to 5013 it will be set by setZoomFactor as 5012. Now snapZoom() is fooled when the current zoom is 5012 and the desired one is 0.6, it will snap to 5013 (set as 5012 - and forever again) disabling any zooming. Using round(x*10000)/10000 instead of floor solves the problem for me. BUG: 202332 2 files changed
extragear/graphics/digikam (2009-08-04 16:57)
SVN commit 1006825 by mwiesweg: Emit progress signal after scanning batches of files (100 unchanged files or 2 new files). When initially scanning large albums the progress can appear stuck for a long time when only at the end of scanning an album progress is reported. 4 files changed
extragear/graphics/digikam (2009-08-04 16:57)
SVN commit 1006827 by mwiesweg: If we show the splash screen at startup and no progress dialog, we do not need to count the total files to scan before the actual scan. Removes some unnecessary stat'ing in this case. 3 files changed
extragear/graphics/kipi-plugins/removeredeyes (2009-08-06 18:13)
SVN commit 1007961 by aclemens: Change layout of RemoveRedEyesWindow 1 file changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-06 18:13)
SVN commit 1007957 by aclemens: All buttons have been added, but not yet functional. Two additional layout directions: ControlButtonsAbove ControlButtonsLeft The buttons can now be positioned around the ImagesList. 2 files changed
extragear/graphics/kipi-plugins/smug (2009-08-06 18:14)
SVN commit 1007977 by aclemens: Add new ImagesList widget to Smug plugin 1 file changed
extragear/graphics/kipi-plugins/removeredeyes (2009-08-06 18:13)
SVN commit 1007958 by aclemens: set RemoveRedEyesWindow to "not busy" when the window is created, otherwise the "clear" and "remove" buttons from the ImagesList widget are not working. 1 file changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-06 18:14)
SVN commit 1007968 by aclemens: Change the default button layout: use all buttons, if a plugin doesn't need all of them, it can change the layout with setControlButtons() 1 file changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-06 18:13)
SVN commit 1007959 by aclemens: Add missing connections for "move up", "move down" and "clear", not yet functional. 2 files changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-06 18:14)
SVN commit 1007969 by aclemens: Add new method enableControlButtons() to enable or disable all control buttons at once. 2 files changed
extragear/graphics/kipi-plugins (2009-08-06 18:13)
SVN commit 1007954 by aclemens: Add new methods setControlButtons() and setContolButtonsPlacement(). Remove ControlButtonPlacement parameter from the ImagesList constructor. setControlButtons() takes a QFlag parameter, so that button codes can be combined: setControlButtons(None|Add|Remove|MoveUp|MoveDown|Clear); 3 files changed
extragear/graphics/kipi-plugins/facebook (2009-08-06 18:14)
SVN commit 1007975 by aclemens: Add new ImagesList widget to FacebookExport plugin 1 file changed
extragear/graphics/kipi-plugins/removeredeyes (2009-08-06 18:13)
SVN commit 1007963 by aclemens: If the ImagesList is empty when the RemoveRedEyesWindow is created, reset the summary, otherwise the labels are invalid. Rename resetCounters() => resetSummary() 2 files changed
extragear/graphics/kipi-plugins (2009-08-06 18:13)
SVN commit 1007955 by aclemens: Remove the plainpage widget from the ImagesList. The only plugin that has used it was the removeredeyes plugin. We do not need to provide such an extra space in the ImagesList widget, the plugin can simply add this extra information elsewhere in the plugin dialog. 6 files changed
extragear/graphics/kipi-plugins/advancedslideshow (2009-08-06 18:14)
SVN commit 1007974 by aclemens: Adding the new ImagesList widget to AdvancedSlideshow plugin 3 files changed
extragear/graphics/kipi-plugins/gpssync (2009-08-06 18:14)
SVN commit 1007976 by aclemens: Add new ImagesList widget to GPSSync plugin 2 files changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-06 18:14)
SVN commit 1007971 by aclemens: The enum ControlButton should only contain actual button codes, 'None' is not needed. If we want to set all buttons invisible, we can call setControlButtons(0x0) instead. 2 files changed
extragear/graphics/kipi-plugins/advancedslideshow (2009-08-06 20:22)
SVN commit 1008033 by aclemens: clear list when selection changes 1 file changed
extragear/graphics/kipi-plugins (2009-08-06 23:58)
SVN commit 1008106 by aclemens: Change signalImageListChanged(): No need to sent a boolean argument, it was somehow confusing, because it was only true when the imagesList was empty. If we need such a signal, we should name it signalImagesListIsEmpty() or something like that, but signalImageListChanged() doesn't work well with this boolean argument. http://websvn.kde.org/?view=rev&revision=1008106 13 files changed
extragear/graphics/digikam (2009-08-07 12:46)
SVN commit 1008382 by aclemens: Add the ability to only set a custom start in the ManualRenameInput widget. Added some test cases to verify the functionality. CCBUG:202641 2 files changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-07 09:47)
SVN commit 1008226 by aclemens: Add two new buttons: Load and Save These buttons can be used for the soundtrack widget in the AdvancedSlideshow, so that we can factorize this code as well. In the future we might even want to make the ImagesList an abstract class (AbstractItemsList) and derive ImagesList and SoundtrackList from it. 2 files changed
extragear/graphics/kipi-plugins/common/libkipiplugins (2009-08-07 22:32)
SVN commit 1008556 by aclemens: Somehow QFlags need to be declared outside of any namespace? Otherwise compiling will fail. Can someone explain this? There is no note in the Qt documentation about this. CCMAIL:digikam-devel@kde.org 1 file changed
extragear/graphics/digikam (2009-08-08 10:22)
SVN commit 1008728 by aclemens: Add new method setHistogramType() to be able to change the HistogramBox layout afterwards, not only in the constructor. This is necessary because I will factorize the EditorToolSettings widget later on. http://websvn.kde.org/?view=rev&revision=1008728 4 files changed
extragear/graphics/digikam/libs/dimg/filters (2009-08-08 15:03)
SVN commit 1008818 by mwiesweg: IccProfile is a new class encapsulating an ICC profile, either from memory or from a file on disk. It's a Qt style API, implicitly shared, passed around by value and hides the implementation details. (It's a bit late in the beta process for a major API overhaul but there are enough color management bugs anyway, and it was no fun fixing bugs with a lot of code duplication) 2 files changed
extragear/graphics/digikam/utilities/setup (2009-08-08 18:48)
SVN commit 1008915 by mwiesweg: Restructure loading of ICC profiles. Scan available system directories like /usr/share/color/icc where distributions install ICC profiles. Scan directories recursively. This gives a much easier setup, you dont need to specify a directory to have core profiles installed. 2 files changed
extragear/graphics/digikam/imageplugins/coreplugin (2009-08-08 15:05)
SVN commit 1008825 by mwiesweg: A lot of changes here as well to remove code duplication and increase readability. Adapting to IccProfile/IccTransform API. Needs some testing. http://websvn.kde.org/?view=rev&revision=1008825 2 files changed
extragear/graphics/digikam/libs/dimg/filters (2009-08-08 18:47)
SVN commit 1008914 by mwiesweg: - make all profiles bundled with libkdcraw available (we can be pretty sure that these are available, sort of builtin) - add a method to return the file path (if loaded from file) - add method to read the profile type (= device class) - add a static method to list available system folders like /usr/share/color/icc where ICC profiles are installed 3 files changed
extragear/graphics/digikam/libs/dimg/filters (2009-08-08 15:03)
SVN commit 1008820 by mwiesweg: Restructuring and API change: - use IccProfile - split API into single methods that tell what they do instead of using several bool parameters or setProfiles() where the meaning of the arguments depends on the number of arguments passed - the main method was almost completely duplicated in two variants, consolidate code - now implicitly shared as well http://websvn.kde.org/?view=rev&revision=1008820 2 files changed
extragear/graphics/digikam/libs/widgets/common (2009-08-08 10:17)
SVN commit 1008725 by aclemens: Typedefs should start with an uppercase letter Remove the example in the tooltip, this is not really needed. I will prepare some input widgets for the ManualRenameInput, so that tokens can be entered faster. This will be especially useful when metadata can be added, too (not yet implemented). 1 file changed
extragear/graphics/digikam (2009-08-08 11:37)
SVN commit 1008744 by aclemens: Remove button & toolMask from the EditorToolSettings constructor. It was confusing to set a HistogramType, even if no histogram tool was requested. Also the constructor was not readable, the toolcodes and the buttoncodes where visually mixed together, it was hard to distinguish. Another problem was that you couldn't change the settings if ever needed to, since the parameters were only set in the constructor. EditorToolSettings has the following default layout now: Buttons: Default, Ok, Cancel Tools: None If more buttons or tools are needed, you can use the setter methods: setButtons(Ok|Cancel|Default|Try|Load|Save); setTools(None|ColorGuide|PanIcon|Histogram); An additional setter method for the histogram has been added, to change the type of the HistogramBox: setHistogramType(HistogramBox::HistogramType); CCMAIL:digikam-devel@kde.org http://websvn.kde.org/?view=rev&revision=1008744 43 files changed
extragear/graphics/digikam/libs/dimg/loaders (2009-08-09 00:20)
SVN commit 1009011 by mwiesweg: Patch by David Eriksson: Fix very subtle bug in the JPEG loader preventing embedded ICC profiles to be read because the reading structure was destroyed before. Awesome that you have found that bug! CCBUG: 182272 1 file changed
extragear/graphics/digikam/utilities (2009-08-09 00:09)
SVN commit 1009008 by mwiesweg: Rearrange the ICC setup to put emphasis on choosing the workspace profile, which is a key decision taken by the user. 2 files changed
extragear/graphics/digikam (2009-08-09 00:09)
SVN commit 1009007 by mwiesweg: Centralize reading/writing to config in ICCSettingsContainer and use this in SetupICC. Add a third option Dont Convert to Ask or Apply. http://websvn.kde.org/?view=rev&revision=1009007 7 files changed
extragear/graphics/digikam/utilities/setup (2009-08-09 00:09)
SVN commit 1009006 by mwiesweg: Store profiles by file path in config, not combo box index (which can change). Display file name along with description. Sometimes there are multiple profiles with the same description. 2 files changed
extragear/graphics/digikam/libs/threadimageio (2009-08-09 21:12)
SVN commit 1009339 by mwiesweg: Put a method for post-processing into SharedLoadingTask. This can be used for color processing. Postprocessing is not stored in the cache to reduce complexity (which is already very high). 5 files changed
extragear/graphics/digikam/libs/dimg/filters (2009-08-09 18:06)
SVN commit 1009291 by mwiesweg: Don't call cmsDoTransform for every single pixel but transform ten scanlines in a row. Always tell lcms that we have input/output format including alpha, DImg data is always 4 bytes per pixel. 2 files changed
extragear/graphics/digikam/libs (2009-08-09 18:06)
SVN commit 1009290 by mwiesweg: LittleCMS boasts to be thread-safe but there are reports that it is not and certain methods (those returning a static buffer) are definitely not. Dont run a risk and use a mutex for Lcms calls. 4 files changed
extragear/graphics/digikam/utilities/imageeditor/canvas (2009-08-09 19:04)
SVN commit 1009308 by mwiesweg: Introduce a central singleton class to store ICC settings. 2 files changed

WOW! That's really

WOW! That's really impressive, the results are stunning - too bad that digikam can't use RAW files directly...