stuff-from-scratch/apps/notes_tk/canvas/CanvasDrawingArea.cpp
2023-01-13 15:03:07 +00:00

54 lines
1.2 KiB
C++

#include "CanvasDrawingArea.h"
#include "MouseEvent.h"
#include "GeometryNode.h"
#include "TransformNode.h"
#include "CircleNode.h"
#include <iostream>
CanvasDrawingArea::~CanvasDrawingArea()
{
}
void CanvasDrawingArea::addShapeAt(unsigned x, unsigned y)
{
if (mActiveDrawingCommand == CanvasDrawCommand::CIRCLE)
{
auto circle = std::make_unique<CircleNode>(DiscretePoint(x, y), 5);
circle->setFillColor(Color(255, 0, 0));
circle->setName("CanvasDrawingArea_CircleNode");
mRootNode->addChild(circle.get());
mSceneNodes.push_back(std::move(circle));
mContentDirty = true;
}
}
bool CanvasDrawingArea::isDirty() const
{
return Widget::isDirty() || mContentDirty;
}
void CanvasDrawingArea::doPaint(const PaintEvent* event)
{
mContentDirty = false;
}
void CanvasDrawingArea::onMyMouseEvent(const MouseEvent* event)
{
if(event->GetAction() == MouseEvent::Action::Pressed)
{
}
else if(event->GetAction() == MouseEvent::Action::Released)
{
auto client_loc = event->GetClientLocation();
auto screen_loc = event->GetScreenLocation();
addShapeAt(client_loc.getX(), client_loc.getY());
}
}