1 // Aseprite Document Library 2 // Copyright (c) 2001-2016 David Capello 3 // 4 // This file is released under the terms of the MIT license. 5 // Read LICENSE.txt for more information. 6 7 #ifndef DOC_IMAGE_BUFFER_H_INCLUDED 8 #define DOC_IMAGE_BUFFER_H_INCLUDED 9 #pragma once 10 11 #include "base/ints.h" 12 #include "base/shared_ptr.h" 13 14 #include <vector> 15 #include <cstddef> 16 17 namespace doc { 18 19 class ImageBuffer { 20 public: m_buffer(size)21 ImageBuffer(std::size_t size = 1) : m_buffer(size) { 22 } 23 size()24 std::size_t size() const { return m_buffer.size(); } buffer()25 uint8_t* buffer() { return &m_buffer[0]; } 26 resizeIfNecessary(std::size_t size)27 void resizeIfNecessary(std::size_t size) { 28 if (size > m_buffer.size()) 29 m_buffer.resize(size); 30 } 31 32 private: 33 std::vector<uint8_t> m_buffer; 34 }; 35 36 typedef base::SharedPtr<ImageBuffer> ImageBufferPtr; 37 38 } // namespace doc 39 40 #endif 41