78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# Clip Library
|
|
*Copyright (c) 2015-2024 David Capello*
|
|
|
|
[![build](https://github.com/dacap/clip/workflows/build/badge.svg)](https://github.com/dacap/clip/actions?query=workflow%3Abuild)
|
|
[![MIT Licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.txt)
|
|
|
|
Library to copy/retrieve content to/from the clipboard/pasteboard.
|
|
|
|
## Features
|
|
|
|
Available features on Windows, macOS, and Linux (X11):
|
|
|
|
* Copy/paste UTF-8 text.
|
|
* Copy/paste user-defined data.
|
|
* Copy/paste RGB/RGBA images. This library use non-premultiplied alpha RGB values.
|
|
|
|
## Example
|
|
|
|
```cpp
|
|
#include "clip.h"
|
|
#include <iostream>
|
|
|
|
int main() {
|
|
clip::set_text("Hello World");
|
|
|
|
std::string value;
|
|
clip::get_text(value);
|
|
std::cout << value << "\n";
|
|
}
|
|
```
|
|
|
|
## User-defined clipboard formats
|
|
|
|
```cpp
|
|
#include "clip.h"
|
|
|
|
int main() {
|
|
clip::format my_format =
|
|
clip::register_format("com.appname.FormatName");
|
|
|
|
int value = 32;
|
|
|
|
clip::lock l;
|
|
l.clear();
|
|
l.set_data(clip::text_format(), "Alternative text for value 32");
|
|
l.set_data(my_format, &value, sizeof(int));
|
|
}
|
|
```
|
|
|
|
## Platform specific details
|
|
|
|
* If two versions of your application (32-bit and 64-bit) can run at
|
|
at the same time, remember to avoid storing data types that could
|
|
change depending on the platform (e.g. `size_t`) in your custom
|
|
format data.
|
|
* **Windows**:
|
|
- [Limited number of clipboard formats on Windows](http://blogs.msdn.com/b/oldnewthing/archive/2015/03/19/10601208.aspx)
|
|
* **Linux**:
|
|
- To be able to copy/paste on Linux you need `libx11-dev`/`libX11-devel` package.
|
|
- To copy/paste images you will need `libpng-dev`/`libpng-devel` package.
|
|
|
|
## Compilation Flags
|
|
|
|
* `CLIP_ENABLE_IMAGE`: Enables the support to
|
|
[copy](examples/put_image.cpp)/[paste](examples/show_image.cpp) images.
|
|
* `CLIP_ENABLE_LIST_FORMATS` (only for Windows): Enables the
|
|
`clip::lock::list_formats()` API function and the
|
|
[list_clip_formats](examples/list_clip_formats.cpp) example.
|
|
* `CLIP_EXAMPLES`: Compile [examples](examples/).
|
|
* `CLIP_TESTS`: Compile [tests](tests/).
|
|
* `CLIP_X11_WITH_PNG` (only for Linux/X11): Enables support to
|
|
copy/paste images using the `libpng` library on Linux.
|
|
|
|
## Who is using this library?
|
|
|
|
[Check the wiki](https://github.com/dacap/clip/wiki#who-is-using-clip)
|
|
to know what projects are using the `clip` library.
|