1 /*
2     Scan Tailor - Interactive post-processing tool for scanned pages.
3     Copyright (C) 2007-2008  Joseph Artsimovich <joseph_a@mail.ru>
4 
5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9 
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14 
15     You should have received a copy of the GNU General Public License
16     along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef PAGE_LAYOUT_CACHEDRIVENTASK_H_
20 #define PAGE_LAYOUT_CACHEDRIVENTASK_H_
21 
22 #include <QPolygonF>
23 #include "NonCopyable.h"
24 #include "intrusive_ptr.h"
25 #include "ref_countable.h"
26 
27 class QRectF;
28 class PageInfo;
29 class AbstractFilterDataCollector;
30 class ImageTransformation;
31 
32 namespace output {
33 class CacheDrivenTask;
34 }
35 
36 namespace page_layout {
37 class Settings;
38 
39 class CacheDrivenTask : public ref_countable {
40   DECLARE_NON_COPYABLE(CacheDrivenTask)
41 
42  public:
43   CacheDrivenTask(intrusive_ptr<output::CacheDrivenTask> next_task, intrusive_ptr<Settings> settings);
44 
45   ~CacheDrivenTask() override;
46 
47   void process(const PageInfo& page_info,
48                AbstractFilterDataCollector* collector,
49                const ImageTransformation& xform,
50                const QRectF& page_rect,
51                const QRectF& content_rect);
52 
53  private:
54   intrusive_ptr<output::CacheDrivenTask> m_nextTask;
55   intrusive_ptr<Settings> m_settings;
56 };
57 }  // namespace page_layout
58 #endif  // ifndef PAGE_LAYOUT_CACHEDRIVENTASK_H_
59