imagePool.h (696B)
1 #pragma once 2 3 #include <map> 4 #include <cstddef> 5 #include <memory> 6 7 namespace juce 8 { 9 class Image; 10 } 11 12 namespace jucePluginEditorLib 13 { 14 class ImagePool 15 { 16 public: 17 enum class Type 18 { 19 Lock, 20 Link, 21 22 Count 23 }; 24 25 using ImageData = std::pair<const char*, size_t>; // pointer to data, data size 26 using ImageDataMap = std::map<Type, ImageData>; 27 28 const ImageDataMap& getImageDataMap() const; 29 30 const juce::Image* getImage(Type _type, float _scale); 31 const juce::Image* getImage(Type _type); 32 33 private: 34 mutable ImageDataMap m_imageDataMap; 35 36 std::map<Type, std::unique_ptr<juce::Image>> m_imageMap; 37 std::map<Type, std::map<float,std::unique_ptr<juce::Image>>> m_scaledImageMap; 38 }; 39 }