#include "spout_bridge.h"
#include <string>
void SpoutSenderBridge::set_sender_name(rust::Str name) {
inner.SetSenderName(std::string(name).c_str());
}
bool SpoutSenderBridge::send_texture(uint32_t tex_id, uint32_t target,
uint32_t width, uint32_t height,
bool invert, uint32_t host_fbo) {
return inner.SendTexture(
static_cast<GLuint>(tex_id),
static_cast<GLuint>(target),
width, height, invert,
static_cast<GLuint>(host_fbo)
);
}
bool SpoutSenderBridge::send_image(rust::Slice<const uint8_t> pixels,
uint32_t width, uint32_t height,
uint32_t gl_format, bool invert, uint32_t host_fbo) {
return inner.SendImage(
pixels.data(), width, height,
static_cast<GLenum>(gl_format), invert,
static_cast<GLuint>(host_fbo)
);
}
void SpoutSenderBridge::release_sender() {
inner.ReleaseSender();
}
bool SpoutSenderBridge::is_initialized() {
return inner.IsInitialized();
}
rust::String SpoutSenderBridge::get_name() {
return rust::String(inner.GetName());
}
uint32_t SpoutSenderBridge::get_width() {
return inner.GetWidth();
}
uint32_t SpoutSenderBridge::get_height() {
return inner.GetHeight();
}
void SpoutSenderBridge::hold_fps(int32_t fps) {
inner.HoldFps(fps);
}
void SpoutReceiverBridge::set_receiver_name(rust::Str name) {
inner.SetReceiverName(std::string(name).c_str());
}
bool SpoutReceiverBridge::receive_texture(uint32_t tex_id, uint32_t target,
bool invert, uint32_t host_fbo) {
return inner.ReceiveTexture(
static_cast<GLuint>(tex_id),
static_cast<GLuint>(target),
invert,
static_cast<GLuint>(host_fbo)
);
}
bool SpoutReceiverBridge::receive_texture_connect() {
return inner.ReceiveTexture();
}
void SpoutReceiverBridge::release_receiver() {
inner.ReleaseReceiver();
}
bool SpoutReceiverBridge::is_updated() {
return inner.IsUpdated();
}
bool SpoutReceiverBridge::is_connected() {
return inner.IsConnected();
}
bool SpoutReceiverBridge::is_frame_new() {
return inner.IsFrameNew();
}
rust::String SpoutReceiverBridge::get_sender_name() {
return rust::String(inner.GetSenderName());
}
uint32_t SpoutReceiverBridge::get_sender_width() {
return inner.GetSenderWidth();
}
uint32_t SpoutReceiverBridge::get_sender_height() {
return inner.GetSenderHeight();
}
double SpoutReceiverBridge::get_sender_fps() {
return inner.GetSenderFps();
}
long SpoutReceiverBridge::get_sender_frame() {
return inner.GetSenderFrame();
}
int32_t spout_sender_count() {
SpoutSender s;
return s.GetSenderCount();
}
rust::String spout_get_sender(int32_t index) {
SpoutSender s;
char name[256] = {};
s.GetSender(index, name, sizeof(name));
return rust::String(name);
}
std::unique_ptr<SpoutSenderBridge> new_spout_sender() {
return std::make_unique<SpoutSenderBridge>();
}
std::unique_ptr<SpoutReceiverBridge> new_spout_receiver() {
return std::make_unique<SpoutReceiverBridge>();
}