Added windows build howto into README
[imgsort.git] / imagebuffer.h
1 #ifndef _IMAGEBUFFER_H_
2 #define _IMAGEBUFFER_H_
3
4
5
6 #include <QtCore>
7 #include <QHash>
8 #include <QFuture>
9 #include <QImage>
10
11 class ImageBuffer;
12
13 #include "scr.h"
14 #include "si_globals.h"
15 #include "filebank.h"
16
17 #include "qtopia_exif/qexifimageheader.h"
18
19
20
21
22 class ImageBuffer {
23 // Q_OBJECT
24
25
26 protected:
27
28   class IBData {
29   public:
30     IBData(const QString & filename);
31     ~IBData();
32
33     void prepareSC(ScaleCropRule scr, bool fast = false);
34     QImage * getSC(ScaleCropRule scr);
35     void unprepareSC(ScaleCropRule scr);
36
37     void fileSC(ScaleCropRule scr, const QString & targetFile);
38
39     QSize getOriginalSize();
40
41     void waitForFileRescaling();
42
43
44   protected:
45     QFuture<QImage *> originalImage;
46     QExifImageHeader exifData;
47     // int rotate; // modulo 4; 0 = keep, 1 = left, 2 = flip, 3 = right; default from exif, changable manually
48     QHash<QString, QFuture<QImage *> > rescales; // indexed by ScaleCropRule::toString()
49
50     QFuture<bool> fileRescaling;
51     bool fileRescalingRunning = false;
52
53
54   };
55
56
57 public:
58   ~ImageBuffer();
59   void addImage(const QString & fileName);
60   void addRange(FBIterator && range);
61   void removeImage(const QString & fileName);
62   void prepareRescale(const QString & fileName, ScaleCropRule scr);
63   QImage * getRescaled(const QString & fileName, ScaleCropRule scr);
64   void prepareRescale(const QString & fileName) { prepareRescale(fileName, default_scr); }
65   QImage * getRescaled(const QString & fileName) { return getRescaled(fileName, default_scr); }
66   QSize getOriginalSize(const QString & fileName);
67   void rescaleToFile(const QString & fileName, ScaleCropRule scr, const QString & targetFile);
68   void waitForFileRescales();
69
70   ScaleCropRule default_scr; // no need to have this private
71
72 protected:
73   QHash<QString, IBData *> images;
74
75
76
77 };
78
79
80
81
82 #endif // #ifndef _IMAGEBUFFER_H_