mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: pass printFontScale on creation of the profile
Not having to readjust the scale on-demand will make the code distinctly simpler. Let's just pass it once. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
5df0efbc7f
commit
a14f740df0
7 changed files with 15 additions and 23 deletions
|
@ -52,9 +52,8 @@ static void exportProfile(ProfileWidget2 *profile, const struct dive *dive, cons
|
||||||
|
|
||||||
static std::unique_ptr<ProfileWidget2> getPrintProfile()
|
static std::unique_ptr<ProfileWidget2> getPrintProfile()
|
||||||
{
|
{
|
||||||
auto profile = std::make_unique<ProfileWidget2>(nullptr, nullptr);
|
auto profile = std::make_unique<ProfileWidget2>(nullptr, (double)profileScale, nullptr);
|
||||||
profile->setPrintMode(true);
|
profile->setPrintMode(true);
|
||||||
profile->setFontPrintScale((double)profileScale);
|
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -609,7 +609,7 @@ void PlannerWidgets::printDecoPlan()
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||||
|
|
||||||
auto profile = std::make_unique<ProfileWidget2>(DivePlannerPointsModel::instance(), nullptr);
|
auto profile = std::make_unique<ProfileWidget2>(DivePlannerPointsModel::instance(), 1.0, nullptr);
|
||||||
profile->setPlanState(&displayed_dive, 0);
|
profile->setPlanState(&displayed_dive, 0);
|
||||||
profile->plotDive(&displayed_dive, 0, true, true);
|
profile->plotDive(&displayed_dive, 0, true, true);
|
||||||
profile->setPrintMode(true);
|
profile->setPrintMode(true);
|
||||||
|
|
|
@ -102,8 +102,14 @@ void Printer::flowRender()
|
||||||
|
|
||||||
void Printer::render(int pages)
|
void Printer::render(int pages)
|
||||||
{
|
{
|
||||||
auto profile = std::make_unique<ProfileWidget2>(nullptr, nullptr);
|
// get all refereces to diveprofile class in the Html template
|
||||||
double printFontScale = 1.0;
|
QWebElementCollection collection = webView->page()->mainFrame()->findAllElements(".diveprofile");
|
||||||
|
|
||||||
|
// A "standard" profile has about 600 pixels in height.
|
||||||
|
// Scale the fonts in the printed profile accordingly.
|
||||||
|
// This is arbitrary, but it seems to work reasonably well.
|
||||||
|
double printFontScale = collection.count() > 0 ? collection[0].geometry().size().height() / 600.0 : 1.0;
|
||||||
|
auto profile = std::make_unique<ProfileWidget2>(nullptr, printFontScale, nullptr);
|
||||||
|
|
||||||
// apply printing settings to profile
|
// apply printing settings to profile
|
||||||
profile->setFrameStyle(QFrame::NoFrame);
|
profile->setFrameStyle(QFrame::NoFrame);
|
||||||
|
@ -116,18 +122,6 @@ void Printer::render(int pages)
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||||
|
|
||||||
// get all refereces to diveprofile class in the Html template
|
|
||||||
QWebElementCollection collection = webView->page()->mainFrame()->findAllElements(".diveprofile");
|
|
||||||
|
|
||||||
if (collection.count() > 0) {
|
|
||||||
// A "standard" profile has about 600 pixels in height.
|
|
||||||
// Scale the fonts in the printed profile accordingly.
|
|
||||||
// This is arbitrary, but it seems to work reasonably.
|
|
||||||
QSize size = collection[0].geometry().size();
|
|
||||||
printFontScale = size.height() / 600.0;
|
|
||||||
}
|
|
||||||
profile->setFontPrintScale(printFontScale);
|
|
||||||
|
|
||||||
int elemNo = 0;
|
int elemNo = 0;
|
||||||
for (int i = 0; i < pages; i++) {
|
for (int i = 0; i < pages; i++) {
|
||||||
// render the base Html template
|
// render the base Html template
|
||||||
|
|
|
@ -26,7 +26,7 @@ ProfileWidget::ProfileWidget()
|
||||||
ui.profHR, // very few dive computers support this
|
ui.profHR, // very few dive computers support this
|
||||||
ui.profTissues }; // maybe less frequently used
|
ui.profTissues }; // maybe less frequently used
|
||||||
|
|
||||||
view.reset(new ProfileWidget2(DivePlannerPointsModel::instance(), this));
|
view.reset(new ProfileWidget2(DivePlannerPointsModel::instance(), 1.0, this));
|
||||||
QToolBar *toolBar = new QToolBar(this);
|
QToolBar *toolBar = new QToolBar(this);
|
||||||
for (QAction *a: toolbarActions)
|
for (QAction *a: toolbarActions)
|
||||||
toolBar->addAction(a);
|
toolBar->addAction(a);
|
||||||
|
|
|
@ -95,7 +95,7 @@ T *ProfileWidget2::createItem(const DiveCartesianAxis &vAxis, int vColumn, int z
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfileWidget2::ProfileWidget2(DivePlannerPointsModel *plannerModelIn, QWidget *parent) : QGraphicsView(parent),
|
ProfileWidget2::ProfileWidget2(DivePlannerPointsModel *plannerModelIn, double fontPrintScale, QWidget *parent) : QGraphicsView(parent),
|
||||||
currentState(INVALID),
|
currentState(INVALID),
|
||||||
dataModel(new DivePlotDataModel(this)),
|
dataModel(new DivePlotDataModel(this)),
|
||||||
plannerModel(plannerModelIn),
|
plannerModel(plannerModelIn),
|
||||||
|
@ -139,7 +139,7 @@ ProfileWidget2::ProfileWidget2(DivePlannerPointsModel *plannerModelIn, QWidget *
|
||||||
#endif
|
#endif
|
||||||
tankItem(new TankItem(*timeAxis)),
|
tankItem(new TankItem(*timeAxis)),
|
||||||
shouldCalculateMax(true),
|
shouldCalculateMax(true),
|
||||||
fontPrintScale(1.0)
|
fontPrintScale(fontPrintScale)
|
||||||
{
|
{
|
||||||
init_plot_info(&plotInfo);
|
init_plot_info(&plotInfo);
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
// Pass null as plannerModel if no support for planning required
|
// Pass null as plannerModel if no support for planning required
|
||||||
ProfileWidget2(DivePlannerPointsModel *plannerModel, QWidget *parent = 0);
|
ProfileWidget2(DivePlannerPointsModel *plannerModel, double fontPrintScale, QWidget *parent = 0);
|
||||||
~ProfileWidget2();
|
~ProfileWidget2();
|
||||||
void resetZoom();
|
void resetZoom();
|
||||||
void scale(qreal sx, qreal sy);
|
void scale(qreal sx, qreal sy);
|
||||||
|
|
|
@ -28,10 +28,9 @@ QMLProfile::QMLProfile(QQuickItem *parent) :
|
||||||
|
|
||||||
void QMLProfile::createProfileView()
|
void QMLProfile::createProfileView()
|
||||||
{
|
{
|
||||||
m_profileWidget.reset(new ProfileWidget2(nullptr, nullptr));
|
m_profileWidget.reset(new ProfileWidget2(nullptr, fontScale * m_devicePixelRatio, nullptr));
|
||||||
m_profileWidget->setProfileState(nullptr, 0);
|
m_profileWidget->setProfileState(nullptr, 0);
|
||||||
m_profileWidget->setPrintMode(true);
|
m_profileWidget->setPrintMode(true);
|
||||||
m_profileWidget->setFontPrintScale(fontScale * m_devicePixelRatio);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// we need this so we can connect update() to the scaleChanged() signal - which the connect above cannot do
|
// we need this so we can connect update() to the scaleChanged() signal - which the connect above cannot do
|
||||||
|
|
Loading…
Add table
Reference in a new issue