DefaultVerticalNodeGeometry.hpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include "AbstractNodeGeometry.hpp"
  3. #include <QtGui/QFontMetrics>
  4. namespace QtNodes {
  5. class AbstractGraphModel;
  6. class BasicGraphicsScene;
  7. class NODE_EDITOR_PUBLIC DefaultVerticalNodeGeometry : public AbstractNodeGeometry
  8. {
  9. public:
  10. DefaultVerticalNodeGeometry(AbstractGraphModel &graphModel);
  11. public:
  12. QSize size(NodeId const nodeId) const override;
  13. void recomputeSize(NodeId const nodeId) const override;
  14. QPointF portPosition(NodeId const nodeId,
  15. PortType const portType,
  16. PortIndex const index) const override;
  17. QPointF portTextPosition(NodeId const nodeId,
  18. PortType const portType,
  19. PortIndex const PortIndex) const override;
  20. QPointF captionPosition(NodeId const nodeId) const override;
  21. QRectF captionRect(NodeId const nodeId) const override;
  22. QPointF widgetPosition(NodeId const nodeId) const override;
  23. QRect resizeHandleRect(NodeId const nodeId) const override;
  24. private:
  25. QRectF portTextRect(NodeId const nodeId,
  26. PortType const portType,
  27. PortIndex const portIndex) const;
  28. /// Finds
  29. unsigned int maxHorizontalPortsExtent(NodeId const nodeId) const;
  30. unsigned int maxPortsTextAdvance(NodeId const nodeId, PortType const portType) const;
  31. unsigned int portCaptionsHeight(NodeId const nodeId, PortType const portType) const;
  32. private:
  33. // Some variables are mutable because we need to change drawing
  34. // metrics corresponding to fontMetrics but this doesn't change
  35. // constness of the Node.
  36. mutable unsigned int _portSize;
  37. unsigned int _portSpasing;
  38. mutable QFontMetrics _fontMetrics;
  39. mutable QFontMetrics _boldFontMetrics;
  40. };
  41. } // namespace QtNodes