BsScriptPixelData.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsPixelData.h"
  5. #include "BsColor.h"
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @brief Interop class between C++ & CLR for PixelData.
  10. */
  11. class BS_SCR_BE_EXPORT ScriptPixelData : public ScriptObject <ScriptPixelData>
  12. {
  13. public:
  14. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "PixelData")
  15. /**
  16. * @brief Returns the internal wrapped pixel data.
  17. */
  18. PixelDataPtr getInternalValue() const { return mPixelData; }
  19. /**
  20. * @brief Creates a new managed pixel data instance that wraps
  21. * the provided native pixel data instance.
  22. */
  23. static MonoObject* create(const PixelDataPtr& pixelData);
  24. private:
  25. ScriptPixelData(MonoObject* managedInstance);
  26. ~ScriptPixelData();
  27. /**
  28. * @brief Initializes the object. Must be called after construction
  29. * and before use.
  30. */
  31. void initialize(const PixelDataPtr& pixelData);
  32. /**
  33. * @brief Checks is the underlying pixel data of the provided object locked.
  34. * When locked pixel data cannot be accessed.
  35. */
  36. static bool checkIsLocked(ScriptPixelData* thisPtr);
  37. PixelDataPtr mPixelData;
  38. /************************************************************************/
  39. /* CLR HOOKS */
  40. /************************************************************************/
  41. static void internal_createInstance(MonoObject* instance, PixelVolume volume, PixelFormat format);
  42. static void internal_getPixel(ScriptPixelData* thisPtr, int x, int y, int z, Color* value);
  43. static void internal_setPixel(ScriptPixelData* thisPtr, int x, int y, int z, Color value);
  44. static void internal_getPixels(ScriptPixelData* thisPtr, MonoArray** value);
  45. static void internal_setPixels(ScriptPixelData* thisPtr, MonoArray* value);
  46. static void internal_getRawPixels(ScriptPixelData* thisPtr, MonoArray** value);
  47. static void internal_setRawPixels(ScriptPixelData* thisPtr, MonoArray* value);
  48. static void internal_getExtents(ScriptPixelData* thisPtr, PixelVolume* value);
  49. static void internal_getFormat(ScriptPixelData* thisPtr, PixelFormat* value);
  50. static void internal_getRowPitch(ScriptPixelData* thisPtr, int* value);
  51. static void internal_getSlicePitch(ScriptPixelData* thisPtr, int* value);
  52. static void internal_getSize(ScriptPixelData* thisPtr, int* value);
  53. static void internal_getIsConsecutive(ScriptPixelData* thisPtr, bool* value);
  54. };
  55. }