#pragma once #ifndef T32BITSRV_WRAP #define T32BITSRV_WRAP // TnzBase includes #include "tenv.h" // TnzCore includes #include "tcommon.h" #include "traster.h" #include "tipc.h" // Qt includes #include #include #undef DVAPI #undef DVVAR #ifdef TNZCORE_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif /* This file contains the platform-specific command lines and server names to address 64-bit Toonz's background 32-bit process (used to deal with QuickTime, to say one). */ namespace t32bitsrv { //************************************************************************************* // Platform-specific Server Command Lines //************************************************************************************* static QString srvName() { static QString name(tipc::applicationSpecificServerName("t32bitsrv")); return name; } #ifdef _WIN32 static QString srvCmdline() { static QString cmd("srv/t32bitsrv.exe " + srvName()); return cmd; } #else static QString srvCmdline() { return "\"" + QCoreApplication::applicationDirPath() + "/t32bitsrv\" " + srvName(); } #endif //************************************************************************************* // Buffer data exchanger //************************************************************************************* class DVAPI BufferExchanger final : public tipc::ShMemReader, public tipc::ShMemWriter { UCHAR *m_buf; UCHAR *m_data; public: BufferExchanger(UCHAR *buf) : m_buf(buf), m_data(buf) {} ~BufferExchanger() {} UCHAR *buffer() const { return m_buf; } int read(const char *srcBuf, int len) override; int write(char *dstBuf, int len) override; }; //************************************************************************************* // Raster data exchanger //************************************************************************************* template class DVAPI RasterExchanger final : public tipc::ShMemReader, public tipc::ShMemWriter { typedef PIXEL pix_type; TRasterPT m_ras; PIXEL *m_pix; public: RasterExchanger(TRasterP ras) : m_ras(ras) { m_ras->lock(); m_pix = m_ras->pixels(0); } ~RasterExchanger() { m_ras->unlock(); } TRasterP raster() const { return m_ras; } int read(const char *srcBuf, int len) override; int write(char *dstBuf, int len) override; }; } // namespace t32bitsrv #endif // T32BITSRV_WRAP