56 class SeparatedGraphicsNet;
57 class StandardGraphicsNet;
59 class NetLayoutJunctionHash;
60 class NetLayoutJunctionEntries;
61 class CommentSpeechBubble;
100 SceneCoordinate() : minLane(0), maxLane(0), mOffset(0), mPadding(0)
104 void testMinMax(
int ilane);
105 void setOffset(
float off)
109 void setPadding(
float pad)
113 void setOffsetYje(
const SceneCoordinate& previous,
float minimumJunction);
114 void setOffsetYej(
const SceneCoordinate& previous,
float maximumBlock,
float minimumJunction);
115 void setOffsetX(
const SceneCoordinate& previous,
float maximumBlock,
float sepOut,
float sepInp);
116 float lanePosition(
int ilane)
const;
121 float junctionEntry()
const
123 return lanePosition(minLane);
125 float junctionExit()
const
127 return lanePosition(maxLane - 1);
129 float xBoxOffset()
const;
135 class SceneCoordinateArray
141 ~SceneCoordinateArray();
142 float lanePosition(
int igrid,
int ilane)
const;
148 class EndpointCoordinate
160 EndpointCoordinate();
161 void setInputPosition(
QPointF p0pos);
162 void setOutputPosition(
QPointF p0pos);
163 float lanePosition(
int ilane,
bool absolute)
const;
168 float xOutput()
const
172 void setInputPins(
const QList<u32>& pinList,
float p0dist,
float pdist);
173 void setOutputPins(
const QList<u32>& pinList,
float p0dist,
float pdist);
174 int numberPins()
const;
182 class EndpointList :
public QList<NetLayoutPoint>
189 SingleDestination = 2,
190 SourceAndDestination = 3,
192 HasGlobalEndpoint = 5
195 : mNetType(NoEndpoint), mInputArrow(false), mOutputArrow(false)
197 void addSource(
const NetLayoutPoint& pnt);
198 void addDestination(
const NetLayoutPoint& pnt);
199 void setNetType(EndpointType tp) { mNetType = tp; }
200 EndpointType netType()
const {
return mNetType; }
201 bool isInput(
int index)
const {
return mPointIsInput.at(
index); }
202 void setInputArrow() { mInputArrow =
true; }
203 bool hasInputArrow()
const {
return mInputArrow; }
204 void setOutputArrow() { mOutputArrow =
true; }
205 bool hasOutputArrow()
const {
return mOutputArrow; }
208 EndpointType mNetType;
217 class SeparatedNetWidth
222 SeparatedNetWidth() : mInputSpace(0), mOutputSpace(0)
226 void requireInputSpace(
float spc);
227 void requireOutputSpace(
float spc);
235 Road(
const int x_coordinate,
const int y_coordinate) :
x(x_coordinate),
y(y_coordinate), mLanes(0)
242 unsigned int mLanes = 0;
357 void handleDrawNetThreadFinished();
358 void handleJunctionThreadFinished();
361 void clearLayoutData();
362 void clearComments();
365 void findMaxBoxDimensions();
366 void findMaxChannelLanes();
367 void calculateJunctionMinDistance();
368 void calculateGateOffsets();
372 void drawNetsIsolated(
u32 id,
Net* n,
const EndpointList& epl);
373 void updateSceneRect();
374 static bool verifyModulePort(
Net* n,
const Node& modNode,
bool isModInput);
378 bool boxExists(
const int x,
const int y)
const;
380 bool hRoadJumpPossible(
const int x,
const int y1,
const int y2)
const;
381 bool hRoadJumpPossible(
const Road*
const r1,
const Road*
const r2)
const;
383 bool vRoadJumpPossible(
const int x1,
const int x2,
const int y)
const;
384 bool vRoadJumpPossible(
const Road*
const r1,
const Road*
const r2)
const;
386 qreal hRoadHeight(
const unsigned int mLanes)
const;
387 qreal vRoadWidth(
const unsigned int mLanes)
const;
389 static bool isConstNet(
const Net* n);
415 qreal mMaxNodeHeight;
420 QRect mNodeBoundingBox;
443 SceneCoordinateArray* mCoordArrayX;
444 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
void updatePlacement(const GridPlacement &plc)
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