Printing: scale fonts when printing

This seem to work better, but it misses a couple of items at times (for
example the highest label on some of the axis).

Needs lots more testing.

See #590

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2014-07-09 13:09:52 -07:00
parent 2d77788cb2
commit 76a8e83a54
5 changed files with 30 additions and 4 deletions

View file

@ -136,6 +136,7 @@ void PrintLayout::printProfileDives(int divesPerRow, int divesPerColumn)
const int profileFrameStyle = profile->frameStyle();
profile->setFrameStyle(QFrame::NoFrame);
profile->setPrintMode(true, !printOptions->color_selected);
profile->setFontPrintScale(0.4); // does a single scale work for all layouts???
QSize originalSize = profile->size();
// swap rows/col for landscape
if (printer->orientation() == QPrinter::Landscape) {

View file

@ -5,6 +5,7 @@
#include "preferences.h"
#include "diveplotdatamodel.h"
#include "animationfunctions.h"
#include "mainwindow.h"
#include <QPen>
#include <QGraphicsScene>
#include <QDebug>
@ -132,7 +133,7 @@ void emptyList(QList<T *> &list, double steps)
void DiveCartesianAxis::updateTicks(color_indice_t color)
{
if (!scene() || !changed)
if (!scene() || (!changed && !MainWindow::instance()->graphics()->getPrintMode()))
return;
QLineF m = line();
// unused so far:

View file

@ -1,5 +1,6 @@
#include "divetextitem.h"
#include "animationfunctions.h"
#include "mainwindow.h"
#include <QPropertyAnimation>
#include <QApplication>
@ -61,11 +62,11 @@ void DiveTextItem::updateText()
QFont fnt(qApp->font());
if ((size = fnt.pixelSize()) > 0) {
// set in pixels - so the scale factor may not make a difference if it's too close to 1
size *= scale;
size *= scale * MainWindow::instance()->graphics()->getFontPrintScale();
fnt.setPixelSize(size);
} else {
size = fnt.pointSizeF();
size *= scale;
size *= scale * MainWindow::instance()->graphics()->getFontPrintScale();;
fnt.setPointSizeF(size);
}
QFontMetrics fm(fnt);

View file

@ -90,7 +90,8 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
isGrayscale(false),
printMode(false),
shouldCalculateMaxTime(true),
shouldCalculateMaxDepth(true)
shouldCalculateMaxDepth(true),
fontPrintScale(1.0)
{
memset(&plotInfo, 0, sizeof(plotInfo));
@ -1054,12 +1055,30 @@ void ProfileWidget2::changeGas()
replot();
}
bool ProfileWidget2::getPrintMode()
{
return printMode;
}
void ProfileWidget2::setPrintMode(bool mode, bool grayscale)
{
printMode = mode;
isGrayscale = mode ? grayscale : false;
}
void ProfileWidget2::setFontPrintScale(double scale)
{
fontPrintScale = scale;
}
double ProfileWidget2::getFontPrintScale()
{
if (printMode)
return fontPrintScale;
else
return 1.0;
}
void ProfileWidget2::editName()
{
QAction *action = qobject_cast<QAction *>(sender());

View file

@ -71,9 +71,12 @@ public:
virtual bool eventFilter(QObject *, QEvent *);
void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue);
void setPrintMode(bool mode, bool grayscale = false);
bool getPrintMode();
bool isPointOutOfBoundaries(const QPointF &point) const;
bool isPlanner();
bool isAddOrPlanner();
double getFontPrintScale();
void setFontPrintScale(double scale);
State currentState;
public
@ -174,6 +177,7 @@ private:
bool shouldCalculateMaxDepth;
int maxtime;
int maxdepth;
double fontPrintScale;
};
#endif // PROFILEWIDGET2_H