[editor] 将图层的旋转角度限制在了(-360, 360) | #27
parent
512181f6a3
commit
62d887aa07
|
@ -92,6 +92,15 @@ LeafLayerWrapper::~LeafLayerWrapper()
|
||||||
wrappedElement->referencedCount--;
|
wrappedElement->referencedCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LayerWrapper::SimpleProperty::setRotation(double newRotation)
|
||||||
|
{
|
||||||
|
if (newRotation <= -360 || 360 <= newRotation)
|
||||||
|
{
|
||||||
|
newRotation -= static_cast<int>(std::round(newRotation)) / 360 * 360;
|
||||||
|
}
|
||||||
|
rotation = newRotation;
|
||||||
|
}
|
||||||
|
|
||||||
void LayerWrapper::SimpleProperty::apply(PixelPath&cache)
|
void LayerWrapper::SimpleProperty::apply(PixelPath&cache)
|
||||||
{
|
{
|
||||||
transform.reset();
|
transform.reset();
|
||||||
|
|
|
@ -48,6 +48,7 @@ class LayerWrapper
|
||||||
bool flipY = 0;
|
bool flipY = 0;
|
||||||
QTransform transform;
|
QTransform transform;
|
||||||
// TODO: 将QPainterPath改为BitmapPath
|
// TODO: 将QPainterPath改为BitmapPath
|
||||||
|
void setRotation(double newRotation);
|
||||||
void apply(PixelPath&cache);
|
void apply(PixelPath&cache);
|
||||||
} property;
|
} property;
|
||||||
virtual void setParent(FolderLayerWrapper*newParent);
|
virtual void setParent(FolderLayerWrapper*newParent);
|
||||||
|
|
|
@ -106,7 +106,7 @@ void PreviewWindow::mouseMoveEvent(QMouseEvent* event)
|
||||||
else if (event->buttons() & Qt::RightButton) {
|
else if (event->buttons() & Qt::RightButton) {
|
||||||
// 如果按下的是右键,那么旋转图形
|
// 如果按下的是右键,那么旋转图形
|
||||||
qreal angle = dx;
|
qreal angle = dx;
|
||||||
currentLayer->property.rotation += angle;
|
currentLayer->property.setRotation(currentLayer->property.rotation + angle);
|
||||||
}
|
}
|
||||||
auto layer = currentLayer;
|
auto layer = currentLayer;
|
||||||
while (layer != nullptr)
|
while (layer != nullptr)
|
||||||
|
|
|
@ -21,29 +21,29 @@ InfoDisplayWidget::InfoDisplayWidget(QWidget* parent) :QWidget(parent)
|
||||||
ui.rotation->setLabel(("旋转角度"));
|
ui.rotation->setLabel(("旋转角度"));
|
||||||
ui.scaleX->setLabel(("水平缩放"));
|
ui.scaleX->setLabel(("水平缩放"));
|
||||||
ui.scaleY->setLabel(("垂直缩放"));
|
ui.scaleY->setLabel(("垂直缩放"));
|
||||||
ui.rotation->setValidator(new QIntValidator(-10000, 10000, this));
|
ui.rotation->setValidator(new QIntValidator(-360, 360, this));
|
||||||
ui.styleList->setDisabled(true);
|
ui.styleList->setDisabled(true);
|
||||||
connect(ui.rotation, &QLineEdit::textChanged, [=](QString content) {
|
connect(ui.rotation, &QLineEdit::textChanged, [=](const QString& content) {
|
||||||
this->displayLayer->property.rotation = content.toDouble();
|
this->displayLayer->property.setRotation(content.toDouble());
|
||||||
emit triggerCentralRefresh();
|
emit triggerCentralRefresh();
|
||||||
});
|
});
|
||||||
ui.offsetX->setValidator(new QIntValidator(-10000, 10000, this));
|
ui.offsetX->setValidator(new QIntValidator(-10000, 10000, this));
|
||||||
connect(ui.offsetX, &QLineEdit::textChanged, [=](QString content) {
|
connect(ui.offsetX, &QLineEdit::textChanged, [=](const QString& content) {
|
||||||
this->displayLayer->property.offset = { content.toDouble(), this->displayLayer->property.offset.y() };
|
this->displayLayer->property.offset = { content.toDouble(), this->displayLayer->property.offset.y() };
|
||||||
emit triggerCentralRefresh();
|
emit triggerCentralRefresh();
|
||||||
});
|
});
|
||||||
ui.offsetY->setValidator(new QIntValidator(-10000, 10000, this));
|
ui.offsetY->setValidator(new QIntValidator(-10000, 10000, this));
|
||||||
connect(ui.offsetY, &QLineEdit::textChanged, [=](QString content) {
|
connect(ui.offsetY, &QLineEdit::textChanged, [=](const QString& content) {
|
||||||
this->displayLayer->property.offset = { this->displayLayer->property.offset.x(), content.toDouble() };
|
this->displayLayer->property.offset = { this->displayLayer->property.offset.x(), content.toDouble() };
|
||||||
emit triggerCentralRefresh();
|
emit triggerCentralRefresh();
|
||||||
});
|
});
|
||||||
ui.scaleX->setValidator(new QDoubleValidator(0, 1000, 4, this));
|
ui.scaleX->setValidator(new QDoubleValidator(0, 1000, 4, this));
|
||||||
connect(ui.scaleX, &QLineEdit::textChanged, [=](QString content) {
|
connect(ui.scaleX, &QLineEdit::textChanged, [=](const QString& content) {
|
||||||
this->displayLayer->property.scale = { content.toDouble(), this->displayLayer->property.scale.y() };
|
this->displayLayer->property.scale = { content.toDouble(), this->displayLayer->property.scale.y() };
|
||||||
emit triggerCentralRefresh();
|
emit triggerCentralRefresh();
|
||||||
});
|
});
|
||||||
ui.scaleY->setValidator(new QDoubleValidator(0, 1000, 4, this));
|
ui.scaleY->setValidator(new QDoubleValidator(0, 1000, 4, this));
|
||||||
connect(ui.scaleY, &QLineEdit::textChanged, [=](QString content) {
|
connect(ui.scaleY, &QLineEdit::textChanged, [=](const QString& content) {
|
||||||
this->displayLayer->property.scale = { this->displayLayer->property.scale.x(), content.toDouble() };
|
this->displayLayer->property.scale = { this->displayLayer->property.scale.x(), content.toDouble() };
|
||||||
emit triggerCentralRefresh();
|
emit triggerCentralRefresh();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue