Refactoring. Make class VDetail more independent.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2015-06-11 20:36:17 +03:00
parent 8e8422c5fd
commit 0322457ece
18 changed files with 148 additions and 101 deletions

View File

@ -47,8 +47,8 @@ QSet<const QString> VContainer::uniqueNames = QSet<const QString>();
/** /**
* @brief VContainer create empty container * @brief VContainer create empty container
*/ */
VContainer::VContainer(const VTranslateVars *trVars) VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit)
:d(new VContainerData(trVars)) :d(new VContainerData(trVars, patternUnit))
{} {}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -465,6 +465,12 @@ bool VContainer::IsUnique(const QString &name)
return (!uniqueNames.contains(name) && !builInFunctions.contains(name)); return (!uniqueNames.contains(name) && !builInFunctions.contains(name));
} }
//---------------------------------------------------------------------------------------------------------------------
const Unit *VContainer::GetPatternUnit() const
{
return d->patternUnit;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief VariableExist check if exist variable this same name. * @brief VariableExist check if exist variable this same name.

View File

@ -51,15 +51,15 @@ class VContainerData : public QSharedData
{ {
public: public:
VContainerData(const VTranslateVars *trVars) VContainerData(const VTranslateVars *trVars, const Unit *patternUnit)
:sizeName(size_M), heightName(height_M), gObjects(QHash<quint32, QSharedPointer<VGObject> >()), :sizeName(size_M), heightName(height_M), gObjects(QHash<quint32, QSharedPointer<VGObject> >()),
variables(QHash<QString, QSharedPointer<VInternalVariable> > ()), details(QHash<quint32, VDetail>()), variables(QHash<QString, QSharedPointer<VInternalVariable> > ()), details(QHash<quint32, VDetail>()),
trVars(trVars) trVars(trVars), patternUnit(patternUnit)
{} {}
VContainerData(const VContainerData &data) VContainerData(const VContainerData &data)
:QSharedData(data), sizeName(data.sizeName), heightName(data.heightName), gObjects(data.gObjects), :QSharedData(data), sizeName(data.sizeName), heightName(data.heightName), gObjects(data.gObjects),
variables(data.variables), details(data.details), trVars(data.trVars) variables(data.variables), details(data.details), trVars(data.trVars), patternUnit(data.patternUnit)
{} {}
virtual ~VContainerData(); virtual ~VContainerData();
@ -81,6 +81,7 @@ public:
QHash<quint32, VDetail> details; QHash<quint32, VDetail> details;
const VTranslateVars *trVars; const VTranslateVars *trVars;
const Unit *patternUnit;
}; };
#ifdef Q_CC_GNU #ifdef Q_CC_GNU
@ -94,7 +95,7 @@ class VContainer
{ {
Q_DECLARE_TR_FUNCTIONS(VContainer) Q_DECLARE_TR_FUNCTIONS(VContainer)
public: public:
VContainer(const VTranslateVars *trVars); VContainer(const VTranslateVars *trVars, const Unit *patternUnit);
VContainer &operator=(const VContainer &data); VContainer &operator=(const VContainer &data);
VContainer(const VContainer &data); VContainer(const VContainer &data);
~VContainer(); ~VContainer();
@ -159,6 +160,8 @@ public:
static bool IsUnique(const QString &name); static bool IsUnique(const QString &name);
const Unit *GetPatternUnit() const;
private: private:
/** /**
* @brief _id current id. New object will have value +1. For empty class equal 0. * @brief _id current id. New object will have value +1. For empty class equal 0.

View File

@ -143,8 +143,6 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
const qreal VApplication::PrintDPI = 96.0;
#if defined(Q_OS_WIN) && defined(Q_CC_GNU) #if defined(Q_OS_WIN) && defined(Q_CC_GNU)
const QString VApplication::GistFileName = QStringLiteral("gist.json"); const QString VApplication::GistFileName = QStringLiteral("gist.json");
#endif // defined(Q_OS_WIN) && defined(Q_CC_GNU) #endif // defined(Q_OS_WIN) && defined(Q_CC_GNU)
@ -288,56 +286,6 @@ bool VApplication::notify(QObject *receiver, QEvent *event)
return false; return false;
} }
//---------------------------------------------------------------------------------------------------------------------
double VApplication::toPixel(double val, const Unit &unit) const
{
switch (unit)
{
case Unit::Mm:
return (val / 25.4) * PrintDPI;
case Unit::Cm:
return ((val * 10.0) / 25.4) * PrintDPI;
case Unit::Inch:
return val * PrintDPI;
case Unit::Px:
return val;
default:
break;
}
return 0;
}
//---------------------------------------------------------------------------------------------------------------------
double VApplication::toPixel(double val) const
{
return toPixel(val, _patternUnit);
}
//---------------------------------------------------------------------------------------------------------------------
double VApplication::fromPixel(double pix, const Unit &unit) const
{
switch (unit)
{
case Unit::Mm:
return (pix / PrintDPI) * 25.4;
case Unit::Cm:
return ((pix / PrintDPI) * 25.4) / 10.0;
case Unit::Inch:
return pix / PrintDPI;
case Unit::Px:
return pix;
default:
break;
}
return 0;
}
//---------------------------------------------------------------------------------------------------------------------
double VApplication::fromPixel(double pix) const
{
return fromPixel(pix, _patternUnit);
}
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VApplication::TryLock(QLockFile *lock) bool VApplication::TryLock(QLockFile *lock)
@ -612,6 +560,18 @@ void VApplication::InitOptions()
} }
} }
//---------------------------------------------------------------------------------------------------------------------
double VApplication::toPixel(double val) const
{
return ToPixel(val, _patternUnit);
}
//---------------------------------------------------------------------------------------------------------------------
double VApplication::fromPixel(double pix) const
{
return FromPixel(pix, _patternUnit);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QWidget *VApplication::getMainWindow() const QWidget *VApplication::getMainWindow() const
{ {

View File

@ -62,22 +62,20 @@ public:
static void CheckFactor(qreal &oldFactor, const qreal &Newfactor); static void CheckFactor(qreal &oldFactor, const qreal &Newfactor);
virtual bool notify(QObject * receiver, QEvent * event); virtual bool notify(QObject * receiver, QEvent * event);
Unit patternUnit() const; Unit patternUnit() const;
const Unit *patternUnitP() const;
void setPatternUnit(const Unit &patternUnit); void setPatternUnit(const Unit &patternUnit);
MeasurementsType patternType() const; MeasurementsType patternType() const;
void setPatternType(const MeasurementsType &patternType); void setPatternType(const MeasurementsType &patternType);
void InitOptions(); void InitOptions();
double toPixel(double val, const Unit &unit) const;
double toPixel(double val) const; double toPixel(double val) const;
double fromPixel(double pix, const Unit &unit) const;
double fromPixel(double pix) const; double fromPixel(double pix) const;
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
static bool TryLock(QLockFile *lock); static bool TryLock(QLockFile *lock);
#endif //QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) #endif //QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
static const qreal PrintDPI;
QString translationsPath() const; QString translationsPath() const;
qreal widthMainLine() const; qreal widthMainLine() const;
qreal widthHairLine() const; qreal widthHairLine() const;
@ -188,6 +186,12 @@ inline Unit VApplication::patternUnit() const
return _patternUnit; return _patternUnit;
} }
//---------------------------------------------------------------------------------------------------------------------
inline const Unit *VApplication::patternUnitP() const
{
return &_patternUnit;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline MeasurementsType VApplication::patternType() const inline MeasurementsType VApplication::patternType() const
{ {

View File

@ -254,8 +254,8 @@ void DialogLayoutSettings::ConvertPaperSize()
const qreal width = ui->doubleSpinBoxPaperWidth->value(); const qreal width = ui->doubleSpinBoxPaperWidth->value();
const qreal height = ui->doubleSpinBoxPaperHeight->value(); const qreal height = ui->doubleSpinBoxPaperHeight->value();
ui->doubleSpinBoxPaperWidth->setMaximum(qApp->fromPixel(QIMAGE_MAX, paperUnit)); ui->doubleSpinBoxPaperWidth->setMaximum(FromPixel(QIMAGE_MAX, paperUnit));
ui->doubleSpinBoxPaperHeight->setMaximum(qApp->fromPixel(QIMAGE_MAX, paperUnit)); ui->doubleSpinBoxPaperHeight->setMaximum(FromPixel(QIMAGE_MAX, paperUnit));
ui->doubleSpinBoxPaperWidth->setValue(VAbstractMeasurements::UnitConvertor(width, oldPaperUnit, paperUnit)); ui->doubleSpinBoxPaperWidth->setValue(VAbstractMeasurements::UnitConvertor(width, oldPaperUnit, paperUnit));
ui->doubleSpinBoxPaperHeight->setValue(VAbstractMeasurements::UnitConvertor(height, oldPaperUnit, paperUnit)); ui->doubleSpinBoxPaperHeight->setValue(VAbstractMeasurements::UnitConvertor(height, oldPaperUnit, paperUnit));
@ -271,8 +271,8 @@ void DialogLayoutSettings::ConvertLayoutSize()
const qreal layoutWidth = ui->doubleSpinBoxLayoutWidth->value(); const qreal layoutWidth = ui->doubleSpinBoxLayoutWidth->value();
const qreal shift = ui->doubleSpinBoxShift->value(); const qreal shift = ui->doubleSpinBoxShift->value();
ui->doubleSpinBoxLayoutWidth->setMaximum(qApp->fromPixel(QIMAGE_MAX, unit)); ui->doubleSpinBoxLayoutWidth->setMaximum(FromPixel(QIMAGE_MAX, unit));
ui->doubleSpinBoxShift->setMaximum(qApp->fromPixel(QIMAGE_MAX, unit)); ui->doubleSpinBoxShift->setMaximum(FromPixel(QIMAGE_MAX, unit));
ui->doubleSpinBoxLayoutWidth->setValue(VAbstractMeasurements::UnitConvertor(layoutWidth, oldLayoutUnit, unit)); ui->doubleSpinBoxLayoutWidth->setValue(VAbstractMeasurements::UnitConvertor(layoutWidth, oldLayoutUnit, unit));
ui->doubleSpinBoxShift->setValue(VAbstractMeasurements::UnitConvertor(shift, oldLayoutUnit, unit)); ui->doubleSpinBoxShift->setValue(VAbstractMeasurements::UnitConvertor(shift, oldLayoutUnit, unit));
@ -389,7 +389,7 @@ void DialogLayoutSettings::InitTemplates()
{ {
const QIcon icoPaper("://icon/16x16/template.png"); const QIcon icoPaper("://icon/16x16/template.png");
const QIcon icoRoll("://icon/16x16/roll.png"); const QIcon icoRoll("://icon/16x16/roll.png");
const QString pdi = QString("(%1ppi)").arg(VApplication::PrintDPI); const QString pdi = QString("(%1ppi)").arg(PrintDPI);
ui->comboBoxTemplates->addItem(icoPaper, "A0 "+pdi, QVariant(static_cast<char>(PaperSizeTemplate::A0))); ui->comboBoxTemplates->addItem(icoPaper, "A0 "+pdi, QVariant(static_cast<char>(PaperSizeTemplate::A0)));
ui->comboBoxTemplates->addItem(icoPaper, "A1 "+pdi, QVariant(static_cast<char>(PaperSizeTemplate::A1))); ui->comboBoxTemplates->addItem(icoPaper, "A1 "+pdi, QVariant(static_cast<char>(PaperSizeTemplate::A1)));
@ -582,7 +582,7 @@ void DialogLayoutSettings::Label()
Unit::Px)); Unit::Px));
const int height = qFloor(VAbstractMeasurements::UnitConvertor(ui->doubleSpinBoxPaperHeight->value(), const int height = qFloor(VAbstractMeasurements::UnitConvertor(ui->doubleSpinBoxPaperHeight->value(),
PaperUnit(), Unit::Px)); PaperUnit(), Unit::Px));
QString text = QString("%1 x %2 px, \n%3 ppi").arg(width).arg(height).arg(VApplication::PrintDPI); QString text = QString("%1 x %2 px, \n%3 ppi").arg(width).arg(height).arg(PrintDPI);
ui->labelSizeDescription->setText(text); ui->labelSizeDescription->setText(text);
} }
@ -645,8 +645,8 @@ void DialogLayoutSettings::WriteSettings() const
void DialogLayoutSettings::SheetSize(const QSizeF &size) void DialogLayoutSettings::SheetSize(const QSizeF &size)
{ {
oldPaperUnit = PaperUnit(); oldPaperUnit = PaperUnit();
ui->doubleSpinBoxPaperWidth->setMaximum(qApp->fromPixel(QIMAGE_MAX, oldPaperUnit)); ui->doubleSpinBoxPaperWidth->setMaximum(FromPixel(QIMAGE_MAX, oldPaperUnit));
ui->doubleSpinBoxPaperHeight->setMaximum(qApp->fromPixel(QIMAGE_MAX, oldPaperUnit)); ui->doubleSpinBoxPaperHeight->setMaximum(FromPixel(QIMAGE_MAX, oldPaperUnit));
ui->doubleSpinBoxPaperWidth->setValue(size.width()); ui->doubleSpinBoxPaperWidth->setValue(size.width());
ui->doubleSpinBoxPaperHeight->setValue(size.height()); ui->doubleSpinBoxPaperHeight->setValue(size.height());

View File

@ -179,7 +179,7 @@ void DialogCurveIntersectAxis::ShowDialog(bool click)
QLineF line = QLineF(point->toQPointF(), scene->getScenePos()); QLineF line = QLineF(point->toQPointF(), scene->getScenePos());
//Radius of point circle, but little bigger. Need handle with hover sizes. //Radius of point circle, but little bigger. Need handle with hover sizes.
qreal radius = qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5; qreal radius = ToPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5;
if (line.length() <= radius) if (line.length() <= radius)
{ {
return; return;

View File

@ -278,7 +278,7 @@ void DialogEndLine::ShowDialog(bool click)
QLineF line = QLineF(point->toQPointF(), scene->getScenePos()); QLineF line = QLineF(point->toQPointF(), scene->getScenePos());
//Radius of point circle, but little bigger. Need handle with hover sizes. //Radius of point circle, but little bigger. Need handle with hover sizes.
qreal radius = qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5; qreal radius = ToPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5;
if (line.length() <= radius) if (line.length() <= radius)
{ {
return; return;

View File

@ -203,7 +203,7 @@ void DialogLineIntersectAxis::ShowDialog(bool click)
QLineF line = QLineF(point->toQPointF(), scene->getScenePos()); QLineF line = QLineF(point->toQPointF(), scene->getScenePos());
//Radius of point circle, but little bigger. Need handle with hover sizes. //Radius of point circle, but little bigger. Need handle with hover sizes.
qreal radius = qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5; qreal radius = ToPixel(DefPointRadius/*mm*/, Unit::Mm)*1.5;
if (line.length() <= radius) if (line.length() <= radius)
{ {
return; return;

View File

@ -29,8 +29,7 @@
#include "vdetail.h" #include "vdetail.h"
#include "vdetail_p.h" #include "vdetail_p.h"
#include "../container/vcontainer.h" #include "../container/vcontainer.h"
#include "vpointf.h" #include "../libs/vgeometry/vpointf.h"
#include "../core/vapplication.h"
#include <QDebug> #include <QDebug>
#include <QString> #include <QString>
@ -428,11 +427,13 @@ QVector<QPointF> VDetail::SeamAllowancePoints(const VContainer *data) const
if (getClosed() == true) if (getClosed() == true)
{ {
pointsEkv = Equidistant(pointsEkv, EquidistantType::CloseEquidistant, qApp->toPixel(getWidth())); pointsEkv = Equidistant(pointsEkv, EquidistantType::CloseEquidistant, ToPixel(getWidth(),
*data->GetPatternUnit()));
} }
else else
{ {
pointsEkv = Equidistant(pointsEkv, EquidistantType::OpenEquidistant, qApp->toPixel(getWidth())); pointsEkv = Equidistant(pointsEkv, EquidistantType::OpenEquidistant, ToPixel(getWidth(),
*data->GetPatternUnit()));
} }
return pointsEkv; return pointsEkv;
} }

View File

@ -57,9 +57,10 @@
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
MainWindowsNoGUI::MainWindowsNoGUI(QWidget *parent) MainWindowsNoGUI::MainWindowsNoGUI(QWidget *parent)
: QMainWindow(parent), listDetails(QVector<VLayoutDetail>()), currentScene(nullptr), tempSceneLayout(nullptr), : QMainWindow(parent), listDetails(QVector<VLayoutDetail>()), currentScene(nullptr), tempSceneLayout(nullptr),
pattern(new VContainer(qApp->TrVars())), doc(nullptr), papers(QList<QGraphicsItem *>()), shadows(QList<QGraphicsItem *>()), pattern(new VContainer(qApp->TrVars(), qApp->patternUnitP())), doc(nullptr), papers(QList<QGraphicsItem *>()),
scenes(QList<QGraphicsScene *>()), details(QList<QList<QGraphicsItem *> >()), undoAction(nullptr), shadows(QList<QGraphicsItem *>()), scenes(QList<QGraphicsScene *>()), details(QList<QList<QGraphicsItem *> >()),
redoAction(nullptr), actionDockWidgetToolOptions(nullptr), curFile(QString()), isLayoutStale(true), isTiled(false) undoAction(nullptr), redoAction(nullptr), actionDockWidgetToolOptions(nullptr), curFile(QString()),
isLayoutStale(true), isTiled(false)
{ {
InitTempLayoutScene(); InitTempLayoutScene();
} }
@ -502,7 +503,7 @@ void MainWindowsNoGUI::SvgFile(const QString &name, int i) const
generator.setViewBox(paper->rect()); generator.setViewBox(paper->rect());
generator.setTitle("Valentina. Pattern layout"); generator.setTitle("Valentina. Pattern layout");
generator.setDescription(doc->GetDescription()); generator.setDescription(doc->GetDescription());
generator.setResolution(static_cast<int>(qApp->PrintDPI)); generator.setResolution(static_cast<int>(PrintDPI));
QPainter painter; QPainter painter;
painter.begin(&generator); painter.begin(&generator);
painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
@ -556,7 +557,7 @@ void MainWindowsNoGUI::PdfFile(const QString &name, int i) const
printer.setOutputFileName(name); printer.setOutputFileName(name);
printer.setDocName(FileName()); printer.setDocName(FileName());
const QRectF r = paper->rect(); const QRectF r = paper->rect();
printer.setResolution(static_cast<int>(qApp->PrintDPI)); printer.setResolution(static_cast<int>(PrintDPI));
// Set orientation // Set orientation
if (paper->rect().height()>= paper->rect().width()) if (paper->rect().height()>= paper->rect().width())
{ {
@ -566,7 +567,7 @@ void MainWindowsNoGUI::PdfFile(const QString &name, int i) const
{ {
printer.setOrientation(QPrinter::Landscape); printer.setOrientation(QPrinter::Landscape);
} }
printer.setPaperSize ( QSizeF(qApp->fromPixel(r.width(), Unit::Mm), qApp->fromPixel(r.height(), Unit::Mm)), printer.setPaperSize ( QSizeF(FromPixel(r.width(), Unit::Mm), FromPixel(r.height(), Unit::Mm)),
QPrinter::Millimeter ); QPrinter::Millimeter );
QPainter painter; QPainter painter;
if (painter.begin( &printer ) == false) if (painter.begin( &printer ) == false)
@ -652,7 +653,7 @@ void MainWindowsNoGUI::ObjFile(const QString &name, int i) const
VObjPaintDevice generator; VObjPaintDevice generator;
generator.setFileName(name); generator.setFileName(name);
generator.setSize(paper->rect().size().toSize()); generator.setSize(paper->rect().size().toSize());
generator.setResolution(static_cast<int>(qApp->PrintDPI)); generator.setResolution(static_cast<int>(PrintDPI));
QPainter painter; QPainter painter;
painter.begin(&generator); painter.begin(&generator);
scenes.at(i)->render(&painter, paper->rect(), paper->rect(), Qt::IgnoreAspectRatio); scenes.at(i)->render(&painter, paper->rect(), paper->rect(), Qt::IgnoreAspectRatio);
@ -730,7 +731,7 @@ void MainWindowsNoGUI::SaveLayoutAs()
qApp->getSettings()->SetPathLayout(f.absolutePath()); qApp->getSettings()->SetPathLayout(f.absolutePath());
printer.setOutputFileName(fileName); printer.setOutputFileName(fileName);
printer.setResolution(static_cast<int>(VApplication::PrintDPI)); printer.setResolution(static_cast<int>(PrintDPI));
PrintPages( &printer ); PrintPages( &printer );
} }
} }
@ -764,7 +765,7 @@ void MainWindowsNoGUI::PrintPreview()
} }
QPrinter printer(def, QPrinter::ScreenResolution); QPrinter printer(def, QPrinter::ScreenResolution);
printer.setResolution(static_cast<int>(VApplication::PrintDPI)); printer.setResolution(static_cast<int>(PrintDPI));
SetPrinterSettings(&printer); SetPrinterSettings(&printer);
// display print preview dialog // display print preview dialog
QPrintPreviewDialog preview(&printer); QPrintPreviewDialog preview(&printer);
@ -790,7 +791,7 @@ void MainWindowsNoGUI::LayoutPrint()
dialog.setOption(QPrintDialog::PrintCurrentPage, false); dialog.setOption(QPrintDialog::PrintCurrentPage, false);
if ( dialog.exec() == QDialog::Accepted ) if ( dialog.exec() == QDialog::Accepted )
{ {
printer.setResolution(static_cast<int>(VApplication::PrintDPI)); printer.setResolution(static_cast<int>(PrintDPI));
PrintPages( &printer ); PrintPages( &printer );
} }
} }
@ -820,8 +821,8 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer)
{ {
QGraphicsRectItem *paper = qgraphicsitem_cast<QGraphicsRectItem *>(papers.at(0)); QGraphicsRectItem *paper = qgraphicsitem_cast<QGraphicsRectItem *>(papers.at(0));
SCASSERT(paper != nullptr) SCASSERT(paper != nullptr)
printer->setPaperSize ( QSizeF(qApp->fromPixel(paper->rect().width(), Unit::Mm), printer->setPaperSize ( QSizeF(FromPixel(paper->rect().width(), Unit::Mm),
qApp->fromPixel(paper->rect().height(), Unit::Mm)), QPrinter::Millimeter ); FromPixel(paper->rect().height(), Unit::Mm)), QPrinter::Millimeter );
} }
printer->setDocName(FileName()); printer->setDocName(FileName());

View File

@ -50,7 +50,7 @@ VToolPoint::VToolPoint(VPattern *doc, VContainer *data, quint32 id, QGraphicsIte
:VDrawTool(doc, data, id), QGraphicsEllipseItem(parent), radius(DefPointRadius), namePoint(nullptr), :VDrawTool(doc, data, id), QGraphicsEllipseItem(parent), radius(DefPointRadius), namePoint(nullptr),
lineName(nullptr) lineName(nullptr)
{ {
radius = qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm); radius = ToPixel(DefPointRadius/*mm*/, Unit::Mm);
namePoint = new VGraphicsSimpleTextItem(this); namePoint = new VGraphicsSimpleTextItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::contextMenuEvent); connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::contextMenuEvent);
connect(namePoint, &VGraphicsSimpleTextItem::DeleteTool, this, &VToolPoint::DeleteFromLabel); connect(namePoint, &VGraphicsSimpleTextItem::DeleteTool, this, &VToolPoint::DeleteFromLabel);
@ -279,7 +279,7 @@ void VToolPoint::RefreshLine()
lineName->setLine(QLineF(p1, pRec - scenePos())); lineName->setLine(QLineF(p1, pRec - scenePos()));
lineName->setPen(QPen(CorrectColor(Qt::black), qApp->toPixel(qApp->widthHairLine())/factor)); lineName->setPen(QPen(CorrectColor(Qt::black), qApp->toPixel(qApp->widthHairLine())/factor));
if (QLineF(p1, pRec - scenePos()).length() <= qApp->toPixel(4, Unit::Mm)) if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm))
{ {
lineName->setVisible(false); lineName->setVisible(false);
} }

View File

@ -55,7 +55,7 @@ VNodePoint::VNodePoint(VPattern *doc, VContainer *data, quint32 id, quint32 idPo
:VAbstractNode(doc, data, id, idPoint, idTool, qoParent), QGraphicsEllipseItem(parent), radius(0), :VAbstractNode(doc, data, id, idPoint, idTool, qoParent), QGraphicsEllipseItem(parent), radius(0),
namePoint(nullptr), lineName(nullptr) namePoint(nullptr), lineName(nullptr)
{ {
radius = qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm); radius = ToPixel(DefPointRadius/*mm*/, Unit::Mm);
namePoint = new VGraphicsSimpleTextItem(this); namePoint = new VGraphicsSimpleTextItem(this);
lineName = new QGraphicsLineItem(this); lineName = new QGraphicsLineItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this,
@ -286,7 +286,7 @@ void VNodePoint::RefreshLine()
VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2); VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2);
QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center()));
lineName->setLine(QLineF(p1, pRec - scenePos())); lineName->setLine(QLineF(p1, pRec - scenePos()));
if (QLineF(p1, pRec - scenePos()).length() <= qApp->toPixel(4, Unit::Mm)) if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm))
{ {
lineName->setVisible(false); lineName->setVisible(false);
} }

View File

@ -49,7 +49,7 @@ VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePointP
:QGraphicsEllipseItem(parent), radius(0), controlLine(nullptr), indexSpline(indexSpline), position(position) :QGraphicsEllipseItem(parent), radius(0), controlLine(nullptr), indexSpline(indexSpline), position(position)
{ {
//create circle //create circle
radius = (1.5/*mm*/ / 25.4) * VApplication::PrintDPI; radius = (1.5/*mm*/ / 25.4) * PrintDPI;
QRectF rec = QRectF(0, 0, radius*2, radius*2); QRectF rec = QRectF(0, 0, radius*2, radius*2);
rec.translate(-rec.center().x(), -rec.center().y()); rec.translate(-rec.center().x(), -rec.center().y());
this->setRect(rec); this->setRect(rec);

View File

@ -110,7 +110,7 @@ QGraphicsEllipseItem *Visualization::InitPoint(const QColor &color, QGraphicsIte
point->setZValue(1); point->setZValue(1);
point->setBrush(QBrush(Qt::NoBrush)); point->setBrush(QBrush(Qt::NoBrush));
point->setPen(QPen(color, qApp->toPixel(qApp->widthMainLine())/factor)); point->setPen(QPen(color, qApp->toPixel(qApp->widthMainLine())/factor));
point->setRect(PointRect(qApp->toPixel(DefPointRadius/*mm*/, Unit::Mm))); point->setRect(PointRect(ToPixel(DefPointRadius/*mm*/, Unit::Mm)));
point->setFlags(QGraphicsItem::ItemStacksBehindParent); point->setFlags(QGraphicsItem::ItemStacksBehindParent);
point->setVisible(false); point->setVisible(false);
return point; return point;

View File

@ -216,7 +216,7 @@ qreal VAbstractMeasurements::UnitConvertor(qreal value, const Unit &from, const
case Unit::Inch: case Unit::Inch:
return value / 25.4; return value / 25.4;
case Unit::Px: case Unit::Px:
return (value / 25.4) * VApplication::PrintDPI; return (value / 25.4) * PrintDPI;
default: default:
break; break;
} }
@ -231,7 +231,7 @@ qreal VAbstractMeasurements::UnitConvertor(qreal value, const Unit &from, const
case Unit::Inch: case Unit::Inch:
return value / 2.54; return value / 2.54;
case Unit::Px: case Unit::Px:
return ((value * 10.0) / 25.4) * VApplication::PrintDPI; return ((value * 10.0) / 25.4) * PrintDPI;
default: default:
break; break;
} }
@ -246,7 +246,7 @@ qreal VAbstractMeasurements::UnitConvertor(qreal value, const Unit &from, const
case Unit::Inch: case Unit::Inch:
return value; return value;
case Unit::Px: case Unit::Px:
return value * VApplication::PrintDPI; return value * PrintDPI;
default: default:
break; break;
} }
@ -255,11 +255,11 @@ qreal VAbstractMeasurements::UnitConvertor(qreal value, const Unit &from, const
switch (to) switch (to)
{ {
case Unit::Mm: case Unit::Mm:
return (value / VApplication::PrintDPI) * 25.4; return (value / PrintDPI) * 25.4;
case Unit::Cm: case Unit::Cm:
return ((value / VApplication::PrintDPI) * 25.4) / 10.0; return ((value / PrintDPI) * 25.4) / 10.0;
case Unit::Inch: case Unit::Inch:
return value / VApplication::PrintDPI; return value / PrintDPI;
case Unit::Px: case Unit::Px:
return value; return value;
default: default:

View File

@ -10,4 +10,5 @@ HEADERS += \
$$PWD/ifcdef.h $$PWD/ifcdef.h
SOURCES += \ SOURCES += \
$$PWD/stable.cpp $$PWD/stable.cpp \
ifcdef.cpp

31
src/libs/ifc/ifcdef.cpp Normal file
View File

@ -0,0 +1,31 @@
/************************************************************************
**
** @file ifcdef.cpp
** @author Roman Telezhynskyi <dismine(at)gmail.com>
** @date 11 6, 2015
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2015 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "ifcdef.h"
const qreal PrintDPI = 96.0;

View File

@ -59,4 +59,44 @@ static const quint32 null_id = 0;
# define V_NOEXCEPT_EXPR(x) # define V_NOEXCEPT_EXPR(x)
# endif # endif
extern const qreal PrintDPI;
//---------------------------------------------------------------------------------------------------------------------
inline double ToPixel(double val, const Unit &unit)
{
switch (unit)
{
case Unit::Mm:
return (val / 25.4) * PrintDPI;
case Unit::Cm:
return ((val * 10.0) / 25.4) * PrintDPI;
case Unit::Inch:
return val * PrintDPI;
case Unit::Px:
return val;
default:
break;
}
return 0;
}
//---------------------------------------------------------------------------------------------------------------------
inline double FromPixel(double pix, const Unit &unit)
{
switch (unit)
{
case Unit::Mm:
return (pix / PrintDPI) * 25.4;
case Unit::Cm:
return ((pix / PrintDPI) * 25.4) / 10.0;
case Unit::Inch:
return pix / PrintDPI;
case Unit::Px:
return pix;
default:
break;
}
return 0;
}
#endif // IFCDEF_H #endif // IFCDEF_H