Vulkan.hpp (3189B)
1 /* 2 * DISTRHO Plugin Framework (DPF) 3 * Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com> 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any purpose with 6 * or without fee is hereby granted, provided that the above copyright notice and this 7 * permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 10 * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 11 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 12 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef DGL_VULKAN_HPP_INCLUDED 18 #define DGL_VULKAN_HPP_INCLUDED 19 20 #include "ImageBase.hpp" 21 22 #include <vulkan/vulkan_core.h> 23 24 START_NAMESPACE_DGL 25 26 // -------------------------------------------------------------------------------------------------------------------- 27 28 /** 29 Vulkan Graphics context. 30 */ 31 struct VulkanGraphicsContext : GraphicsContext 32 { 33 }; 34 35 // -------------------------------------------------------------------------------------------------------------------- 36 37 /** 38 Vulkan Image class. 39 40 TODO ... 41 */ 42 class VulkanImage : public ImageBase 43 { 44 public: 45 /** 46 Constructor for a null Image. 47 */ 48 VulkanImage(); 49 50 /** 51 Constructor using raw image data. 52 @note @a rawData must remain valid for the lifetime of this Image. 53 */ 54 VulkanImage(const char* rawData, uint width, uint height, ImageFormat format); 55 56 /** 57 Constructor using raw image data. 58 @note @a rawData must remain valid for the lifetime of this Image. 59 */ 60 VulkanImage(const char* rawData, const Size<uint>& size, ImageFormat format); 61 62 /** 63 Constructor using another image data. 64 */ 65 VulkanImage(const VulkanImage& image); 66 67 /** 68 Destructor. 69 */ 70 ~VulkanImage() override; 71 72 /** 73 Load image data from memory. 74 @note @a rawData must remain valid for the lifetime of this Image. 75 */ 76 void loadFromMemory(const char* rawData, 77 const Size<uint>& size, 78 ImageFormat format = kImageFormatBGRA) noexcept override; 79 80 /** 81 Draw this image at position @a pos using the graphics context @a context. 82 */ 83 void drawAt(const GraphicsContext& context, const Point<int>& pos) override; 84 85 /** 86 TODO document this. 87 */ 88 VulkanImage& operator=(const VulkanImage& image) noexcept; 89 90 // FIXME this should not be needed 91 inline void loadFromMemory(const char* rdata, uint w, uint h, ImageFormat fmt = kImageFormatBGRA) 92 { loadFromMemory(rdata, Size<uint>(w, h), fmt); }; 93 inline void draw(const GraphicsContext& context) 94 { drawAt(context, Point<int>(0, 0)); }; 95 inline void drawAt(const GraphicsContext& context, int x, int y) 96 { drawAt(context, Point<int>(x, y)); }; 97 }; 98 99 // -------------------------------------------------------------------------------------------------------------------- 100 101 END_NAMESPACE_DGL 102 103 #endif