/* * Deskflow -- mouse and keyboard sharing utility * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. * SPDX-FileCopyrightText: (C) 2004 Chris Schoeneman * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ #pragma once #include "platform/XWindowsClipboard.h" //! Convert to/from some text encoding class XWindowsClipboardAnyBitmapConverter : public IXWindowsClipboardConverter { public: XWindowsClipboardAnyBitmapConverter() = default; ~XWindowsClipboardAnyBitmapConverter() override = default; // IXWindowsClipboardConverter overrides IClipboard::Format getFormat() const override; Atom getAtom() const override = 0; int getDataSize() const override; std::string fromIClipboard(const std::string &) const override; std::string toIClipboard(const std::string &) const override; protected: //! Convert from IClipboard format /*! Convert raw BGR pixel data to another image format. */ virtual std::string doBGRFromIClipboard(const uint8_t *bgrData, uint32_t w, uint32_t h) const = 0; //! Convert from IClipboard format /*! Convert raw BGRA pixel data to another image format. */ virtual std::string doBGRAFromIClipboard(const uint8_t *bgrData, uint32_t w, uint32_t h) const = 0; //! Convert to IClipboard format /*! Convert an image into raw BGR or BGRA image data and store the width, height, and image depth (24 or 32). */ virtual std::string doToIClipboard(const std::string &, uint32_t &w, uint32_t &h, uint32_t &depth) const = 0; };