Compare commits
2 Commits
0d42af9200
...
de9d7143b6
Author | SHA1 | Date |
---|---|---|
karlis | de9d7143b6 | |
karlis | ed4c3c0064 |
|
@ -14,6 +14,8 @@ EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(p
|
|||
elementInfoDisplayWidget = dynamic_cast<ElementPoolWidget *>(tabWidget->widget(1));
|
||||
qDebug() << layerInfoDisplayWidget;
|
||||
qDebug() << elementInfoDisplayWidget;
|
||||
connect(previewWindow, &PreviewWindow::layerInfoChanged, layerInfoDisplayWidget, &InfoDisplayWidget::triggerSelfRefresh);
|
||||
connect(treeWidget, &LayerTreeWidget::displayLayerChange, previewWindow, &PreviewWindow::currentLayerChanged);
|
||||
connect(treeWidget, &LayerTreeWidget::requireRefreshElementWidget, elementInfoDisplayWidget, &ElementPoolWidget::refresh);
|
||||
connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireRefreshElementWidget, elementInfoDisplayWidget, &ElementPoolWidget::refresh);
|
||||
connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidgetItem::onLayerChange);
|
||||
|
|
|
@ -47,6 +47,7 @@ PixelPath SimpleElement::getPaintObject(std::vector<std::shared_ptr<LayerStyle>>
|
|||
PixelPath result;
|
||||
Renderer::ElementStyleStrokeDemo demo(2);
|
||||
auto [img, mov] = renderer->drawElement(painterPath, demo, 1.0);
|
||||
//qDebug() << mov;
|
||||
//qDebug() << img << " ------";
|
||||
result.addImage(img, mov);
|
||||
//result.addPath(painterPath);
|
||||
|
|
|
@ -10,6 +10,7 @@ PreviewWindow::PreviewWindow(QWidget *parent) : QOpenGLWidget(parent)
|
|||
painter->setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
painter->setRenderHint(QPainter::HighQualityAntialiasing);
|
||||
layerManager = nullptr;
|
||||
currentLayer = nullptr;
|
||||
}
|
||||
|
||||
void PreviewWindow::initialize(LayerManager *layerManager,QSize windowSize)
|
||||
|
@ -47,6 +48,14 @@ void PreviewWindow::paintGL()
|
|||
painter->setRenderHint(QPainter::Antialiasing);
|
||||
painter->setRenderHint(QPainter::HighQualityAntialiasing);
|
||||
layerManager->paint(painter,this->size());
|
||||
if (currentLayer != nullptr)
|
||||
{
|
||||
QPen pen = painter->pen(); // 获取当前的画笔
|
||||
pen.setStyle(Qt::DashLine); // 设置画笔样式为虚线
|
||||
painter->setPen(pen); // 应用画笔设置
|
||||
painter->drawRect(this->currentLayer->getCache().getBoundingRect()); // 绘制矩形
|
||||
}
|
||||
|
||||
painter->end();
|
||||
}
|
||||
|
||||
|
@ -56,4 +65,50 @@ void PreviewWindow::resizeGL(int w, int h)
|
|||
|
||||
Renderer::ElementRenderer* const PreviewWindow::getRenderer()const {
|
||||
return this->renderer;
|
||||
}
|
||||
|
||||
void PreviewWindow::currentLayerChanged(LayerWrapper* layer)
|
||||
{
|
||||
this->currentLayer = layer;
|
||||
}
|
||||
|
||||
void PreviewWindow::refresh()
|
||||
{
|
||||
this->repaint();
|
||||
}
|
||||
|
||||
void PreviewWindow::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
// 当鼠标按下时,记录当前的位置
|
||||
m_lastPos = event->pos();
|
||||
}
|
||||
|
||||
void PreviewWindow::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
// 当鼠标移动时,计算移动的距离,并根据需要更新图形的状态
|
||||
int dx = event->x() - m_lastPos.x();
|
||||
int dy = event->y() - m_lastPos.y();
|
||||
if (currentLayer != nullptr) {
|
||||
if (event->buttons() & Qt::LeftButton) {
|
||||
// 如果按下的是左键,那么平移图形
|
||||
currentLayer->property.offset.setX(currentLayer->property.offset.x() + dx);
|
||||
currentLayer->property.offset.setY(currentLayer->property.offset.y() + dy);
|
||||
qDebug() << dx << "----" << dy;
|
||||
emit layerInfoChanged();
|
||||
}
|
||||
else if (event->buttons() & Qt::RightButton) {
|
||||
// 如果按下的是右键,那么旋转图形
|
||||
qreal angle = -sqrt(dx * dx + dy * dy) / 1.0;
|
||||
currentLayer->property.rotation += angle;
|
||||
emit layerInfoChanged();
|
||||
}
|
||||
}
|
||||
// 更新上一次的位置
|
||||
m_lastPos = event->pos();
|
||||
this->repaint();
|
||||
}
|
||||
|
||||
void PreviewWindow::mouseReleaseEvent(QMouseEvent* event)
|
||||
{
|
||||
// 当鼠标释放时,不做任何操作
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QOpenGLFunctions>
|
||||
#include <QMouseEvent>
|
||||
#include <QOpenGLWidget>
|
||||
#include "../Renderer/Preview/ElementRenderer.h"
|
||||
|
||||
|
@ -19,7 +20,13 @@ class PreviewWindow : public QOpenGLWidget, protected QOpenGLFunctions
|
|||
LayerManager *layerManager;
|
||||
Renderer::ElementRenderer* renderer;
|
||||
QSize logicalSize;
|
||||
|
||||
QRectF viewportRect;
|
||||
LayerWrapper* currentLayer;
|
||||
QPointF m_lastPos;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
void mouseReleaseEvent(QMouseEvent* event) override;
|
||||
|
||||
public:
|
||||
PreviewWindow(QWidget *parent = nullptr);
|
||||
void initialize(LayerManager *layerManager, QSize windowSize = QSize(1920, 1080));
|
||||
|
@ -28,4 +35,11 @@ class PreviewWindow : public QOpenGLWidget, protected QOpenGLFunctions
|
|||
void paintGL() override;
|
||||
void resizeGL(int w, int h) override;
|
||||
Renderer::ElementRenderer* const getRenderer()const;
|
||||
|
||||
public slots:
|
||||
void currentLayerChanged(LayerWrapper*);
|
||||
void refresh();
|
||||
|
||||
signals:
|
||||
void layerInfoChanged();
|
||||
};
|
||||
|
|
|
@ -13,10 +13,14 @@ LayerTreeWidget::LayerTreeWidget(QWidget *parent)
|
|||
connect(this, &QTreeWidget::customContextMenuRequested, this, &LayerTreeWidget::popMenu);
|
||||
connect(this, &QTreeWidget::currentItemChanged, [=](QTreeWidgetItem *currentItem) {
|
||||
this->selectedItem = currentItem;
|
||||
if(this->selectedItem !=nullptr)
|
||||
emit displayLayerChange(this->selectedItem->data(0, Qt::UserRole).value<LayerWrapper *>());
|
||||
else
|
||||
emit displayLayerChange(nullptr);
|
||||
if (this->selectedItem != nullptr) {
|
||||
auto layer = this->selectedItem->data(0, Qt::UserRole).value<LayerWrapper*>();
|
||||
emit displayLayerChange(layer);
|
||||
}
|
||||
else {
|
||||
emit displayLayerChange(nullptr);
|
||||
}
|
||||
emit requireRefreshPreview();
|
||||
});
|
||||
// connect(this, &QTreeWidget::itemDoubleClicked, this, &LayerTreeWidget::onItemDoubleClicked);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ class LayerTreeWidget : public QTreeWidget
|
|||
// void mouseDoubleClickEvent(QMouseEvent *event) override;
|
||||
// void onItemDoubleClicked(QTreeWidgetItem *item, int column = 0);
|
||||
|
||||
signals:
|
||||
signals:
|
||||
void displayLayerChange(LayerWrapper *);
|
||||
void requireRefreshPreview();
|
||||
void requireRefreshElementWidget();
|
||||
|
|
Loading…
Reference in New Issue