#ifndef BASE_CLIPBOARD_H
#define BASE_CLIPBOARD_H
-#include "support/docstring.h"
+#include "Cursor.h"
+
+#include "support/FileName.h"
+#include "support/strfwd.h"
+
+using lyx::support::FileName;
namespace lyx {
namespace frontend {
public:
virtual ~Clipboard() {}
+ enum GraphicsType {
+ PdfGraphicsType,
+ PngGraphicsType,
+ JpegGraphicsType,
+ LinkBackGraphicsType,
+ AnyGraphicsType,
+ };
+
/**
* Get the system clipboard contents. The format is as written in
* .lyx files (may even be an older version than ours if it comes
virtual std::string const getAsLyX() const = 0;
/// Get the contents of the window system clipboard in plain text format.
virtual docstring const getAsText() const = 0;
+ /// Get the contents of the window system clipboard as graphics file.
+ virtual FileName getAsGraphics(Cursor const & cur, GraphicsType type) const = 0;
+
/**
* Fill the system clipboard. The format of \p lyx is as written in
* .lyx files, the format of \p text is plain text.
/// Does the clipboard contain LyX contents?
virtual bool hasLyXContents() const = 0;
+ /// Does the clipboard contain graphics contents of a certain type?
+ virtual bool hasGraphicsContents(GraphicsType type = AnyGraphicsType) const = 0;
/// state of clipboard.
/// \returns true if the system clipboard has been set within LyX
/// (document contents, dialogs count as external here).
virtual bool isInternal() const = 0;
+ /// \returns true if the OS has the concept of clipboard ownership,
+ /// which is crucial for our concept of internal clipboard.
+ virtual bool hasInternal() const = 0;
/// Is the clipboard empty?
/// \returns true if both the LyX and the plaintext versions of the
- /// clipboard are empty.
+ /// clipboard are empty, and no supported graphics format is available.
virtual bool empty() const = 0;
};