dust3d/application/sources/skeleton_graphics_origin_it...

80 lines
2.0 KiB
C++

#include "skeleton_graphics_origin_item.h"
#include "theme.h"
SkeletonGraphicsOriginItem::SkeletonGraphicsOriginItem(Document::Profile profile)
: m_profile(profile)
, m_hovered(false)
, m_checked(false)
, m_rotated(false)
{
setData(0, "origin");
}
void SkeletonGraphicsOriginItem::setRotated(bool rotated)
{
m_rotated = rotated;
}
void SkeletonGraphicsOriginItem::updateAppearance()
{
QColor color = Theme::white;
switch (m_profile) {
case Document::Profile::Unknown:
break;
case Document::Profile::Main:
color = m_rotated ? Theme::blue : Theme::red;
break;
case Document::Profile::Side:
color = Theme::green;
break;
}
QColor penColor = color;
penColor.setAlphaF(m_checked ? Theme::checkedAlpha : Theme::normalAlpha);
QPen pen(penColor);
pen.setWidth(0);
setPen(pen);
QColor brushColor = color;
brushColor.setAlphaF((m_checked || m_hovered) ? Theme::checkedAlpha : Theme::normalAlpha);
QBrush brush(brushColor);
setBrush(brush);
}
void SkeletonGraphicsOriginItem::setOrigin(QPointF point)
{
m_origin = point;
QPolygonF triangle;
const int triangleRadius = 10;
triangle.append(QPointF(point.x() - triangleRadius, point.y()));
triangle.append(QPointF(point.x() + triangleRadius, point.y()));
triangle.append(QPointF(point.x(), point.y() - triangleRadius));
triangle.append(QPointF(point.x() - triangleRadius, point.y()));
setPolygon(triangle);
updateAppearance();
}
QPointF SkeletonGraphicsOriginItem::origin()
{
return m_origin;
}
Document::Profile SkeletonGraphicsOriginItem::profile()
{
return m_profile;
}
void SkeletonGraphicsOriginItem::setHovered(bool hovered)
{
m_hovered = hovered;
updateAppearance();
}
void SkeletonGraphicsOriginItem::setChecked(bool checked)
{
m_checked = checked;
updateAppearance();
}
bool SkeletonGraphicsOriginItem::checked()
{
return m_checked;
}
bool SkeletonGraphicsOriginItem::hovered()
{
return m_hovered;
}