mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: remove need for MainWindow when rendering the profile
Very annoyingly, to render the profile for printing / export, the profile still had to be show()n, thus requiring a parent window. Analysis of qmlprofile.c showed that this was due to the transformation matrix not being properly set up on non-show()n scenes. Instead, we can simply render via the QGraphicsScene (circumventing the QGraphicsView). The code was factored out into the ProfileWidget2::draw() function. This will hopefully make it easier to change the size-code of the profile. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
13d4f595cb
commit
b39e88b8c6
5 changed files with 51 additions and 48 deletions
|
|
@ -609,15 +609,11 @@ void PlannerWidgets::printDecoPlan()
|
|||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
|
||||
// TODO: Annoyingly, this still needs a parent window? Otherwise,
|
||||
// the profile is shown as its own window, when calling show() below.
|
||||
auto profile = std::make_unique<ProfileWidget2>(DivePlannerPointsModel::instance(), MainWindow::instance());
|
||||
profile->show(); // Ominous: if the scene isn't shown, parts of the plot are missing. Needs investigation.
|
||||
profile->resize(renderSize.toSize());
|
||||
auto profile = std::make_unique<ProfileWidget2>(DivePlannerPointsModel::instance(), nullptr);
|
||||
profile->setPlanState(&displayed_dive, 0);
|
||||
profile->plotDive(&displayed_dive, 0, true, true);
|
||||
profile->setPrintMode(true);
|
||||
profile->render(&painter);
|
||||
profile->draw(&painter, QRect(0, 0, pixmap.width(), pixmap.height()));
|
||||
|
||||
QByteArray byteArray;
|
||||
QBuffer buffer(&byteArray);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue