Add ruler.
This commit is contained in:
parent
048035db79
commit
03721118a6
|
@ -9,6 +9,11 @@
|
||||||
#include "../vmisc/vcommonsettings.h"
|
#include "../vmisc/vcommonsettings.h"
|
||||||
#include "../vlayout/vprintlayout.h"
|
#include "../vlayout/vprintlayout.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const QColor tileColor(180, 180, 180);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPTileFactory::VPTileFactory(const VPLayoutPtr &layout, VCommonSettings *commonSettings):
|
VPTileFactory::VPTileFactory(const VPLayoutPtr &layout, VCommonSettings *commonSettings):
|
||||||
m_layout(layout),
|
m_layout(layout),
|
||||||
|
@ -74,8 +79,7 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMarginsF tilesMargins = layout->LayoutSettings().GetTilesMargins();
|
QPen penTileInfos = QPen(tileColor, m_commonSettings->WidthHairLine(), Qt::DashLine, Qt::RoundCap,
|
||||||
QPen penTileInfos = QPen(QColor(180,180,180), m_commonSettings->WidthHairLine(), Qt::DashLine, Qt::RoundCap,
|
|
||||||
Qt::RoundJoin);
|
Qt::RoundJoin);
|
||||||
QPen penTileDrawing = QPen(Qt::black, m_commonSettings->WidthMainLine(), Qt::SolidLine, Qt::RoundCap,
|
QPen penTileDrawing = QPen(Qt::black, m_commonSettings->WidthMainLine(), Qt::SolidLine, Qt::RoundCap,
|
||||||
Qt::RoundJoin);
|
Qt::RoundJoin);
|
||||||
|
@ -224,6 +228,8 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawRuler(painter);
|
||||||
|
|
||||||
if(col < nbCol-1)
|
if(col < nbCol-1)
|
||||||
{
|
{
|
||||||
// add right triangle
|
// add right triangle
|
||||||
|
@ -264,16 +270,17 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
|
||||||
|
|
||||||
// paint the grid information
|
// paint the grid information
|
||||||
const QString grid = tr("Grid ( %1 , %2 )").arg(row+1).arg(col+1);
|
const QString grid = tr("Grid ( %1 , %2 )").arg(row+1).arg(col+1);
|
||||||
|
const QString tileColorStr = QString("%1,%2,%3").arg(tileColor.red()).arg(tileColor.green()).arg(tileColor.blue());
|
||||||
|
|
||||||
td.setHtml(QString("<table width='100%' style='color:rgb(180,180,180);'>"
|
td.setHtml(QString("<table width='100%' style='color:rgb(%1);'>"
|
||||||
"<tr>"
|
"<tr>"
|
||||||
"<td align='center'>%1</td>"
|
"<td align='center'>%2</td>"
|
||||||
"</tr>"
|
"</tr>"
|
||||||
"</table>")
|
"</table>")
|
||||||
.arg(grid));
|
.arg(tileColorStr, grid));
|
||||||
painter->setPen(penTileInfos);
|
painter->setPen(penTileInfos);
|
||||||
painter->save();
|
painter->save();
|
||||||
painter->translate(QPointF(UnitConvertor(1, Unit::Cm, Unit::Px), m_drawingAreaHeight - tileStripeWidth));
|
painter->translate(QPointF(UnitConvertor(1, Unit::Cm, Unit::Px), m_drawingAreaHeight - tileStripeWidth/1.3));
|
||||||
td.drawContents(painter);
|
td.drawContents(painter);
|
||||||
painter->restore();
|
painter->restore();
|
||||||
|
|
||||||
|
@ -286,12 +293,12 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
|
||||||
QString clippedSheetName = metrix.elidedText(sheet->GetName(), Qt::ElideMiddle,
|
QString clippedSheetName = metrix.elidedText(sheet->GetName(), Qt::ElideMiddle,
|
||||||
metrix.width(QString().fill('z', 50)));
|
metrix.width(QString().fill('z', 50)));
|
||||||
|
|
||||||
td.setHtml(QString("<table width='100%' style='color:rgb(180,180,180);'>"
|
td.setHtml(QString("<table width='100%' style='color:rgb(%1);'>"
|
||||||
"<tr>"
|
"<tr>"
|
||||||
"<td align='center'>%1 - %2</td>"
|
"<td align='center'>%2 - %3</td>"
|
||||||
"</tr>"
|
"</tr>"
|
||||||
"</table>")
|
"</table>")
|
||||||
.arg(page).arg(clippedSheetName));
|
.arg(tileColorStr).arg(page).arg(clippedSheetName));
|
||||||
painter->save();
|
painter->save();
|
||||||
painter->rotate(-90);
|
painter->rotate(-90);
|
||||||
painter->translate(QPointF(-(m_drawingAreaHeight) + UnitConvertor(1, Unit::Cm, Unit::Px),
|
painter->translate(QPointF(-(m_drawingAreaHeight) + UnitConvertor(1, Unit::Cm, Unit::Px),
|
||||||
|
@ -349,3 +356,57 @@ auto VPTileFactory::DrawingAreaWidth() const -> qreal
|
||||||
{
|
{
|
||||||
return m_drawingAreaWidth;
|
return m_drawingAreaWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VPTileFactory::DrawRuler(QPainter *painter)
|
||||||
|
{
|
||||||
|
VPLayoutPtr layout = m_layout.toStrongRef();
|
||||||
|
if(layout.isNull())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPen rulePen(tileColor, 1, Qt::SolidLine);
|
||||||
|
|
||||||
|
painter->save();
|
||||||
|
painter->setPen(rulePen);
|
||||||
|
|
||||||
|
const qreal notchHeight = UnitConvertor(3, Unit::Mm, Unit::Px);
|
||||||
|
const qreal shortNotchHeight = UnitConvertor(1.1, Unit::Mm, Unit::Px);
|
||||||
|
Unit layoutUnits = layout->LayoutSettings().GetUnit();
|
||||||
|
const qreal step = UnitConvertor(1, layoutUnits, Unit::Px);
|
||||||
|
double marksCount = (m_drawingAreaWidth-tileStripeWidth) / step;
|
||||||
|
int i = 0;
|
||||||
|
while (i < marksCount)
|
||||||
|
{
|
||||||
|
if (i != 0)
|
||||||
|
{ // don't need 0 notch
|
||||||
|
// middle ruler line
|
||||||
|
painter->drawLine(QPointF(step * i - step / 2., m_drawingAreaHeight-tileStripeWidth),
|
||||||
|
QPointF(step * i - step / 2., m_drawingAreaHeight - tileStripeWidth + shortNotchHeight));
|
||||||
|
|
||||||
|
// ruler line
|
||||||
|
painter->drawLine(QPointF(step * i, m_drawingAreaHeight-tileStripeWidth),
|
||||||
|
QPointF(step * i, m_drawingAreaHeight - tileStripeWidth + notchHeight));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString units = layoutUnits == Unit::Cm || layoutUnits == Unit::Mm ? tr("cm", "unit") : tr("in", "unit");
|
||||||
|
QFont fnt = painter->font();
|
||||||
|
fnt.setPointSize(10);
|
||||||
|
|
||||||
|
qreal unitsWidth = 0;
|
||||||
|
QFontMetrics fm(fnt);
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
|
||||||
|
unitsWidth = fm.horizontalAdvance(units);
|
||||||
|
#else
|
||||||
|
unitsWidth = fm.width(units);
|
||||||
|
#endif
|
||||||
|
painter->drawText(QPointF(step*0.5-unitsWidth*0.6,
|
||||||
|
m_drawingAreaHeight - tileStripeWidth + notchHeight+shortNotchHeight), units);
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
|
|
@ -106,6 +106,8 @@ private:
|
||||||
*/
|
*/
|
||||||
qreal m_drawingAreaWidth{0};
|
qreal m_drawingAreaWidth{0};
|
||||||
|
|
||||||
|
void DrawRuler(QPainter *painter);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VPTILEFACTORY_H
|
#endif // VPTILEFACTORY_H
|
||||||
|
|
Loading…
Reference in New Issue
Block a user