groups

A group is a simple rectangular area that has a title and contains several items.

New groups can be added by using the API function ‘addGroup(const QString& sGroupName)’ and populated by calling the group’s method ‘addItem()’ or ‘addItems()’.

If a group should be created that is to wrap exisiting items without destroying their layout, an overloaded API function ‘addGroup(const QString& sName, std::vector<CItem*>& vpItems)’ will create a new group and place it around the selected items, forming their bounding box.

If a group is moved, all its contained items will be moved accordingly.

Deletion of a group will result in the deletion of the items.

Ungrouping will delete the group but not its contents.

Continue reading

Retrieving and storing EXIF information

using easyexif (http://code.google.com/p/easyexif/), each item should store an instance of its exif information that is re-loaded upon passing an image into the item.

This enables the sort plugin to add new sort functions for each of the exif properties, such as

  • sort by date taken
  • sort by geolocation (possibility of rendering an svg background displaying all the continents)
  • etc.

Continue reading

swap pointer safety

The swap pointer should be NULLed after being fetched by another thread. The getter function should get a mutex that protects the pointer while being NULLed. After the swap has occurred in the fetcher-thread, the pointer can be written back to the item. This guarantees that no other thread accesses the current swap pointer while one of the cache threads writes new image data.