1 /** 2 * Orthanc - A Lightweight, RESTful DICOM Store 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics 4 * Department, University Hospital of Liege, Belgium 5 * Copyright (C) 2017-2021 Osimis S.A., Belgium 6 * 7 * This program is free software: you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public License 9 * as published by the Free Software Foundation, either version 3 of 10 * the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this program. If not, see 19 * <http://www.gnu.org/licenses/>. 20 **/ 21 22 23 #pragma once 24 25 #if !defined(ORTHANC_ENABLE_PNG) 26 # error The macro ORTHANC_ENABLE_PNG must be defined 27 #endif 28 29 #if ORTHANC_ENABLE_PNG != 1 30 # error PNG support must be enabled to include this file 31 #endif 32 33 #include "IImageWriter.h" 34 #include "../Compatibility.h" // For ORTHANC_OVERRIDE 35 36 #include <boost/shared_ptr.hpp> 37 38 namespace Orthanc 39 { 40 class ORTHANC_PUBLIC PngWriter : public IImageWriter 41 { 42 private: 43 class Context; 44 45 protected: 46 #if ORTHANC_SANDBOXED == 0 47 virtual void WriteToFileInternal(const std::string& filename, 48 unsigned int width, 49 unsigned int height, 50 unsigned int pitch, 51 PixelFormat format, 52 const void* buffer) ORTHANC_OVERRIDE; 53 #endif 54 55 virtual void WriteToMemoryInternal(std::string& png, 56 unsigned int width, 57 unsigned int height, 58 unsigned int pitch, 59 PixelFormat format, 60 const void* buffer) ORTHANC_OVERRIDE; 61 }; 62 } 63