1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
use std::ffi::{CString, CStr}; use SdlResult; use get_error; use sys::clipboard as ll; pub fn set_clipboard_text(text: &String) -> SdlResult<()> { unsafe { let text = CString::new(text.clone()).unwrap(); let result = ll::SDL_SetClipboardText(text.as_ptr()); if result == 0 { Err(get_error()) } else { Ok(()) } } } pub fn get_clipboard_text() -> SdlResult<String> { let result = unsafe { let buf = ll::SDL_GetClipboardText(); String::from_utf8_lossy(CStr::from_ptr(buf).to_bytes()).into_owned() }; if result.len() == 0 { Err(get_error()) } else { Ok(result) } } pub fn has_clipboard_text() -> bool { unsafe { ll::SDL_HasClipboardText() == 1 } }