rename/merge functions to match rust side more

This commit is contained in:
Vinzenz Schroeter 2025-04-12 17:38:19 +02:00
parent bbe4000468
commit 63dfecdbf5
7 changed files with 165 additions and 280 deletions

View file

@ -42,7 +42,7 @@ pub unsafe extern "C" fn sp_bitmap_new(
///
/// returns: [Bitmap] initialized to all pixels off.
#[no_mangle]
pub unsafe extern "C" fn sp_bitmap_new_screen_sized() -> NonNull<Bitmap> {
pub unsafe extern "C" fn sp_bitmap_new_max_sized() -> NonNull<Bitmap> {
let result = Box::new(Bitmap::max_sized());
NonNull::from(Box::leak(result))
}

View file

@ -104,106 +104,15 @@ pub unsafe extern "C" fn sp_command_char_brightness(
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
/// once the starting row is full, overwriting will continue on column 0.
///
/// The contained [SPBitVec] is always uncompressed.
/// The [`BinaryOperation`] will be applied on the display comparing old and sent bit.
///
/// The passed [SPBitVec] gets consumed.
/// `new_bit = old_bit op sent_bit`
///
/// Returns: a new [servicepoint::Command::BitmapLinear] instance.
/// For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
///
/// The contained [`BitVecU8Msb0`] is always uncompressed.
#[no_mangle]
pub unsafe extern "C" fn sp_command_bitmap_linear(
offset: usize,
bit_vec: NonNull<SPBitVec>,
compression: CompressionCode,
) -> *mut TypedCommand {
unsafe {
sp_command_bitmap_linear_internal(
offset,
bit_vec,
compression,
BinaryOperation::Overwrite,
)
}
}
/// Set pixel data according to an and-mask starting at the offset.
///
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
/// once the starting row is full, overwriting will continue on column 0.
///
/// The contained [SPBitVec] is always uncompressed.
///
/// The passed [SPBitVec] gets consumed.
///
/// Returns: a new [servicepoint::Command::BitmapLinearAnd] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_bitmap_linear_and(
offset: usize,
bit_vec: NonNull<SPBitVec>,
compression: CompressionCode,
) -> *mut TypedCommand {
unsafe {
sp_command_bitmap_linear_internal(
offset,
bit_vec,
compression,
BinaryOperation::Xor,
)
}
}
/// Set pixel data according to an or-mask starting at the offset.
///
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
/// once the starting row is full, overwriting will continue on column 0.
///
/// The contained [SPBitVec] is always uncompressed.
///
/// The passed [SPBitVec] gets consumed.
///
/// Returns: a new [servicepoint::Command::BitmapLinearOr] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_bitmap_linear_or(
offset: usize,
bit_vec: NonNull<SPBitVec>,
compression: CompressionCode,
) -> *mut TypedCommand {
unsafe {
sp_command_bitmap_linear_internal(
offset,
bit_vec,
compression,
BinaryOperation::Or,
)
}
}
/// Set pixel data according to a xor-mask starting at the offset.
///
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
/// once the starting row is full, overwriting will continue on column 0.
///
/// The contained [SPBitVec] is always uncompressed.
///
/// The passed [SPBitVec] gets consumed.
///
/// Returns: a new [servicepoint::Command::BitmapLinearXor] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_bitmap_linear_xor(
offset: usize,
bit_vec: NonNull<SPBitVec>,
compression: CompressionCode,
) -> *mut TypedCommand {
unsafe {
sp_command_bitmap_linear_internal(
offset,
bit_vec,
compression,
BinaryOperation::Xor,
)
}
}
unsafe fn sp_command_bitmap_linear_internal(
pub unsafe extern "C" fn sp_command_bitvec(
offset: usize,
bit_vec: NonNull<SPBitVec>,
compression: CompressionCode,
@ -220,7 +129,7 @@ unsafe fn sp_command_bitmap_linear_internal(
bitvec: bit_vec.0,
compression,
}
.into();
.into();
Box::leak(Box::new(command))
}
@ -228,9 +137,9 @@ unsafe fn sp_command_bitmap_linear_internal(
///
/// The passed [Cp437Grid] gets consumed.
///
/// Returns: a new [servicepoint::Command::Cp437Data] instance.
/// Returns: a new [servicepoint::Cp437GridCommand] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_cp437_data(
pub unsafe extern "C" fn sp_command_cp437_grid(
x: usize,
y: usize,
grid: NonNull<Cp437Grid>,
@ -250,9 +159,9 @@ pub unsafe extern "C" fn sp_command_cp437_data(
///
/// The passed [CharGrid] gets consumed.
///
/// Returns: a new [servicepoint::Command::Utf8Data] instance.
/// Returns: a new [servicepoint::CharGridCommand] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_utf8_data(
pub unsafe extern "C" fn sp_command_char_grid(
x: usize,
y: usize,
grid: NonNull<CharGrid>,
@ -272,9 +181,9 @@ pub unsafe extern "C" fn sp_command_utf8_data(
///
/// The passed [Bitmap] gets consumed.
///
/// Returns: a new [servicepoint::Command::BitmapLinearWin] instance.
/// Returns: a new [servicepoint::BitmapCommand] instance.
#[no_mangle]
pub unsafe extern "C" fn sp_command_bitmap_linear_win(
pub unsafe extern "C" fn sp_command_bitmap(
x: usize,
y: usize,
bitmap: NonNull<Bitmap>,

View file

@ -15,7 +15,7 @@ use std::ptr::NonNull;
/// sp_connection_send_command(connection, sp_command_clear());
/// ```
#[no_mangle]
pub unsafe extern "C" fn sp_connection_open(
pub unsafe extern "C" fn sp_udp_open(
host: NonNull<c_char>,
) -> *mut UdpConnection {
let host = unsafe { CStr::from_ptr(host.as_ptr()) }
@ -41,7 +41,7 @@ pub unsafe extern "C" fn sp_connection_open(
/// sp_connection_send_command(connection, sp_command_clear());
/// ```
#[no_mangle]
pub unsafe extern "C" fn sp_connection_open_ipv4(
pub unsafe extern "C" fn sp_udp_open_ipv4(
ip1: u8, ip2: u8, ip3: u8, ip4: u8,
port: u16,
) -> *mut UdpConnection {
@ -53,29 +53,13 @@ pub unsafe extern "C" fn sp_connection_open_ipv4(
Box::into_raw(Box::new(connection))
}
// /// Creates a new instance of [SPUdpConnection] for testing that does not actually send anything.
// ///
// /// returns: a new instance.
// ///
// /// # Safety
// ///
// /// The caller has to make sure that:
// ///
// /// - the returned instance is freed in some way, either by using a consuming function or
// /// by explicitly calling `sp_connection_free`.
// #[no_mangle]
// pub unsafe extern "C" fn sp_connection_fake() -> NonNull<SPUdpConnection> {
// let result = Box::new(SPUdpConnection(servicepoint::Connection::Fake));
// NonNull::from(Box::leak(result))
// }
/// Sends a [Packet] to the display using the [UdpConnection].
///
/// The passed `packet` gets consumed.
///
/// returns: true in case of success
#[no_mangle]
pub unsafe extern "C" fn sp_connection_send_packet(
pub unsafe extern "C" fn sp_udp_send_packet(
connection: NonNull<UdpConnection>,
packet: NonNull<Packet>,
) -> bool {
@ -96,7 +80,7 @@ pub unsafe extern "C" fn sp_connection_send_packet(
/// sp_connection_send_command(connection, sp_command_brightness(5));
/// ```
#[no_mangle]
pub unsafe extern "C" fn sp_connection_send_command(
pub unsafe extern "C" fn sp_udp_send_command(
connection: NonNull<UdpConnection>,
command: NonNull<TypedCommand>,
) -> bool {
@ -106,7 +90,7 @@ pub unsafe extern "C" fn sp_connection_send_command(
/// Closes and deallocates a [UdpConnection].
#[no_mangle]
pub unsafe extern "C" fn sp_connection_free(
pub unsafe extern "C" fn sp_udp_free(
connection: NonNull<UdpConnection>,
) {
_ = unsafe { Box::from_raw(connection.as_ptr()) };