13 #include <QStyleOptionGraphicsItem>
17 static const qreal sBaseline = 1;
19 qreal StandardGraphicsModule::sAlpha;
21 QPen StandardGraphicsModule::sPen;
23 QFont StandardGraphicsModule::sPinFont;
25 qreal StandardGraphicsModule::sColorBarHeight = 30;
27 qreal StandardGraphicsModule::sPinInnerHorizontalSpacing = 12;
28 qreal StandardGraphicsModule::sPinOuterHorizontalSpacing = 2.4;
30 qreal StandardGraphicsModule::sPinInnerVerticalSpacing = 1.2;
31 qreal StandardGraphicsModule::sPinOuterVerticalSpacing = 0.6;
32 qreal StandardGraphicsModule::sPinUpperVerticalSpacing = 0.6;
33 qreal StandardGraphicsModule::sPinLowerVerticalSpacing = 1.8;
35 qreal StandardGraphicsModule::sPinFontHeight;
36 qreal StandardGraphicsModule::sPinFontAscent;
37 qreal StandardGraphicsModule::sPinFontDescent;
38 qreal StandardGraphicsModule::sPinFontBaseline;
40 qreal StandardGraphicsModule::sInnerNameTypeSpacing = 1.2;
41 qreal StandardGraphicsModule::sOuterNameTypeSpacing = 3;
43 const int StandardGraphicsModule::sIconPadding = 3;
44 const QSize StandardGraphicsModule::sIconSize(sColorBarHeight - 2 * sIconPadding, sColorBarHeight - 2 * sIconPadding);
45 QPixmap* StandardGraphicsModule::sIconInstance =
nullptr;
47 const QPixmap& StandardGraphicsModule::iconPixmap()
51 return *sIconInstance;
67 sPinFontHeight = pin_fm.
height();
68 sPinFontAscent = pin_fm.
ascent();
69 sPinFontDescent = pin_fm.
descent();
78 if (
sLod <= graph_widget_constants::sGateMaxLod)
79 sAlpha = 1 - (
sLod - graph_widget_constants::sGateMinLod) / (graph_widget_constants::sGateMaxLod - graph_widget_constants::sGateMinLod);
86 format(adjust_size_to_grid);
93 if (
sLod < graph_widget_constants::sGateMinLod)
111 for (
int iline = 0; iline < 3; iline++)
123 QPointF text_pos(sPinOuterHorizontalSpacing, sColorBarHeight + sPinUpperVerticalSpacing + sPinFontAscent + sBaseline);
136 text_pos.
setY(text_pos.
y() + sPinFontHeight + sPinInnerVerticalSpacing);
152 if (
sLod < graph_widget_constants::sGateMaxLod)
216 return (sPinFontHeight + sPinInnerVerticalSpacing);
221 return (sColorBarHeight + sPinUpperVerticalSpacing + sPinFontHeight / 2);
230 void StandardGraphicsModule::format(
const bool& adjust_size_to_grid)
233 qreal max_pin_width = 0;
237 qreal
width = pin_fm.width(input_pin.name);
238 if (
width > max_pin_width)
239 max_pin_width =
width;
244 qreal
width = pin_fm.width(output_pin.name);
245 if (
width > max_pin_width)
246 max_pin_width =
width;
249 qreal total_input_pin_height = 0;
252 total_input_pin_height =
mInputPins.size() * sPinFontHeight + (
mInputPins.size() - 1) * sPinInnerVerticalSpacing + sPinUpperVerticalSpacing + sPinLowerVerticalSpacing;
254 qreal total_output_pin_height = 0;
257 total_output_pin_height =
258 mOutputPins.size() * sPinFontHeight + (
mOutputPins.size() - 1) * sPinInnerVerticalSpacing + sPinUpperVerticalSpacing + sPinLowerVerticalSpacing;
260 qreal max_pin_height = std::max(total_input_pin_height, total_output_pin_height);
261 qreal min_body_height = sInnerNameTypeSpacing + 2 * sOuterNameTypeSpacing;
262 for (
int iline = 0; iline < 3; iline++)
267 mWidth = max_pin_width * 2 + sPinInnerHorizontalSpacing * 2 + sPinOuterHorizontalSpacing * 2 +
mMaxTextWidth;
268 mHeight = std::max(max_pin_height, min_body_height) + sColorBarHeight;
270 if (adjust_size_to_grid)
272 int floored_width =
static_cast<int>(
mWidth);
273 int quotient = floored_width / graph_widget_constants::sGridSize;
275 if (
mWidth > quotient * graph_widget_constants::sGridSize)
276 mWidth = (quotient + 1) * graph_widget_constants::sGridSize;
278 int floored_height =
static_cast<int>(
mHeight);
279 quotient = floored_height / graph_widget_constants::sGridSize;
281 if (
mHeight > quotient * graph_widget_constants::sGridSize)
282 mHeight = (quotient + 1) * graph_widget_constants::sGridSize;
285 qreal ytext = std::max(
mHeight / 2 -
sTextFontHeight[0] * 3 / 2 - sInnerNameTypeSpacing / 2, sColorBarHeight + sOuterNameTypeSpacing);
289 qreal
y = sColorBarHeight + sPinUpperVerticalSpacing + sPinFontAscent + sBaseline;
293 qreal
x =
mWidth - (pin_fm.size(0, output_pin.name).rwidth() + sPinOuterHorizontalSpacing);
295 y += (sPinFontHeight + sPinInnerVerticalSpacing);
static QColor sSelectionColor
QColor selectionColor() const
static QColor sHighlightColor
QColor penColor(QStyle::State state, const QColor &colorHint=QColor()) const
QColor groupingColor() const
Abstract base class for modules.
QVector< ModulePin > mOutputPins
QVector< ModulePin > mInputPins
void initTextPosition(qreal y0, qreal spacing)
virtual QRectF boundingRect() const override
static QFont sTextFont[3]
static qreal sTextFontHeight[3]
static GraphicsQssAdapter * instance()
ItemType focusType() const
Subfocus subfocus() const
u32 subfocusIndex() const
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=nullptr) override
QPointF getOutputScenePosition(const u32 mNetId, const QString &pin_type) const override
float yEndpointDistance() const override
float yTopPinDistance() const override
QPointF endpointPositionByIndex(int index, bool isInput) const override
QPointF getInputScenePosition(const u32 mNetId, const QString &pin_type) const override
static void loadSettings()
StandardGraphicsModule(Module *m, bool adjust_size_to_grid=true)
static void updateAlpha()
SelectionRelay * gSelectionRelay
option(PL_GUI "PL_GUI" ON) if(PL_GUI OR BUILD_ALL_PLUGINS) cmake_minimum_required(VERSION 3.5.0) if(APPLE AND CMAKE_HOST_APPLE AND NOT Qt5_DIR) set(Qt5_DIR "/usr/local/opt/qt@5/lib/cmake") endif(APPLE AND CMAKE_HOST_APPLE AND NOT Qt5_DIR) find_package(Qt5 COMPONENTS Core REQUIRED) find_package(Qt5 COMPONENTS Widgets REQUIRED) if(Qt5Widgets_FOUND) message(VERBOSE "Qt5Widgets_INCLUDE_DIRS
bool isValid() const const
void setAlphaF(qreal alpha)
void setPixelSize(int pixelSize)
qreal ascent() const const
qreal descent() const const
qreal height() const const
QPointF mapToScene(const QPointF &point) const const
void drawRect(const QRectF &rectangle)
void drawText(const QPointF &position, const QString &text)
void fillRect(const QRectF &rectangle, const QBrush &brush)
QPainter::RenderHints renderHints() const const
void setBrush(const QBrush &brush)
void setFont(const QFont &font)
void setPen(const QColor &color)
void setRenderHint(QPainter::RenderHint hint, bool on)
void setColor(const QColor &color)
void setCosmetic(bool cosmetic)
void setJoinStyle(Qt::PenJoinStyle style)
QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags)
void append(const T &value)
const T & at(int i) const const