8 #include "portalitem.h"
9 #include "portalutils.h"
14 #include <parametercolor.h>
15 #include <nap/signalslot.h>
76 const std::vector<typename T::value_type> getColorValues()
const;
81 bool setColorValues(
const std::vector<typename T::value_type>& values,
utility::ErrorState& error);
104 mRetainedValue = mParameter->mValue;
105 mParameter->valueChanged.connect(mParameterUpdateSlot);
112 mParameter->valueChanged.disconnect(mParameterUpdateSlot);
120 if (mRetainedValue == value)
123 mRetainedValue = value;
136 if (!error.check(arg->
isArray(),
"%s: expected array for value argument, not %s", mID.c_str(), arg->
getValueType().get_name().data()))
140 const std::vector<typename T::value_type>* values = arg->
asArray<
typename T::value_type>();
141 if (!error.check(values !=
nullptr,
"%s: expected array of %s for value argument, not %s", mID.c_str(), RTTI_OF(
typename T::value_type).get_name().data(), arg->
getValueType().get_name().data()))
144 return setColorValues(*values, error);
150 APIEventPtr event = std::make_unique<APIEvent>(mParameter->getDisplayName(), mID);
159 APIEventPtr event = std::make_unique<APIEvent>(mParameter->getDisplayName(), mID);
167 return std::vector<typename T::value_type>(mParameter->mValue.getValues().begin(), mParameter->mValue.getValues().end());
171 bool PortalItemColor<T>::setColorValues(
const std::vector<typename T::value_type>& values, utility::ErrorState& error)
174 int channels = mParameter->mValue.getNumberOfChannels();
175 if (!error.check(values.size() == channels,
"%s: expected %i color channels, received %i", mID.c_str(), channels, values.size()))
181 color.setData(values.data());
182 mRetainedValue = color;
183 mParameter->setValue(color);
191 #define DEFINE_PORTAL_ITEM_COLOR(Type) \
192 RTTI_BEGIN_CLASS(Type, "Portal color item") \
193 RTTI_PROPERTY("Parameter", &Type::mParameter, nap::rtti::EPropertyMetaData::Required, "Color parameter") \
Definition: apivalue.h:56
constexpr const char * itemValueArgName
Name of the argument containing the portal item value in the portal item message.
Definition: portalutils.h:19
constexpr const char * itemTypeArgName
Name of the argument containing the portal item type in the portal item message.
Definition: portalutils.h:18
const rtti::TypeInfo getValueType() const
virtual void onParameterUpdate(T value)
Definition: portalitemcolor.h:116
virtual bool init(utility::ErrorState &error) override
Definition: portalitemcolor.h:102
Definition: objectptr.h:154
Definition: errorstate.h:19
virtual APIEventPtr getDescriptor() const override
Definition: portalitemcolor.h:148
Definition: portalitem.h:19
std::unique_ptr< nap::APIEvent > APIEventPtr
Definition: apievent.h:179
Slot< T > mParameterUpdateSlot
Definition: portalitemcolor.h:67
virtual void onDestroy() override
Definition: portalitemcolor.h:110
ResourcePtr< ParameterSimple< T > > mParameter
Property: 'Parameter' the parameter linked to this portal item.
Definition: portalitemcolor.h:69
Definition: templateapp.h:17
Definition: apiargument.h:22
virtual APIEventPtr getValue() const override
Definition: portalitemcolor.h:157
virtual bool processUpdate(const APIEvent &event, utility::ErrorState &error) override
Definition: portalitemcolor.h:128
Definition: portalitemcolor.h:23
const std::vector< T > * asArray() const
Definition: apiargument.h:208
Definition: apievent.h:37