term-owo-cpp/clip-lib/clip_none.cpp
2024-06-20 15:11:55 +01:00

87 lines
1.7 KiB
C++

// Clip Library
// Copyright (c) 2015-2018 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
#include "clip.h"
#include "clip_lock_impl.h"
#include <cassert>
#include <map>
#include <vector>
namespace clip {
typedef std::vector<char> Buffer;
typedef std::map<format, Buffer> Map;
static format g_last_format = 100; // TODO create an enum with common formats
static Map g_data;
lock::impl::impl(void* native_handle) : m_locked(true) {
}
lock::impl::~impl() {
}
bool lock::impl::clear() {
g_data.clear();
return true;
}
bool lock::impl::is_convertible(format f) const {
return (g_data.find(f) != g_data.end());
}
bool lock::impl::set_data(format f, const char* buf, size_t len) {
Buffer& dst = g_data[f];
dst.resize(len);
if (buf && len > 0)
std::copy(buf, buf+len, dst.begin());
if (f == text_format() &&
len > 0 && dst.back() != 0) {
dst.push_back(0);
}
return true;
}
bool lock::impl::get_data(format f, char* buf, size_t len) const {
assert(buf);
if (!buf || !is_convertible(f))
return false;
const Buffer& src = g_data[f];
std::copy(src.begin(), src.end(), buf);
return true;
}
size_t lock::impl::get_data_length(format f) const {
if (is_convertible(f))
return g_data[f].size();
else
return 0;
}
bool lock::impl::set_image(const image& image) {
return false; // TODO
}
bool lock::impl::get_image(image& image) const {
return false; // TODO
}
bool lock::impl::get_image_spec(image_spec& spec) const {
return false; // TODO
}
format register_format(const std::string& name) {
return g_last_format++;
}
} // namespace clip