CmPixelData.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "CmPixelData.h"
  2. #include "CmPixelUtil.h"
  3. #include "CmPixelDataRTTI.h"
  4. namespace CamelotFramework
  5. {
  6. PixelData::PixelData(const PixelData& copy)
  7. :IReflectable(copy)
  8. {
  9. data = copy.data;
  10. format = copy.format;
  11. rowPitch = copy.rowPitch;
  12. slicePitch = copy.slicePitch;
  13. mExtents = copy.mExtents;
  14. ownsData = false;
  15. }
  16. UINT8* PixelData::allocateInternalBuffer(UINT32 size)
  17. {
  18. data = CM_NEW_BYTES(size, ScratchAlloc);
  19. ownsData = true;
  20. return (UINT8*)data;
  21. }
  22. void PixelData::freeInternalBuffer()
  23. {
  24. if(ownsData && getData() != nullptr)
  25. {
  26. CM_DELETE_BYTES(getData(), ScratchAlloc);
  27. data = nullptr;
  28. }
  29. }
  30. void PixelData::setExternalBuffer(UINT8* data)
  31. {
  32. freeInternalBuffer();
  33. this->data = data;
  34. ownsData = false;
  35. }
  36. /************************************************************************/
  37. /* SERIALIZATION */
  38. /************************************************************************/
  39. RTTITypeBase* PixelData::getRTTIStatic()
  40. {
  41. return PixelDataRTTI::instance();
  42. }
  43. RTTITypeBase* PixelData::getRTTI() const
  44. {
  45. return PixelData::getRTTIStatic();
  46. }
  47. }