CsPaint  1.0.1
cspaint_image.h
1 
19 #ifndef INCLUDED_CSPAINT_IMAGE_H
20 #define INCLUDED_CSPAINT_IMAGE_H
21 
22 #include <cspaint_fwd.h>
23 
24 #include <vulkan/vulkan.hpp>
25 
26 namespace CsPaint
27 {
28 class image
29 {
30  private:
31  public:
32  using handle = std::shared_ptr<image>;
33 
34  image(device_handle, vk::UniqueImage, vk::Format imageFormat, vk::ImageAspectFlags aspectFlags);
35 
36  image(const image &) = delete;
37  void operator=(const image &) = delete;
38 
39  vk::Image getImage()
40  {
41  return *m_image;
42  }
43 
44  vk::ImageView getImageView()
45  {
46  return *m_view;
47  }
48 
49  vk::DeviceMemory getDeviceMemory()
50  {
51  return *m_memory;
52  };
53 
54  template <typename T, typename Alloc>
55  void store(const std::vector<T, Alloc> &vec)
56  {
57  store(static_cast<const void *>(vec.data()), vec.size() * sizeof(T));
58  };
59 
60  void store(const void *data, uint64_t size);
61 
62  private:
63  device_handle m_device;
64  vk::UniqueImage m_image;
65  vk::UniqueDeviceMemory m_memory;
66  vk::UniqueImageView m_view;
67 };
68 }; // namespace CsPaint
69 
70 #endif
void store(const std::vector< T, Alloc > &vec)
Definition: cspaint_image.h:55
vk::ImageView getImageView()
Definition: cspaint_image.h:44
vk::Image getImage()
Definition: cspaint_image.h:39
void operator=(const image &) = delete
std::shared_ptr< device > device_handle
Definition: cspaint_fwd.h:45
image(device_handle, vk::UniqueImage, vk::Format imageFormat, vk::ImageAspectFlags aspectFlags)
std::shared_ptr< image > handle
Definition: cspaint_image.h:32
vk::DeviceMemory getDeviceMemory()
Definition: cspaint_image.h:49
Definition: cspaint_image.h:28
Definition: cspaint_buffer.h:26