DataConnectionGraphicsItem.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <QColor>
  10. #include <GraphCanvas/Components/Slots/Data/DataSlotBus.h>
  11. #include <Components/Connections/ConnectionVisualComponent.h>
  12. namespace GraphCanvas
  13. {
  14. class DataConnectionGraphicsItem;
  15. class DataPinStyleMonitor
  16. : public StyleNotificationBus::MultiHandler
  17. {
  18. public:
  19. DataPinStyleMonitor(DataConnectionGraphicsItem& graphicsItem);
  20. // StyleNotificationBus
  21. void OnStyleChanged() override;
  22. ////
  23. void SetSourceId(const AZ::EntityId& sourceId);
  24. void SetTargetId(const AZ::EntityId& targetId);
  25. private:
  26. DataConnectionGraphicsItem& m_graphicsItem;
  27. AZ::EntityId m_sourceId;
  28. AZ::EntityId m_targetId;
  29. };
  30. class DataConnectionGraphicsItem
  31. : public ConnectionGraphicsItem
  32. , public RootGraphicsItemNotificationBus::Handler
  33. , public DataSlotNotificationBus::MultiHandler
  34. {
  35. public:
  36. AZ_CLASS_ALLOCATOR(DataConnectionGraphicsItem, AZ::SystemAllocator);
  37. DataConnectionGraphicsItem(const AZ::EntityId& connectionEntityId);
  38. ~DataConnectionGraphicsItem() override = default;
  39. // ConnectionGraphicsItem
  40. void OnStyleChanged() override;
  41. ////
  42. void OnSourceSlotIdChanged(const AZ::EntityId& oldSlotId, const AZ::EntityId& newSlotId) override;
  43. void OnTargetSlotIdChanged(const AZ::EntityId& oldSlotId, const AZ::EntityId& newSlotId) override;
  44. // DataSlotNotificationBus
  45. void OnDisplayTypeChanged(const AZ::Uuid& dataTypeId, const AZStd::vector<AZ::Uuid>& typeIds) override;
  46. ////
  47. void UpdateDataColors();
  48. // RootGraphicsItemNotifications
  49. void OnDisplayStateChanged(RootGraphicsItemDisplayState oldState, RootGraphicsItemDisplayState newState) override;
  50. ////
  51. protected:
  52. Styling::ConnectionCurveType GetCurveStyle() const override;
  53. void UpdatePen() override;
  54. void OnPathChanged() override;
  55. private:
  56. void PopulateDataColor(QColor& targetColor, const AZ::EntityId& slotId);
  57. DataPinStyleMonitor m_dataPinStyleMonitor;
  58. QPen m_pen;
  59. QColor m_sourceDataColor;
  60. QColor m_targetDataColor;
  61. };
  62. }