Generated reference › API — ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link
kind: generated#api#icoreblocks-icorestudio-studioobjects-icoremodelviews-link

API — ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link

The public contract of 8 header(s) under src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link — 8 class/struct definition(s), 123 declaration(s). Each section shows the header's banner and its public (and protected-virtual) surface exactly as the file writes it.

ICoreLinkBranchHead.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchHead.h

ICoreNativeItem*, not ICoreAnyGraphicsItem* (= QGraphicsItem*): this file is on tools/qt_boundary_scanned.txt, so it may not name a Qt type -- and once P2.9a gave ICoreGraphicsObject its own setParentItem, forwarding a raw item pointer to the three children was no longer even spellable here. The two callers pass an ICoreCanvas*, which implements the interface.

ICoreLinkBranchHead#

ICoreLinkBranchHead.h:11 · class · pImpl · 19 declaration(s)

class ICoreLinkBranchHead {
public:
    explicit ICoreLinkBranchHead(ICoreLinkBranch* parentLinkBranch = nullptr);

    void reAttachToPoint(ICorePoint lastPoint, ICorePoint lastLastPoint) const;

    // ICoreNativeItem*, not ICoreAnyGraphicsItem* (= QGraphicsItem*): this file
    // is on tools/qt_boundary_scanned.txt, so it may not name a Qt type -- and
    // once P2.9a gave ICoreGraphicsObject its own setParentItem, forwarding a
    // raw item pointer to the three children was no longer even spellable here.
    // The two callers pass an ICoreCanvas*, which implements the interface.
    void setParentItem(ICoreNativeItem* newGraphicsParent) const;
    void freeFromCanvas() const;

    void setHoveredOverStyle() const;
    void setHoveredAwayStyle() const;

    void setSelectionStyle() const;
    void removeSelectionStyle() const;

    void hide() const;
    void show() const;
    void pseudoHide() const;
    void pseudoShow() const;

    void setSegmentsZOrder(int newZOrder) const;
    void setHeadPaneZOrder(int newZOrder) const;

    ICoreLinkBranchHeadPane* getHeadPane() const;
    ICoreLinkBranchSegment* getFirstSegment() const;
    ICoreLinkBranchSegment* getSecondSegment() const;

    void resetToInitialState(ICoreLinkBranch* parentLinkBranch = nullptr);

    ~ICoreLinkBranchHead();

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchHeadPane.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchHeadPane.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreLinkBranchHeadPane#

ICoreLinkBranchHeadPane.h:16 · class · bases public ICoreGraphicsObject · pImpl · 14 declaration(s)

class ICoreLinkBranchHeadPane : public ICoreGraphicsObject {
public:
    explicit ICoreLinkBranchHeadPane(ICoreGraphicsObject *parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    ICoreRect getBoundsInCanvas() const;
    ICoreLink* getGrandParentLink() const;

    ICoreLinkBranch* getParentLinkBranch() const;

    bool isHeadReconnecting() const;

    //bool isCursorOnPane() const;

    void resetToInitialState(ICoreNativeItem* parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr);

    ~ICoreLinkBranchHeadPane() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchSegment.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchSegment.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreLinkBranchSegment#

ICoreLinkBranchSegment.h:17 · class · bases public ICoreGraphicsObject · pImpl · 39 declaration(s)

class ICoreLinkBranchSegment : public ICoreGraphicsObject {
public:
    explicit ICoreLinkBranchSegment(ICoreGraphicsObject *parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr, ICoreLinkBranchSegmentMover* linkSegmentMover = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    ICorePainterPath contentShape() const override;

    double distanceToClosestPointOnLine(const ICorePoint& PointToCheckTo) const;
    ICorePoint closestPointOnLine(const ICorePoint& PointToCheckTo) const;

    void setCoordinates(ICorePoint start, ICorePoint end);
    void translateSegment(double dx, double dy);
    void shiftStartPoint(double dx, double dy);
    void shiftEndPoint(double dx, double dy);

    void setConnectedStyle();
    void setUnconnectedStyle();
    void setHoveredOverStyle();
    void setHoveredAwayStyle();

    void removeSelectionStyle();
    void setSelectionStyle();

    void freeFromCanvas();

    ICoreRect getBoundsInCanvas() const;

    ICorePoint getStartPoint() const;
    ICorePoint getEndPoint() const;
    double getSlopeAngle_Rad() const;
    double getSlopeAngle_Deg() const;
    std::pair<double, double> getLinearPolyCoeff() const;   // Returns pair to not confuse them with coords. ret->key is slope, ret->value is y zero shift!
    double getDistanceFromStart(ICorePoint point) const;
    double getDistanceFromEnd(ICorePoint point) const;
    double getLength() const;
    double getShortestDistance(ICorePoint point) const;

    bool isBranchHeadSegment() const;
    bool isBranchTailSegment() const;

    ICoreLinkBranch* getParentLinkBranch() const;

    void resetToInitialState(ICoreNativeItem* parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr, ICoreLinkBranchSegmentMover* linkSegmentMover = nullptr);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreLinkBranchSegment() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchSegmentMover.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchSegmentMover.h

⚠ std::optional is used below and was reaching this header transitively until 2026-08-26 (L9.10 deleted the Theme/QtBinding/ include that carried it).

ICoreLinkBranchSegmentMover#

ICoreLinkBranchSegmentMover.h:15 · class · pImpl · 11 declaration(s)

class ICoreLinkBranchSegmentMover {
public:
    explicit ICoreLinkBranchSegmentMover(ICoreLinkBranch* parent);

    // These are here public, so protected ICoreLinkBranchSegment can call them simultaneously when needed
    //
    // The three handlers used to take the scene's mouse event. They only ever
    // read its scene position (mouse release read nothing at all), so that
    // position is now the parameter and the scene event stays on the UI side.
    void handleMouseHoversOver() const;
    void handleMouseHoversAway() const;
    void handleMousePress(const ICorePoint& scenePos, ICoreLinkBranchSegment* segment);
    void handleMouseMove(const ICorePoint& scenePos, ICoreLinkBranchSegment* segment);
    void handleMouseRelease(const ICorePoint& scenePos, ICoreLinkBranchSegment* segment) const;

    static bool isMultipleOf90(double angleRad, double eps = 1e-6);

    static std::optional<ICorePoint> getIntersectionPoint(std::pair<double, double> firstPolyCoeffs, std::pair<double, double> secondPolyCoeffs);

    static std::pair<double, double>  getOrthogonal(std::pair<double, double> underlyingPolyCoeffs, ICorePoint intersectionPoint);

    void resetToInitialState(ICoreLinkBranch* parent);

    ~ICoreLinkBranchSegmentMover();

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchTail.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchTail.h

ICoreNativeItem*, not ICoreAnyGraphicsItem* -- see the note on ICoreLinkBranchHead::setParentItem, which this mirrors exactly.

ICoreLinkBranchTail#

ICoreLinkBranchTail.h:12 · class · pImpl · 17 declaration(s)

class ICoreLinkBranchTail {
public:
    explicit ICoreLinkBranchTail(ICoreLinkBranch* parentLinkBranch = nullptr);

    void reAttachToPoint(ICorePoint lastPoint, ICorePoint lastLastPoint) const;

    // ICoreNativeItem*, not ICoreAnyGraphicsItem* -- see the note on
    // ICoreLinkBranchHead::setParentItem, which this mirrors exactly.
    void setParentItem(ICoreNativeItem* newGraphicsParent) const;
    void freeFromCanvas() const;

    void hide() const;
    void hideTailCircle() const;
    void hideTailPane() const;

    void show() const;
    void pseudoHide() const;
    void pseudoHidePaneOnly() const;
    void pseudoShow() const;

    void setCircleZOrder(int newZOrder) const;
    void setTailZOrder(int newZOrder) const;

    ICoreLinkBranchTailPane* getTailPane() const;

    ICoreLinkBranchTailCircle* getTailCircle() const;

    void resetToInitialState(ICoreLinkBranch* parentLinkBranch = nullptr);

    ~ICoreLinkBranchTail();

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchTailCircle.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchTailCircle.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreLinkBranchTailCircle#

ICoreLinkBranchTailCircle.h:9 · class · bases public ICoreGraphicsObject · pImpl · 9 declaration(s)

class ICoreLinkBranchTailCircle : public ICoreGraphicsObject {
public:
    explicit ICoreLinkBranchTailCircle(ICoreGraphicsObject *parent = nullptr, ICoreLinkBranch* parentLink = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    void setConnectedStyle();
    void setUnconnectedStyle();

    void resetToInitialState(ICoreNativeItem* parent = nullptr, ICoreLinkBranch* parentLink = nullptr);

    ~ICoreLinkBranchTailCircle() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkBranchTailPane.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchTailPane.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreLinkBranchTailPane#

ICoreLinkBranchTailPane.h:16 · class · bases public ICoreGraphicsObject · pImpl · 14 declaration(s)

class ICoreLinkBranchTailPane : public ICoreGraphicsObject {
public:
    explicit ICoreLinkBranchTailPane(ICoreGraphicsObject *parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    ICoreRect getBoundsInCanvas() const;
    ICoreLink* getGrandParentLink() const;

    ICoreLinkBranch* getParentLinkBranch() const;

    bool isTailReconnecting() const;

    void resetToInitialState(ICoreNativeItem* parent = nullptr, ICoreLinkBranch* parentLinkBranch = nullptr);

    ~ICoreLinkBranchTailPane() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreLinkPathPlanner.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkPathPlanner.h

ICoreLinkPathPlanner#

ICoreLinkPathPlanner.h:9 · class · 0 declaration(s)

class ICoreLinkPathPlanner {
public:
    static std::pair<bool, std::vector<ICorePoint>> optimizePath(ICoreSubsystemTreeNode* linkParent, const ICorePoint& tailCoord, const ICorePoint& headCoord,
            ICorePort* tailPort, ICoreLinkBranch* branchSplittingFrom, ICorePort* headPort);
};
};