56 class SeparatedGraphicsNet;
57 class StandardGraphicsNet;
59 class NetLayoutJunctionHash;
60 class NetLayoutJunctionEntries;
61 class CommentSpeechBubble;
91 SceneCoordinate() : minLane(0), maxLane(0), mOffset(0), mPadding(0)
95 void testMinMax(
int ilane);
96 void setOffset(
float off)
100 void setPadding(
float pad)
104 void setOffsetYje(
const SceneCoordinate& previous,
float minimumJunction);
105 void setOffsetYej(
const SceneCoordinate& previous,
float maximumBlock,
float minimumJunction);
106 void setOffsetX(
const SceneCoordinate& previous,
float maximumBlock,
float sepOut,
float sepInp);
107 float lanePosition(
int ilane)
const;
112 float junctionEntry()
const
114 return lanePosition(minLane);
116 float junctionExit()
const
118 return lanePosition(maxLane - 1);
120 float xBoxOffset()
const;
123 class SceneCoordinateArray
129 ~SceneCoordinateArray();
130 float lanePosition(
int igrid,
int ilane)
const;
133 class EndpointCoordinate
145 EndpointCoordinate();
146 void setInputPosition(
QPointF p0pos);
147 void setOutputPosition(
QPointF p0pos);
148 float lanePosition(
int ilane,
bool absolute)
const;
153 float xOutput()
const
157 void setInputPins(
const QList<u32>& pinList,
float p0dist,
float pdist);
158 void setOutputPins(
const QList<u32>& pinList,
float p0dist,
float pdist);
159 int numberPins()
const;
164 class EndpointList :
public QList<NetLayoutPoint>
171 SingleDestination = 2,
172 SourceAndDestination = 3,
174 HasGlobalEndpoint = 5
177 : mNetType(NoEndpoint), mInputArrow(false), mOutputArrow(false)
179 void addSource(
const NetLayoutPoint& pnt);
180 void addDestination(
const NetLayoutPoint& pnt);
181 void setNetType(EndpointType tp) { mNetType = tp; }
182 EndpointType netType()
const {
return mNetType; }
183 bool isInput(
int index)
const {
return mPointIsInput.at(index); }
184 void setInputArrow() { mInputArrow =
true; }
185 bool hasInputArrow()
const {
return mInputArrow; }
186 void setOutputArrow() { mOutputArrow =
true; }
187 bool hasOutputArrow()
const {
return mOutputArrow; }
190 EndpointType mNetType;
196 class SeparatedNetWidth
201 SeparatedNetWidth() : mInputSpace(0), mOutputSpace(0)
205 void requireInputSpace(
float spc);
206 void requireOutputSpace(
float spc);
211 Road(
const int x_coordinate,
const int y_coordinate) : x(x_coordinate), y(y_coordinate), mLanes(0)
218 unsigned int mLanes = 0;
329 void handleDrawNetThreadFinished();
330 void handleJunctionThreadFinished();
333 void clearLayoutData();
334 void clearComments();
337 void findMaxBoxDimensions();
338 void findMaxChannelLanes();
339 void calculateJunctionMinDistance();
340 void calculateGateOffsets();
344 void drawNetsIsolated(
u32 id,
Net*
n,
const EndpointList& epl);
345 void updateSceneRect();
346 static bool verifyModulePort(
Net*
n,
const Node& modNode,
bool isModInput);
350 bool boxExists(
const int x,
const int y)
const;
352 bool hRoadJumpPossible(
const int x,
const int y1,
const int y2)
const;
353 bool hRoadJumpPossible(
const Road*
const r1,
const Road*
const r2)
const;
355 bool vRoadJumpPossible(
const int x1,
const int x2,
const int y)
const;
356 bool vRoadJumpPossible(
const Road*
const r1,
const Road*
const r2)
const;
358 qreal hRoadHeight(
const unsigned int mLanes)
const;
359 qreal vRoadWidth(
const unsigned int mLanes)
const;
361 static bool isConstNet(
const Net*
n);
387 qreal mMaxNodeHeight;
392 QRect mNodeBoundingBox;
415 SceneCoordinateArray* mCoordArrayX;
416 SceneCoordinateArray* mCoordArrayY;
DrawNetThread(u32 id, GraphLayouter *parent)
StandardGraphicsNet::Lines mLines
Logical container for modules, gates, and nets.
Base class for all specific layouters.
QVector< qreal > yValues() const
qreal gridXposition(int ix) const
virtual void remove(const QSet< u32 > modules, const QSet< u32 > gates, const QSet< u32 > nets)=0
void setNodePosition(const Node &n, const QPoint &p)
void removeNodeFromMaps(const Node &n)
virtual QString mDescription() const =0
QVector< qreal > xValues() const
QMap< Node, QPoint > mNodeToPositionRollback
qreal defaultGridHeight() const
void setDumpJunctionEnabled(bool enabled)
void swapNodePositions(const Node &n1, const Node &n2)
QMap< QPoint, Node > mPositionToNodeMap
virtual void add(const QSet< u32 > modules, const QSet< u32 > gates, const QSet< u32 > nets, PlacementHint placement=PlacementHint())=0
const QMap< QPoint, Node > positionToNodeMap() const
NetLayoutPoint positonForNode(const Node &nd) const
GraphLayouter(GraphContext *context, QObject *parent=nullptr)
void dumpNodePositions(const QPoint &search) const
const QMap< Node, QPoint > nodeToPositionMap() const
qreal maxNodeWidth() const
qreal gridYposition(int iy) const
bool dumpJunctionEnabled()
qreal maxNodeHeight() const
Node nodeAtPosition(const QPoint &p) const
GridPlacement * gridPlacementFactory() const
GraphicsScene * scene() const
qreal defaultGridWidth() const
QPoint gridPointByItem(GraphicsNode *item) const
virtual QString name() const =0
GraphContext * mParentContext
QMap< Node, QPoint > mNodeToPositionMap
const NodeBoxes & boxes() const
Abstract base class for nodes (e.g. gates, modules)
Container for a GraphGraphicsView containing gates, nets, and modules.
NetLayoutPoint mNetLayoutPoint
NetLayoutJunction * mJunction
JunctionThread(const NetLayoutPoint &nlp, const NetLayoutJunctionEntries &entr)
NetLayoutJunctionEntries mEntries
The NodeBoxes class owns all NodeBox'es from hal view.
The Node class object represents a module or a gate.
The PlacementHint class object provides hints for the layouter how new box objects are placed on a vi...
QObject * parent() const const