src/linetypes/compoundobject.h

Mon, 16 May 2022 01:40:49 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Mon, 16 May 2022 01:40:49 +0300
changeset 187
30204975694a
parent 186
922662adb72a
permissions
-rw-r--r--

work on circle tool

#pragma once
#include "object.h"

class Model;

namespace ldraw
{
	class CompoundObject;
}

/**
 * @brief An abstract object that has a transformation mmatrix and can be inverted.
 * It can be inlined into multiple objects.
 */
class ldraw::CompoundObject : public ColoredObject
{
public:
	CompoundObject() = default;
	CompoundObject(
		const glm::mat4& transformation,
		const Color color = ldraw::MAIN_COLOR);
	QVariant getProperty(Property property) const override;
	glm::vec3 position() const;
	void invert(GetPolygonsContext*context) override;
	Model* resolve(const ModelId callingModelId, DocumentManager* documents) const;
	QDataStream& serialize(QDataStream& stream) const override;
	QDataStream& deserialize(QDataStream& stream) override;
	std::optional<Axis> flatDimension(GetPolygonsContext *context) const;
	glm::mat4 transformation;
	QString transformToBareString() const;
	bool isInverted = false;
protected:
	void setProperty(SetPropertyResult* result, const PropertyKeyValue& pair) override;
};

mercurial