Compare commits
3 Commits
ff848b1443
...
ab402955cd
Author | SHA1 | Date |
---|---|---|
karlis | ab402955cd | |
karlis | abe1ee02c1 | |
karlis | 21a973babd |
|
@ -14,6 +14,7 @@ EditorWidget::EditorWidget(QWidget *parent) : QWidget(parent)
|
|||
connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidget::onLayerChange);
|
||||
connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireRefreshPreview, this,
|
||||
&EditorWidget::triggerRefreshPreview);
|
||||
connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireSelfRefresh, layerInfoDisplayWidget, &InfoDisplayWidget::triggerSelfRefresh);
|
||||
// &EditorWidget::triggerRefreshPreview);
|
||||
// test
|
||||
QFile settingFile;
|
||||
|
@ -28,7 +29,7 @@ EditorWidget::EditorWidget(QWidget *parent) : QWidget(parent)
|
|||
QJsonObject source = jsonDoc.object();
|
||||
elementManager = new ElementManager(source,previewWindow->getRenderer());
|
||||
layerManager = new LayerManager(source, elementManager);
|
||||
previewWindow->initialize(layerManager);
|
||||
previewWindow->initialize(layerManager,QSize(jsonDoc.object().value("width").toDouble(),jsonDoc.object().value("height").toDouble()));
|
||||
if (layerManager->getRoot() != nullptr)
|
||||
{
|
||||
treeWidget->addTopLevelItem(layerManager->getRoot()->qTreeItem);
|
||||
|
|
|
@ -46,7 +46,6 @@ PixelPath GroupElement::getPaintObject() const
|
|||
PixelPath SimpleElement::getPaintObject(std::vector<Renderer::ElementStyleStrokeDemo> styles) const {
|
||||
PixelPath result;
|
||||
Renderer::ElementStyleStrokeDemo demo(2);
|
||||
qDebug() << (renderer == nullptr) << "------------";
|
||||
auto [img, mov] = renderer->drawElement(painterPath, demo, 1.0, false);
|
||||
//qDebug() << img << " ------";
|
||||
result.addImage(img, mov);
|
||||
|
|
|
@ -21,9 +21,15 @@ QRectF PixelPath::getBoundingRect() const
|
|||
{
|
||||
return boundingRect;
|
||||
}
|
||||
|
||||
#include <QDebug>
|
||||
QPixmap PixelPath::getPixmap() const
|
||||
{
|
||||
auto k = pixmap;
|
||||
QPainter pt(&k);
|
||||
qDebug() << this->boundingRect;
|
||||
//pt.fillRect(this->boundingRect, Qt::red);
|
||||
//pt.fillRect(QRectF(1013.35 - 1000, 768.327 - 700,58.0887,41.5352), Qt::blue);
|
||||
return k;
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ private:
|
|||
QPixmap pixmap;
|
||||
int w,h;
|
||||
public:
|
||||
PixelPath(int w=1280, int h=720);
|
||||
PixelPath(QPainterPath painterPath,int w = 1280, int h = 720);
|
||||
PixelPath(int w=2400, int h= 2400);
|
||||
PixelPath(QPainterPath painterPath,int w = 2400, int h = 2400);
|
||||
~PixelPath() = default;
|
||||
QRectF getBoundingRect() const;
|
||||
QPixmap getPixmap() const;
|
||||
|
|
|
@ -12,8 +12,9 @@ PreviewWindow::PreviewWindow(QWidget *parent) : QOpenGLWidget(parent)
|
|||
layerManager = nullptr;
|
||||
}
|
||||
|
||||
void PreviewWindow::initialize(LayerManager *layerManager)
|
||||
void PreviewWindow::initialize(LayerManager *layerManager,QSize windowSize)
|
||||
{
|
||||
this->setFixedSize(windowSize);
|
||||
this->layerManager = layerManager;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class PreviewWindow : public QOpenGLWidget, protected QOpenGLFunctions
|
|||
|
||||
public:
|
||||
PreviewWindow(QWidget *parent = nullptr);
|
||||
void initialize(LayerManager *layerManager);
|
||||
void initialize(LayerManager *layerManager, QSize windowSize = QSize(1920, 1080));
|
||||
void show();
|
||||
void initializeGL() override;
|
||||
void paintGL() override;
|
||||
|
|
|
@ -44,27 +44,27 @@ void InfoDisplayWidget::generateLayerForm()
|
|||
QLineEdit *scaleX = new QLineEdit(QString::number(this->displayLayer->property.scale.x()), this);
|
||||
QLineEdit *scaleY = new QLineEdit(QString::number(this->displayLayer->property.scale.y()), this);
|
||||
name->setDisabled(true);
|
||||
rotation->setValidator(new QIntValidator(-1000, 1000, this));
|
||||
rotation->setValidator(new QIntValidator(-10000, 10000, this));
|
||||
connect(rotation, &QLineEdit::textChanged, [=](QString content) {
|
||||
this->displayLayer->property.rotation = content.toDouble();
|
||||
emit requireRefreshPreview();
|
||||
});
|
||||
offsetX->setValidator(new QIntValidator(-1000, 1000, this));
|
||||
offsetX->setValidator(new QIntValidator(-10000, 10000, this));
|
||||
connect(offsetX, &QLineEdit::textChanged, [=](QString content) {
|
||||
this->displayLayer->property.offset = {content.toDouble(), this->displayLayer->property.offset.y()};
|
||||
emit requireRefreshPreview();
|
||||
});
|
||||
offsetY->setValidator(new QIntValidator(-1000, 1000, this));
|
||||
offsetY->setValidator(new QIntValidator(-10000, 10000, this));
|
||||
connect(offsetY, &QLineEdit::textChanged, [=](QString content) {
|
||||
this->displayLayer->property.offset = {this->displayLayer->property.offset.x(), content.toDouble()};
|
||||
emit requireRefreshPreview();
|
||||
});
|
||||
scaleX->setValidator(new QDoubleValidator(0.01, 100, 4, this));
|
||||
scaleX->setValidator(new QDoubleValidator(0.001, 1000, 4, this));
|
||||
connect(scaleX, &QLineEdit::textChanged, [=](QString content) {
|
||||
this->displayLayer->property.scale = {content.toDouble(), this->displayLayer->property.scale.y()};
|
||||
emit requireRefreshPreview();
|
||||
});
|
||||
scaleY->setValidator(new QDoubleValidator(0.01, 100, 4, this));
|
||||
scaleY->setValidator(new QDoubleValidator(0.001, 1000, 4, this));
|
||||
connect(scaleY, &QLineEdit::textChanged, [=](QString content) {
|
||||
this->displayLayer->property.scale = {this->displayLayer->property.scale.x(), content.toDouble()};
|
||||
emit requireRefreshPreview();
|
||||
|
@ -98,16 +98,23 @@ void InfoDisplayWidget::generateLayerForm()
|
|||
detailButton->setFixedSize(QSize(20, 20));
|
||||
deleteButton->setText("×");
|
||||
deleteButton->setFixedSize(QSize(20, 20));
|
||||
connect(detailButton, &QPushButton::clicked, [styleList, item, this]() {
|
||||
connect(detailButton, &QPushButton::clicked, [styleList, item, this, index]() {
|
||||
QDialog dlg(this);
|
||||
dlg.setWindowTitle("样式详情");
|
||||
dlg.resize(400, 200);
|
||||
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Cancel, &dlg);
|
||||
QGridLayout *contentLayout = new QGridLayout(&dlg);
|
||||
QLineEdit* name = new QLineEdit(styleNames[index], &dlg);
|
||||
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Cancel);
|
||||
contentLayout->addWidget(buttonBox);
|
||||
connect(buttonBox, &QDialogButtonBox::accepted, &dlg, &QDialog::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, &dlg, &QDialog::reject);
|
||||
bool updateStyle = dlg.exec();
|
||||
if (updateStyle) {
|
||||
styleNames[index] = name->text();
|
||||
qDebug() << name->text();
|
||||
// 在此处修改新样式信息至内存
|
||||
emit requireRefreshPreview();
|
||||
emit requireSelfRefresh();
|
||||
}
|
||||
});
|
||||
connect(deleteButton, &QPushButton::clicked, [styleList,item,this]() {
|
||||
|
@ -115,6 +122,7 @@ void InfoDisplayWidget::generateLayerForm()
|
|||
delete item;
|
||||
// 删除layer对应样式
|
||||
emit requireRefreshPreview();
|
||||
emit requireSelfRefresh();
|
||||
});
|
||||
layout->addWidget(name);
|
||||
layout->addWidget(detailButton);
|
||||
|
@ -137,3 +145,11 @@ void InfoDisplayWidget::generateLayerForm()
|
|||
void InfoDisplayWidget::generateElementForm()
|
||||
{
|
||||
}
|
||||
|
||||
void InfoDisplayWidget::triggerSelfRefresh()
|
||||
{
|
||||
if (this->displayLayer != nullptr)
|
||||
this->generateLayerForm();
|
||||
else
|
||||
this->generateElementForm();
|
||||
}
|
|
@ -18,6 +18,12 @@ class InfoDisplayWidget : public QWidget
|
|||
void generateLayerForm();
|
||||
void generateElementForm();
|
||||
|
||||
public slots:
|
||||
void triggerSelfRefresh();
|
||||
|
||||
signals:
|
||||
void requireRefreshPreview();
|
||||
void requireSelfRefresh();
|
||||
|
||||
|
||||
};
|
||||
|
|
|
@ -14,6 +14,8 @@ namespace UnitTest
|
|||
public:
|
||||
TEST_METHOD(TestBothSidesRound)
|
||||
{
|
||||
Logger::WriteMessage("In Class1");
|
||||
Assert::AreEqual(1 ,2);
|
||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
||||
|
|
141
data.json
141
data.json
|
@ -1,109 +1,38 @@
|
|||
{
|
||||
"height": 1080,
|
||||
"width": 1080,
|
||||
"elements": [
|
||||
{
|
||||
"name": "ababa",
|
||||
"type": "svg-file",
|
||||
"data": {
|
||||
"include": "./svg/2.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ababa-group",
|
||||
"type": "group",
|
||||
"data": {
|
||||
"reference-layer": "0.0"
|
||||
}
|
||||
}
|
||||
],
|
||||
"root-layer": {
|
||||
"name": "root",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"scale": {
|
||||
"x": 1.0,
|
||||
"y": 1.0
|
||||
},
|
||||
"height": 1080,
|
||||
"width": 1920,
|
||||
"elements": [
|
||||
{
|
||||
"name": "ababa",
|
||||
"type": "svg-file",
|
||||
"data": {
|
||||
"include": "./svg/12(1).svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ababa-group",
|
||||
"type": "group",
|
||||
"data": {
|
||||
"reference-layer": "0.0"
|
||||
}
|
||||
}
|
||||
],
|
||||
"root-layer": {
|
||||
"name": "root",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"scale": {
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"rotation": 0.0
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": true,
|
||||
"referenced-by": null,
|
||||
"children": [
|
||||
{
|
||||
"name": "GroupFolderExample",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 50,
|
||||
"y": 50
|
||||
},
|
||||
"scale": {
|
||||
"x": 1.0,
|
||||
"y": 1.0
|
||||
},
|
||||
"rotation": 0.0
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": true,
|
||||
"referenced-by": 1,
|
||||
"children": [
|
||||
{
|
||||
"name": "Leaf1",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"scale": {
|
||||
"x": 1.0,
|
||||
"y": 1.0
|
||||
},
|
||||
"rotation": 0.0
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": false,
|
||||
"element": 0
|
||||
},
|
||||
{
|
||||
"name": "Leaf2",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 150,
|
||||
"y": 0
|
||||
},
|
||||
"scale": {
|
||||
"x": 1.5,
|
||||
"y": 1.5
|
||||
},
|
||||
"rotation": 0.0
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": false,
|
||||
"element": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ReferencingGroupLayer",
|
||||
"transform": {
|
||||
"offset": {
|
||||
"x": 100,
|
||||
"y": 0
|
||||
},
|
||||
"scale": {
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
"rotation": 45
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": false,
|
||||
"element": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"effects": [],
|
||||
"is-folder": false,
|
||||
"element": 0
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 8.7 KiB |
|
@ -0,0 +1,7 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 822.45 644.74">
|
||||
<defs>
|
||||
<style>.cls-1,.cls-2{fill:none;stroke-miterlimit:10;}.cls-1{stroke:#af5c4c;}.cls-2{stroke:#aa7226;}</style>
|
||||
</defs>
|
||||
|
||||
<path id="红_右下_4" class="cls-1" d="M1026,772.51a6.67,6.67,0,0,0,4.09,2c3.83.29,7-3.67,8.17-6.64,2.25-5.95-1.81-13.64-7.15-17.36-7.86-5.46-17.88-1.94-22-.51-15.17,5.33-21.35,19.5-22,20.94-7.29,17.46,1.77,33.53,3.07,35.74,8.87,15.14,24.68,19.24,33.19,21.45,5.56,1.44,26,6.75,46.47-4.6,26.86-14.9,30.35-45.55,30.64-48.51" transform="translate(-946.07 -186.44)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 583 B |
Loading…
Reference in New Issue