This commit is contained in:
2021-10-14 13:47:35 +02:00
commit 6625a8dfaa
4026 changed files with 844291 additions and 0 deletions
@@ -0,0 +1,30 @@
PROJECT(openvibe-plugins-designer-examples)
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.h src/*.hpp src/*.inl)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared")
SET(INCLUDED_OV_SDK_COMPONENTS MAIN COMMON TOOLKIT EBML SYSTEM XML)
INCLUDE("AddOpenViBESDKComponents")
INCLUDE("FindOpenViBEVisualizationToolkit")
INCLUDE("FindThirdPartyGTK")
# ---------------------------------
# Target macros
# Defines target operating system, architecture and compiler
# ---------------------------------
SET_BUILD_PLATFORM()
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
INSTALL(DIRECTORY box-tutorials DESTINATION ${DIST_DATADIR}/openvibe/scenarios/)
@@ -0,0 +1,174 @@
<OpenViBE-Scenario>
<FormatVersion>1</FormatVersion>
<Creator>openvibe</Creator>
<CreatorVersion>2.0</CreatorVersion>
<Boxes>
<Box>
<Identifier>(0x00002e59, 0x00005225)</Identifier>
<Name>Modifiable Settings example</Name>
<AlgorithmClassIdentifier>(0x4ab0dd05, 0x32155d41)</AlgorithmClassIdentifier>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Int</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Float</Name>
<DefaultValue>1.3</DefaultValue>
<Value>1.3</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Bool</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>String</Name>
<DefaultValue>string</DefaultValue>
<Value>string</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>filename</Name>
<DefaultValue>somefile.txt</DefaultValue>
<Value>somefile.txt</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
<Name>script</Name>
<DefaultValue>somescript.lua</DefaultValue>
<Value>somescript.lua</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
<Name>color</Name>
<DefaultValue>20,65,90</DefaultValue>
<Value>20,65,90</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3d3c7c7f, 0xef0e7129)</TypeIdentifier>
<Name>colorgradient</Name>
<DefaultValue>0:0,0,0; 100:60,40,40</DefaultValue>
<Value>0:0,0,0; 100:60,40,40</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2f3563a4, 0x571e194d)</TypeIdentifier>
<Name>unit</Name>
<DefaultValue>V</DefaultValue>
<Value>V</Value>
<Modifiability>true</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x501f79fa, 0x7e1f6680)</TypeIdentifier>
<Name>factor</Name>
<DefaultValue>1e-01</DefaultValue>
<Value>1e-01</Value>
<Modifiability>true</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>144.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>38</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>432.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x905adcea, 0xd88c907d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>222</Value>
</Attribute>
<Attribute>
<Identifier>(0xc67a01dc, 0x28ce06c1)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>10</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links></Links>
<Comments>
<Comment>
<Identifier>(0x00004034, 0x00002caa)</Identifier>
<Text>This box has a setting of each type and each is
marked as a modifiable parameter. It means
that during run, a widget will appear where
you can modify the value of these settings. As
you do that, you will notice that the
values displayed in the log (every 5 seconds)
chanfes accordingly.</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>112</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>144</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":477,"identifier":"(0x00002cca, 0x000017dc)","index":0,"name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":614},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00002075, 0x000044ac)","index":0,"name":"config","parentIdentifier":"(0x00002cca, 0x000017dc)","type":2},{"boxIdentifier":"(0x00002e59, 0x00005225)","childCount":0,"identifier":"(0x0000463a, 0x00002105)","index":0,"parentIdentifier":"(0x00002075, 0x000044ac)","type":3}]</Data>
</Entry>
</Metadata>
<Attributes>
<Attribute>
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
<Value>Loic Mahe</Value>
</Attribute>
<Attribute>
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
<Value>1.0</Value>
</Attribute>
<Attribute>
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
<Value>Modifiable Settings example</Value>
</Attribute>
<Attribute>
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
<Value>http://openvibe.inria.fr/modifiable-box-settings/</Value>
</Attribute>
<Attribute>
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
<Value>box-tutorials</Value>
</Attribute>
<Attribute>
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
<Value>Inria</Value>
</Attribute>
</Attributes>
</OpenViBE-Scenario>
@@ -0,0 +1,67 @@
/**
* \page BoxAlgorithm_ModifiableSettings Modifiable Settings
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Description|
This box purpose is to test and demonstrate the modifiable settings feature.
It has a setting of each type and all are modifiable during scenario playback.
Values are displayed in log (LogLevel_Info) every 5 seconds.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Description|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Settings|
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Settings|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting1|
An integer.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting1|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting2|
A float.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting2|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting3|
A boolean.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting3|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting4|
A string.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting4|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting5|
A filename.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting5|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting6|
A script.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting6|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting7|
A color.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting7|
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Setting8|
A color gradient.
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Setting8|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Examples|
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ModifiableSettings_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ModifiableSettings_Miscellaneous|
*/
@@ -0,0 +1,135 @@
.. _Doc_BoxAlgorithm_ModifiableSettingsExample:
Modifiable Settings example
===========================
.. todo:: Write general box description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Settings:
Settings
--------
.. todo:: Write settings general description...
.. csv-table::
:header: "Setting Name", "Type", "Default Value"
"Int", "Integer", "1"
"Float", "Float", "1.3"
"Bool", "Boolean", "false"
"String", "String", "string"
"filename", "Filename", "somefile.txt"
"script", "Script", "somescript.lua"
"color", "", "20,65,90"
"colorgradient", "", "0:0,0,0; 100:60,40,40"
"unit", "Measurement unit", "V"
"factor", "Factor", "1e-01"
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_1:
Int
~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_2:
Float
~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_3:
Bool
~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_4:
String
~~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_5:
filename
~~~~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_6:
script
~~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_7:
color
~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_8:
colorgradient
~~~~~~~~~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_9:
unit
~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Setting_10:
factor
~~~~~~
.. todo:: Write setting description...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Examples:
Examples
--------
.. todo:: Write example of use...
.. _Doc_BoxAlgorithm_ModifiableSettingsExample_Miscellaneous:
Miscellaneous
-------------
.. todo:: Write any miscellaneous information...
@@ -0,0 +1,35 @@
#include "ovpCBoxAlgorithmModifiableSettings.h"
namespace OpenViBE {
namespace Plugins {
namespace Examples {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmModifiableSettings::processClock(Kernel::CMessageClock& /*msg*/)
{
updateSettings();
//print settings values
for (size_t i = 0; i < m_SettingsValue.size(); ++i)
{
this->getLogManager() << Kernel::LogLevel_Info << "Setting " << i << " value is " << m_SettingsValue[i] << "\n";
}
this->getLogManager() << Kernel::LogLevel_Info << "\n";
return true;
}
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmModifiableSettings::updateSettings()
{
m_SettingsValue.clear();
const size_t nSetting = this->getStaticBoxContext().getSettingCount();
for (size_t i = 0; i < nSetting; ++i)
{
CString value = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), i);
m_SettingsValue.push_back(value);
}
return true;
}
} // namespace Examples
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,99 @@
#pragma once
#include "../ovp_defines.h"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <visualization-toolkit/ovviz_all.h>
#include <vector>
namespace OpenViBE {
namespace Plugins {
namespace Examples {
/**
* \class CBoxAlgorithmModifiableSettings
* \author lmahe (Inria)
* \date Mon Oct 14 16:35:48 2013
* \brief The class CBoxAlgorithmModifiableSettings describes the box ModifiableSettings.
*
*/
class CBoxAlgorithmModifiableSettings final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override { return true; }
bool uninitialize() override { return true; }
bool processClock(Kernel::CMessageClock& msg) override;
uint64_t getClockFrequency() override { return 0x1ULL << 30; } // 4Hz
bool process() override { return true; }
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, OVP_ClassId_BoxAlgorithm_ModifiableSettings)
protected:
bool updateSettings();
std::vector<CString> m_SettingsValue;
};
/**
* \class CBoxAlgorithmModifiableSettingsDesc
* \author lmahe (Inria)
* \date Mon Oct 14 16:35:48 2013
* \brief Descriptor of the box ModifiableSettings.
*
*/
class CBoxAlgorithmModifiableSettingsDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return CString("Modifiable Settings example"); }
CString getAuthorName() const override { return CString("lmahe"); }
CString getAuthorCompanyName() const override { return CString("Inria"); }
CString getShortDescription() const override
{
return CString("Settings of this box are modifiable during playback. Values are displayed in log every 5 seconds");
}
CString getDetailedDescription() const override
{
return CString(
"This box purpose is to test and demonstrate the modifiable settings feature.\n It has a setting of each type and all are modifiable during scenario playback.\n");
}
CString getCategory() const override { return CString("Examples/Basic"); }
CString getVersion() const override { return CString("1.0"); }
CString getStockItemName() const override { return CString(""); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_BoxAlgorithm_ModifiableSettings; }
IPluginObject* create() override { return new CBoxAlgorithmModifiableSettings; }
bool hasFunctionality(const EPluginFunctionality functionality) const override { return functionality == EPluginFunctionality::Visualization; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addSetting("Int", OV_TypeId_Integer, "1", true);
prototype.addSetting("Float", OV_TypeId_Float, "1.3", true);
prototype.addSetting("Bool", OV_TypeId_Boolean, "false", true);
prototype.addSetting("String", OV_TypeId_String, "string", true);
prototype.addSetting("filename", OV_TypeId_Filename, "somefile.txt", true);
prototype.addSetting("script", OV_TypeId_Script, "somescript.lua", true);
prototype.addSetting("color", OV_TypeId_Color, "20,65,90", true);
prototype.addSetting("colorgradient", OV_TypeId_ColorGradient, "0:0,0,0; 100:60,40,40", true);
prototype.addSetting("unit", OV_TypeId_MeasurementUnit, "V", true);
prototype.addSetting("factor", OV_TypeId_Factor, "1e-01", true);
prototype.addFlag(OV_AttributeId_Box_FlagIsUnstable);
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, OVP_ClassId_BoxAlgorithm_ModifiableSettingsDesc)
};
} // namespace Examples
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,14 @@
#pragma once
// Boxes
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_BoxAlgorithm_ModifiableSettings OpenViBE::CIdentifier(0x4AB0DD05, 0x32155D41)
#define OVP_ClassId_BoxAlgorithm_ModifiableSettingsDesc OpenViBE::CIdentifier(0x3808515D, 0x97C7F9B6)
// Global defines
//---------------------------------------------------------------------------------------------------
#ifdef TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#include "ovp_global_defines.h"
#endif // TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#define OV_AttributeId_Box_FlagIsUnstable OpenViBE::CIdentifier(0x666FFFFF, 0x666FFFFF)
@@ -0,0 +1,10 @@
#include "ovp_defines.h"
#include "box-algorithms/ovpCBoxAlgorithmModifiableSettings.h"
OVP_Declare_Begin()
context.getTypeManager().registerEnumerationEntry(OV_TypeId_BoxAlgorithmFlag, OV_AttributeId_Box_FlagIsUnstable.toString(),
OV_AttributeId_Box_FlagIsUnstable.id());
OVP_Declare_New(OpenViBE::Plugins::Examples::CBoxAlgorithmModifiableSettingsDesc);
OVP_Declare_End()