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.

80 lines
1.8KB

  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. #include "canvasfadeanimation.h"
  18. #include "canvasbox.h"
  19. START_NAMESPACE_PATCHCANVAS
  20. CanvasFadeAnimation::CanvasFadeAnimation(QGraphicsItem* item, bool show, QObject* parent) :
  21. QAbstractAnimation(parent)
  22. {
  23. m_show = show;
  24. m_duration = 0;
  25. m_item = item;
  26. }
  27. QGraphicsItem* CanvasFadeAnimation::item()
  28. {
  29. return m_item;
  30. }
  31. void CanvasFadeAnimation::setDuration(int time)
  32. {
  33. if (m_show == false && m_item->opacity() == 0.0)
  34. m_duration = 0;
  35. else
  36. {
  37. m_item->show();
  38. m_duration = time;
  39. }
  40. }
  41. int CanvasFadeAnimation::duration() const
  42. {
  43. return m_duration;
  44. }
  45. void CanvasFadeAnimation::updateCurrentTime(int time)
  46. {
  47. if (m_duration == 0)
  48. return;
  49. float value;
  50. if (m_show)
  51. value = float(time)/m_duration;
  52. else
  53. value = 1.0-(float(time)/m_duration);
  54. m_item->setOpacity(value);
  55. if (m_item->type() == CanvasBoxType)
  56. ((CanvasBox*)m_item)->setShadowOpacity(value);
  57. }
  58. void CanvasFadeAnimation::updateState(QAbstractAnimation::State /*newState*/, QAbstractAnimation::State /*oldState*/)
  59. {
  60. }
  61. void CanvasFadeAnimation::updateDirection(QAbstractAnimation::Direction /*direction*/)
  62. {
  63. }
  64. END_NAMESPACE_PATCHCANVAS