Files
BloomPatched/src/Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/BodyWidget.cpp

70 lines
1.8 KiB
C++

#include <QPainter>
#include <cmath>
#include "BodyWidget.hpp"
#include "src/Logger/Logger.hpp"
#include "src/Exceptions/Exception.hpp"
using namespace Bloom::InsightTargetWidgets::Dip;
using namespace Bloom::Exceptions;
void BodyWidget::paintEvent(QPaintEvent* event) {
auto painter = QPainter(this);
this->drawWidget(painter);
}
void BodyWidget::drawWidget(QPainter& painter) {
auto parentWidget = this->parentWidget();
if (parentWidget == nullptr) {
throw Exception("BodyWidget requires a parent widget");
}
painter.setRenderHints(QPainter::RenderHint::Antialiasing | QPainter::RenderHint::SmoothPixmapTransform, true);
// Draw target body
auto targetBodyColor = this->getBodyColor();
auto backgroundColor = QColor("#3C3F41");
if (!this->isEnabled()) {
targetBodyColor.setAlpha(this->getDisableAlphaLevel());
}
painter.setPen(Qt::PenStyle::NoPen);
painter.setBrush(targetBodyColor);
auto parentContainerWidth = parentWidget->width();
// this->setFixedSize(parentContainerWidth, parentContainerHeight);
auto targetBodyHeight = 150;
auto targetBodyWidth = parentContainerWidth;
this->setFixedSize(targetBodyWidth, targetBodyHeight);
auto targetBodyPoint = QPoint(
0,
0
);
painter.drawRect(
targetBodyPoint.x(),
targetBodyPoint.y(),
targetBodyWidth,
targetBodyHeight
);
painter.setPen(Qt::PenStyle::NoPen);
painter.setBrush(backgroundColor);
painter.drawEllipse(QRectF(
targetBodyPoint.x() + 10,
targetBodyPoint.y() + (targetBodyHeight - 30),
20,
20
));
painter.drawEllipse(QRectF(
targetBodyPoint.x() - 15,
targetBodyPoint.y() + (targetBodyHeight / 2) - 15,
30,
30
));
}