2
0

CmPixelDataRTTI.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. ManagedDataBlock getData(PixelData* obj)
  27. {
  28. ManagedDataBlock dataBlock((UINT8*)obj->data, obj->getConsecutiveSize(), false);
  29. return dataBlock;
  30. }
  31. void setData(PixelData* obj, ManagedDataBlock val)
  32. {
  33. obj->data = val.getData();
  34. }
  35. public:
  36. PixelDataRTTI()
  37. {
  38. addPlainField("left", 0, &PixelDataRTTI::getLeft, &PixelDataRTTI::setLeft);
  39. addPlainField("top", 1, &PixelDataRTTI::getTop, &PixelDataRTTI::setTop);
  40. addPlainField("right", 2, &PixelDataRTTI::getRight, &PixelDataRTTI::setRight);
  41. addPlainField("bottom", 3, &PixelDataRTTI::getBottom, &PixelDataRTTI::setBottom);
  42. addPlainField("front", 4, &PixelDataRTTI::getFront, &PixelDataRTTI::setFront);
  43. addPlainField("back", 5, &PixelDataRTTI::getBack, &PixelDataRTTI::setBack);
  44. addPlainField("rowPitch", 6, &PixelDataRTTI::getRowPitch, &PixelDataRTTI::setRowPitch);
  45. addPlainField("slicePitch", 7, &PixelDataRTTI::getSlicePitch, &PixelDataRTTI::setSlicePitch);
  46. addDataBlockField("data", 8, &PixelDataRTTI::getData, &PixelDataRTTI::setData);
  47. }
  48. virtual const String& getRTTIName()
  49. {
  50. static String name = "PixelData";
  51. return name;
  52. }
  53. virtual UINT32 getRTTIId()
  54. {
  55. return TID_PixelData;
  56. }
  57. virtual std::shared_ptr<IReflectable> newRTTIObject()
  58. {
  59. PixelDataPtr newPixelData(new PixelData());
  60. newPixelData->ownsData = true;
  61. return newPixelData;
  62. }
  63. };
  64. }