0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-11-25 00:18:06 +03:00

Anchor has been added to ItemGeometry

This commit is contained in:
Arin Alexander
2019-04-02 22:56:12 +03:00
parent f1f1e443ac
commit de5cc0e0ca
4 changed files with 124 additions and 22 deletions

View File

@@ -1164,27 +1164,13 @@ void ReportEnginePrivate::paintByExternalPainter(const QString& objectName, QPai
BaseDesignIntf* ReportEnginePrivate::createWatermark(PageDesignIntf* page, WatermarkSetting watermarkSetting)
{
QPointF pos;
QSizeF size;
switch (watermarkSetting.geomerty().type()) {
case ItemGeometry::Milimeters:
pos.setX(watermarkSetting.geomerty().x() * LimeReport::Const::mmFACTOR);
pos.setY(watermarkSetting.geomerty().y() * LimeReport::Const::mmFACTOR);
size.setWidth(watermarkSetting.geomerty().width() * LimeReport::Const::mmFACTOR);
size.setHeight(watermarkSetting.geomerty().height() * LimeReport::Const::mmFACTOR);
break;
case ItemGeometry::Pixels:
pos.setX(watermarkSetting.geomerty().x());
pos.setY(watermarkSetting.geomerty().y());
size.setWidth(watermarkSetting.geomerty().width());
size.setHeight(watermarkSetting.geomerty().height());
break;
}
BaseDesignIntf* watermark = page->addReportItem("TextItem",pos,size);
ItemGeometryHelper geometry(watermarkSetting.geomerty());
BaseDesignIntf* watermark = page->addReportItem("TextItem", geometry.mapToPage(*page->pageItem()), geometry.sceneSize());
if (watermark){
watermark->setProperty("content", watermarkSetting.text());
watermark->setProperty("font",watermark->font());
watermark->setProperty("font",watermarkSetting.font());
watermark->setProperty("watermark",true);
watermark->setProperty("itemLocation",1);
watermark->setProperty("foregroundOpacity", watermarkSetting.opacity());
@@ -1768,6 +1754,16 @@ void ItemGeometry::setType(const Type &type)
m_type = type;
}
Qt::Alignment ItemGeometry::anchor() const
{
return m_anchor;
}
void ItemGeometry::setAnchor(const Qt::Alignment &anchor)
{
m_anchor = anchor;
}
QString WatermarkSetting::text() const
{
return m_text;
@@ -1818,6 +1814,70 @@ void WatermarkSetting::setColor(const QColor &color)
m_color = color;
}
qreal ItemGeometryHelper::sceneX()
{
return valueToPixels(m_geometry.x());
}
qreal ItemGeometryHelper::sceneY()
{
return valueToPixels(m_geometry.y());
}
qreal ItemGeometryHelper::sceneWidth()
{
return valueToPixels(m_geometry.width());
}
qreal ItemGeometryHelper::sceneHeight()
{
return valueToPixels(m_geometry.height());
}
QPointF ItemGeometryHelper::scenePos()
{
return (QPointF(sceneX(), sceneY()));
}
QSizeF ItemGeometryHelper::sceneSize()
{
return (QSizeF(sceneWidth(), sceneHeight()));
}
QPointF ItemGeometryHelper::mapToPage(const PageItemDesignIntf &page)
{
qreal startX = 0;
qreal startY = 0;
if ( m_geometry.anchor() & Qt::AlignLeft){
startX = 0;
} else if (m_geometry.anchor() & Qt::AlignRight){
startX = page.geometry().width();
} else {
startX = page.geometry().width() / 2;
}
if ( m_geometry.anchor() & Qt::AlignTop){
startY = 0;
} else if (m_geometry.anchor() & Qt::AlignBottom){
startY = page.geometry().height();
} else {
startY = page.geometry().height() / 2;
}
return QPointF(startX + sceneX(), startY + sceneY());
}
qreal ItemGeometryHelper::valueToPixels(qreal value)
{
switch (m_geometry.type()) {
case LimeReport::ItemGeometry::Milimeters:
return value * Const::mmFACTOR;
case LimeReport::ItemGeometry::Pixels:
return value;
}
}
}// namespace LimeReport