Collection of tools useful for audio production
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.7KB

  1. /*
  2. * Patchbay Canvas engine using QGraphicsView/Scene
  3. * Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the COPYING file
  16. */
  17. #ifndef CANVASLINE_H
  18. #define CANVASLINE_H
  19. #include <QtGui/QGraphicsLineItem>
  20. #include "abstractcanvasline.h"
  21. class QPainter;
  22. START_NAMESPACE_PATCHCANVAS
  23. class CanvasPort;
  24. class CanvasPortGlow;
  25. class CanvasLine :
  26. public AbstractCanvasLine,
  27. public QGraphicsLineItem
  28. {
  29. public:
  30. CanvasLine(CanvasPort* item1, CanvasPort* item2, QGraphicsItem* parent);
  31. ~CanvasLine();
  32. virtual void deleteFromScene();
  33. virtual bool isLocked() const;
  34. virtual void setLocked(bool yesno);
  35. virtual bool isLineSelected() const;
  36. virtual void setLineSelected(bool yesno);
  37. virtual void updateLinePos();
  38. virtual int type() const;
  39. // QGraphicsItem generic calls
  40. virtual void setZValue(qreal z)
  41. {
  42. QGraphicsLineItem::setZValue(z);
  43. }
  44. private:
  45. CanvasPort* item1;
  46. CanvasPort* item2;
  47. CanvasPortGlow* glow;
  48. bool m_locked;
  49. bool m_lineSelected;
  50. void updateLineGradient();
  51. virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
  52. };
  53. END_NAMESPACE_PATCHCANVAS
  54. #endif // CANVASLINE_H