Base: extend ShapeHintsItem to allow to set vertex ordering and shape type
This commit is contained in:
@@ -89,6 +89,30 @@ std::string DrawStyle::patternAsString() const
|
||||
return str.str();
|
||||
}
|
||||
|
||||
const char* VertexOrdering::toString() const
|
||||
{
|
||||
switch (ordering) {
|
||||
case Ordering::UnknownOrdering:
|
||||
return "UNKNOWN_ORDERING";
|
||||
case Ordering::Clockwise:
|
||||
return "CLOCKWISE";
|
||||
case Ordering::CounterClockwise:
|
||||
return "COUNTERCLOCKWISE";
|
||||
}
|
||||
return "UNKNOWN_ORDERING";
|
||||
}
|
||||
|
||||
const char* ShapeType::toString() const
|
||||
{
|
||||
switch (type) {
|
||||
case Type::UnknownShapeType:
|
||||
return "UNKNOWN_SHAPE_TYPE";
|
||||
case Type::Convex:
|
||||
return "SOLID";
|
||||
}
|
||||
return "UNKNOWN_SHAPE_TYPE";
|
||||
}
|
||||
|
||||
const char* BindingElement::bindingAsString() const
|
||||
{
|
||||
switch (value) {
|
||||
@@ -631,10 +655,23 @@ ShapeHintsItem::ShapeHintsItem(float creaseAngle) : creaseAngle(creaseAngle)
|
||||
|
||||
}
|
||||
|
||||
void ShapeHintsItem::setVertexOrdering(VertexOrdering::Ordering value)
|
||||
{
|
||||
vertexOrdering.ordering = value;
|
||||
}
|
||||
|
||||
void ShapeHintsItem::setShapeType(ShapeType::Type value)
|
||||
{
|
||||
shapeType.type = value;
|
||||
}
|
||||
|
||||
|
||||
void ShapeHintsItem::write(InventorOutput& out) const
|
||||
{
|
||||
out.write() << "ShapeHints {\n";
|
||||
out.write() << " creaseAngle " << creaseAngle << '\n';
|
||||
out.write() << " vertexOrdering " << vertexOrdering.toString() << '\n';
|
||||
out.write() << " shapeType " << shapeType.toString() << '\n';
|
||||
out.write() << "}\n";
|
||||
}
|
||||
|
||||
@@ -915,11 +952,16 @@ void TransformItem::write(InventorOutput& out) const
|
||||
InventorBuilder::InventorBuilder(std::ostream& output)
|
||||
: result(output)
|
||||
{
|
||||
result << "#Inventor V2.1 ascii \n\n";
|
||||
addHeader();
|
||||
}
|
||||
|
||||
InventorBuilder:: ~InventorBuilder() = default;
|
||||
|
||||
void InventorBuilder::addHeader()
|
||||
{
|
||||
result << "#Inventor V2.1 ascii \n\n";
|
||||
}
|
||||
|
||||
void InventorBuilder::increaseIndent()
|
||||
{
|
||||
indent.increaseIndent();
|
||||
|
||||
@@ -88,6 +88,33 @@ public:
|
||||
unsigned short linePattern = 0xffff;
|
||||
};
|
||||
|
||||
class BaseExport VertexOrdering
|
||||
{
|
||||
public:
|
||||
enum class Ordering {
|
||||
UnknownOrdering,
|
||||
Clockwise,
|
||||
CounterClockwise
|
||||
};
|
||||
|
||||
const char* toString() const;
|
||||
|
||||
Ordering ordering = Ordering::UnknownOrdering;
|
||||
};
|
||||
|
||||
class BaseExport ShapeType
|
||||
{
|
||||
public:
|
||||
enum class Type {
|
||||
UnknownShapeType,
|
||||
Convex
|
||||
};
|
||||
|
||||
const char* toString() const;
|
||||
|
||||
Type type = Type::UnknownShapeType;
|
||||
};
|
||||
|
||||
class BaseExport BindingElement
|
||||
{
|
||||
public:
|
||||
@@ -367,11 +394,15 @@ private:
|
||||
class BaseExport ShapeHintsItem : public NodeItem
|
||||
{
|
||||
public:
|
||||
explicit ShapeHintsItem(float creaseAngle);
|
||||
explicit ShapeHintsItem(float creaseAngle = 0.0F);
|
||||
void setVertexOrdering(VertexOrdering::Ordering);
|
||||
void setShapeType(ShapeType::Type);
|
||||
void write(InventorOutput& out) const override;
|
||||
|
||||
private:
|
||||
float creaseAngle;
|
||||
float creaseAngle = 0.0F;
|
||||
VertexOrdering vertexOrdering;
|
||||
ShapeType shapeType;
|
||||
};
|
||||
|
||||
/*!
|
||||
@@ -591,6 +622,10 @@ public:
|
||||
* \param str - stream to write the content into
|
||||
*/
|
||||
explicit InventorBuilder(std::ostream& str);
|
||||
/*!
|
||||
* \brief Adds the OpenInventor header.
|
||||
*/
|
||||
void addHeader();
|
||||
/*!
|
||||
* \brief Destruction of an InventorBuilder instance
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user