X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcclipboard.h;fp=cinelerra-5.1%2Fguicast%2Fbcclipboard.h;h=a739878f635ab030f5cb7435d22193c975a82204;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=0000000000000000000000000000000000000000;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcclipboard.h b/cinelerra-5.1/guicast/bcclipboard.h new file mode 100644 index 00000000..a739878f --- /dev/null +++ b/cinelerra-5.1/guicast/bcclipboard.h @@ -0,0 +1,75 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef BCCLIPBOARD_H +#define BCCLIPBOARD_H + +#include "bcwindowbase.inc" +#include "thread.h" + +#include +#include +#include +#include + +// The primary selection is filled by highlighting a region +#define PRIMARY_SELECTION 0 +// The secondary selection is filled by copying +#define SECONDARY_SELECTION 1 + + +// Storage for guicast only +// The secondary selection has never been reliable either in Cinelerra +// or anything else. We just use the guaranteed solution for any data not +// intended for use outside Cinelerra. +#define BC_PRIMARY_SELECTION 2 + + + +class BC_Clipboard : public Thread +{ +public: + BC_Clipboard(const char *display_name); + ~BC_Clipboard(); + + int start_clipboard(); + void run(); + int stop_clipboard(); + long clipboard_len(int clipboard_num); + int to_clipboard(const char *data, long len, int clipboard_num); + int from_clipboard(char *data, long maxlen, int clipboard_num); + +private: + void handle_selectionrequest(XSelectionRequestEvent *request); + int handle_request_string(XSelectionRequestEvent *request); + int handle_request_targets(XSelectionRequestEvent *request); + + Display *in_display, *out_display; + Atom completion_atom, primary, secondary; + Atom targets_atom; + Atom strtype_atom; + Window in_win, out_win; + char *data[2]; + long length[2]; + char display_name[BCTEXTLEN]; +}; + +#endif