Scissor.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. #include <Atom/RHI.Reflect/Scissor.h>
  9. #include <AzCore/Serialization/SerializeContext.h>
  10. #include <AzCore/Math/MathUtils.h>
  11. namespace AZ::RHI
  12. {
  13. void Scissor::Reflect(AZ::ReflectContext* context)
  14. {
  15. if (SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context))
  16. {
  17. serializeContext->Class<Scissor>()
  18. ->Version(1)
  19. ->Field("m_minX", &Scissor::m_minX)
  20. ->Field("m_minY", &Scissor::m_minY)
  21. ->Field("m_maxX", &Scissor::m_maxX)
  22. ->Field("m_maxY", &Scissor::m_maxY);
  23. }
  24. }
  25. Scissor::Scissor(
  26. int32_t minX,
  27. int32_t minY,
  28. int32_t maxX,
  29. int32_t maxY)
  30. : m_minX(minX)
  31. , m_minY(minY)
  32. , m_maxX(maxX)
  33. , m_maxY(maxY)
  34. {}
  35. Scissor Scissor::GetScaled(
  36. float normalizedMinX,
  37. float normalizedMinY,
  38. float normalizedMaxX,
  39. float normalizedMaxY) const
  40. {
  41. Scissor scissor;
  42. scissor.m_minX = static_cast<int32_t>(Lerp(static_cast<float>(m_minX), static_cast<float>(m_maxX), normalizedMinX));
  43. scissor.m_maxX = static_cast<int32_t>(Lerp(static_cast<float>(m_minX), static_cast<float>(m_maxX), normalizedMaxX));
  44. scissor.m_minY = static_cast<int32_t>(Lerp(static_cast<float>(m_minY), static_cast<float>(m_maxY), normalizedMinY));
  45. scissor.m_maxY = static_cast<int32_t>(Lerp(static_cast<float>(m_minY), static_cast<float>(m_maxY), normalizedMaxY));
  46. return scissor;
  47. }
  48. Scissor Scissor::CreateNull()
  49. {
  50. return Scissor{0, 0, -1, -1};
  51. }
  52. bool Scissor::IsNull() const
  53. {
  54. return ((m_minX > m_maxX) || (m_minY > m_maxY));
  55. }
  56. }