Base: extend ShapeHintsItem to allow to set vertex ordering and shape type

This commit is contained in:
wmayer
2023-11-08 20:06:54 +01:00
committed by wwmayer
parent 0d221c0969
commit ba95a534d5
2 changed files with 80 additions and 3 deletions

View File

@@ -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();

View File

@@ -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
*/