Skip to content
Snippets Groups Projects
Commit ef915b93 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

Default margins calculations for ColorMap extracted to ColorMapUtils namespace.

parent c14943c6
No related branches found
No related tags found
No related merge requests found
......@@ -327,11 +327,7 @@ void ColorMap::setUpdateTimerConnected(bool isConnected)
//! to make fixed margins for whole colormap (change in axes labels wont affect axes rectangle)
void ColorMap::setFixedColorMapMargins()
{
QFontMetrics fontMetric(font());
auto em = fontMetric.width('M'), fontAscent = fontMetric.ascent();
auto* axisRectangle = m_customPlot->axisRect();
axisRectangle->setAutoMargins(QCP::msTop | QCP::msBottom);
axisRectangle->setMargins(QMargins(6.0 * em, fontAscent * 1.5, em * 1.2, 4.5 * fontAscent));
ColorMapUtils::setDefaultMargins(m_customPlot);
}
//! Sets initial state of ColorMap to match given intensity item.
......
......@@ -15,9 +15,11 @@
// ************************************************************************** //
#include "ColorMapUtils.h"
#include "ColorMap.h"
#include "GUIHelpers.h"
#include "IntensityDataItem.h"
#include "item_constants.h"
#include <QFontMetrics>
using gradient_map_t = QMap<QString, QCPColorGradient::GradientPreset>;
......@@ -48,6 +50,17 @@ QCPRange qcpRange(double xmin, double xmax, int nbins) {
return QCPRange(xmin+dx/2., xmax-dx/2.);
}
QMargins defaultMargins(const QWidget& widget)
{
QFontMetrics fontMetric(widget.font());
auto em = fontMetric.width('M'), fontAscent = fontMetric.ascent();
int left = static_cast<int>(6.0 * em);
int top = static_cast<int>(fontAscent * 1.5);
int right = static_cast<int>(em * 1.2);
int bottom = static_cast<int>(4.5 * fontAscent);
return QMargins(left, top, right, bottom);
}
}
QCPColorGradient ColorMapUtils::getGradient(const QString& gradientName)
......@@ -125,3 +138,10 @@ void ColorMapUtils::setLogz(QCPAxis* axis, bool isLogz)
axis->setTicker(ticker);
}
}
void ColorMapUtils::setDefaultMargins(QCustomPlot* customPlot)
{
auto* axisRectangle = customPlot->axisRect();
axisRectangle->setAutoMargins(QCP::msTop | QCP::msBottom);
axisRectangle->setMargins(defaultMargins(*customPlot));
}
......@@ -21,8 +21,10 @@
#include "qcustomplot.h"
#include <QMap>
#include <QString>
#include <QMargins>
class IntensityDataItem;
class ColorMap;
//! Provides few helper functions for ColorMapPlot.
......@@ -52,6 +54,10 @@ BA_CORE_API_ QCPRange itemDataZoom(const IntensityDataItem* item);
BA_CORE_API_ void setLogz(QCPColorScale* scale, bool isLogz);
BA_CORE_API_ void setLogz(QCPAxis* axis, bool isLogz);
//! Sets default margins for axes rectangle plot.
BA_CORE_API_ void setDefaultMargins(QCustomPlot* customPlot);
}
#endif // COLORMAPUTILS_H
......@@ -42,12 +42,7 @@ ProjectionsPlot::ProjectionsPlot(const QString& projectionType, QWidget* parent)
m_customPlot->xAxis->setTickLabelFont(QFont(QFont().family(), Constants::plot_tick_label_size));
m_customPlot->yAxis->setTickLabelFont(QFont(QFont().family(), Constants::plot_tick_label_size));
QFontMetrics fontMetric(font());
auto em = fontMetric.width('M'), fontAscent = fontMetric.ascent();
auto* axisRectangle = m_customPlot->axisRect();
axisRectangle->setAutoMargins(QCP::msTop | QCP::msBottom);
axisRectangle->setMargins(QMargins(3.5 * em, fontAscent * 1.5, em * 5.8, 4.5 * fontAscent));
ColorMapUtils::setDefaultMargins(m_customPlot);
}
ProjectionsPlot::~ProjectionsPlot()
......
......@@ -16,7 +16,6 @@
#include "NodeEditorPort.h"
#include "NodeEditorConnection.h"
#include <QFontMetrics>
#include <QGraphicsScene>
#include <QPainter>
#include <QPen>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment