feat: add parameter name class
This commit is contained in:
@@ -24,6 +24,7 @@ set(ENGINE_SOURCES
|
||||
src/Engine/Parameter/Parameter.cpp
|
||||
src/Engine/Parameter/Default.cpp
|
||||
src/Engine/Parameter/Range.cpp
|
||||
src/Engine/Parameter/PrmName.cpp
|
||||
src/Engine/Network/NetworkManager.cpp
|
||||
)
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
#include <icecream.hpp>
|
||||
|
||||
|
||||
enzo::op::Context::Context(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager)
|
||||
|
||||
@@ -35,12 +35,12 @@ nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, op::OpInfo opInfo)
|
||||
|
||||
void nt::GeometryOperator::initParameters()
|
||||
{
|
||||
for(const prm::Template* t = opInfo_.templates; t->isValid(); ++t)
|
||||
for(const prm::Template* t = opInfo_.templates; t->getType()!=prm::Type::LIST_TERMINATOR; ++t)
|
||||
{
|
||||
std::cout << "name: " << t->getName() << "\n";
|
||||
// create parameter
|
||||
auto parameter = std::make_shared<prm::Parameter>(*t);
|
||||
parameter->valueChanged.connect([this](){dirtyNode();});
|
||||
IC(parameter);
|
||||
|
||||
parameters_.push_back(parameter);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "Engine/Operator/OperatorTable.h"
|
||||
#include "Engine/Operator/OpInfo.h"
|
||||
#include "Engine/Types.h"
|
||||
#include <boost/dll/import.hpp>
|
||||
|
||||
#include <iostream>
|
||||
@@ -9,7 +10,7 @@ void enzo::op::OperatorTable::addOperator(enzo::op::OpInfo info)
|
||||
std::cout << "OPERATOR TABLE ADDED\n";
|
||||
std::cout << "adding operator: " << info.displayName << "\n";
|
||||
|
||||
for(const prm::Template* t = info.templates; t->isValid(); ++t)
|
||||
for(const prm::Template* t = info.templates; t->getType()!=prm::Type::LIST_TERMINATOR; ++t)
|
||||
{
|
||||
std::cout << "name: " << t->getName() << "\n";
|
||||
}
|
||||
|
||||
@@ -45,6 +45,11 @@ std::string enzo::prm::Parameter::getName() const
|
||||
return template_.getName();
|
||||
}
|
||||
|
||||
std::string enzo::prm::Parameter::getLabel() const
|
||||
{
|
||||
return template_.getLabel();
|
||||
}
|
||||
|
||||
enzo::bt::floatT enzo::prm::Parameter::evalFloat(unsigned int index) const
|
||||
{
|
||||
if(index >= floatValues_.size())
|
||||
|
||||
@@ -10,6 +10,7 @@ class Parameter
|
||||
public:
|
||||
Parameter(Template prmTemplate);
|
||||
std::string getName() const;
|
||||
std::string getLabel() const;
|
||||
enzo::prm::Type getType() const;
|
||||
unsigned int getVectorSize() const;
|
||||
|
||||
|
||||
23
src/Engine/Parameter/PrmName.cpp
Normal file
23
src/Engine/Parameter/PrmName.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "Engine/Parameter/PrmName.h"
|
||||
|
||||
enzo::prm::Name::Name(bt::String token, bt::String label)
|
||||
: token_{token}, label_{label}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
enzo::prm::Name::Name()
|
||||
: token_{""}, label_{""}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
enzo::bt::String enzo::prm::Name::getToken() const
|
||||
{
|
||||
return token_;
|
||||
}
|
||||
|
||||
enzo::bt::String enzo::prm::Name::getLabel() const
|
||||
{
|
||||
return label_;
|
||||
}
|
||||
19
src/Engine/Parameter/PrmName.h
Normal file
19
src/Engine/Parameter/PrmName.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "Engine/Types.h"
|
||||
namespace enzo::prm
|
||||
{
|
||||
class Name
|
||||
{
|
||||
public:
|
||||
Name(bt::String token, bt::String label);
|
||||
Name();
|
||||
|
||||
bt::String getToken() const;
|
||||
bt::String getLabel() const;
|
||||
private:
|
||||
bt::String token_;
|
||||
bt::String label_;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
#include "Engine/Parameter/Template.h"
|
||||
#include "Engine/Parameter/Default.h"
|
||||
#include "Engine/Parameter/Range.h"
|
||||
#include "Engine/Parameter/Type.h"
|
||||
#include "Engine/Types.h"
|
||||
#include <icecream.hpp>
|
||||
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name)
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, prm::Name name)
|
||||
: Template(type, name, prm::Default())
|
||||
{
|
||||
ranges_.resize(vectorSize_);
|
||||
}
|
||||
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, unsigned int vectorSize)
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, prm::Name name, unsigned int vectorSize)
|
||||
: Template(type, name, prm::Default(), vectorSize)
|
||||
{
|
||||
ranges_.resize(vectorSize_);
|
||||
}
|
||||
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, std::vector<prm::Default> defaults, unsigned int vectorSize, std::vector<prm::Range> ranges)
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, prm::Name name, std::vector<prm::Default> defaults, unsigned int vectorSize, std::vector<prm::Range> ranges)
|
||||
: type_{type}, name_{name}, defaults_{defaults}, vectorSize_(vectorSize)
|
||||
{
|
||||
if(ranges.size()<vectorSize_)
|
||||
@@ -34,7 +34,7 @@ enzo::prm::Template::Template(enzo::prm::Type type, const char* name, std::vecto
|
||||
ranges_ = ranges;
|
||||
}
|
||||
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, prm::Default theDefault, unsigned int vectorSize, Range range)
|
||||
enzo::prm::Template::Template(enzo::prm::Type type, prm::Name name, prm::Default theDefault, unsigned int vectorSize, Range range)
|
||||
: type_{type}, name_{name}, vectorSize_(vectorSize)
|
||||
{
|
||||
defaults_.resize(vectorSize_, theDefault);
|
||||
@@ -42,15 +42,16 @@ enzo::prm::Template::Template(enzo::prm::Type type, const char* name, prm::Defau
|
||||
}
|
||||
|
||||
enzo::prm::Template::Template()
|
||||
: type_{enzo::prm::Type::LIST_TERMINATOR}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool enzo::prm::Template::isValid() const
|
||||
{
|
||||
return name_!=nullptr;
|
||||
// bool enzo::prm::Template::isValid() const
|
||||
// {
|
||||
// return name_!=nullptr;
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
const enzo::prm::Type enzo::prm::Template::getType() const
|
||||
{
|
||||
@@ -79,9 +80,18 @@ const unsigned int enzo::prm::Template::getNumDefaults() const
|
||||
return defaults_.size();
|
||||
}
|
||||
|
||||
|
||||
const char* enzo::prm::Template::getName() const
|
||||
enzo::bt::String enzo::prm::Template::getName() const
|
||||
{
|
||||
return name_;
|
||||
return name_.getToken();
|
||||
}
|
||||
|
||||
enzo::bt::String enzo::prm::Template::getToken() const
|
||||
{
|
||||
return name_.getToken();
|
||||
}
|
||||
|
||||
enzo::bt::String enzo::prm::Template::getLabel() const
|
||||
{
|
||||
return name_.getLabel();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include "Engine/Parameter/Default.h"
|
||||
#include "Engine/Parameter/PrmName.h"
|
||||
#include "Engine/Parameter/Range.h"
|
||||
#include "Engine/Parameter/Type.h"
|
||||
#include "Engine/Types.h"
|
||||
|
||||
namespace enzo::prm
|
||||
@@ -12,41 +12,44 @@ class Template
|
||||
public:
|
||||
Template(
|
||||
enzo::prm::Type type,
|
||||
const char* name
|
||||
prm::Name name
|
||||
);
|
||||
Template(
|
||||
enzo::prm::Type type,
|
||||
const char* name,
|
||||
prm::Name name,
|
||||
unsigned int vectorSize
|
||||
);
|
||||
Template(
|
||||
enzo::prm::Type type,
|
||||
const char* name,
|
||||
prm::Name name,
|
||||
std::vector<prm::Default> defaults,
|
||||
unsigned int vectorSize = 1,
|
||||
std::vector<prm::Range> ranges=std::vector<prm::Range>()
|
||||
);
|
||||
Template(
|
||||
enzo::prm::Type type,
|
||||
const char* name,
|
||||
prm::Name name,
|
||||
prm::Default theDefault,
|
||||
unsigned int vectorSize = 1,
|
||||
Range range=Range()
|
||||
);
|
||||
Template();
|
||||
const char* getName() const;
|
||||
// get name and get token are identical
|
||||
enzo::bt::String getName() const;
|
||||
enzo::bt::String getToken() const;
|
||||
enzo::bt::String getLabel() const;
|
||||
const prm::Default getDefault(unsigned int index=0) const;
|
||||
const prm::Range& getRange(unsigned int index=0) const;
|
||||
const prm::Type getType() const;
|
||||
const unsigned int getSize() const;
|
||||
const unsigned int getNumDefaults() const;
|
||||
bool isValid() const;
|
||||
// bool isValid() const;
|
||||
private:
|
||||
enzo::prm::Type type_;
|
||||
std::vector<prm::Default> defaults_;
|
||||
std::vector<prm::Range> ranges_;
|
||||
// TODO: make a class that holds token and name
|
||||
const char* name_;
|
||||
prm::Name name_;
|
||||
unsigned int vectorSize_;
|
||||
|
||||
};
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
namespace enzo::prm
|
||||
|
||||
{
|
||||
|
||||
// enum class Type
|
||||
// {
|
||||
// STRING,
|
||||
// FLOAT,
|
||||
// INT,
|
||||
// };
|
||||
|
||||
|
||||
// class Type
|
||||
// {
|
||||
|
||||
// };
|
||||
|
||||
// const extern prm::Type FlOAT_TYPE;
|
||||
// const extern prm::Type STRING_TYPE;
|
||||
|
||||
}
|
||||
@@ -39,6 +39,7 @@ namespace enzo
|
||||
{
|
||||
enum class Type
|
||||
{
|
||||
LIST_TERMINATOR,
|
||||
STRING,
|
||||
XYZ,
|
||||
FLOAT,
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <iostream>
|
||||
#include <qlabel.h>
|
||||
#include <string>
|
||||
#include <icecream.hpp>
|
||||
|
||||
|
||||
enzo::ui::FormParm::FormParm(std::weak_ptr<prm::Parameter> parameter)
|
||||
@@ -15,7 +16,7 @@ enzo::ui::FormParm::FormParm(std::weak_ptr<prm::Parameter> parameter)
|
||||
{
|
||||
if(auto sharedParameter=parameter_.lock())
|
||||
{
|
||||
std::string name = sharedParameter->getName();
|
||||
std::string name = sharedParameter->getLabel();
|
||||
label_ = new QLabel(QString::fromStdString(name+":"));
|
||||
label_->setStyleSheet("QLabel{background: none}");
|
||||
label_->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
|
||||
|
||||
@@ -71,9 +71,11 @@ void enzo::ui::IntSliderParm::paintEvent(QPaintEvent *event)
|
||||
painter.setPen(notchPen_);
|
||||
QRectF markerLinesRect = rect();
|
||||
markerLinesRect.adjust(margin, margin, -margin, -margin);
|
||||
for(int i=minValue_+1;i<maxValue_; ++i)
|
||||
|
||||
const int notchCount = std::min<int>(valueRange, 100);
|
||||
for(int i=1;i<notchCount; ++i)
|
||||
{
|
||||
float x = ((i-minValue_)*markerLinesRect.width())/valueRange;
|
||||
float x = ((i-1)*markerLinesRect.width())/notchCount;
|
||||
x += notchWidth+4; // offset
|
||||
const float y = markerLinesRect.bottom()-2;
|
||||
painter.drawLine(x, y, x, y-5);
|
||||
|
||||
@@ -21,11 +21,13 @@ add_library(${libName} SHARED
|
||||
../Engine/Parameter/Parameter.cpp
|
||||
../Engine/Parameter/Default.cpp
|
||||
../Engine/Parameter/Range.cpp
|
||||
../Engine/Parameter/PrmName.cpp
|
||||
GopTransform.cpp
|
||||
GopHouse.cpp
|
||||
GopTestCube.cpp
|
||||
GopGeometryImport.cpp
|
||||
GopGrid.cpp
|
||||
GopSineWave.cpp
|
||||
)
|
||||
target_link_libraries(${libName} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets Qt6::OpenGLWidgets glm::glm Eigen3::Eigen TBB::tbb)
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ void GopGeometryImport::cookOp(enzo::op::Context context)
|
||||
|
||||
enzo::prm::Template GopGeometryImport::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::STRING, "filePath"),
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, "size", enzo::prm::Default(1)),
|
||||
enzo::prm::Template(enzo::prm::Type::STRING, enzo::prm::Name("filePath", "File Path")),
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, enzo::prm::Name("size", "Size"), enzo::prm::Default(1)),
|
||||
enzo::prm::Terminator
|
||||
};
|
||||
|
||||
@@ -42,7 +42,7 @@ void GopGrid::cookOp(enzo::op::Context context)
|
||||
{
|
||||
const bt::floatT x = static_cast<bt::floatT>(i)/columns*width-centerOffsetX;
|
||||
const bt::floatT z = static_cast<bt::floatT>(j)/rows*height-centerOffsetY;
|
||||
geo.addPoint(bt::Vector3(x, sin(i+j)/10, z));
|
||||
geo.addPoint(bt::Vector3(x, 0, z));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,17 +74,17 @@ void GopGrid::cookOp(enzo::op::Context context)
|
||||
|
||||
enzo::prm::Template GopGrid::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, "size", enzo::prm::Default(10), 2, enzo::prm::Range(0, enzo::prm::RangeFlag::UNLOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)),
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, enzo::prm::Name("size", "Size"), enzo::prm::Default(10), 2, enzo::prm::Range(0, enzo::prm::RangeFlag::UNLOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)),
|
||||
enzo::prm::Template(
|
||||
enzo::prm::Type::INT,
|
||||
"rows",
|
||||
enzo::prm::Name("rows", "Rows"),
|
||||
enzo::prm::Default(10),
|
||||
1,
|
||||
enzo::prm::Range(0, enzo::prm::RangeFlag::LOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)
|
||||
),
|
||||
enzo::prm::Template(
|
||||
enzo::prm::Type::INT,
|
||||
"columns",
|
||||
enzo::prm::Name("columns", "Columns"),
|
||||
enzo::prm::Default(10),
|
||||
1,
|
||||
enzo::prm::Range(0, enzo::prm::RangeFlag::LOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)
|
||||
|
||||
@@ -76,6 +76,6 @@ void GOP_house::cookOp(enzo::op::Context context)
|
||||
|
||||
enzo::prm::Template GOP_house::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, "size", 1),
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, enzo::prm::Name("size", "Size"), 1),
|
||||
enzo::prm::Terminator
|
||||
};
|
||||
|
||||
46
src/OpDefs/GopSineWave.cpp
Normal file
46
src/OpDefs/GopSineWave.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include "OpDefs/GopSineWave.h"
|
||||
#include "Engine/Parameter/Range.h"
|
||||
#include "Engine/Types.h"
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <oneapi/tbb/blocked_range.h>
|
||||
#include <oneapi/tbb/parallel_for.h>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
GopSineWave::GopSineWave(enzo::nt::NetworkManager* network, enzo::op::OpInfo opInfo)
|
||||
: GeometryOpDef(network, opInfo)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GopSineWave::cookOp(enzo::op::Context context)
|
||||
{
|
||||
using namespace enzo;
|
||||
|
||||
if(outputRequested(0))
|
||||
{
|
||||
geo::Geometry geo = context.cloneInputGeo(0);
|
||||
|
||||
const ga::Offset pointCount = geo.getNumPoints();
|
||||
const bt::floatT frequency = context.evalFloatParm("frequency");
|
||||
tbb::parallel_for(tbb::blocked_range<ga::Offset>(0, pointCount), [&geo, frequency](tbb::blocked_range<ga::Offset> range){
|
||||
for(ga::Offset i=range.begin(); i!=range.end(); ++i)
|
||||
{
|
||||
bt::Vector3 pos = geo.getPointPos(i);
|
||||
pos += bt::Vector3(0, sin(pos.x()*frequency), 0);
|
||||
geo.setPointPos(i, pos);
|
||||
}
|
||||
});
|
||||
|
||||
setOutputGeometry(0, geo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enzo::prm::Template GopSineWave::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, enzo::prm::Name("frequency", "Frequency"), enzo::prm::Default(1), 1),
|
||||
enzo::prm::Terminator
|
||||
};
|
||||
18
src/OpDefs/GopSineWave.h
Normal file
18
src/OpDefs/GopSineWave.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
#include "Engine/Operator/GeometryOpDef.h"
|
||||
#include "Engine/Parameter/Template.h"
|
||||
|
||||
class GopSineWave
|
||||
: public enzo::nt::GeometryOpDef
|
||||
{
|
||||
public:
|
||||
GopSineWave(enzo::nt::NetworkManager* network, enzo::op::OpInfo opInfo);
|
||||
virtual void cookOp(enzo::op::Context context);
|
||||
static enzo::nt::GeometryOpDef* ctor(enzo::nt::NetworkManager* network, enzo::op::OpInfo opInfo)
|
||||
{
|
||||
return new GopSineWave(network, opInfo);
|
||||
}
|
||||
|
||||
static BOOST_SYMBOL_EXPORT enzo::prm::Template parameterList[];
|
||||
|
||||
};
|
||||
@@ -67,6 +67,6 @@ void GopTestGeoCube::cookOp(enzo::op::Context context)
|
||||
|
||||
enzo::prm::Template GopTestGeoCube::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, "size", 1),
|
||||
enzo::prm::Template(enzo::prm::Type::FLOAT, enzo::prm::Name("size", "Size"), 1),
|
||||
enzo::prm::Terminator
|
||||
};
|
||||
|
||||
@@ -62,8 +62,8 @@ void GopTransform::cookOp(enzo::op::Context context)
|
||||
|
||||
enzo::prm::Template GopTransform::parameterList[] =
|
||||
{
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, "translate", 3),
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, "rotate", 3),
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, enzo::prm::Name("translate", "Translate"), 3),
|
||||
enzo::prm::Template(enzo::prm::Type::XYZ, enzo::prm::Name("rotate", "Rotate"), 3),
|
||||
enzo::prm::Terminator
|
||||
};
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "GopTestCube.h"
|
||||
#include "OpDefs/GopTransform.hpp"
|
||||
#include "OpDefs/GopGrid.h"
|
||||
#include "OpDefs/GopSineWave.h"
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/dll.hpp>
|
||||
|
||||
@@ -67,6 +68,17 @@ extern "C"
|
||||
1,
|
||||
}
|
||||
);
|
||||
addOperator(
|
||||
enzo::op::OpInfo {
|
||||
"sineWave",
|
||||
"Sine Wave",
|
||||
&GopSineWave::ctor,
|
||||
GopSineWave::parameterList,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user