CmPixelDataRTTI.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #pragma once
  2. #include "CmPrerequisitesUtil.h"
  3. #include "CmPixelData.h"
  4. #include "CmRTTIType.h"
  5. #include "CmManagedDataBlock.h"
  6. namespace CamelotEngine
  7. {
  8. class CM_UTILITY_EXPORT PixelDataRTTI : public RTTIType<PixelData, IReflectable, PixelDataRTTI>
  9. {
  10. UINT32& getLeft(PixelData* obj) { return obj->left; }
  11. void setLeft(PixelData* obj, UINT32& val) { obj->left = val; }
  12. UINT32& getTop(PixelData* obj) { return obj->top; }
  13. void setTop(PixelData* obj, UINT32& val) { obj->top = val; }
  14. UINT32& getRight(PixelData* obj) { return obj->right; }
  15. void setRight(PixelData* obj, UINT32& val) { obj->right = val; }
  16. UINT32& getBottom(PixelData* obj) { return obj->bottom; }
  17. void setBottom(PixelData* obj, UINT32& val) { obj->bottom = val; }
  18. UINT32& getFront(PixelData* obj) { return obj->front; }
  19. void setFront(PixelData* obj, UINT32& val) { obj->front = val; }
  20. UINT32& getBack(PixelData* obj) { return obj->back; }
  21. void setBack(PixelData* obj, UINT32& val) { obj->back = val; }
  22. UINT32& getRowPitch(PixelData* obj) { return obj->rowPitch; }
  23. void setRowPitch(PixelData* obj, UINT32& val) { obj->rowPitch = val; }
  24. UINT32& getSlicePitch(PixelData* obj) { return obj->slicePitch; }
  25. void setSlicePitch(PixelData* obj, UINT32& val) { obj->slicePitch = val; }
  26. PixelFormat& getFormat(PixelData* obj) { return obj->format; }
  27. void setFormat(PixelData* obj, PixelFormat& val) { obj->format = val; }
  28. ManagedDataBlock getData(PixelData* obj)
  29. {
  30. ManagedDataBlock dataBlock((UINT8*)obj->data, obj->getConsecutiveSize(), false);
  31. return dataBlock;
  32. }
  33. void setData(PixelData* obj, ManagedDataBlock val)
  34. {
  35. obj->data = val.getData();
  36. }
  37. public:
  38. PixelDataRTTI()
  39. {
  40. addPlainField("left", 0, &PixelDataRTTI::getLeft, &PixelDataRTTI::setLeft);
  41. addPlainField("top", 1, &PixelDataRTTI::getTop, &PixelDataRTTI::setTop);
  42. addPlainField("right", 2, &PixelDataRTTI::getRight, &PixelDataRTTI::setRight);
  43. addPlainField("bottom", 3, &PixelDataRTTI::getBottom, &PixelDataRTTI::setBottom);
  44. addPlainField("front", 4, &PixelDataRTTI::getFront, &PixelDataRTTI::setFront);
  45. addPlainField("back", 5, &PixelDataRTTI::getBack, &PixelDataRTTI::setBack);
  46. addPlainField("rowPitch", 6, &PixelDataRTTI::getRowPitch, &PixelDataRTTI::setRowPitch);
  47. addPlainField("slicePitch", 7, &PixelDataRTTI::getSlicePitch, &PixelDataRTTI::setSlicePitch);
  48. addPlainField("format", 8, &PixelDataRTTI::getFormat, &PixelDataRTTI::setFormat);
  49. addDataBlockField("data", 9, &PixelDataRTTI::getData, &PixelDataRTTI::setData);
  50. }
  51. virtual const String& getRTTIName()
  52. {
  53. static String name = "PixelData";
  54. return name;
  55. }
  56. virtual UINT32 getRTTIId()
  57. {
  58. return TID_PixelData;
  59. }
  60. virtual std::shared_ptr<IReflectable> newRTTIObject()
  61. {
  62. PixelDataPtr newPixelData(new PixelData());
  63. newPixelData->ownsData = true;
  64. return newPixelData;
  65. }
  66. };
  67. }