1 #pragma once 2 3 #ifndef TIIO_PSD_INCLUDED 4 #define TIIO_PSD_INCLUDED 5 6 #include "../../common/psdlib/psd.h" 7 #include "tlevel_io.h" 8 9 class TLevelReaderPsd final : public TLevelReader { 10 public: 11 TLevelReaderPsd(const TFilePath &path); 12 ~TLevelReaderPsd(); 13 TImageReaderP getFrameReader(TFrameId fid) override; 14 TLevelP loadInfo() override; 15 getImageInfo(TFrameId fid)16 const TImageInfo *getImageInfo(TFrameId fid) override { return m_info; } getImageInfo()17 const TImageInfo *getImageInfo() override { return m_info; } 18 19 void load(TRasterImageP &rasP, int shrinkX = 1, int shrinkY = 1, 20 TRect region = TRect()); getSize()21 TDimension getSize() const { return TDimension(m_lx, m_ly); } getBBox()22 TRect getBBox() const { return TRect(0, 0, m_lx - 1, m_ly - 1); } 23 setLayerId(int layerId)24 void setLayerId(int layerId) { m_layerId = layerId; } 25 // int m_IOError; 26 27 private: 28 TFilePath m_path; 29 int m_lx, m_ly; 30 int m_layersCount; 31 TPSDReader *m_psdreader; 32 int m_layerId; 33 std::map<TFrameId, int> m_frameTable; // frameID, layerId 34 public: 35 static TLevelReader *create(const TFilePath &f); 36 TThread::Mutex m_mutex; 37 }; 38 39 class TLevelWriterPsd final : public TLevelWriter { 40 public: 41 TLevelWriterPsd(const TFilePath &path, TPropertyGroup *winfo); 42 ~TLevelWriterPsd(); 43 TImageWriterP getFrameWriter(TFrameId fid) override; 44 45 void save(const TImageP &img, int layerId); 46 47 private: 48 public: create(const TFilePath & f,TPropertyGroup * winfo)49 static TLevelWriter *create(const TFilePath &f, TPropertyGroup *winfo) { 50 return new TLevelWriterPsd(f, winfo); 51 }; 52 }; 53 54 #endif // TIIO_PSD_H 55