Generate proper thumbnails for portrait images.
[harmattan/cameraplus] / src / main.cpp
index e49d80c..21f782b 100644 (file)
 #include "qt_private/qdeclarativedebughelper_p.h"
 #endif /* QMLJSDEBUGGER */
 
-static void initQuill(PlatformSettings *settings) {
-  QList<QPair<QString, QSize> > previewLevels = settings->previewLevels();
-  Quill::setPreviewLevelCount(previewLevels.size());
+QSize portraitSize(const QSize& size) {
+  return size.width() > size.height() ? QSize(size.height(), size.width()) : size;
+}
 
-  for (int x = 0; x < previewLevels.size(); x++) {
-    Quill::setThumbnailFlavorName(x, previewLevels[x].first);
-    Quill::setPreviewSize(x, previewLevels[x].second);
-  }
+QSize landscapeSize(const QSize& size) {
+  return size.width() > size.height() ? size : QSize(size.height(), size.width());
+}
+
+static void initQuill(PlatformSettings *settings) {
+  // How we create thumbnails for portrait is really messy.
+  // I am sure there is a better way to tell Quill to generate proper
+  // portrait thumbnails without having 2 display levels but I don't know how.
+  // The issue is we generate screen sized thumbnails for landscape
+  // but we generate half screen sized thumbnails for portrait
+  Quill::setPreviewLevelCount(2);
+  QSize size = settings->previewSize();
+
+  // Landscape:
+  Quill::setThumbnailFlavorName(LANDSCAPE_PREVIEW_LEVEL, settings->thumbnailFlavorName());
+  Quill::setPreviewSize(LANDSCAPE_PREVIEW_LEVEL, landscapeSize(size));
+
+  // Portrait:
+  Quill::setThumbnailFlavorName(PORTRAIT_PREVIEW_LEVEL, settings->thumbnailFlavorName());
+  Quill::setPreviewSize(PORTRAIT_PREVIEW_LEVEL, portraitSize(size));
 
   Quill::setThumbnailExtension(settings->thumbnailExtension());
   Quill::setBackgroundRenderingColor(settings->backgroundRenderingColor());