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

API — ICoreSDK/ICoreStudio/StudioObjects/ICoreModelViews/Link

The public contract of 8 header(s) under src/ICoreSDK/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/ICoreSDK/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:12 · 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/ICoreSDK/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/ICoreSDK/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/ICoreSDK/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchSegmentMover.h

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.

ICoreLinkBranchSegmentMover#

ICoreLinkBranchSegmentMover.h:11 · 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/ICoreSDK/ICoreStudio/StudioObjects/ICoreModelViews/Link/ICoreLinkBranchTail.h

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

ICoreLinkBranchTail#

ICoreLinkBranchTail.h:13 · 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/ICoreSDK/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/ICoreSDK/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/ICoreSDK/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);
};
};