Added windows build howto into README
[imgsort.git] / fbiterator.h
1 #ifndef _SI_FBITERATOR_H_
2 #define _SI_FBITERATOR_H_
3
4 #include <QMap>
5 #include <QString>
6
7 #include "scr.h"
8
9 typedef QMap<QString, ScaleCropRule>::iterator _QMQSSCRCI;
10
11 class FBIterator {
12         
13 public:
14   FBIterator(_QMQSSCRCI list_begin, _QMQSSCRCI list_end, _QMQSSCRCI list_curr); 
15   FBIterator(_QMQSSCRCI list_begin, _QMQSSCRCI list_end);
16   FBIterator(const FBIterator & fbi);
17      
18   const QString & operator*();
19   const ScaleCropRule & getSCR();
20   void setSCR(const ScaleCropRule & newscr);
21   bool hasNext(int how_many = 1);
22   bool hasPrev(int how_many = 1);
23   FBIterator & next_go(int how_many = 1);
24   FBIterator & prev_go(int how_many = 1);
25   FBIterator next_get(int how_many = 1);
26   FBIterator prev_get(int how_many = 1);
27   bool isValid();
28   //bool isPointing() { return valid && (qslcurr != qslend); }
29   
30   FBIterator subiterator_post(int max_size);
31   FBIterator subiterator_pre(int max_size);
32   
33   int total_items() { return -before_begin + -behind_last + 1; }
34   int item_index() { return -before_begin; }
35   
36 private:
37   _QMQSSCRCI it;
38   int before_begin, behind_last;
39   
40   static const QString null_string;
41   static const ScaleCropRule null_scr;
42   
43 };
44
45
46 #endif // #ifndef _SI_FBITERATOR_H_
47