src/objecttypes/modelobject.h

Sun, 22 Sep 2019 11:51:41 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Sun, 22 Sep 2019 11:51:41 +0300
changeset 3
55a55a9ec2c2
child 6
73e448b2943d
permissions
-rw-r--r--

Added lots of code

#pragma once
#include <QPointF>
#include <QString>
#include <QStringView>
#include "main.h"
#include "colors.h"
#include "uuid.h"
#include "vertex.h"

namespace modelobjects
{
	enum class Property;
	class BaseObject;
	class ColoredBaseObject;
}

enum class modelobjects::Property
{
	Color,
	Text,
	Point1,
	Point2,
	Point3,
	Point4,
	ControlPoint1,
	ControlPoint2,
	Position,
	Transformation,
	ReferenceName,
	IsInverted,
};

class modelobjects::BaseObject
{
public:
	enum class SetPropertyResult
	{
		Success = 0,
		PropertyNotHandled,
		InvalidValue
	};
	BaseObject();
	BaseObject(const BaseObject&) = delete;
	virtual ~BaseObject();
	const Uuid id;
	//virtual void toString(QTextStream &out) = 0;
	virtual bool hasColor() const;
	virtual QVariant getProperty(Property id) const;
	virtual SetPropertyResult setProperty(Property id, const QVariant& value);
};

class modelobjects::ColoredBaseObject : public BaseObject
{
public:
	ColoredBaseObject(const Color color_index = colors::main);
	bool hasColor() const override final;
	QVariant getProperty(Property id) const override;
	SetPropertyResult setProperty(Property id, const QVariant& value) override;
private:
	Color color_index = colors::main;
};

mercurial