20 #include <QGraphicsSceneMouseEvent> 
   28     qreal GraphicsScene::sLod = 0;
 
   30     const qreal GraphicsScene::sGridFadeStart = 0.4;
 
   31     const qreal GraphicsScene::sGridFadeEnd = 1.0;
 
   33     bool GraphicsScene::sGridEnabled = 
true;
 
   34     bool GraphicsScene::sGridClustersEnabled = 
true;
 
   41         if (lod >= sGridFadeStart && lod <= sGridFadeEnd)
 
   43             const qreal alpha = (lod - sGridFadeStart) / (sGridFadeEnd - sGridFadeStart);
 
   49             const int alpha = 255;
 
   62         sGridClustersEnabled = value;
 
   72         int adjusted_x = qRound(pos.
x() / graph_widget_constants::sGridSize) * graph_widget_constants::sGridSize;
 
   73         int adjusted_y = qRound(pos.
y() / graph_widget_constants::sGridSize) * graph_widget_constants::sGridSize;
 
   74         return QPoint(adjusted_x, adjusted_y);
 
   78         mDebugGridEnable(false),
 
   79         mDragController(nullptr),
 
   80         mSelectionStatus(NotPressed)
 
   94         if (mDragController) mDragController->clearShadows(
this);
 
  105         mDragController = dc;
 
  123             while (i < mGateItems.size())
 
  125                 if (
g->id() < mGateItems.at(i)->id())
 
  130             mGateItems.insert(i, 
g);
 
  137             while (i < mNetItems.size())
 
  139                 if (
n->id() < mNetItems.at(i)->id())
 
  144             mNetItems.insert(i, 
n);
 
  151             while (i < mModuleItems.size())
 
  153                 if (m->
id() < mModuleItems.at(i)->id())
 
  158             mModuleItems.insert(i, m);
 
  183             while (i < mGateItems.size())
 
  185                 if (mGateItems.at(i)->id() == 
id)
 
  187                     mGateItems.remove(i);
 
  203             while (i < mNetItems.size())
 
  205                 if (mNetItems.at(i)->id() == 
id)
 
  223             while (i < mModuleItems.size())
 
  225                 if (mModuleItems.at(i)->id() == 
id)
 
  227                     mModuleItems.remove(i);
 
  318         if (mDragController) mDragController->clearShadows(
this);
 
  320         for (
auto item : 
items())
 
  325         mModuleItems.clear();
 
  360             if (mSelectionStatus != SelectionChanged)
 
  361                 mSelectionStatus = BeginPressed;
 
  366             if (mSelectionStatus == SelectionChanged)
 
  368                 mSelectionStatus = EndPressed;
 
  371             mSelectionStatus = NotPressed;
 
  378         switch (mSelectionStatus)
 
  380         case SelectionChanged:
 
  383             mSelectionStatus = SelectionChanged;
 
  400             switch (
static_cast<const GraphicsItem*
>(item)->itemType())
 
  500             if (sti) highlightSet[(int)sti->getType()].
insert(sti->id());
 
  529                     gm->setSelected(
true);
 
  541                     gg->setSelected(
true);
 
  553                     gn->setSelected(
true);
 
  579     void GraphicsScene::drawBackground(
QPainter* painter, 
const QRectF& rect)
 
  584         if (sLod < sGridFadeStart)
 
  594         const int overdraw = 2;
 
  596         const int x_from = rect.
left() - overdraw;
 
  597         const int x_to = rect.
right() + overdraw;
 
  599         const int y_from = rect.
top() - overdraw;
 
  600         const int y_to = rect.
bottom() + overdraw;
 
  602         const int xOffset = x_from % graph_widget_constants::sGridSize;
 
  603         const int yOffset = y_from % graph_widget_constants::sGridSize;
 
  607         case GraphicsScene::GridType::None:
 
  609         case GraphicsScene::GridType::Lines:
 
  614             for (
int x = x_from - xOffset; x < x_to; x += graph_widget_constants::sGridSize)
 
  616                 QLine line(x, y_from, x, y_to);
 
  617                 if (x % (graph_widget_constants::sGridSize * graph_widget_constants::sClusterSize))
 
  620                     cluster_lines.
append(line);
 
  623             for (
int y = y_from - yOffset; y < y_to; y += graph_widget_constants::sGridSize)
 
  625                 QLine line(x_from, y, x_to, y);
 
  626                 if (y % (graph_widget_constants::sGridSize * graph_widget_constants::sClusterSize))
 
  629                     cluster_lines.
append(line);
 
  637             if (sGridClustersEnabled)
 
  647         case GraphicsScene::GridType::Dots:
 
  652             for (
int x = x_from - xOffset; x < x_to; x += graph_widget_constants::sGridSize)
 
  653                 for (
int y = y_from - yOffset; y < y_to; y += graph_widget_constants::sGridSize)
 
  655                     if ((x % (graph_widget_constants::sGridSize * graph_widget_constants::sClusterSize)) && (y % (graph_widget_constants::sGridSize * graph_widget_constants::sClusterSize)))
 
  666             if (sGridClustersEnabled)
 
  677         #ifdef GUI_DEBUG_GRID 
  678         if (mDebugGridEnable)
 
  679             debugDrawLayouterGrid(painter, x_from, x_to, y_from, y_to);
 
  685     #ifdef GUI_DEBUG_GRID 
  686     void GraphicsScene::debugSetLayouterGrid(
const QVector<qreal>& debug_x_lines, 
const QVector<qreal>& debug_y_lines, qreal debug_default_height, qreal debug_default_width)
 
  688         mDebugXLines = debug_x_lines;
 
  689         mDebugYLines = debug_y_lines;
 
  690         mDebugDefaultHeight = debug_default_height;
 
  691         mDebugDefaultWidth = debug_default_width;
 
  694     void GraphicsScene::debugDrawLayouterGrid(
QPainter* painter, 
const int x_from, 
const int x_to, 
const int y_from, 
const int y_to)
 
  696         if (mDebugXLines.isEmpty() || mDebugYLines.isEmpty()) 
return;
 
  699         for (qreal x : mDebugXLines)
 
  701             QLineF line(x, y_from, x, y_to);
 
  705         for (qreal y : mDebugYLines)
 
  707             QLineF line(x_from, y, x_to, y);
 
  713         qreal x = mDebugXLines.last() + mDebugDefaultWidth;
 
  717             QLineF line(x, y_from, x, y_to);
 
  719             x += mDebugDefaultWidth;
 
  722         x = mDebugXLines.first() - mDebugDefaultWidth;
 
  726             QLineF line(x, y_from, x, y_to);
 
  728             x -= mDebugDefaultWidth;
 
  731         qreal y = mDebugYLines.last() + mDebugDefaultHeight;
 
  735             QLineF line(x_from, y, x_to, y);
 
  737             y += mDebugDefaultHeight;
 
  740         y = mDebugYLines.first() - mDebugDefaultHeight;
 
  744             QLineF line(x_from, y, x_to, y);
 
  746             y -= mDebugDefaultHeight;
 
  750     void GraphicsScene::setDebugGridEnabled(
bool enabled)
 
  752         mDebugGridEnable = enabled;
 
  755     bool GraphicsScene::debugGridEnabled()
 
  757         return mDebugGridEnable;
 
GroupingManagerWidget * getGroupingManagerWidget()
 
static SettingsItemCheckbox * sSettingNetGroupingToPins
 
Abstract base class for gates.
 
Superclass for all graphic items used ins the GraphicsScene. It contains information about the underl...
 
ItemType itemType() const
 
Abstract base class for modules.
 
The basic net class all other nets inherit from.
 
void setGridAlpha(int alpha)
 
static GraphicsQssAdapter * instance()
 
void setGridAlphaF(qreal alpha)
 
void removeGraphItem(GraphicsItem *item)
 
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
 
const GraphicsGate * getGateItem(const u32 id) const
 
void updateVisuals(const GraphShader::Shading &s)
 
static void setLod(const qreal &lod)
 
void handleGroupingAssignNet(Grouping *grp, u32 id)
 
void setMousePressed(bool isPressed)
 
void handleGroupingAssignModule(Grouping *grp, u32 id)
 
const GraphicsModule * getModuleItem(const u32 id) const
 
void handleHighlight(const QVector< const ModuleItem * > &highlightItems)
 
void handleGroupingAssignGate(Grouping *grp, u32 id)
 
void handleExternSelectionChanged(void *sender)
 
static void setGridEnabled(const bool &value)
 
void handleGroupingColorChanged(Grouping *grp)
 
static void setGridType(const GridType &gridType)
 
void addGraphItem(GraphicsItem *item)
 
void handleInternSelectionChanged()
 
const GraphicsNet * getNetItem(const u32 id) const
 
static QPointF snapToGrid(const QPointF &pos) Q_DECL_DEPRECATED
 
void handleExternSubfocusChanged(void *sender)
 
void setDragController(DragController *dc)
 
static void setGridClustersEnabled(const bool &value)
 
void moveNetsToBackground()
 
GraphicsScene(QObject *parent=nullptr)
 
void groupingColorChanged(Grouping *grp)
 
An item in the ModuleModel.
 
void groupingGateAssigned(Grouping *grp, u32 id) const
 
void groupingModuleAssigned(Grouping *grp, u32 id) const
 
void groupingModuleRemoved(Grouping *grp, u32 id) const
 
void groupingNetAssigned(Grouping *grp, u32 id) const
 
void groupingNetRemoved(Grouping *grp, u32 id) const
 
void groupingGateRemoved(Grouping *grp, u32 id) const
 
int numberSelectedGates() const
 
void setFocus(ItemType ftype, u32 fid, Subfocus sfoc=Subfocus::None, u32 sfinx=0)
 
void selectionChanged(void *sender)
 
bool isNetSelected(u32 id) const
 
void relaySelectionChanged(void *sender)
 
int numberSelectedNets() const
 
int numberSelectedModules() const
 
void setSelectedGates(const QSet< u32 > &ids)
 
bool isModuleSelected(u32 id) const
 
void setSelectedNets(const QSet< u32 > &ids)
 
void subfocusChanged(void *sender)
 
void registerSender(void *sender, QString name)
 
bool isGateSelected(u32 id) const
 
void setSelectedModules(const QSet< u32 > &ids)
 
ContentManager * gContentManager
 
GraphContextManager * gGraphContextManager
 
SelectionRelay * gSelectionRelay
 
NetlistRelay * gNetlistRelay
 
void update(const QRectF &rect)
 
void addItem(QGraphicsItem *item)
 
virtual bool event(QEvent *event) override
 
QList< QGraphicsItem * > items(Qt::SortOrder order) const const
 
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
 
void removeItem(QGraphicsItem *item)
 
QList< QGraphicsItem * > selectedItems() const const
 
bool blockSignals(bool block)
 
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
QObject * sender() const const
 
void drawLine(const QLineF &line)
 
void drawLines(const QLineF *lines, int lineCount)
 
void drawPoints(const QPointF *points, int pointCount)
 
QPainter::RenderHints renderHints() const const
 
void setPen(const QColor &color)
 
void setRenderHint(QPainter::RenderHint hint, bool on)
 
void setRenderHints(QPainter::RenderHints hints, bool on)
 
void setColor(const QColor &color)
 
qreal bottom() const const
 
qreal right() const const
 
bool contains(const T &value) const const
 
QSet::iterator insert(const T &value)
 
bool isEmpty() const const
 
void append(const T &value)
 
QMap< u32, GraphicsNode::Visuals > mGateVisuals
 
QMap< u32, GraphicsNet::Visuals > mNetVisuals
 
QMap< u32, GraphicsNode::Visuals > mOduleVisuals