CsPaint  1.0.1
cspaint_context.h
1 
19 #ifndef INCLUDED_CSPAINT_CONTEXT_H
20 #define INCLUDED_CSPAINT_CONTEXT_H
21 
22 #include <cspaint_fwd.h>
23 
24 #include <any>
25 #include <functional>
26 #include <map>
27 #include <memory>
28 #include <string>
29 #include <vector>
30 #include <vulkan/vulkan.hpp>
31 
32 namespace CsPaint
33 {
34 
35 class context
36 {
37  private:
38  struct private_tag {
39  };
40 
41  public:
42  using handle = std::shared_ptr<context>;
43 
44  context(vk::Instance instance);
45 
47  {
48  m_instance.destroy();
49  }
50 
51  context(const context &) = delete;
52  void operator=(const context &) = delete;
53 
54  static handle create(const std::string &app_name, uint32_t app_version = 0,
55  const std::vector<std::string> &extensions = std::vector<std::string>(),
56  const std::vector<std::string> &layers = std::vector<std::string>());
57 
58  static handle create(const char *app_name, uint32_t app_version = 0,
59  const std::vector<const char *> &extensions = std::vector<const char *>(),
60  const std::vector<const char *> &layers = std::vector<const char *>());
61 
62  static handle create(vk::Instance instance);
63 
64  vk::Instance instance() const
65  {
66  return m_instance;
67  }
68 
69  using error_callback_t = void(vk::DebugReportFlagsEXT, vk::DebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *,
70  const char *);
71 
72  void setDebugCallback(std::function<error_callback_t> callback,
73  vk::DebugReportFlagsEXT flags = vk::DebugReportFlagBitsEXT::eError |
74  vk::DebugReportFlagBitsEXT::eWarning);
75 
76  private:
77  vk::Instance m_instance;
78  vk::DispatchLoaderDynamic m_dynamicLoader;
79  std::function<error_callback_t> m_errorCallback;
80  vk::UniqueHandle<vk::DebugReportCallbackEXT, vk::DispatchLoaderDynamic> m_debugReport;
81 };
82 }; // namespace CsPaint
83 
84 #endif
void (vk::DebugReportFlagsEXT, vk::DebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *) error_callback_t
Definition: cspaint_context.h:70
void operator=(const context &) = delete
void setDebugCallback(std::function< error_callback_t > callback, vk::DebugReportFlagsEXT flags=vk::DebugReportFlagBitsEXT::eError|vk::DebugReportFlagBitsEXT::eWarning)
~context()
Definition: cspaint_context.h:46
vk::Instance instance() const
Definition: cspaint_context.h:64
context(vk::Instance instance)
static handle create(const std::string &app_name, uint32_t app_version=0, const std::vector< std::string > &extensions=std::vector< std::string >(), const std::vector< std::string > &layers=std::vector< std::string >())
std::shared_ptr< context > handle
Definition: cspaint_context.h:42
Definition: cspaint_context.h:35
Definition: cspaint_buffer.h:26