ImagingTools Core SDK
CParamsSetJoiner.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <iprm/IParamsSet.h>
7#include <iprm/IParamsInfoProvider.h>
8
9
10namespace imtbase
11{
12
13
17class CParamsSetJoiner: virtual public iprm::IParamsSet
18{
19public:
21 CParamsSetJoiner(iprm::IParamsSet* paramsSet1, iprm::IParamsSet* paramsSet2);
22 CParamsSetJoiner(const iprm::IParamsSet* paramsSet1, const iprm::IParamsSet* paramsSet2);
23
24 void SetParams(iprm::IParamsSet* paramsSet1, iprm::IParamsSet* paramsSet2);
25 void SetParams(const iprm::IParamsSet* paramsSet1, const iprm::IParamsSet* paramsSet2);
26
27 // reimplemented (iprm::IParamsSet)
28 virtual Ids GetParamIds(bool editableOnly = false) const override;
29 virtual const iser::ISerializable* GetParameter(const QByteArray& id) const override;
30 virtual iser::ISerializable* GetEditableParameter(const QByteArray& id) override;
31 virtual const iprm::IParamsInfoProvider* GetParamsInfoProvider() const override;
32
33 // reimplement (iser::ISerializable)
34 virtual bool Serialize(iser::IArchive& archive) override;
35
36private:
37 class ParamsInfoProviderJoiner: virtual public iprm::IParamsInfoProvider
38 {
39 public:
40 ParamsInfoProviderJoiner(const CParamsSetJoiner* joiner);
41
42 // reimplemented (iprm::IParamsInfoProvider)
43 virtual std::unique_ptr<ParamInfo> GetParamInfo(const QByteArray& paramId) const override;
44
45 private:
46 const CParamsSetJoiner* m_joiner;
47 };
48
49 iprm::IParamsSet* m_paramsSet1;
50 iprm::IParamsSet* m_paramsSet2;
51 mutable ParamsInfoProviderJoiner m_infoProvider;
52};
53
54
55} // namespace imtbase
56
57