1 /*
2  *  This file is part of RawTherapee.
3  *
4  *  Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
5  *
6  *  RawTherapee is free software: you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation, either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  RawTherapee is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with RawTherapee.  If not, see <https://www.gnu.org/licenses/>.
18  */
19 #pragma once
20 
21 #include <memory>
22 #include <vector>
23 
24 #include "../rtengine/diagonalcurvetypes.h"
25 #include "../rtengine/flatcurvetypes.h"
26 
27 struct ParamsEdited;
28 
29 namespace rtengine
30 {
31 
32 namespace procparams
33 {
34 class ProcParams;
35 class PartialProfile;
36 class IPTCPairs;
37 
38 }
39 
40 }
41 
42 class Clipboard
43 {
44 public:
45     Clipboard ();
46     ~Clipboard ();
47 
48     bool hasIPTC() const;
49     const rtengine::procparams::IPTCPairs& getIPTC() const;
50     void setIPTC(const rtengine::procparams::IPTCPairs& iptcc);
51 
52     const rtengine::procparams::PartialProfile& getPartialProfile() const;
53     void setPartialProfile(const rtengine::procparams::PartialProfile& pprofile);
54 
55     const rtengine::procparams::ProcParams& getProcParams() const;
56     void setProcParams(const rtengine::procparams::ProcParams& pparams);
57 
58     const ParamsEdited& getParamsEdited() const;
59 
60     bool hasProcParams() const;
61     bool hasPEdited() const;
62 
63     DiagonalCurveType hasDiagonalCurveData() const;
64     const std::vector<double>& getDiagonalCurveData() const;
65     void setDiagonalCurveData(const std::vector<double>& p, DiagonalCurveType type);
66 
67     void setFlatCurveData(const std::vector<double>& p, FlatCurveType type);
68     const std::vector<double>& getFlatCurveData() const;
69     FlatCurveType hasFlatCurveData() const;
70 
71 private:
72     bool _hasIPTC;
73     const std::unique_ptr<rtengine::procparams::IPTCPairs> iptc;
74     const std::unique_ptr<rtengine::procparams::PartialProfile> partProfile;
75     DiagonalCurveType hasDiagonalCurveDataType;
76     FlatCurveType hasFlatCurveDataType;
77     std::vector<double> diagonalCurve;
78     std::vector<double> flatCurve;
79 };
80 
81 extern Clipboard clipboard;
82