BsPixelDataRTTI.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsPixelData.h"
  6. #include "BsRTTIType.h"
  7. #include "BsDataStream.h"
  8. namespace BansheeEngine
  9. {
  10. /** @cond RTTI */
  11. /** @addtogroup RTTI-Impl-Core
  12. * @{
  13. */
  14. class BS_CORE_EXPORT PixelDataRTTI : public RTTIType<PixelData, GpuResourceData, PixelDataRTTI>
  15. {
  16. UINT32& getLeft(PixelData* obj) { return obj->mExtents.left; }
  17. void setLeft(PixelData* obj, UINT32& val) { obj->mExtents.left = val; }
  18. UINT32& getTop(PixelData* obj) { return obj->mExtents.top; }
  19. void setTop(PixelData* obj, UINT32& val) { obj->mExtents.top = val; }
  20. UINT32& getRight(PixelData* obj) { return obj->mExtents.right; }
  21. void setRight(PixelData* obj, UINT32& val) { obj->mExtents.right = val; }
  22. UINT32& getBottom(PixelData* obj) { return obj->mExtents.bottom; }
  23. void setBottom(PixelData* obj, UINT32& val) { obj->mExtents.bottom = val; }
  24. UINT32& getFront(PixelData* obj) { return obj->mExtents.front; }
  25. void setFront(PixelData* obj, UINT32& val) { obj->mExtents.front = val; }
  26. UINT32& getBack(PixelData* obj) { return obj->mExtents.back; }
  27. void setBack(PixelData* obj, UINT32& val) { obj->mExtents.back = val; }
  28. UINT32& getRowPitch(PixelData* obj) { return obj->mRowPitch; }
  29. void setRowPitch(PixelData* obj, UINT32& val) { obj->mRowPitch = val; }
  30. UINT32& getSlicePitch(PixelData* obj) { return obj->mSlicePitch; }
  31. void setSlicePitch(PixelData* obj, UINT32& val) { obj->mSlicePitch = val; }
  32. PixelFormat& getFormat(PixelData* obj) { return obj->mFormat; }
  33. void setFormat(PixelData* obj, PixelFormat& val) { obj->mFormat = val; }
  34. SPtr<DataStream> getData(PixelData* obj, UINT32& size)
  35. {
  36. size = obj->getConsecutiveSize();
  37. return bs_shared_ptr_new<MemoryDataStream>(obj->getData(), size, false);
  38. }
  39. void setData(PixelData* obj, const SPtr<DataStream>& value, UINT32 size)
  40. {
  41. obj->allocateInternalBuffer(size);
  42. value->read(obj->getData(), size);
  43. }
  44. public:
  45. PixelDataRTTI()
  46. {
  47. addPlainField("left", 0, &PixelDataRTTI::getLeft, &PixelDataRTTI::setLeft);
  48. addPlainField("top", 1, &PixelDataRTTI::getTop, &PixelDataRTTI::setTop);
  49. addPlainField("right", 2, &PixelDataRTTI::getRight, &PixelDataRTTI::setRight);
  50. addPlainField("bottom", 3, &PixelDataRTTI::getBottom, &PixelDataRTTI::setBottom);
  51. addPlainField("front", 4, &PixelDataRTTI::getFront, &PixelDataRTTI::setFront);
  52. addPlainField("back", 5, &PixelDataRTTI::getBack, &PixelDataRTTI::setBack);
  53. addPlainField("rowPitch", 6, &PixelDataRTTI::getRowPitch, &PixelDataRTTI::setRowPitch);
  54. addPlainField("slicePitch", 7, &PixelDataRTTI::getSlicePitch, &PixelDataRTTI::setSlicePitch);
  55. addPlainField("format", 8, &PixelDataRTTI::getFormat, &PixelDataRTTI::setFormat);
  56. addDataBlockField("data", 9, &PixelDataRTTI::getData, &PixelDataRTTI::setData, 0);
  57. }
  58. virtual const String& getRTTIName() override
  59. {
  60. static String name = "PixelData";
  61. return name;
  62. }
  63. virtual UINT32 getRTTIId() override
  64. {
  65. return TID_PixelData;
  66. }
  67. virtual SPtr<IReflectable> newRTTIObject() override
  68. {
  69. SPtr<PixelData> newPixelData = bs_shared_ptr_new<PixelData>();
  70. return newPixelData;
  71. }
  72. };
  73. /** @} */
  74. /** @endcond */
  75. }