Image.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // The MIT License(MIT)
  2. //
  3. // Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy of
  6. // this software and associated documentation files(the "Software"), to deal in
  7. // the Software without restriction, including without limitation the rights to
  8. // use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of
  9. // the Software, and to permit persons to whom the Software is furnished to do so,
  10. // subject to the following conditions :
  11. //
  12. // The above copyright notice and this permission notice shall be included in all
  13. // copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  17. // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR
  18. // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  19. // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  20. // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  21. #pragma once
  22. #include <filesystem>
  23. #include <iostream>
  24. #include <string>
  25. #include <vector>
  26. #include <wincodec.h>
  27. #include <wrl.h>
  28. using namespace Microsoft::WRL;
  29. class Image
  30. {
  31. public:
  32. Image();
  33. void load(const std::filesystem::path& FilePath);
  34. uint32_t width() { return m_width; }
  35. uint32_t height() { return m_height; }
  36. uint32_t bpp() { return m_bpp; }
  37. uint32_t rowPitch() { return m_rowPitch; }
  38. uint32_t imageSize() { return m_imageSize; }
  39. uint8_t* data() { return m_data.data(); }
  40. protected:
  41. void LoadWIC(const std::wstring& filename);
  42. private:
  43. uint32_t m_width, m_height;
  44. uint32_t m_bpp;
  45. std::vector<uint8_t> m_data;
  46. uint32_t m_rowPitch;
  47. uint32_t m_imageSize;
  48. ComPtr<IWICImagingFactory> m_WICFactory;
  49. };