feat: floating edge cubic bezier, additional memory guards
This commit is contained in:
@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.10)
|
|||||||
|
|
||||||
# set vars
|
# set vars
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
# set exec names
|
# set exec names
|
||||||
set(AppExec enzoGui)
|
set(AppExec enzoGui)
|
||||||
set(TestExec tests)
|
set(TestExec tests)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "gui/network/SocketGraphic.h"
|
#include "gui/network/SocketGraphic.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <qgraphicsitem.h>
|
#include <qgraphicsitem.h>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
FloatingEdgeGraphic::FloatingEdgeGraphic(SocketGraphic* socket1, QGraphicsItem *parent)
|
FloatingEdgeGraphic::FloatingEdgeGraphic(SocketGraphic* socket1, QGraphicsItem *parent)
|
||||||
: QGraphicsItem(parent), socket1_{socket1}
|
: QGraphicsItem(parent), socket1_{socket1}
|
||||||
@@ -29,7 +30,19 @@ void FloatingEdgeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsIte
|
|||||||
|
|
||||||
pen.setCapStyle(Qt::RoundCap);
|
pen.setCapStyle(Qt::RoundCap);
|
||||||
painter->setPen(pen);
|
painter->setPen(pen);
|
||||||
painter->drawLine(socket1_->scenePos(),floatPos_);
|
// painter->drawLine(socket1_->scenePos(),floatPos_);
|
||||||
|
|
||||||
|
QPointF pos1 = socket1_->getIO()==SocketGraphic::SocketType::Input ? socket1_->scenePos() : floatPos_;
|
||||||
|
QPointF pos2 = socket1_->getIO()==SocketGraphic::SocketType::Input ? floatPos_ : socket1_->scenePos();
|
||||||
|
float dist = std::sqrt(std::pow(pos1.x()-pos2.x(),2)+std::pow(pos1.y()-pos2.y(),2));
|
||||||
|
std::cout << "dist: " << dist << "\n";
|
||||||
|
float cubicStrength = dist*0.5;
|
||||||
|
cubicStrength = std::clamp(cubicStrength, 0.0f, 40.0f);
|
||||||
|
QPainterPath path;
|
||||||
|
path.moveTo(pos1);
|
||||||
|
path.cubicTo(pos1-QPoint(0,cubicStrength), pos2+QPoint(0,cubicStrength), pos2);
|
||||||
|
painter->drawPath(path);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,16 +76,17 @@ void Network::resizeEvent(QResizeEvent *event)
|
|||||||
void Network::deleteEdge(QGraphicsItem* edge)
|
void Network::deleteEdge(QGraphicsItem* edge)
|
||||||
{
|
{
|
||||||
std::cout << "----\ndeleting edge\n";
|
std::cout << "----\ndeleting edge\n";
|
||||||
|
if(!edge) return;
|
||||||
if(prevHoverItem_==edge)
|
if(prevHoverItem_==edge)
|
||||||
{
|
{
|
||||||
prevHoverItem_=nullptr;
|
prevHoverItem_=nullptr;
|
||||||
}
|
}
|
||||||
scene_->removeItem(edge);
|
// scene_->removeItem(edge);
|
||||||
scene_->update();
|
// scene_->update();
|
||||||
view_->update();
|
// view_->update();
|
||||||
// NOTE: deleting edge kept giving me segmentation faults
|
// NOTE: deleting edge kept giving me segmentation faults
|
||||||
// I coundn't figure it out so I'm just leaving it for now
|
// I coundn't figure it out so I'm just leaving it for now
|
||||||
// delete edge;
|
delete edge;
|
||||||
std::cout << "finished deleting edge\n----\n";
|
std::cout << "finished deleting edge\n----\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "gui/network/SocketGraphic.h"
|
#include "gui/network/SocketGraphic.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <qgraphicsitem.h>
|
#include <qgraphicsitem.h>
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
NodeEdgeGraphic::NodeEdgeGraphic(SocketGraphic* socket1, SocketGraphic* socket2, QGraphicsItem *parent)
|
NodeEdgeGraphic::NodeEdgeGraphic(SocketGraphic* socket1, SocketGraphic* socket2, QGraphicsItem *parent)
|
||||||
: QGraphicsItem(parent), socket1_{socket1}, socket2_{socket2}, defaultColor_{QColor("white")}, pen_{QPen(QColor("white"))}
|
: QGraphicsItem(parent), socket1_{socket1}, socket2_{socket2}, defaultColor_{QColor("white")}, pen_{QPen(QColor("white"))}
|
||||||
@@ -17,6 +18,7 @@ NodeEdgeGraphic::NodeEdgeGraphic(SocketGraphic* socket1, SocketGraphic* socket2,
|
|||||||
NodeEdgeGraphic::~NodeEdgeGraphic()
|
NodeEdgeGraphic::~NodeEdgeGraphic()
|
||||||
{
|
{
|
||||||
std::cout << "edge destructor\n";
|
std::cout << "edge destructor\n";
|
||||||
|
scene()->removeItem(this);
|
||||||
socket1_->removeEdge(this);
|
socket1_->removeEdge(this);
|
||||||
socket2_->removeEdge(this);
|
socket2_->removeEdge(this);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user