Compare commits
6 commits
a51fe07d84
...
21987d05f3
Author | SHA1 | Date | |
---|---|---|---|
![]() |
21987d05f3 | ||
![]() |
27f231eba0 | ||
![]() |
bf4e351514 | ||
![]() |
35e9c36ccd | ||
![]() |
7d52ccf638 | ||
![]() |
9ddab5e19a |
13
.github/workflows/rust.yml
vendored
13
.github/workflows/rust.yml
vendored
|
@ -30,11 +30,6 @@ jobs:
|
||||||
- name: build
|
- name: build
|
||||||
run: cargo build
|
run: cargo build
|
||||||
|
|
||||||
- name: generate bindings
|
|
||||||
run: ./generate-binding.sh
|
|
||||||
- name: check that generated files did not change
|
|
||||||
run: output=$(git status --porcelain) && [ -z "$output" ]
|
|
||||||
|
|
||||||
- name: build example -- glibc release
|
- name: build example -- glibc release
|
||||||
run: cd example && make -r clean-all && make -r LIBC=gnu LINK=dynamic PROFILE=release
|
run: cd example && make -r clean-all && make -r LIBC=gnu LINK=dynamic PROFILE=release
|
||||||
- name: build example -- glibc debug
|
- name: build example -- glibc debug
|
||||||
|
@ -52,6 +47,14 @@ jobs:
|
||||||
- name: install rust targets
|
- name: install rust targets
|
||||||
run: rustup toolchain install nightly -t aarch64-unknown-linux-gnu -c rust-src --no-self-update
|
run: rustup toolchain install nightly -t aarch64-unknown-linux-gnu -c rust-src --no-self-update
|
||||||
|
|
||||||
|
- name: install csbindgen
|
||||||
|
run: rustup run nightly cargo install cbindgen@0.29.0
|
||||||
|
|
||||||
|
- name: generate bindings
|
||||||
|
run: ./generate-binding.sh
|
||||||
|
- name: check that generated files did not change
|
||||||
|
run: output=$(git status --porcelain) && [ -z "$output" ]
|
||||||
|
|
||||||
- name: build example -- glibc size_optimized
|
- name: build example -- glibc size_optimized
|
||||||
run: cd example && make clean-all -r
|
run: cd example && make clean-all -r
|
||||||
&& make -r LIBC=gnu LINK=dynamic PROFILE=size_optimized CARGO="rustup run nightly cargo" LTO=1
|
&& make -r LIBC=gnu LINK=dynamic PROFILE=size_optimized CARGO="rustup run nightly cargo" LTO=1
|
||||||
|
|
|
@ -47,6 +47,8 @@ CARGOFLAGS += --manifest-path=$(REPO_ROOT)/Cargo.toml \
|
||||||
--target=$(RUST_TARGET) \
|
--target=$(RUST_TARGET) \
|
||||||
--target-dir=cargo
|
--target-dir=cargo
|
||||||
|
|
||||||
|
STATIC_LINK_LIBS += -lservicepoint_binding_c
|
||||||
|
_servicepoint_cflags := -I $(REPO_ROOT)/include -L $(CARGO_OBJDIR)
|
||||||
CFLAGS += -Wall -Wextra -pedantic -fwhole-program -fPIE -pie
|
CFLAGS += -Wall -Wextra -pedantic -fwhole-program -fPIE -pie
|
||||||
_no_debug_cflags := -ffunction-sections -fdata-sections -Wl,--gc-sections
|
_no_debug_cflags := -ffunction-sections -fdata-sections -Wl,--gc-sections
|
||||||
size_optimized_CFLAGS += -Oz \
|
size_optimized_CFLAGS += -Oz \
|
||||||
|
@ -69,7 +71,7 @@ debug_CFLAGS += -Og
|
||||||
static_CFLAGS += -static $(STATIC_LINK_LIBS)
|
static_CFLAGS += -static $(STATIC_LINK_LIBS)
|
||||||
dynamic_CFLAGS += -Wl,-Bstatic $(STATIC_LINK_LIBS) -Wl,-Bdynamic
|
dynamic_CFLAGS += -Wl,-Bstatic $(STATIC_LINK_LIBS) -Wl,-Bdynamic
|
||||||
|
|
||||||
_servicepoint_cflags := $(pkg-config --libs servicepoint --cflags)
|
_servicepoint_cflags := $(shell pkg-config --libs servicepoint --cflags || echo -I $(REPO_ROOT)/include -L $(CARGO_OBJDIR))
|
||||||
CFLAGS += $($(_libc)_CFLAGS) $($(_profile)_CFLAGS) $($(_link_type)_CFLAGS) $(_servicepoint_cflags)
|
CFLAGS += $($(_libc)_CFLAGS) $($(_profile)_CFLAGS) $($(_link_type)_CFLAGS) $(_servicepoint_cflags)
|
||||||
ifeq ($(LTO), 1)
|
ifeq ($(LTO), 1)
|
||||||
CFLAGS += -flto
|
CFLAGS += -flto
|
||||||
|
@ -103,7 +105,7 @@ _unstripped_bins := $(addsuffix _unstripped, $(_bins))
|
||||||
|
|
||||||
.PHONY: all build-rust
|
.PHONY: all build-rust
|
||||||
|
|
||||||
all: $(_bins)
|
all: build-rust $(_bins)
|
||||||
|
|
||||||
$(_unstripped_bins): %_unstripped : src/%.c src/helpers.h build-rust
|
$(_unstripped_bins): %_unstripped : src/%.c src/helpers.h build-rust
|
||||||
$(CC) $< $(CFLAGS) -o $@
|
$(CC) $< $(CFLAGS) -o $@
|
||||||
|
|
|
@ -640,7 +640,9 @@ extern "C" {
|
||||||
void init_env_logger(void);
|
void init_env_logger(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [Bitmap] instance.
|
*Clones a [`Bitmap`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Bitmap */*notnull*/ sp_bitmap_clone(struct Bitmap */*notnull*/ instance);
|
struct Bitmap */*notnull*/ sp_bitmap_clone(struct Bitmap */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -650,6 +652,8 @@ struct Bitmap */*notnull*/ sp_bitmap_clone(struct Bitmap */*notnull*/ instance);
|
||||||
* Gets an unsafe reference to the data of the [Bitmap] instance.
|
* Gets an unsafe reference to the data of the [Bitmap] instance.
|
||||||
*
|
*
|
||||||
* The returned memory is valid for the lifetime of the bitmap.
|
* The returned memory is valid for the lifetime of the bitmap.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct ByteSlice sp_bitmap_data_ref_mut(struct Bitmap */*notnull*/ instance);
|
struct ByteSlice sp_bitmap_data_ref_mut(struct Bitmap */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -661,11 +665,15 @@ struct ByteSlice sp_bitmap_data_ref_mut(struct Bitmap */*notnull*/ instance);
|
||||||
* # Arguments
|
* # Arguments
|
||||||
*
|
*
|
||||||
* - `value`: the value to set all pixels to
|
* - `value`: the value to set all pixels to
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
void sp_bitmap_fill(struct Bitmap */*notnull*/ instance, bool value);
|
void sp_bitmap_fill(struct Bitmap */*notnull*/ instance, bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [Bitmap] instance.
|
*Deallocates a [`Bitmap`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
void sp_bitmap_free(struct Bitmap */*notnull*/ instance);
|
void sp_bitmap_free(struct Bitmap */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -675,6 +683,8 @@ void sp_bitmap_free(struct Bitmap */*notnull*/ instance);
|
||||||
* The provided BitVec gets consumed.
|
* The provided BitVec gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of error.
|
* Returns NULL in case of error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Bitmap *sp_bitmap_from_bitvec(size_t width, BitVec */*notnull*/ bitvec);
|
struct Bitmap *sp_bitmap_from_bitvec(size_t width, BitVec */*notnull*/ bitvec);
|
||||||
|
|
||||||
|
@ -690,6 +700,8 @@ struct Bitmap *sp_bitmap_from_bitvec(size_t width, BitVec */*notnull*/ bitvec);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
bool sp_bitmap_get(struct Bitmap */*notnull*/ instance, size_t x, size_t y);
|
bool sp_bitmap_get(struct Bitmap */*notnull*/ instance, size_t x, size_t y);
|
||||||
|
|
||||||
|
@ -697,11 +709,15 @@ bool sp_bitmap_get(struct Bitmap */*notnull*/ instance, size_t x, size_t y);
|
||||||
* Calls [`servicepoint::Bitmap::height`].
|
* Calls [`servicepoint::Bitmap::height`].
|
||||||
*
|
*
|
||||||
* Gets the height in pixels.
|
* Gets the height in pixels.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
size_t sp_bitmap_height(struct Bitmap */*notnull*/ instance);
|
size_t sp_bitmap_height(struct Bitmap */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Consumes the Bitmap and returns the contained BitVec.
|
* Consumes the Bitmap and returns the contained BitVec.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
BitVec */*notnull*/ sp_bitmap_into_bitvec(struct Bitmap */*notnull*/ bitmap);
|
BitVec */*notnull*/ sp_bitmap_into_bitvec(struct Bitmap */*notnull*/ bitmap);
|
||||||
|
|
||||||
|
@ -711,6 +727,8 @@ BitVec */*notnull*/ sp_bitmap_into_bitvec(struct Bitmap */*notnull*/ bitmap);
|
||||||
* The provided [Bitmap] gets consumed.
|
* The provided [Bitmap] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of an error.
|
* Returns NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_bitmap_into_packet(struct Bitmap */*notnull*/ bitmap,
|
struct Packet *sp_bitmap_into_packet(struct Bitmap */*notnull*/ bitmap,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -726,6 +744,8 @@ struct Packet *sp_bitmap_into_packet(struct Bitmap */*notnull*/ bitmap,
|
||||||
* - `height`: size in pixels in y-direction
|
* - `height`: size in pixels in y-direction
|
||||||
*
|
*
|
||||||
* returns: [Bitmap] that contains a copy of the provided data, or NULL in case of an error.
|
* returns: [Bitmap] that contains a copy of the provided data, or NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Bitmap *sp_bitmap_load(size_t width,
|
struct Bitmap *sp_bitmap_load(size_t width,
|
||||||
size_t height,
|
size_t height,
|
||||||
|
@ -755,6 +775,8 @@ struct Bitmap *sp_bitmap_load(size_t width,
|
||||||
* sp_bitmap_set(grid, 0, 0, false);
|
* sp_bitmap_set(grid, 0, 0, false);
|
||||||
* sp_bitmap_free(grid);
|
* sp_bitmap_free(grid);
|
||||||
* ```
|
* ```
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Bitmap *sp_bitmap_new(size_t width, size_t height);
|
struct Bitmap *sp_bitmap_new(size_t width, size_t height);
|
||||||
|
|
||||||
|
@ -762,6 +784,8 @@ struct Bitmap *sp_bitmap_new(size_t width, size_t height);
|
||||||
* Creates a new [Bitmap] with a size matching the screen.
|
* Creates a new [Bitmap] with a size matching the screen.
|
||||||
*
|
*
|
||||||
* returns: [Bitmap] initialized to all pixels off.
|
* returns: [Bitmap] initialized to all pixels off.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Bitmap */*notnull*/ sp_bitmap_new_max_sized(void);
|
struct Bitmap */*notnull*/ sp_bitmap_new_max_sized(void);
|
||||||
|
|
||||||
|
@ -778,6 +802,8 @@ struct Bitmap */*notnull*/ sp_bitmap_new_max_sized(void);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
void sp_bitmap_set(struct Bitmap */*notnull*/ instance,
|
void sp_bitmap_set(struct Bitmap */*notnull*/ instance,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -788,6 +814,8 @@ void sp_bitmap_set(struct Bitmap */*notnull*/ instance,
|
||||||
* Calls [`servicepoint::Bitmap::width`].
|
* Calls [`servicepoint::Bitmap::width`].
|
||||||
*
|
*
|
||||||
* Gets the width in pixels.
|
* Gets the width in pixels.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitmap module.
|
||||||
*/
|
*/
|
||||||
size_t sp_bitmap_width(struct Bitmap */*notnull*/ instance);
|
size_t sp_bitmap_width(struct Bitmap */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -797,11 +825,15 @@ size_t sp_bitmap_width(struct Bitmap */*notnull*/ instance);
|
||||||
* Gets an unsafe reference to the data of the [DisplayBitVec] instance.
|
* Gets an unsafe reference to the data of the [DisplayBitVec] instance.
|
||||||
*
|
*
|
||||||
* The returned memory is valid for the lifetime of the bitvec.
|
* The returned memory is valid for the lifetime of the bitvec.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
struct ByteSlice sp_bitvec_as_raw_mut_slice(BitVec */*notnull*/ instance);
|
struct ByteSlice sp_bitvec_as_raw_mut_slice(BitVec */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [DisplayBitVec] instance.
|
*Clones a [`DisplayBitVec`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
BitVec */*notnull*/ sp_bitvec_clone(BitVec */*notnull*/ instance);
|
BitVec */*notnull*/ sp_bitvec_clone(BitVec */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -813,11 +845,15 @@ BitVec */*notnull*/ sp_bitvec_clone(BitVec */*notnull*/ instance);
|
||||||
* # Arguments
|
* # Arguments
|
||||||
*
|
*
|
||||||
* - `value`: the value to set all bits to
|
* - `value`: the value to set all bits to
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_bitvec_fill(BitVec */*notnull*/ instance, bool value);
|
void sp_bitvec_fill(BitVec */*notnull*/ instance, bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [DisplayBitVec] instance.
|
*Deallocates a [`DisplayBitVec`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_bitvec_free(BitVec */*notnull*/ instance);
|
void sp_bitvec_free(BitVec */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -836,6 +872,8 @@ void sp_bitvec_free(BitVec */*notnull*/ instance);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `index` out of bounds
|
* - when accessing `index` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
bool sp_bitvec_get(BitVec */*notnull*/ instance, size_t index);
|
bool sp_bitvec_get(BitVec */*notnull*/ instance, size_t index);
|
||||||
|
|
||||||
|
@ -845,6 +883,8 @@ bool sp_bitvec_get(BitVec */*notnull*/ instance, size_t index);
|
||||||
* The provided [DisplayBitVec] gets consumed.
|
* The provided [DisplayBitVec] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of an error.
|
* Returns NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_bitvec_into_packet(BitVec */*notnull*/ bitvec,
|
struct Packet *sp_bitvec_into_packet(BitVec */*notnull*/ bitvec,
|
||||||
size_t offset,
|
size_t offset,
|
||||||
|
@ -855,6 +895,8 @@ struct Packet *sp_bitvec_into_packet(BitVec */*notnull*/ bitvec,
|
||||||
* Calls [`servicepoint::DisplayBitVec::is_empty`].
|
* Calls [`servicepoint::DisplayBitVec::is_empty`].
|
||||||
*
|
*
|
||||||
* Returns true if length is 0.
|
* Returns true if length is 0.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
bool sp_bitvec_is_empty(BitVec */*notnull*/ instance);
|
bool sp_bitvec_is_empty(BitVec */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -862,6 +904,8 @@ bool sp_bitvec_is_empty(BitVec */*notnull*/ instance);
|
||||||
* Calls [`servicepoint::DisplayBitVec::len`].
|
* Calls [`servicepoint::DisplayBitVec::len`].
|
||||||
*
|
*
|
||||||
* Gets the length in bits.
|
* Gets the length in bits.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
size_t sp_bitvec_len(BitVec */*notnull*/ instance);
|
size_t sp_bitvec_len(BitVec */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -869,6 +913,8 @@ size_t sp_bitvec_len(BitVec */*notnull*/ instance);
|
||||||
* Interpret the data as a series of bits and load then into a new [DisplayBitVec] instance.
|
* Interpret the data as a series of bits and load then into a new [DisplayBitVec] instance.
|
||||||
*
|
*
|
||||||
* returns: [DisplayBitVec] instance containing data.
|
* returns: [DisplayBitVec] instance containing data.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
BitVec */*notnull*/ sp_bitvec_load(struct ByteSlice data);
|
BitVec */*notnull*/ sp_bitvec_load(struct ByteSlice data);
|
||||||
|
|
||||||
|
@ -884,6 +930,8 @@ BitVec */*notnull*/ sp_bitvec_load(struct ByteSlice data);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when `size` is not divisible by 8.
|
* - when `size` is not divisible by 8.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
BitVec */*notnull*/ sp_bitvec_new(size_t size);
|
BitVec */*notnull*/ sp_bitvec_new(size_t size);
|
||||||
|
|
||||||
|
@ -900,11 +948,15 @@ BitVec */*notnull*/ sp_bitvec_new(size_t size);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `index` out of bounds
|
* - when accessing `index` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_bitvec_set(BitVec */*notnull*/ instance, size_t index, bool value);
|
void sp_bitvec_set(BitVec */*notnull*/ instance, size_t index, bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [BrightnessGrid] instance.
|
*Clones a [`BrightnessGrid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
BrightnessGrid */*notnull*/ sp_brightness_grid_clone(BrightnessGrid */*notnull*/ instance);
|
BrightnessGrid */*notnull*/ sp_brightness_grid_clone(BrightnessGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -914,6 +966,8 @@ BrightnessGrid */*notnull*/ sp_brightness_grid_clone(BrightnessGrid */*notnull*/
|
||||||
* Gets an unsafe reference to the data of the instance.
|
* Gets an unsafe reference to the data of the instance.
|
||||||
*
|
*
|
||||||
* The returned memory is valid for the lifetime of the grid.
|
* The returned memory is valid for the lifetime of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct ByteSlice sp_brightness_grid_data_ref_mut(BrightnessGrid */*notnull*/ instance);
|
struct ByteSlice sp_brightness_grid_data_ref_mut(BrightnessGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -925,12 +979,16 @@ struct ByteSlice sp_brightness_grid_data_ref_mut(BrightnessGrid */*notnull*/ ins
|
||||||
* # Arguments
|
* # Arguments
|
||||||
*
|
*
|
||||||
* - `value`: the value to set all cells to
|
* - `value`: the value to set all cells to
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_brightness_grid_fill(BrightnessGrid */*notnull*/ instance,
|
void sp_brightness_grid_fill(BrightnessGrid */*notnull*/ instance,
|
||||||
Brightness value);
|
Brightness value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [BrightnessGrid] instance.
|
*Deallocates a [`BrightnessGrid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_brightness_grid_free(BrightnessGrid */*notnull*/ instance);
|
void sp_brightness_grid_free(BrightnessGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -947,6 +1005,8 @@ void sp_brightness_grid_free(BrightnessGrid */*notnull*/ instance);
|
||||||
*
|
*
|
||||||
* # Panics
|
* # Panics
|
||||||
* - When accessing `x` or `y` out of bounds.
|
* - When accessing `x` or `y` out of bounds.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
Brightness sp_brightness_grid_get(BrightnessGrid */*notnull*/ instance,
|
Brightness sp_brightness_grid_get(BrightnessGrid */*notnull*/ instance,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -956,6 +1016,8 @@ Brightness sp_brightness_grid_get(BrightnessGrid */*notnull*/ instance,
|
||||||
* Calls [`servicepoint::BrightnessGrid::height`].
|
* Calls [`servicepoint::BrightnessGrid::height`].
|
||||||
*
|
*
|
||||||
* Gets the height of the grid.
|
* Gets the height of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_brightness_grid_height(BrightnessGrid */*notnull*/ instance);
|
size_t sp_brightness_grid_height(BrightnessGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -965,6 +1027,8 @@ size_t sp_brightness_grid_height(BrightnessGrid */*notnull*/ instance);
|
||||||
* The provided [BrightnessGrid] gets consumed.
|
* The provided [BrightnessGrid] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of an error.
|
* Returns NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_brightness_grid_into_packet(BrightnessGrid */*notnull*/ grid,
|
struct Packet *sp_brightness_grid_into_packet(BrightnessGrid */*notnull*/ grid,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -976,6 +1040,8 @@ struct Packet *sp_brightness_grid_into_packet(BrightnessGrid */*notnull*/ grid,
|
||||||
* Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN].
|
* Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN].
|
||||||
*
|
*
|
||||||
* returns: new [BrightnessGrid] instance, or NULL in case of an error.
|
* returns: new [BrightnessGrid] instance, or NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
BrightnessGrid *sp_brightness_grid_load(size_t width,
|
BrightnessGrid *sp_brightness_grid_load(size_t width,
|
||||||
size_t height,
|
size_t height,
|
||||||
|
@ -999,6 +1065,8 @@ BrightnessGrid *sp_brightness_grid_load(size_t width,
|
||||||
* TypedCommand *command = sp_command_char_brightness(grid);
|
* TypedCommand *command = sp_command_char_brightness(grid);
|
||||||
* sp_udp_free(connection);
|
* sp_udp_free(connection);
|
||||||
* ```
|
* ```
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
BrightnessGrid */*notnull*/ sp_brightness_grid_new(size_t width, size_t height);
|
BrightnessGrid */*notnull*/ sp_brightness_grid_new(size_t width, size_t height);
|
||||||
|
|
||||||
|
@ -1017,6 +1085,8 @@ BrightnessGrid */*notnull*/ sp_brightness_grid_new(size_t width, size_t height);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - When accessing `x` or `y` out of bounds.
|
* - When accessing `x` or `y` out of bounds.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_brightness_grid_set(BrightnessGrid */*notnull*/ instance,
|
void sp_brightness_grid_set(BrightnessGrid */*notnull*/ instance,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -1027,11 +1097,15 @@ void sp_brightness_grid_set(BrightnessGrid */*notnull*/ instance,
|
||||||
* Calls [`servicepoint::BrightnessGrid::width`].
|
* Calls [`servicepoint::BrightnessGrid::width`].
|
||||||
*
|
*
|
||||||
* Gets the width of the grid.
|
* Gets the width of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_brightness_grid_width(BrightnessGrid */*notnull*/ instance);
|
size_t sp_brightness_grid_width(BrightnessGrid */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [CharGrid] instance.
|
*Clones a [`CharGrid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
CharGrid */*notnull*/ sp_char_grid_clone(CharGrid */*notnull*/ instance);
|
CharGrid */*notnull*/ sp_char_grid_clone(CharGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1044,11 +1118,15 @@ CharGrid */*notnull*/ sp_char_grid_clone(CharGrid */*notnull*/ instance);
|
||||||
*
|
*
|
||||||
* - `value`: the value to set all cells to
|
* - `value`: the value to set all cells to
|
||||||
* - when providing values that cannot be converted to Rust's `char`.
|
* - when providing values that cannot be converted to Rust's `char`.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_char_grid_fill(CharGrid */*notnull*/ instance, uint32_t value);
|
void sp_char_grid_fill(CharGrid */*notnull*/ instance, uint32_t value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [CharGrid] instance.
|
*Deallocates a [`CharGrid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_char_grid_free(CharGrid */*notnull*/ instance);
|
void sp_char_grid_free(CharGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1064,6 +1142,8 @@ void sp_char_grid_free(CharGrid */*notnull*/ instance);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
uint32_t sp_char_grid_get(CharGrid */*notnull*/ instance, size_t x, size_t y);
|
uint32_t sp_char_grid_get(CharGrid */*notnull*/ instance, size_t x, size_t y);
|
||||||
|
|
||||||
|
@ -1071,6 +1151,8 @@ uint32_t sp_char_grid_get(CharGrid */*notnull*/ instance, size_t x, size_t y);
|
||||||
* Calls [`servicepoint::CharGrid::height`].
|
* Calls [`servicepoint::CharGrid::height`].
|
||||||
*
|
*
|
||||||
* Gets the height of the grid.
|
* Gets the height of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_char_grid_height(CharGrid */*notnull*/ instance);
|
size_t sp_char_grid_height(CharGrid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1080,6 +1162,8 @@ size_t sp_char_grid_height(CharGrid */*notnull*/ instance);
|
||||||
* The provided [CharGrid] gets consumed.
|
* The provided [CharGrid] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of an error.
|
* Returns NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_char_grid_into_packet(CharGrid */*notnull*/ grid,
|
struct Packet *sp_char_grid_into_packet(CharGrid */*notnull*/ grid,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -1089,6 +1173,8 @@ struct Packet *sp_char_grid_into_packet(CharGrid */*notnull*/ grid,
|
||||||
* Loads a [CharGrid] with the specified dimensions from the provided data.
|
* Loads a [CharGrid] with the specified dimensions from the provided data.
|
||||||
*
|
*
|
||||||
* returns: new CharGrid or NULL in case of an error
|
* returns: new CharGrid or NULL in case of an error
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
CharGrid *sp_char_grid_load(size_t width, size_t height, struct ByteSlice data);
|
CharGrid *sp_char_grid_load(size_t width, size_t height, struct ByteSlice data);
|
||||||
|
|
||||||
|
@ -1105,6 +1191,8 @@ CharGrid *sp_char_grid_load(size_t width, size_t height, struct ByteSlice data);
|
||||||
* sp_char_grid_set(grid, 0, 0, '!');
|
* sp_char_grid_set(grid, 0, 0, '!');
|
||||||
* sp_char_grid_free(grid);
|
* sp_char_grid_free(grid);
|
||||||
* ```
|
* ```
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
CharGrid */*notnull*/ sp_char_grid_new(size_t width, size_t height);
|
CharGrid */*notnull*/ sp_char_grid_new(size_t width, size_t height);
|
||||||
|
|
||||||
|
@ -1124,6 +1212,8 @@ CharGrid */*notnull*/ sp_char_grid_new(size_t width, size_t height);
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
* - when providing values that cannot be converted to Rust's `char`.
|
* - when providing values that cannot be converted to Rust's `char`.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_char_grid_set(CharGrid */*notnull*/ instance,
|
void sp_char_grid_set(CharGrid */*notnull*/ instance,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -1134,16 +1224,22 @@ void sp_char_grid_set(CharGrid */*notnull*/ instance,
|
||||||
* Calls [`servicepoint::CharGrid::width`].
|
* Calls [`servicepoint::CharGrid::width`].
|
||||||
*
|
*
|
||||||
* Gets the width of the grid.
|
* Gets the width of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_char_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_char_grid_width(CharGrid */*notnull*/ instance);
|
size_t sp_char_grid_width(CharGrid */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [BitmapCommand] instance.
|
*Clones a [`BitmapCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_clone(struct BitmapCommand */*notnull*/ instance);
|
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_clone(struct BitmapCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [BitmapCommand] instance.
|
*Deallocates a [`BitmapCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitmap_free(struct BitmapCommand */*notnull*/ instance);
|
void sp_cmd_bitmap_free(struct BitmapCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1152,6 +1248,8 @@ void sp_cmd_bitmap_free(struct BitmapCommand */*notnull*/ instance);
|
||||||
* leaving other fields as their default values.
|
* leaving other fields as their default values.
|
||||||
*
|
*
|
||||||
* Rust equivalent: `BitmapCommand::from(bitmap)`
|
* Rust equivalent: `BitmapCommand::from(bitmap)`
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_from_bitmap(struct Bitmap */*notnull*/ bitmap);
|
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_from_bitmap(struct Bitmap */*notnull*/ bitmap);
|
||||||
|
|
||||||
|
@ -1167,6 +1265,8 @@ struct Bitmap */*notnull*/ sp_cmd_bitmap_get(struct BitmapCommand */*notnull*/ c
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `compression` of the [`servicepoint::BitmapCommand`].
|
* Gets the value of field `compression` of the [`servicepoint::BitmapCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
CompressionCode sp_cmd_bitmap_get_compression(struct BitmapCommand */*notnull*/ instance);
|
CompressionCode sp_cmd_bitmap_get_compression(struct BitmapCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1183,6 +1283,8 @@ void sp_cmd_bitmap_get_origin(struct BitmapCommand */*notnull*/ command,
|
||||||
* The passed [Bitmap] gets consumed.
|
* The passed [Bitmap] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns: a new [BitmapCommand] instance.
|
* Returns: a new [BitmapCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_new(struct Bitmap */*notnull*/ bitmap,
|
struct BitmapCommand */*notnull*/ sp_cmd_bitmap_new(struct Bitmap */*notnull*/ bitmap,
|
||||||
size_t origin_x,
|
size_t origin_x,
|
||||||
|
@ -1197,6 +1299,8 @@ void sp_cmd_bitmap_set(struct BitmapCommand */*notnull*/ command,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `compression` of the [`servicepoint::BitmapCommand`].
|
* Sets the value of field `compression` of the [`servicepoint::BitmapCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitmap_set_compression(struct BitmapCommand */*notnull*/ instance,
|
void sp_cmd_bitmap_set_compression(struct BitmapCommand */*notnull*/ instance,
|
||||||
CompressionCode value);
|
CompressionCode value);
|
||||||
|
@ -1212,16 +1316,22 @@ void sp_cmd_bitmap_set_origin(struct BitmapCommand */*notnull*/ command,
|
||||||
* Tries to turn a [BitmapCommand] into a [Packet].
|
* Tries to turn a [BitmapCommand] into a [Packet].
|
||||||
*
|
*
|
||||||
* Returns: NULL or a [Packet] containing the command.
|
* Returns: NULL or a [Packet] containing the command.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitmap module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cmd_bitmap_try_into_packet(struct BitmapCommand */*notnull*/ command);
|
struct Packet *sp_cmd_bitmap_try_into_packet(struct BitmapCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [BitVecCommand] instance.
|
*Clones a [`BitVecCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
struct BitVecCommand */*notnull*/ sp_cmd_bitvec_clone(struct BitVecCommand */*notnull*/ instance);
|
struct BitVecCommand */*notnull*/ sp_cmd_bitvec_clone(struct BitVecCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [BitVecCommand] instance.
|
*Deallocates a [`BitVecCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitvec_free(struct BitVecCommand */*notnull*/ instance);
|
void sp_cmd_bitvec_free(struct BitVecCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1232,16 +1342,22 @@ BitVec *sp_cmd_bitvec_get(struct BitVecCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `compression` of the [`servicepoint::BitVecCommand`].
|
* Gets the value of field `compression` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
CompressionCode sp_cmd_bitvec_get_compression(struct BitVecCommand */*notnull*/ instance);
|
CompressionCode sp_cmd_bitvec_get_compression(struct BitVecCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `offset` of the [`servicepoint::BitVecCommand`].
|
* Gets the value of field `offset` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
Offset sp_cmd_bitvec_get_offset(struct BitVecCommand */*notnull*/ instance);
|
Offset sp_cmd_bitvec_get_offset(struct BitVecCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `operation` of the [`servicepoint::BitVecCommand`].
|
* Gets the value of field `operation` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
BinaryOperation sp_cmd_bitvec_get_operation(struct BitVecCommand */*notnull*/ instance);
|
BinaryOperation sp_cmd_bitvec_get_operation(struct BitVecCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1258,6 +1374,8 @@ BinaryOperation sp_cmd_bitvec_get_operation(struct BitVecCommand */*notnull*/ in
|
||||||
* For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
* For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
||||||
*
|
*
|
||||||
* The contained [`DisplayBitVec`] is always uncompressed.
|
* The contained [`DisplayBitVec`] is always uncompressed.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
struct BitVecCommand */*notnull*/ sp_cmd_bitvec_new(BitVec */*notnull*/ bitvec,
|
struct BitVecCommand */*notnull*/ sp_cmd_bitvec_new(BitVec */*notnull*/ bitvec,
|
||||||
size_t offset,
|
size_t offset,
|
||||||
|
@ -1272,18 +1390,24 @@ void sp_cmd_bitvec_set(struct BitVecCommand */*notnull*/ command,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `compression` of the [`servicepoint::BitVecCommand`].
|
* Sets the value of field `compression` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitvec_set_compression(struct BitVecCommand */*notnull*/ instance,
|
void sp_cmd_bitvec_set_compression(struct BitVecCommand */*notnull*/ instance,
|
||||||
CompressionCode value);
|
CompressionCode value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `offset` of the [`servicepoint::BitVecCommand`].
|
* Sets the value of field `offset` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitvec_set_offset(struct BitVecCommand */*notnull*/ instance,
|
void sp_cmd_bitvec_set_offset(struct BitVecCommand */*notnull*/ instance,
|
||||||
Offset value);
|
Offset value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `operation` of the [`servicepoint::BitVecCommand`].
|
* Sets the value of field `operation` of the [`servicepoint::BitVecCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_bitvec_set_operation(struct BitVecCommand */*notnull*/ instance,
|
void sp_cmd_bitvec_set_operation(struct BitVecCommand */*notnull*/ instance,
|
||||||
BinaryOperation value);
|
BinaryOperation value);
|
||||||
|
@ -1292,52 +1416,75 @@ void sp_cmd_bitvec_set_operation(struct BitVecCommand */*notnull*/ instance,
|
||||||
* Tries to turn a [BitVecCommand] into a [Packet].
|
* Tries to turn a [BitVecCommand] into a [Packet].
|
||||||
*
|
*
|
||||||
* Returns: NULL or a [Packet] containing the command.
|
* Returns: NULL or a [Packet] containing the command.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_bitvec module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cmd_bitvec_try_into_packet(struct BitVecCommand */*notnull*/ command);
|
struct Packet *sp_cmd_bitvec_try_into_packet(struct BitVecCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [GlobalBrightnessCommand] instance.
|
*Clones a [`GlobalBrightnessCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
*/
|
*/
|
||||||
struct GlobalBrightnessCommand */*notnull*/ sp_cmd_brightness_global_clone(struct GlobalBrightnessCommand */*notnull*/ instance);
|
struct GlobalBrightnessCommand */*notnull*/ sp_cmd_brightness_global_clone(struct GlobalBrightnessCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [GlobalBrightnessCommand] instance.
|
*Deallocates a [`GlobalBrightnessCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_brightness_global_free(struct GlobalBrightnessCommand */*notnull*/ instance);
|
void sp_cmd_brightness_global_free(struct GlobalBrightnessCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `brightness` of the [`servicepoint::GlobalBrightnessCommand`].
|
* Gets the value of field `brightness` of the [`servicepoint::GlobalBrightnessCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
*/
|
*/
|
||||||
Brightness sp_cmd_brightness_global_get_brightness(struct GlobalBrightnessCommand */*notnull*/ instance);
|
Brightness sp_cmd_brightness_global_get_brightness(struct GlobalBrightnessCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns the command into a packet
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
|
*/
|
||||||
struct Packet */*notnull*/ sp_cmd_brightness_global_into_packet(struct GlobalBrightnessCommand */*notnull*/ command);
|
struct Packet */*notnull*/ sp_cmd_brightness_global_into_packet(struct GlobalBrightnessCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the brightness of all tiles to the same value.
|
* Set the brightness of all tiles to the same value.
|
||||||
*
|
*
|
||||||
* Returns: a new [GlobalBrightnessCommand] instance.
|
* Returns: a new [GlobalBrightnessCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
*/
|
*/
|
||||||
struct GlobalBrightnessCommand */*notnull*/ sp_cmd_brightness_global_new(Brightness brightness);
|
struct GlobalBrightnessCommand */*notnull*/ sp_cmd_brightness_global_new(Brightness brightness);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `brightness` of the [`servicepoint::GlobalBrightnessCommand`].
|
* Sets the value of field `brightness` of the [`servicepoint::GlobalBrightnessCommand`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_global module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_brightness_global_set_brightness(struct GlobalBrightnessCommand */*notnull*/ instance,
|
void sp_cmd_brightness_global_set_brightness(struct GlobalBrightnessCommand */*notnull*/ instance,
|
||||||
Brightness value);
|
Brightness value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [BrightnessGridCommand] instance.
|
*Clones a [`BrightnessGridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_clone(struct BrightnessGridCommand */*notnull*/ instance);
|
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_clone(struct BrightnessGridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [BrightnessGridCommand] instance.
|
*Deallocates a [`BrightnessGridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_brightness_grid_free(struct BrightnessGridCommand */*notnull*/ instance);
|
void sp_cmd_brightness_grid_free(struct BrightnessGridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
* Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
||||||
* leaving other fields as their default values.
|
* leaving other fields as their default values.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_from_grid(BrightnessGrid */*notnull*/ grid);
|
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_from_grid(BrightnessGrid */*notnull*/ grid);
|
||||||
|
|
||||||
|
@ -1357,6 +1504,8 @@ void sp_cmd_brightness_grid_get_origin(struct BrightnessGridCommand */*notnull*/
|
||||||
* Tries to turn a [BrightnessGridCommand] into a [Packet].
|
* Tries to turn a [BrightnessGridCommand] into a [Packet].
|
||||||
*
|
*
|
||||||
* Returns: NULL or a [Packet] containing the command.
|
* Returns: NULL or a [Packet] containing the command.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cmd_brightness_grid_into_packet(struct BrightnessGridCommand */*notnull*/ command);
|
struct Packet *sp_cmd_brightness_grid_into_packet(struct BrightnessGridCommand */*notnull*/ command);
|
||||||
|
|
||||||
|
@ -1366,6 +1515,8 @@ struct Packet *sp_cmd_brightness_grid_into_packet(struct BrightnessGridCommand *
|
||||||
* The passed [BrightnessGrid] gets consumed.
|
* The passed [BrightnessGrid] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns: a new [BrightnessGridCommand] instance.
|
* Returns: a new [BrightnessGridCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_brightness_grid module.
|
||||||
*/
|
*/
|
||||||
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_new(BrightnessGrid */*notnull*/ grid,
|
struct BrightnessGridCommand */*notnull*/ sp_cmd_brightness_grid_new(BrightnessGrid */*notnull*/ grid,
|
||||||
size_t origin_x,
|
size_t origin_x,
|
||||||
|
@ -1385,25 +1536,31 @@ void sp_cmd_brightness_grid_set_origin(struct BrightnessGridCommand */*notnull*/
|
||||||
size_t origin_y);
|
size_t origin_y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [CharGridCommand] instance.
|
*Clones a [`CharGridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_char_grid module.
|
||||||
*/
|
*/
|
||||||
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_clone(struct CharGridCommand */*notnull*/ instance);
|
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_clone(struct CharGridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [CharGridCommand] instance.
|
*Deallocates a [`CharGridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_char_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_char_grid_free(struct CharGridCommand */*notnull*/ instance);
|
void sp_cmd_char_grid_free(struct CharGridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves the provided [CharGrid] into a new [CharGridCommand],
|
* Moves the provided [CharGrid] into a new [CharGridCommand],
|
||||||
* leaving other fields as their default values.
|
* leaving other fields as their default values.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_char_grid module.
|
||||||
*/
|
*/
|
||||||
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_from_grid(CharGrid */*notnull*/ grid);
|
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_from_grid(CharGrid */*notnull*/ grid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a pointer to the [CharGrid] contained in the [CharGridCommand].
|
* Returns a pointer to the [CharGrid] contained in the [CharGridCommand].
|
||||||
*/
|
*/
|
||||||
CharGrid *sp_cmd_char_grid_get(struct CharGridCommand */*notnull*/ command);
|
CharGrid */*notnull*/ sp_cmd_char_grid_get(struct CharGridCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads the origin field of the [CharGridCommand].
|
* Reads the origin field of the [CharGridCommand].
|
||||||
|
@ -1418,6 +1575,8 @@ void sp_cmd_char_grid_get_origin(struct CharGridCommand */*notnull*/ command,
|
||||||
* The passed [CharGrid] gets consumed.
|
* The passed [CharGrid] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns: a new [CharGridCommand] instance.
|
* Returns: a new [CharGridCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_char_grid module.
|
||||||
*/
|
*/
|
||||||
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_new(CharGrid */*notnull*/ grid,
|
struct CharGridCommand */*notnull*/ sp_cmd_char_grid_new(CharGrid */*notnull*/ grid,
|
||||||
size_t origin_x,
|
size_t origin_x,
|
||||||
|
@ -1440,11 +1599,15 @@ void sp_cmd_char_grid_set_origin(struct CharGridCommand */*notnull*/ command,
|
||||||
* Tries to turn a [CharGridCommand] into a [Packet].
|
* Tries to turn a [CharGridCommand] into a [Packet].
|
||||||
*
|
*
|
||||||
* Returns: NULL or a [Packet] containing the command.
|
* Returns: NULL or a [Packet] containing the command.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_char_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cmd_char_grid_try_into_packet(struct CharGridCommand */*notnull*/ command);
|
struct Packet *sp_cmd_char_grid_try_into_packet(struct CharGridCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [ClearCommand] instance.
|
*Deallocates a [`ClearCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_clear module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_clear_free(struct ClearCommand */*notnull*/ instance);
|
void sp_cmd_clear_free(struct ClearCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1454,22 +1617,30 @@ void sp_cmd_clear_free(struct ClearCommand */*notnull*/ instance);
|
||||||
* Does not affect brightness.
|
* Does not affect brightness.
|
||||||
*
|
*
|
||||||
* Returns: a new [ClearCommand] instance.
|
* Returns: a new [ClearCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_clear module.
|
||||||
*/
|
*/
|
||||||
struct ClearCommand */*notnull*/ sp_cmd_clear_new(void);
|
struct ClearCommand */*notnull*/ sp_cmd_clear_new(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [Cp437GridCommand] instance.
|
*Clones a [`Cp437GridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_clone(struct Cp437GridCommand */*notnull*/ instance);
|
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_clone(struct Cp437GridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [Cp437GridCommand] instance.
|
*Deallocates a [`Cp437GridCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_cp437_grid_free(struct Cp437GridCommand */*notnull*/ instance);
|
void sp_cmd_cp437_grid_free(struct Cp437GridCommand */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
* Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
||||||
* leaving other fields as their default values.
|
* leaving other fields as their default values.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_from_grid(Cp437Grid */*notnull*/ grid);
|
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_from_grid(Cp437Grid */*notnull*/ grid);
|
||||||
|
|
||||||
|
@ -1498,6 +1669,8 @@ void sp_cmd_cp437_grid_get_origin(struct Cp437GridCommand */*notnull*/ command,
|
||||||
* The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
* The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
||||||
*
|
*
|
||||||
* The origin is relative to the top-left of the display.
|
* The origin is relative to the top-left of the display.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_new(Cp437Grid */*notnull*/ grid,
|
struct Cp437GridCommand */*notnull*/ sp_cmd_cp437_grid_new(Cp437Grid */*notnull*/ grid,
|
||||||
size_t origin_x,
|
size_t origin_x,
|
||||||
|
@ -1524,11 +1697,15 @@ void sp_cmd_cp437_grid_set_origin(struct Cp437GridCommand */*notnull*/ command,
|
||||||
* Tries to turn a [Cp437GridCommand] into a [Packet].
|
* Tries to turn a [Cp437GridCommand] into a [Packet].
|
||||||
*
|
*
|
||||||
* Returns: NULL or a [Packet] containing the command.
|
* Returns: NULL or a [Packet] containing the command.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cmd_cp437_grid_try_into_packet(struct Cp437GridCommand */*notnull*/ command);
|
struct Packet *sp_cmd_cp437_grid_try_into_packet(struct Cp437GridCommand */*notnull*/ command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [FadeOutCommand] instance.
|
*Deallocates a [`FadeOutCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_fade_out module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_fade_out_free(struct FadeOutCommand */*notnull*/ instance);
|
void sp_cmd_fade_out_free(struct FadeOutCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1536,6 +1713,8 @@ void sp_cmd_fade_out_free(struct FadeOutCommand */*notnull*/ instance);
|
||||||
* A yet-to-be-tested command.
|
* A yet-to-be-tested command.
|
||||||
*
|
*
|
||||||
* Returns: a new [FadeOutCommand] instance.
|
* Returns: a new [FadeOutCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_fade_out module.
|
||||||
*/
|
*/
|
||||||
struct FadeOutCommand */*notnull*/ sp_cmd_fade_out_new(void);
|
struct FadeOutCommand */*notnull*/ sp_cmd_fade_out_new(void);
|
||||||
|
|
||||||
|
@ -1578,7 +1757,9 @@ struct Packet *sp_cmd_generic_into_packet(struct Command command);
|
||||||
struct Command sp_cmd_generic_try_from_packet(struct Packet */*notnull*/ packet);
|
struct Command sp_cmd_generic_try_from_packet(struct Packet */*notnull*/ packet);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [HardResetCommand] instance.
|
*Deallocates a [`HardResetCommand`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_hard_reset module.
|
||||||
*/
|
*/
|
||||||
void sp_cmd_hard_reset_free(struct HardResetCommand */*notnull*/ instance);
|
void sp_cmd_hard_reset_free(struct HardResetCommand */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1588,11 +1769,15 @@ void sp_cmd_hard_reset_free(struct HardResetCommand */*notnull*/ instance);
|
||||||
* Please do not send this in your normal program flow.
|
* Please do not send this in your normal program flow.
|
||||||
*
|
*
|
||||||
* Returns: a new [HardResetCommand] instance.
|
* Returns: a new [HardResetCommand] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cmd_hard_reset module.
|
||||||
*/
|
*/
|
||||||
struct HardResetCommand */*notnull*/ sp_cmd_hard_reset_new(void);
|
struct HardResetCommand */*notnull*/ sp_cmd_hard_reset_new(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [Cp437Grid] instance.
|
*Clones a [`Cp437Grid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
Cp437Grid */*notnull*/ sp_cp437_grid_clone(Cp437Grid */*notnull*/ instance);
|
Cp437Grid */*notnull*/ sp_cp437_grid_clone(Cp437Grid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1602,6 +1787,8 @@ Cp437Grid */*notnull*/ sp_cp437_grid_clone(Cp437Grid */*notnull*/ instance);
|
||||||
* Gets an unsafe reference to the data of the grid.
|
* Gets an unsafe reference to the data of the grid.
|
||||||
*
|
*
|
||||||
* The returned memory is valid for the lifetime of the instance.
|
* The returned memory is valid for the lifetime of the instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct ByteSlice sp_cp437_grid_data_ref_mut(Cp437Grid */*notnull*/ instance);
|
struct ByteSlice sp_cp437_grid_data_ref_mut(Cp437Grid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1614,11 +1801,15 @@ struct ByteSlice sp_cp437_grid_data_ref_mut(Cp437Grid */*notnull*/ instance);
|
||||||
*
|
*
|
||||||
* - `cp437_grid`: instance to write to
|
* - `cp437_grid`: instance to write to
|
||||||
* - `value`: the value to set all cells to
|
* - `value`: the value to set all cells to
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cp437_grid_fill(Cp437Grid */*notnull*/ instance, uint8_t value);
|
void sp_cp437_grid_fill(Cp437Grid */*notnull*/ instance, uint8_t value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [Cp437Grid] instance.
|
*Deallocates a [`Cp437Grid`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cp437_grid_free(Cp437Grid */*notnull*/ instance);
|
void sp_cp437_grid_free(Cp437Grid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1634,6 +1825,8 @@ void sp_cp437_grid_free(Cp437Grid */*notnull*/ instance);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
uint8_t sp_cp437_grid_get(Cp437Grid */*notnull*/ instance, size_t x, size_t y);
|
uint8_t sp_cp437_grid_get(Cp437Grid */*notnull*/ instance, size_t x, size_t y);
|
||||||
|
|
||||||
|
@ -1641,6 +1834,8 @@ uint8_t sp_cp437_grid_get(Cp437Grid */*notnull*/ instance, size_t x, size_t y);
|
||||||
* Calls [`servicepoint::Cp437Grid::height`].
|
* Calls [`servicepoint::Cp437Grid::height`].
|
||||||
*
|
*
|
||||||
* Gets the height of the grid.
|
* Gets the height of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_cp437_grid_height(Cp437Grid */*notnull*/ instance);
|
size_t sp_cp437_grid_height(Cp437Grid */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1650,6 +1845,8 @@ size_t sp_cp437_grid_height(Cp437Grid */*notnull*/ instance);
|
||||||
* The provided [Cp437Grid] gets consumed.
|
* The provided [Cp437Grid] gets consumed.
|
||||||
*
|
*
|
||||||
* Returns NULL in case of an error.
|
* Returns NULL in case of an error.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
struct Packet *sp_cp437_grid_into_packet(Cp437Grid */*notnull*/ grid,
|
struct Packet *sp_cp437_grid_into_packet(Cp437Grid */*notnull*/ grid,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -1657,6 +1854,8 @@ struct Packet *sp_cp437_grid_into_packet(Cp437Grid */*notnull*/ grid,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads a [Cp437Grid] with the specified dimensions from the provided data.
|
* Loads a [Cp437Grid] with the specified dimensions from the provided data.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
Cp437Grid *sp_cp437_grid_load(size_t width,
|
Cp437Grid *sp_cp437_grid_load(size_t width,
|
||||||
size_t height,
|
size_t height,
|
||||||
|
@ -1666,6 +1865,8 @@ Cp437Grid *sp_cp437_grid_load(size_t width,
|
||||||
* Creates a new [Cp437Grid] with the specified dimensions.
|
* Creates a new [Cp437Grid] with the specified dimensions.
|
||||||
*
|
*
|
||||||
* returns: [Cp437Grid] initialized to 0.
|
* returns: [Cp437Grid] initialized to 0.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
Cp437Grid */*notnull*/ sp_cp437_grid_new(size_t width, size_t height);
|
Cp437Grid */*notnull*/ sp_cp437_grid_new(size_t width, size_t height);
|
||||||
|
|
||||||
|
@ -1684,6 +1885,8 @@ Cp437Grid */*notnull*/ sp_cp437_grid_new(size_t width, size_t height);
|
||||||
* # Panics
|
* # Panics
|
||||||
*
|
*
|
||||||
* - when accessing `x` or `y` out of bounds
|
* - when accessing `x` or `y` out of bounds
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
void sp_cp437_grid_set(Cp437Grid */*notnull*/ instance,
|
void sp_cp437_grid_set(Cp437Grid */*notnull*/ instance,
|
||||||
size_t x,
|
size_t x,
|
||||||
|
@ -1694,16 +1897,22 @@ void sp_cp437_grid_set(Cp437Grid */*notnull*/ instance,
|
||||||
* Calls [`servicepoint::Cp437Grid::width`].
|
* Calls [`servicepoint::Cp437Grid::width`].
|
||||||
*
|
*
|
||||||
* Gets the width of the grid.
|
* Gets the width of the grid.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_cp437_grid module.
|
||||||
*/
|
*/
|
||||||
size_t sp_cp437_grid_width(Cp437Grid */*notnull*/ instance);
|
size_t sp_cp437_grid_width(Cp437Grid */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Clones a [Packet] instance.
|
*Clones a [`Packet`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_packet module.
|
||||||
*/
|
*/
|
||||||
struct Packet */*notnull*/ sp_packet_clone(struct Packet */*notnull*/ instance);
|
struct Packet */*notnull*/ sp_packet_clone(struct Packet */*notnull*/ instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [Packet] instance.
|
*Deallocates a [`Packet`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_packet module.
|
||||||
*/
|
*/
|
||||||
void sp_packet_free(struct Packet */*notnull*/ instance);
|
void sp_packet_free(struct Packet */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1717,6 +1926,8 @@ struct Packet */*notnull*/ sp_packet_from_parts(struct Header header,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of field `header` of the [`servicepoint::Packet`].
|
* Gets the value of field `header` of the [`servicepoint::Packet`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_packet module.
|
||||||
*/
|
*/
|
||||||
struct Header sp_packet_get_header(struct Packet */*notnull*/ instance);
|
struct Header sp_packet_get_header(struct Packet */*notnull*/ instance);
|
||||||
|
|
||||||
|
@ -1748,6 +1959,8 @@ void sp_packet_serialize_to(struct Packet */*notnull*/ packet,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of field `header` of the [`servicepoint::Packet`].
|
* Sets the value of field `header` of the [`servicepoint::Packet`].
|
||||||
|
*
|
||||||
|
* This function is part of the sp_packet module.
|
||||||
*/
|
*/
|
||||||
void sp_packet_set_header(struct Packet */*notnull*/ instance,
|
void sp_packet_set_header(struct Packet */*notnull*/ instance,
|
||||||
struct Header value);
|
struct Header value);
|
||||||
|
@ -1776,7 +1989,9 @@ bool sp_u16_to_command_code(uint16_t code,
|
||||||
CommandCode *result);
|
CommandCode *result);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Deallocates a [UdpSocket] instance.
|
*Deallocates a [`UdpSocket`] instance.
|
||||||
|
*
|
||||||
|
* This function is part of the sp_udp module.
|
||||||
*/
|
*/
|
||||||
void sp_udp_free(struct UdpSocket */*notnull*/ instance);
|
void sp_udp_free(struct UdpSocket */*notnull*/ instance);
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{Bitmap, BitmapCommand, CompressionCode, Origin, Packet};
|
use servicepoint::{Bitmap, BitmapCommand, CompressionCode, Origin, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_bitmap;
|
||||||
|
|
||||||
/// Sets a window of pixels to the specified values.
|
/// Sets a window of pixels to the specified values.
|
||||||
///
|
///
|
||||||
/// The passed [Bitmap] gets consumed.
|
/// The passed [Bitmap] gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns: a new [BitmapCommand] instance.
|
/// Returns: a new [BitmapCommand] instance.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cmd_bitmap_new(
|
|
||||||
bitmap: NonNull<Bitmap>,
|
bitmap: NonNull<Bitmap>,
|
||||||
origin_x: usize,
|
origin_x: usize,
|
||||||
origin_y: usize,
|
origin_y: usize,
|
||||||
|
@ -28,8 +29,7 @@ pub unsafe extern "C" fn sp_cmd_bitmap_new(
|
||||||
/// leaving other fields as their default values.
|
/// leaving other fields as their default values.
|
||||||
///
|
///
|
||||||
/// Rust equivalent: `BitmapCommand::from(bitmap)`
|
/// Rust equivalent: `BitmapCommand::from(bitmap)`
|
||||||
#[no_mangle]
|
fn from_bitmap(
|
||||||
pub unsafe extern "C" fn sp_cmd_bitmap_from_bitmap(
|
|
||||||
bitmap: NonNull<Bitmap>,
|
bitmap: NonNull<Bitmap>,
|
||||||
) -> NonNull<BitmapCommand> {
|
) -> NonNull<BitmapCommand> {
|
||||||
heap_move_nonnull(unsafe { heap_remove(bitmap) }.into())
|
heap_move_nonnull(unsafe { heap_remove(bitmap) }.into())
|
||||||
|
@ -38,13 +38,14 @@ pub unsafe extern "C" fn sp_cmd_bitmap_from_bitmap(
|
||||||
/// Tries to turn a [BitmapCommand] into a [Packet].
|
/// Tries to turn a [BitmapCommand] into a [Packet].
|
||||||
///
|
///
|
||||||
/// Returns: NULL or a [Packet] containing the command.
|
/// Returns: NULL or a [Packet] containing the command.
|
||||||
#[no_mangle]
|
fn try_into_packet(
|
||||||
pub unsafe extern "C" fn sp_cmd_bitmap_try_into_packet(
|
|
||||||
command: NonNull<BitmapCommand>,
|
command: NonNull<BitmapCommand>,
|
||||||
) -> *mut Packet {
|
) -> *mut Packet {
|
||||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_bitmap::BitmapCommand);
|
wrap_clone!(sp_cmd_bitmap::BitmapCommand);
|
||||||
wrap_free!(sp_cmd_bitmap::BitmapCommand);
|
wrap_free!(sp_cmd_bitmap::BitmapCommand);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{
|
use servicepoint::{
|
||||||
|
@ -8,6 +8,8 @@ use servicepoint::{
|
||||||
};
|
};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_bitvec;
|
||||||
|
|
||||||
/// Set pixel data starting at the pixel offset on screen.
|
/// Set pixel data starting at the pixel offset on screen.
|
||||||
///
|
///
|
||||||
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
|
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
|
||||||
|
@ -20,8 +22,7 @@ use std::ptr::NonNull;
|
||||||
/// For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
/// For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
||||||
///
|
///
|
||||||
/// The contained [`DisplayBitVec`] is always uncompressed.
|
/// The contained [`DisplayBitVec`] is always uncompressed.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cmd_bitvec_new(
|
|
||||||
bitvec: NonNull<DisplayBitVec>,
|
bitvec: NonNull<DisplayBitVec>,
|
||||||
offset: usize,
|
offset: usize,
|
||||||
operation: BinaryOperation,
|
operation: BinaryOperation,
|
||||||
|
@ -38,13 +39,14 @@ pub unsafe extern "C" fn sp_cmd_bitvec_new(
|
||||||
/// Tries to turn a [BitVecCommand] into a [Packet].
|
/// Tries to turn a [BitVecCommand] into a [Packet].
|
||||||
///
|
///
|
||||||
/// Returns: NULL or a [Packet] containing the command.
|
/// Returns: NULL or a [Packet] containing the command.
|
||||||
#[no_mangle]
|
fn try_into_packet(
|
||||||
pub unsafe extern "C" fn sp_cmd_bitvec_try_into_packet(
|
|
||||||
command: NonNull<BitVecCommand>,
|
command: NonNull<BitVecCommand>,
|
||||||
) -> *mut Packet {
|
) -> *mut Packet {
|
||||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_bitvec::BitVecCommand);
|
wrap_clone!(sp_cmd_bitvec::BitVecCommand);
|
||||||
wrap_free!(sp_cmd_bitvec::BitVecCommand);
|
wrap_free!(sp_cmd_bitvec::BitVecCommand);
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_free},
|
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{BrightnessGrid, BrightnessGridCommand, Origin, Packet};
|
use servicepoint::{BrightnessGrid, BrightnessGridCommand, Origin, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_brightness_grid;
|
||||||
|
|
||||||
/// Set the brightness of individual tiles in a rectangular area of the display.
|
/// Set the brightness of individual tiles in a rectangular area of the display.
|
||||||
///
|
///
|
||||||
/// The passed [BrightnessGrid] gets consumed.
|
/// The passed [BrightnessGrid] gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns: a new [BrightnessGridCommand] instance.
|
/// Returns: a new [BrightnessGridCommand] instance.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_new(
|
|
||||||
grid: NonNull<BrightnessGrid>,
|
grid: NonNull<BrightnessGrid>,
|
||||||
origin_x: usize,
|
origin_x: usize,
|
||||||
origin_y: usize,
|
origin_y: usize,
|
||||||
|
@ -24,8 +25,7 @@ pub unsafe extern "C" fn sp_cmd_brightness_grid_new(
|
||||||
|
|
||||||
/// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
/// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
||||||
/// leaving other fields as their default values.
|
/// leaving other fields as their default values.
|
||||||
#[no_mangle]
|
fn from_grid(
|
||||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_from_grid(
|
|
||||||
grid: NonNull<BrightnessGrid>,
|
grid: NonNull<BrightnessGrid>,
|
||||||
) -> NonNull<BrightnessGridCommand> {
|
) -> NonNull<BrightnessGridCommand> {
|
||||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||||
|
@ -34,13 +34,14 @@ pub unsafe extern "C" fn sp_cmd_brightness_grid_from_grid(
|
||||||
/// Tries to turn a [BrightnessGridCommand] into a [Packet].
|
/// Tries to turn a [BrightnessGridCommand] into a [Packet].
|
||||||
///
|
///
|
||||||
/// Returns: NULL or a [Packet] containing the command.
|
/// Returns: NULL or a [Packet] containing the command.
|
||||||
#[no_mangle]
|
fn into_packet(
|
||||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_into_packet(
|
|
||||||
command: NonNull<BrightnessGridCommand>,
|
command: NonNull<BrightnessGridCommand>,
|
||||||
) -> *mut Packet {
|
) -> *mut Packet {
|
||||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
wrap_clone!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
||||||
wrap_free!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
wrap_free!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
||||||
|
|
||||||
|
|
|
@ -1,37 +1,43 @@
|
||||||
use crate::{macros::wrap_free, mem::heap_move_nonnull};
|
use crate::{
|
||||||
|
macros::{wrap_free, wrap_functions},
|
||||||
|
mem::heap_move_nonnull,
|
||||||
|
};
|
||||||
use servicepoint::{ClearCommand, FadeOutCommand, HardResetCommand};
|
use servicepoint::{ClearCommand, FadeOutCommand, HardResetCommand};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_clear;
|
||||||
/// Set all pixels to the off state.
|
/// Set all pixels to the off state.
|
||||||
///
|
///
|
||||||
/// Does not affect brightness.
|
/// Does not affect brightness.
|
||||||
///
|
///
|
||||||
/// Returns: a new [ClearCommand] instance.
|
/// Returns: a new [ClearCommand] instance.
|
||||||
#[no_mangle]
|
fn new() -> NonNull<ClearCommand> {
|
||||||
pub unsafe extern "C" fn sp_cmd_clear_new() -> NonNull<ClearCommand> {
|
|
||||||
heap_move_nonnull(ClearCommand)
|
heap_move_nonnull(ClearCommand)
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
wrap_free!(sp_cmd_clear::ClearCommand);
|
wrap_free!(sp_cmd_clear::ClearCommand);
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_hard_reset;
|
||||||
/// Kills the udp daemon on the display, which usually results in a restart.
|
/// Kills the udp daemon on the display, which usually results in a restart.
|
||||||
///
|
///
|
||||||
/// Please do not send this in your normal program flow.
|
/// Please do not send this in your normal program flow.
|
||||||
///
|
///
|
||||||
/// Returns: a new [HardResetCommand] instance.
|
/// Returns: a new [HardResetCommand] instance.
|
||||||
#[no_mangle]
|
fn new() -> NonNull<HardResetCommand> {
|
||||||
pub unsafe extern "C" fn sp_cmd_hard_reset_new() -> NonNull<HardResetCommand> {
|
|
||||||
heap_move_nonnull(HardResetCommand)
|
heap_move_nonnull(HardResetCommand)
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
wrap_free!(sp_cmd_hard_reset::HardResetCommand);
|
wrap_free!(sp_cmd_hard_reset::HardResetCommand);
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_fade_out;
|
||||||
/// A yet-to-be-tested command.
|
/// A yet-to-be-tested command.
|
||||||
///
|
///
|
||||||
/// Returns: a new [FadeOutCommand] instance.
|
/// Returns: a new [FadeOutCommand] instance.
|
||||||
#[no_mangle]
|
fn new() -> NonNull<FadeOutCommand> {
|
||||||
pub unsafe extern "C" fn sp_cmd_fade_out_new() -> NonNull<FadeOutCommand> {
|
|
||||||
heap_move_nonnull(FadeOutCommand)
|
heap_move_nonnull(FadeOutCommand)
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
wrap_free!(sp_cmd_fade_out::FadeOutCommand);
|
wrap_free!(sp_cmd_fade_out::FadeOutCommand);
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_free},
|
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{CharGrid, CharGridCommand, Origin, Packet};
|
use servicepoint::{CharGrid, CharGridCommand, Origin, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_char_grid;
|
||||||
|
|
||||||
/// Show UTF-8 encoded text on the screen.
|
/// Show UTF-8 encoded text on the screen.
|
||||||
///
|
///
|
||||||
/// The passed [CharGrid] gets consumed.
|
/// The passed [CharGrid] gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns: a new [CharGridCommand] instance.
|
/// Returns: a new [CharGridCommand] instance.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cmd_char_grid_new(
|
|
||||||
grid: NonNull<CharGrid>,
|
grid: NonNull<CharGrid>,
|
||||||
origin_x: usize,
|
origin_x: usize,
|
||||||
origin_y: usize,
|
origin_y: usize,
|
||||||
|
@ -24,8 +25,7 @@ pub unsafe extern "C" fn sp_cmd_char_grid_new(
|
||||||
|
|
||||||
/// Moves the provided [CharGrid] into a new [CharGridCommand],
|
/// Moves the provided [CharGrid] into a new [CharGridCommand],
|
||||||
/// leaving other fields as their default values.
|
/// leaving other fields as their default values.
|
||||||
#[no_mangle]
|
fn from_grid(
|
||||||
pub unsafe extern "C" fn sp_cmd_char_grid_from_grid(
|
|
||||||
grid: NonNull<CharGrid>,
|
grid: NonNull<CharGrid>,
|
||||||
) -> NonNull<CharGridCommand> {
|
) -> NonNull<CharGridCommand> {
|
||||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||||
|
@ -34,13 +34,14 @@ pub unsafe extern "C" fn sp_cmd_char_grid_from_grid(
|
||||||
/// Tries to turn a [CharGridCommand] into a [Packet].
|
/// Tries to turn a [CharGridCommand] into a [Packet].
|
||||||
///
|
///
|
||||||
/// Returns: NULL or a [Packet] containing the command.
|
/// Returns: NULL or a [Packet] containing the command.
|
||||||
#[no_mangle]
|
fn try_into_packet(
|
||||||
pub unsafe extern "C" fn sp_cmd_char_grid_try_into_packet(
|
|
||||||
command: NonNull<CharGridCommand>,
|
command: NonNull<CharGridCommand>,
|
||||||
) -> *mut Packet {
|
) -> *mut Packet {
|
||||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_char_grid::CharGridCommand);
|
wrap_clone!(sp_cmd_char_grid::CharGridCommand);
|
||||||
wrap_free!(sp_cmd_char_grid::CharGridCommand);
|
wrap_free!(sp_cmd_char_grid::CharGridCommand);
|
||||||
|
|
||||||
|
@ -59,8 +60,8 @@ pub unsafe extern "C" fn sp_cmd_char_grid_set(
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn sp_cmd_char_grid_get(
|
pub unsafe extern "C" fn sp_cmd_char_grid_get(
|
||||||
mut command: NonNull<CharGridCommand>,
|
mut command: NonNull<CharGridCommand>,
|
||||||
) -> *mut CharGrid {
|
) -> NonNull<CharGrid> {
|
||||||
unsafe { &mut command.as_mut().grid }
|
unsafe { NonNull::from(&mut command.as_mut().grid) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reads the origin field of the [CharGridCommand].
|
/// Reads the origin field of the [CharGridCommand].
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_free},
|
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{Cp437Grid, Cp437GridCommand, Origin, Packet};
|
use servicepoint::{Cp437Grid, Cp437GridCommand, Origin, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_cp437_grid;
|
||||||
|
|
||||||
/// Show text on the screen.
|
/// Show text on the screen.
|
||||||
///
|
///
|
||||||
/// The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
/// The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
||||||
///
|
///
|
||||||
/// The origin is relative to the top-left of the display.
|
/// The origin is relative to the top-left of the display.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_new(
|
|
||||||
grid: NonNull<Cp437Grid>,
|
grid: NonNull<Cp437Grid>,
|
||||||
origin_x: usize,
|
origin_x: usize,
|
||||||
origin_y: usize,
|
origin_y: usize,
|
||||||
|
@ -24,8 +25,7 @@ pub unsafe extern "C" fn sp_cmd_cp437_grid_new(
|
||||||
|
|
||||||
/// Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
/// Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
||||||
/// leaving other fields as their default values.
|
/// leaving other fields as their default values.
|
||||||
#[no_mangle]
|
fn from_grid(
|
||||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_from_grid(
|
|
||||||
grid: NonNull<Cp437Grid>,
|
grid: NonNull<Cp437Grid>,
|
||||||
) -> NonNull<Cp437GridCommand> {
|
) -> NonNull<Cp437GridCommand> {
|
||||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||||
|
@ -34,13 +34,14 @@ pub unsafe extern "C" fn sp_cmd_cp437_grid_from_grid(
|
||||||
/// Tries to turn a [Cp437GridCommand] into a [Packet].
|
/// Tries to turn a [Cp437GridCommand] into a [Packet].
|
||||||
///
|
///
|
||||||
/// Returns: NULL or a [Packet] containing the command.
|
/// Returns: NULL or a [Packet] containing the command.
|
||||||
#[no_mangle]
|
fn try_into_packet(
|
||||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_try_into_packet(
|
|
||||||
command: NonNull<Cp437GridCommand>,
|
command: NonNull<Cp437GridCommand>,
|
||||||
) -> *mut Packet {
|
) -> *mut Packet {
|
||||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_cp437_grid::Cp437GridCommand);
|
wrap_clone!(sp_cmd_cp437_grid::Cp437GridCommand);
|
||||||
wrap_free!(sp_cmd_cp437_grid::Cp437GridCommand);
|
wrap_free!(sp_cmd_cp437_grid::Cp437GridCommand);
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,26 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||||
mem::{heap_move_nonnull, heap_remove},
|
mem::{heap_move_nonnull, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{Brightness, GlobalBrightnessCommand, Packet};
|
use servicepoint::{Brightness, GlobalBrightnessCommand, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cmd_brightness_global;
|
||||||
|
|
||||||
/// Set the brightness of all tiles to the same value.
|
/// Set the brightness of all tiles to the same value.
|
||||||
///
|
///
|
||||||
/// Returns: a new [GlobalBrightnessCommand] instance.
|
/// Returns: a new [GlobalBrightnessCommand] instance.
|
||||||
#[no_mangle]
|
fn new(brightness: Brightness) -> NonNull<GlobalBrightnessCommand> {
|
||||||
pub unsafe extern "C" fn sp_cmd_brightness_global_new(
|
|
||||||
brightness: Brightness,
|
|
||||||
) -> NonNull<GlobalBrightnessCommand> {
|
|
||||||
heap_move_nonnull(GlobalBrightnessCommand::from(brightness))
|
heap_move_nonnull(GlobalBrightnessCommand::from(brightness))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
/// Turns the command into a packet
|
||||||
pub unsafe extern "C" fn sp_cmd_brightness_global_into_packet(
|
fn into_packet(command: NonNull<GlobalBrightnessCommand>) -> NonNull<Packet> {
|
||||||
command: NonNull<GlobalBrightnessCommand>,
|
|
||||||
) -> NonNull<Packet> {
|
|
||||||
heap_move_nonnull(unsafe { heap_remove(command) }.into())
|
heap_move_nonnull(unsafe { heap_remove(command) }.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
wrap_clone!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
||||||
wrap_free!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
wrap_free!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
containers::ByteSlice,
|
containers::ByteSlice,
|
||||||
macros::{wrap_clone, wrap_free, wrap_method},
|
macros::{wrap_clone, wrap_free, wrap_functions, wrap_methods},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{
|
use servicepoint::{
|
||||||
|
@ -9,6 +9,11 @@ use servicepoint::{
|
||||||
};
|
};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_clone!(sp_bitmap::Bitmap);
|
||||||
|
wrap_free!(sp_bitmap::Bitmap);
|
||||||
|
|
||||||
|
wrap_functions!(sp_bitmap;
|
||||||
|
|
||||||
/// Creates a new [Bitmap] with the specified dimensions.
|
/// Creates a new [Bitmap] with the specified dimensions.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -32,19 +37,14 @@ use std::ptr::NonNull;
|
||||||
/// sp_bitmap_set(grid, 0, 0, false);
|
/// sp_bitmap_set(grid, 0, 0, false);
|
||||||
/// sp_bitmap_free(grid);
|
/// sp_bitmap_free(grid);
|
||||||
/// ```
|
/// ```
|
||||||
#[no_mangle]
|
fn new(width: usize, height: usize) -> *mut Bitmap {
|
||||||
pub unsafe extern "C" fn sp_bitmap_new(
|
|
||||||
width: usize,
|
|
||||||
height: usize,
|
|
||||||
) -> *mut Bitmap {
|
|
||||||
heap_move_some(Bitmap::new(width, height))
|
heap_move_some(Bitmap::new(width, height))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new [Bitmap] with a size matching the screen.
|
/// Creates a new [Bitmap] with a size matching the screen.
|
||||||
///
|
///
|
||||||
/// returns: [Bitmap] initialized to all pixels off.
|
/// returns: [Bitmap] initialized to all pixels off.
|
||||||
#[no_mangle]
|
fn new_max_sized() -> NonNull<Bitmap> {
|
||||||
pub unsafe extern "C" fn sp_bitmap_new_max_sized() -> NonNull<Bitmap> {
|
|
||||||
heap_move_nonnull(Bitmap::max_sized())
|
heap_move_nonnull(Bitmap::max_sized())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,8 +56,7 @@ pub unsafe extern "C" fn sp_bitmap_new_max_sized() -> NonNull<Bitmap> {
|
||||||
/// - `height`: size in pixels in y-direction
|
/// - `height`: size in pixels in y-direction
|
||||||
///
|
///
|
||||||
/// returns: [Bitmap] that contains a copy of the provided data, or NULL in case of an error.
|
/// returns: [Bitmap] that contains a copy of the provided data, or NULL in case of an error.
|
||||||
#[no_mangle]
|
fn load(
|
||||||
pub unsafe extern "C" fn sp_bitmap_load(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
data: ByteSlice,
|
data: ByteSlice,
|
||||||
|
@ -71,82 +70,16 @@ pub unsafe extern "C" fn sp_bitmap_load(
|
||||||
/// The provided BitVec gets consumed.
|
/// The provided BitVec gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns NULL in case of error.
|
/// Returns NULL in case of error.
|
||||||
#[no_mangle]
|
fn from_bitvec(
|
||||||
pub unsafe extern "C" fn sp_bitmap_from_bitvec(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
bitvec: NonNull<DisplayBitVec>,
|
bitvec: NonNull<DisplayBitVec>,
|
||||||
) -> *mut Bitmap {
|
) -> *mut Bitmap {
|
||||||
let bitvec = unsafe { heap_remove(bitvec) };
|
let bitvec = unsafe { heap_remove(bitvec) };
|
||||||
heap_move_ok(Bitmap::from_bitvec(width, bitvec))
|
heap_move_ok(Bitmap::from_bitvec(width, bitvec))
|
||||||
}
|
}
|
||||||
|
|
||||||
wrap_clone!(sp_bitmap::Bitmap);
|
|
||||||
wrap_free!(sp_bitmap::Bitmap);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Gets the current value at the specified position.
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `x` and `y`: position of the cell to read
|
|
||||||
///
|
|
||||||
/// # Panics
|
|
||||||
///
|
|
||||||
/// - when accessing `x` or `y` out of bounds
|
|
||||||
ref fn get(x: usize, y: usize) -> bool;
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Sets the value of the specified position.
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `x` and `y`: position of the cell
|
|
||||||
/// - `value`: the value to write to the cell
|
|
||||||
///
|
|
||||||
/// # Panics
|
|
||||||
///
|
|
||||||
/// - when accessing `x` or `y` out of bounds
|
|
||||||
mut fn set(x: usize, y: usize, value: bool);
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Sets the state of all pixels in the [Bitmap].
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `value`: the value to set all pixels to
|
|
||||||
mut fn fill(value: bool);
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Gets the width in pixels.
|
|
||||||
ref fn width() -> usize;
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Gets the height in pixels.
|
|
||||||
ref fn height() -> usize;
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitmap::Bitmap;
|
|
||||||
/// Gets an unsafe reference to the data of the [Bitmap] instance.
|
|
||||||
///
|
|
||||||
/// The returned memory is valid for the lifetime of the bitmap.
|
|
||||||
mut fn data_ref_mut() -> ByteSlice;
|
|
||||||
|slice| unsafe { ByteSlice::from_slice(slice) };
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Consumes the Bitmap and returns the contained BitVec.
|
/// Consumes the Bitmap and returns the contained BitVec.
|
||||||
#[no_mangle]
|
fn into_bitvec(
|
||||||
pub unsafe extern "C" fn sp_bitmap_into_bitvec(
|
bitmap: NonNull<Bitmap>
|
||||||
bitmap: NonNull<Bitmap>,
|
|
||||||
) -> NonNull<DisplayBitVec> {
|
) -> NonNull<DisplayBitVec> {
|
||||||
let bitmap = unsafe { heap_remove(bitmap) };
|
let bitmap = unsafe { heap_remove(bitmap) };
|
||||||
heap_move_nonnull(bitmap.into())
|
heap_move_nonnull(bitmap.into())
|
||||||
|
@ -157,8 +90,7 @@ pub unsafe extern "C" fn sp_bitmap_into_bitvec(
|
||||||
/// The provided [Bitmap] gets consumed.
|
/// The provided [Bitmap] gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns NULL in case of an error.
|
/// Returns NULL in case of an error.
|
||||||
#[no_mangle]
|
fn into_packet(
|
||||||
pub unsafe extern "C" fn sp_bitmap_into_packet(
|
|
||||||
bitmap: NonNull<Bitmap>,
|
bitmap: NonNull<Bitmap>,
|
||||||
x: usize,
|
x: usize,
|
||||||
y: usize,
|
y: usize,
|
||||||
|
@ -171,3 +103,52 @@ pub unsafe extern "C" fn sp_bitmap_into_packet(
|
||||||
compression,
|
compression,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
wrap_methods!(
|
||||||
|
sp_bitmap::Bitmap;
|
||||||
|
|
||||||
|
/// Gets the current value at the specified position.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `x` and `y`: position of the cell to read
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// - when accessing `x` or `y` out of bounds
|
||||||
|
ref fn get(x: usize, y: usize) -> bool;
|
||||||
|
|
||||||
|
/// Sets the value of the specified position.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `x` and `y`: position of the cell
|
||||||
|
/// - `value`: the value to write to the cell
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// - when accessing `x` or `y` out of bounds
|
||||||
|
mut fn set(x: usize, y: usize, value: bool);
|
||||||
|
|
||||||
|
/// Sets the state of all pixels in the [Bitmap].
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `value`: the value to set all pixels to
|
||||||
|
mut fn fill(value: bool);
|
||||||
|
|
||||||
|
/// Gets the width in pixels.
|
||||||
|
ref fn width() -> usize;
|
||||||
|
|
||||||
|
/// Gets the height in pixels.
|
||||||
|
ref fn height() -> usize;
|
||||||
|
|
||||||
|
/// Gets an unsafe reference to the data of the [Bitmap] instance.
|
||||||
|
///
|
||||||
|
/// The returned memory is valid for the lifetime of the bitmap.
|
||||||
|
mut fn data_ref_mut() -> ByteSlice {
|
||||||
|
|
||||||
|
return(slice) { unsafe { ByteSlice::from_slice(slice) } };
|
||||||
|
};
|
||||||
|
);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
containers::ByteSlice,
|
containers::ByteSlice,
|
||||||
macros::{wrap_clone, wrap_free, wrap_method},
|
macros::{wrap_clone, wrap_free, wrap_functions, wrap_methods},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{
|
use servicepoint::{
|
||||||
|
@ -8,6 +8,8 @@ use servicepoint::{
|
||||||
};
|
};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_bitvec;
|
||||||
|
|
||||||
/// Creates a new [DisplayBitVec] instance.
|
/// Creates a new [DisplayBitVec] instance.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -19,96 +21,24 @@ use std::ptr::NonNull;
|
||||||
/// # Panics
|
/// # Panics
|
||||||
///
|
///
|
||||||
/// - when `size` is not divisible by 8.
|
/// - when `size` is not divisible by 8.
|
||||||
#[no_mangle]
|
fn new(size: usize) -> NonNull<DisplayBitVec> {
|
||||||
pub unsafe extern "C" fn sp_bitvec_new(size: usize) -> NonNull<DisplayBitVec> {
|
|
||||||
heap_move_nonnull(DisplayBitVec::repeat(false, size))
|
heap_move_nonnull(DisplayBitVec::repeat(false, size))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Interpret the data as a series of bits and load then into a new [DisplayBitVec] instance.
|
/// Interpret the data as a series of bits and load then into a new [DisplayBitVec] instance.
|
||||||
///
|
///
|
||||||
/// returns: [DisplayBitVec] instance containing data.
|
/// returns: [DisplayBitVec] instance containing data.
|
||||||
#[no_mangle]
|
fn load(data: ByteSlice) -> NonNull<DisplayBitVec> {
|
||||||
pub unsafe extern "C" fn sp_bitvec_load(
|
|
||||||
data: ByteSlice,
|
|
||||||
) -> NonNull<DisplayBitVec> {
|
|
||||||
let data = unsafe { data.as_slice() };
|
let data = unsafe { data.as_slice() };
|
||||||
heap_move_nonnull(DisplayBitVec::from_slice(data))
|
heap_move_nonnull(DisplayBitVec::from_slice(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
wrap_clone!(sp_bitvec::DisplayBitVec);
|
|
||||||
wrap_free!(sp_bitvec::DisplayBitVec);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Gets the value of a bit.
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `bit_vec`: instance to read from
|
|
||||||
/// - `index`: the bit index to read
|
|
||||||
///
|
|
||||||
/// returns: value of the bit
|
|
||||||
///
|
|
||||||
/// # Panics
|
|
||||||
///
|
|
||||||
/// - when accessing `index` out of bounds
|
|
||||||
ref fn get(index: usize) -> bool;
|
|
||||||
|result| result.map(|x| *x).unwrap_or(false);
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Sets the value of a bit.
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `index`: the bit index to edit
|
|
||||||
/// - `value`: the value to set the bit to
|
|
||||||
///
|
|
||||||
/// # Panics
|
|
||||||
///
|
|
||||||
/// - when accessing `index` out of bounds
|
|
||||||
mut fn set(index: usize, value: bool);
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Sets the value of all bits.
|
|
||||||
///
|
|
||||||
/// # Arguments
|
|
||||||
///
|
|
||||||
/// - `value`: the value to set all bits to
|
|
||||||
mut fn fill(value: bool);
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Gets the length in bits.
|
|
||||||
ref fn len() -> usize;
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Returns true if length is 0.
|
|
||||||
ref fn is_empty() -> bool;
|
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_bitvec::DisplayBitVec;
|
|
||||||
/// Gets an unsafe reference to the data of the [DisplayBitVec] instance.
|
|
||||||
///
|
|
||||||
/// The returned memory is valid for the lifetime of the bitvec.
|
|
||||||
mut fn as_raw_mut_slice() -> ByteSlice;
|
|
||||||
|slice| unsafe { ByteSlice::from_slice(slice) };
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Creates a [BitVecCommand] and immediately turns that into a [Packet].
|
/// Creates a [BitVecCommand] and immediately turns that into a [Packet].
|
||||||
///
|
///
|
||||||
/// The provided [DisplayBitVec] gets consumed.
|
/// The provided [DisplayBitVec] gets consumed.
|
||||||
///
|
///
|
||||||
/// Returns NULL in case of an error.
|
/// Returns NULL in case of an error.
|
||||||
#[no_mangle]
|
fn into_packet(
|
||||||
pub unsafe extern "C" fn sp_bitvec_into_packet(
|
|
||||||
bitvec: NonNull<DisplayBitVec>,
|
bitvec: NonNull<DisplayBitVec>,
|
||||||
offset: usize,
|
offset: usize,
|
||||||
operation: BinaryOperation,
|
operation: BinaryOperation,
|
||||||
|
@ -122,3 +52,61 @@ pub unsafe extern "C" fn sp_bitvec_into_packet(
|
||||||
compression,
|
compression,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
wrap_clone!(sp_bitvec::DisplayBitVec);
|
||||||
|
wrap_free!(sp_bitvec::DisplayBitVec);
|
||||||
|
|
||||||
|
wrap_methods!(
|
||||||
|
sp_bitvec::DisplayBitVec;
|
||||||
|
|
||||||
|
/// Gets the value of a bit.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `bit_vec`: instance to read from
|
||||||
|
/// - `index`: the bit index to read
|
||||||
|
///
|
||||||
|
/// returns: value of the bit
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// - when accessing `index` out of bounds
|
||||||
|
ref fn get(index: usize) -> bool {
|
||||||
|
return(result) { result.map(|x| *x).unwrap_or(false) };
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/// Sets the value of a bit.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `index`: the bit index to edit
|
||||||
|
/// - `value`: the value to set the bit to
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// - when accessing `index` out of bounds
|
||||||
|
mut fn set(index: usize, value: bool);
|
||||||
|
|
||||||
|
/// Sets the value of all bits.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// - `value`: the value to set all bits to
|
||||||
|
mut fn fill(value: bool);
|
||||||
|
|
||||||
|
/// Gets the length in bits.
|
||||||
|
ref fn len() -> usize;
|
||||||
|
|
||||||
|
/// Returns true if length is 0.
|
||||||
|
ref fn is_empty() -> bool;
|
||||||
|
|
||||||
|
/// Gets an unsafe reference to the data of the [DisplayBitVec] instance.
|
||||||
|
///
|
||||||
|
/// The returned memory is valid for the lifetime of the bitvec.
|
||||||
|
mut fn as_raw_mut_slice() -> ByteSlice {
|
||||||
|
return(slice) { unsafe { ByteSlice::from_slice(slice) } };
|
||||||
|
};
|
||||||
|
);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
use crate::macros::wrap_functions;
|
||||||
use crate::{
|
use crate::{
|
||||||
containers::ByteSlice,
|
containers::ByteSlice,
|
||||||
macros::{wrap_clone, wrap_free, wrap_method},
|
macros::{wrap_clone, wrap_free, wrap_methods},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{
|
use servicepoint::{
|
||||||
|
@ -9,6 +10,8 @@ use servicepoint::{
|
||||||
};
|
};
|
||||||
use std::{mem::transmute, ptr::NonNull};
|
use std::{mem::transmute, ptr::NonNull};
|
||||||
|
|
||||||
|
wrap_functions!(sp_brightness_grid;
|
||||||
|
|
||||||
/// Creates a new [BrightnessGrid] with the specified dimensions.
|
/// Creates a new [BrightnessGrid] with the specified dimensions.
|
||||||
///
|
///
|
||||||
/// returns: [BrightnessGrid] initialized to 0.
|
/// returns: [BrightnessGrid] initialized to 0.
|
||||||
|
@ -26,8 +29,7 @@ use std::{mem::transmute, ptr::NonNull};
|
||||||
/// TypedCommand *command = sp_command_char_brightness(grid);
|
/// TypedCommand *command = sp_command_char_brightness(grid);
|
||||||
/// sp_udp_free(connection);
|
/// sp_udp_free(connection);
|
||||||
/// ```
|
/// ```
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_brightness_grid_new(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
) -> NonNull<BrightnessGrid> {
|
) -> NonNull<BrightnessGrid> {
|
||||||
|
@ -39,8 +41,7 @@ pub unsafe extern "C" fn sp_brightness_grid_new(
|
||||||
/// Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN].
|
/// Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN].
|
||||||
///
|
///
|
||||||
/// returns: new [BrightnessGrid] instance, or NULL in case of an error.
|
/// returns: new [BrightnessGrid] instance, or NULL in case of an error.
|
||||||
#[no_mangle]
|
fn load(
|
||||||
pub unsafe extern "C" fn sp_brightness_grid_load(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
data: ByteSlice,
|
data: ByteSlice,
|
||||||
|
@ -52,11 +53,31 @@ pub unsafe extern "C" fn sp_brightness_grid_load(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a [BrightnessGridCommand] and immediately turns that into a [Packet].
|
||||||
|
///
|
||||||
|
/// The provided [BrightnessGrid] gets consumed.
|
||||||
|
///
|
||||||
|
/// Returns NULL in case of an error.
|
||||||
|
fn into_packet(
|
||||||
|
grid: NonNull<BrightnessGrid>,
|
||||||
|
x: usize,
|
||||||
|
y: usize,
|
||||||
|
) -> *mut Packet {
|
||||||
|
let grid = unsafe { heap_remove(grid) };
|
||||||
|
heap_move_ok(Packet::try_from(BrightnessGridCommand {
|
||||||
|
grid,
|
||||||
|
origin: Origin::new(x, y),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_brightness_grid::BrightnessGrid);
|
wrap_clone!(sp_brightness_grid::BrightnessGrid);
|
||||||
wrap_free!(sp_brightness_grid::BrightnessGrid);
|
wrap_free!(sp_brightness_grid::BrightnessGrid);
|
||||||
|
|
||||||
wrap_method!(
|
wrap_methods!(
|
||||||
sp_brightness_grid::BrightnessGrid;
|
sp_brightness_grid::BrightnessGrid;
|
||||||
|
|
||||||
/// Gets the current value at the specified position.
|
/// Gets the current value at the specified position.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -68,10 +89,7 @@ wrap_method!(
|
||||||
/// # Panics
|
/// # Panics
|
||||||
/// - When accessing `x` or `y` out of bounds.
|
/// - When accessing `x` or `y` out of bounds.
|
||||||
ref fn get(x: usize, y: usize) -> Brightness;
|
ref fn get(x: usize, y: usize) -> Brightness;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_brightness_grid::BrightnessGrid;
|
|
||||||
/// Sets the value of the specified position.
|
/// Sets the value of the specified position.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -85,58 +103,29 @@ wrap_method!(
|
||||||
///
|
///
|
||||||
/// - When accessing `x` or `y` out of bounds.
|
/// - When accessing `x` or `y` out of bounds.
|
||||||
mut fn set(x: usize, y: usize, value: Brightness);
|
mut fn set(x: usize, y: usize, value: Brightness);
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_brightness_grid::BrightnessGrid;
|
|
||||||
/// Sets the value of all cells.
|
/// Sets the value of all cells.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
///
|
///
|
||||||
/// - `value`: the value to set all cells to
|
/// - `value`: the value to set all cells to
|
||||||
mut fn fill(value: Brightness);
|
mut fn fill(value: Brightness);
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_brightness_grid::BrightnessGrid;
|
|
||||||
/// Gets the width of the grid.
|
/// Gets the width of the grid.
|
||||||
ref fn width() -> usize;
|
ref fn width() -> usize;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_brightness_grid::BrightnessGrid;
|
|
||||||
/// Gets the height of the grid.
|
/// Gets the height of the grid.
|
||||||
ref fn height() -> usize;
|
ref fn height() -> usize;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_brightness_grid::BrightnessGrid;
|
|
||||||
/// Gets an unsafe reference to the data of the instance.
|
/// Gets an unsafe reference to the data of the instance.
|
||||||
///
|
///
|
||||||
/// The returned memory is valid for the lifetime of the grid.
|
/// The returned memory is valid for the lifetime of the grid.
|
||||||
mut fn data_ref_mut() -> ByteSlice;
|
mut fn data_ref_mut() -> ByteSlice {
|
||||||
|br_slice| unsafe {
|
return(br_slice) { unsafe {
|
||||||
//noinspection RsAssertEqual
|
//noinspection RsAssertEqual
|
||||||
const _: () = assert!(size_of::<Brightness>() == 1);
|
const _: () = assert!(size_of::<Brightness>() == 1);
|
||||||
|
|
||||||
ByteSlice::from_slice(transmute::<&mut [Brightness], &mut [u8]>(br_slice))
|
ByteSlice::from_slice(transmute::<&mut [Brightness], &mut [u8]>(br_slice))
|
||||||
|
}};
|
||||||
};
|
};
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Creates a [BrightnessGridCommand] and immediately turns that into a [Packet].
|
|
||||||
///
|
|
||||||
/// The provided [BrightnessGrid] gets consumed.
|
|
||||||
///
|
|
||||||
/// Returns NULL in case of an error.
|
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe extern "C" fn sp_brightness_grid_into_packet(
|
|
||||||
grid: NonNull<BrightnessGrid>,
|
|
||||||
x: usize,
|
|
||||||
y: usize,
|
|
||||||
) -> *mut Packet {
|
|
||||||
let grid = unsafe { heap_remove(grid) };
|
|
||||||
heap_move_ok(Packet::try_from(BrightnessGridCommand {
|
|
||||||
grid,
|
|
||||||
origin: Origin::new(x, y),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
containers::ByteSlice,
|
containers::ByteSlice,
|
||||||
macros::{wrap_clone, wrap_free, wrap_method},
|
macros::{wrap_clone, wrap_free, wrap_functions, wrap_methods},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet};
|
use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_char_grid;
|
||||||
|
|
||||||
/// Creates a new [CharGrid] with the specified dimensions.
|
/// Creates a new [CharGrid] with the specified dimensions.
|
||||||
///
|
///
|
||||||
/// returns: [CharGrid] initialized to 0.
|
/// returns: [CharGrid] initialized to 0.
|
||||||
|
@ -18,8 +20,7 @@ use std::ptr::NonNull;
|
||||||
/// sp_char_grid_set(grid, 0, 0, '!');
|
/// sp_char_grid_set(grid, 0, 0, '!');
|
||||||
/// sp_char_grid_free(grid);
|
/// sp_char_grid_free(grid);
|
||||||
/// ```
|
/// ```
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_char_grid_new(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
) -> NonNull<CharGrid> {
|
) -> NonNull<CharGrid> {
|
||||||
|
@ -29,8 +30,7 @@ pub unsafe extern "C" fn sp_char_grid_new(
|
||||||
/// Loads a [CharGrid] with the specified dimensions from the provided data.
|
/// Loads a [CharGrid] with the specified dimensions from the provided data.
|
||||||
///
|
///
|
||||||
/// returns: new CharGrid or NULL in case of an error
|
/// returns: new CharGrid or NULL in case of an error
|
||||||
#[no_mangle]
|
fn load(
|
||||||
pub unsafe extern "C" fn sp_char_grid_load(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
data: ByteSlice,
|
data: ByteSlice,
|
||||||
|
@ -39,11 +39,31 @@ pub unsafe extern "C" fn sp_char_grid_load(
|
||||||
heap_move_ok(CharGrid::load_utf8(width, height, data.to_vec()))
|
heap_move_ok(CharGrid::load_utf8(width, height, data.to_vec()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a [CharGridCommand] and immediately turns that into a [Packet].
|
||||||
|
///
|
||||||
|
/// The provided [CharGrid] gets consumed.
|
||||||
|
///
|
||||||
|
/// Returns NULL in case of an error.
|
||||||
|
fn into_packet(
|
||||||
|
grid: NonNull<CharGrid>,
|
||||||
|
x: usize,
|
||||||
|
y: usize,
|
||||||
|
) -> *mut Packet {
|
||||||
|
let grid = unsafe { heap_remove(grid) };
|
||||||
|
heap_move_ok(Packet::try_from(CharGridCommand {
|
||||||
|
grid,
|
||||||
|
origin: Origin::new(x, y),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_char_grid::CharGrid);
|
wrap_clone!(sp_char_grid::CharGrid);
|
||||||
wrap_free!(sp_char_grid::CharGrid);
|
wrap_free!(sp_char_grid::CharGrid);
|
||||||
|
|
||||||
wrap_method!(
|
wrap_methods!(
|
||||||
sp_char_grid::CharGrid;
|
sp_char_grid::CharGrid;
|
||||||
|
|
||||||
/// Returns the current value at the specified position.
|
/// Returns the current value at the specified position.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -53,12 +73,10 @@ wrap_method!(
|
||||||
/// # Panics
|
/// # Panics
|
||||||
///
|
///
|
||||||
/// - when accessing `x` or `y` out of bounds
|
/// - when accessing `x` or `y` out of bounds
|
||||||
ref fn get(x: usize, y: usize) -> u32;
|
ref fn get(x: usize, y: usize) -> u32 {
|
||||||
| char | char as u32
|
return(char) { char as u32 };
|
||||||
);
|
};
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_char_grid::CharGrid;
|
|
||||||
/// Sets the value of the specified position in the grid.
|
/// Sets the value of the specified position in the grid.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -72,48 +90,23 @@ wrap_method!(
|
||||||
///
|
///
|
||||||
/// - when accessing `x` or `y` out of bounds
|
/// - when accessing `x` or `y` out of bounds
|
||||||
/// - when providing values that cannot be converted to Rust's `char`.
|
/// - when providing values that cannot be converted to Rust's `char`.
|
||||||
mut fn set(x: usize, y: usize, value: u32);
|
mut fn set(x: usize, y: usize, value: u32) {
|
||||||
let value = char::from_u32(value).unwrap();
|
prepare(value) { char::from_u32(value).unwrap() };
|
||||||
);
|
};
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_char_grid::CharGrid;
|
|
||||||
/// Sets the value of all cells in the grid.
|
/// Sets the value of all cells in the grid.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
///
|
///
|
||||||
/// - `value`: the value to set all cells to
|
/// - `value`: the value to set all cells to
|
||||||
/// - when providing values that cannot be converted to Rust's `char`.
|
/// - when providing values that cannot be converted to Rust's `char`.
|
||||||
mut fn fill(value: u32);
|
mut fn fill(value: u32) {
|
||||||
let value = char::from_u32(value).unwrap();
|
prepare(value) { char::from_u32(value).unwrap() };
|
||||||
);
|
};
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_char_grid::CharGrid;
|
|
||||||
/// Gets the width of the grid.
|
/// Gets the width of the grid.
|
||||||
ref fn width() -> usize;
|
ref fn width() -> usize;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_char_grid::CharGrid;
|
|
||||||
/// Gets the height of the grid.
|
/// Gets the height of the grid.
|
||||||
ref fn height() -> usize;
|
ref fn height() -> usize;
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Creates a [CharGridCommand] and immediately turns that into a [Packet].
|
|
||||||
///
|
|
||||||
/// The provided [CharGrid] gets consumed.
|
|
||||||
///
|
|
||||||
/// Returns NULL in case of an error.
|
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe extern "C" fn sp_char_grid_into_packet(
|
|
||||||
grid: NonNull<CharGrid>,
|
|
||||||
x: usize,
|
|
||||||
y: usize,
|
|
||||||
) -> *mut Packet {
|
|
||||||
let grid = unsafe { heap_remove(grid) };
|
|
||||||
heap_move_ok(Packet::try_from(CharGridCommand {
|
|
||||||
grid,
|
|
||||||
origin: Origin::new(x, y),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
use crate::macros::wrap_functions;
|
||||||
use crate::{
|
use crate::{
|
||||||
containers::ByteSlice,
|
containers::ByteSlice,
|
||||||
macros::{wrap_clone, wrap_free, wrap_method},
|
macros::{wrap_clone, wrap_free, wrap_methods},
|
||||||
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
mem::{heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove},
|
||||||
};
|
};
|
||||||
use servicepoint::{
|
use servicepoint::{
|
||||||
|
@ -8,11 +9,12 @@ use servicepoint::{
|
||||||
};
|
};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
|
wrap_functions!(sp_cp437_grid;
|
||||||
|
|
||||||
/// Creates a new [Cp437Grid] with the specified dimensions.
|
/// Creates a new [Cp437Grid] with the specified dimensions.
|
||||||
///
|
///
|
||||||
/// returns: [Cp437Grid] initialized to 0.
|
/// returns: [Cp437Grid] initialized to 0.
|
||||||
#[no_mangle]
|
fn new(
|
||||||
pub unsafe extern "C" fn sp_cp437_grid_new(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
) -> NonNull<Cp437Grid> {
|
) -> NonNull<Cp437Grid> {
|
||||||
|
@ -20,8 +22,7 @@ pub unsafe extern "C" fn sp_cp437_grid_new(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Loads a [Cp437Grid] with the specified dimensions from the provided data.
|
/// Loads a [Cp437Grid] with the specified dimensions from the provided data.
|
||||||
#[no_mangle]
|
fn load(
|
||||||
pub unsafe extern "C" fn sp_cp437_grid_load(
|
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
data: ByteSlice,
|
data: ByteSlice,
|
||||||
|
@ -30,10 +31,29 @@ pub unsafe extern "C" fn sp_cp437_grid_load(
|
||||||
heap_move_some(Cp437Grid::load(width, height, data))
|
heap_move_some(Cp437Grid::load(width, height, data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a [Cp437GridCommand] and immediately turns that into a [Packet].
|
||||||
|
///
|
||||||
|
/// The provided [Cp437Grid] gets consumed.
|
||||||
|
///
|
||||||
|
/// Returns NULL in case of an error.
|
||||||
|
fn into_packet(
|
||||||
|
grid: NonNull<Cp437Grid>,
|
||||||
|
x: usize,
|
||||||
|
y: usize,
|
||||||
|
) -> *mut Packet {
|
||||||
|
let grid = unsafe { heap_remove(grid) };
|
||||||
|
heap_move_ok(Packet::try_from(Cp437GridCommand {
|
||||||
|
grid,
|
||||||
|
origin: Origin::new(x, y),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
wrap_clone!(sp_cp437_grid::Cp437Grid);
|
wrap_clone!(sp_cp437_grid::Cp437Grid);
|
||||||
wrap_free!(sp_cp437_grid::Cp437Grid);
|
wrap_free!(sp_cp437_grid::Cp437Grid);
|
||||||
|
|
||||||
wrap_method!(
|
wrap_methods!(
|
||||||
sp_cp437_grid::Cp437Grid;
|
sp_cp437_grid::Cp437Grid;
|
||||||
/// Gets the current value at the specified position.
|
/// Gets the current value at the specified position.
|
||||||
///
|
///
|
||||||
|
@ -45,10 +65,7 @@ wrap_method!(
|
||||||
///
|
///
|
||||||
/// - when accessing `x` or `y` out of bounds
|
/// - when accessing `x` or `y` out of bounds
|
||||||
ref fn get(x: usize, y: usize) -> u8;
|
ref fn get(x: usize, y: usize) -> u8;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_cp437_grid::Cp437Grid;
|
|
||||||
/// Sets the value at the specified position.
|
/// Sets the value at the specified position.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -62,10 +79,7 @@ wrap_method!(
|
||||||
///
|
///
|
||||||
/// - when accessing `x` or `y` out of bounds
|
/// - when accessing `x` or `y` out of bounds
|
||||||
mut fn set(x: usize, y: usize, value: u8);
|
mut fn set(x: usize, y: usize, value: u8);
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_cp437_grid::Cp437Grid;
|
|
||||||
/// Sets the value of all cells in the grid.
|
/// Sets the value of all cells in the grid.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -73,43 +87,17 @@ wrap_method!(
|
||||||
/// - `cp437_grid`: instance to write to
|
/// - `cp437_grid`: instance to write to
|
||||||
/// - `value`: the value to set all cells to
|
/// - `value`: the value to set all cells to
|
||||||
mut fn fill(value: u8);
|
mut fn fill(value: u8);
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_cp437_grid::Cp437Grid;
|
|
||||||
/// Gets the width of the grid.
|
/// Gets the width of the grid.
|
||||||
ref fn width() -> usize;
|
ref fn width() -> usize;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_cp437_grid::Cp437Grid;
|
|
||||||
/// Gets the height of the grid.
|
/// Gets the height of the grid.
|
||||||
ref fn height() -> usize;
|
ref fn height() -> usize;
|
||||||
);
|
|
||||||
|
|
||||||
wrap_method!(
|
|
||||||
sp_cp437_grid::Cp437Grid;
|
|
||||||
/// Gets an unsafe reference to the data of the grid.
|
/// Gets an unsafe reference to the data of the grid.
|
||||||
///
|
///
|
||||||
/// The returned memory is valid for the lifetime of the instance.
|
/// The returned memory is valid for the lifetime of the instance.
|
||||||
mut fn data_ref_mut() -> ByteSlice;
|
mut fn data_ref_mut() -> ByteSlice {
|
||||||
| slice | unsafe { ByteSlice::from_slice(slice) };
|
return(slice) { unsafe { ByteSlice::from_slice(slice) } };
|
||||||
|
};
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Creates a [Cp437GridCommand] and immediately turns that into a [Packet].
|
|
||||||
///
|
|
||||||
/// The provided [Cp437Grid] gets consumed.
|
|
||||||
///
|
|
||||||
/// Returns NULL in case of an error.
|
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe extern "C" fn sp_cp437_grid_into_packet(
|
|
||||||
grid: NonNull<Cp437Grid>,
|
|
||||||
x: usize,
|
|
||||||
y: usize,
|
|
||||||
) -> *mut Packet {
|
|
||||||
let grid = unsafe { heap_remove(grid) };
|
|
||||||
heap_move_ok(Packet::try_from(Cp437GridCommand {
|
|
||||||
grid,
|
|
||||||
origin: Origin::new(x, y),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
macro_rules! wrap_free {
|
macro_rules! wrap_free {
|
||||||
($prefix:ident :: $typ:ty) => {
|
($prefix:ident :: $typ:ty) => {
|
||||||
paste::paste! {
|
$crate::macros::wrap_functions!($prefix;
|
||||||
#[doc = concat!("Deallocates a [", stringify!($typ), "] instance.")]
|
#[doc = concat!("Deallocates a [`", stringify!($typ), "`] instance.")]
|
||||||
#[no_mangle]
|
fn free(instance: NonNull<$typ>) {
|
||||||
pub unsafe extern "C" fn [<$prefix _free>](instance: NonNull<$typ>) {
|
|
||||||
unsafe { $crate::mem::heap_drop(instance) }
|
unsafe { $crate::mem::heap_drop(instance) }
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! wrap_clone {
|
macro_rules! wrap_clone {
|
||||||
($prefix:ident :: $typ:ty) => {
|
($prefix:ident :: $typ:ty) => {
|
||||||
paste::paste! {
|
$crate::macros::wrap_functions!($prefix;
|
||||||
#[doc = concat!("Clones a [", stringify!($typ), "] instance.")]
|
#[doc = concat!("Clones a [`", stringify!($typ), "`] instance.")]
|
||||||
#[no_mangle]
|
fn clone(instance: NonNull<$typ>) -> NonNull<$typ> {
|
||||||
pub unsafe extern "C" fn [<$prefix _clone>](instance: NonNull<$typ>) -> NonNull<$typ> {
|
|
||||||
unsafe { $crate::mem::heap_clone(instance) }
|
unsafe { $crate::mem::heap_clone(instance) }
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,27 +33,35 @@ macro_rules! nonnull_as_mut {
|
||||||
}
|
}
|
||||||
|
|
||||||
// meta required on purpose, because otherwise the added documentation would suppress warnings
|
// meta required on purpose, because otherwise the added documentation would suppress warnings
|
||||||
macro_rules! wrap_method {
|
macro_rules! wrap_methods {
|
||||||
(
|
(
|
||||||
$prefix:ident :: $object_type:ty;
|
$prefix:ident :: $object_type:ty;
|
||||||
|
$(
|
||||||
$(#[$meta:meta])+
|
$(#[$meta:meta])+
|
||||||
$ref_or_mut:ident fn $function:ident($($param_name:ident: $param_type:ty),*)
|
$ref_or_mut:ident fn $function:ident($($param_name:ident: $param_type:ty),*)
|
||||||
$(-> $return_type:ty$(; |$it:ident | $return_expr:expr)?)?
|
$(-> $return_type:ty)?
|
||||||
$(; let $param_let_name:ident = $param_let_expr:expr)*
|
$({
|
||||||
$(;)?
|
$($(prepare($param_let_name:ident) $param_let_expr:block);+;)?
|
||||||
|
$(return($it:ident) $return_expr:block;)?
|
||||||
|
})?
|
||||||
|
;
|
||||||
|
)+
|
||||||
) => {
|
) => {
|
||||||
paste::paste! {
|
paste::paste! {
|
||||||
|
$crate::macros::wrap_functions!($prefix;
|
||||||
|
$(
|
||||||
#[doc = concat!(" Calls [`servicepoint::", stringify!($object_type),
|
#[doc = concat!(" Calls [`servicepoint::", stringify!($object_type),
|
||||||
"::", stringify!($function), "`].")]
|
"::", stringify!($function), "`].")]
|
||||||
#[doc = ""]
|
#[doc = ""]
|
||||||
$(#[$meta])*
|
$(#[$meta])*
|
||||||
#[no_mangle]
|
fn $function(
|
||||||
pub unsafe extern "C" fn [<$prefix _ $function>](
|
|
||||||
instance: NonNull<$object_type>,
|
instance: NonNull<$object_type>,
|
||||||
$($param_name: $param_type),*
|
$($param_name: $param_type),*
|
||||||
) $(-> $return_type)? {
|
) $(-> $return_type)? {
|
||||||
let instance = unsafe { $crate::macros:: [< nonnull_as_ $ref_or_mut >] !(instance) };
|
let instance = unsafe { $crate::macros:: [< nonnull_as_ $ref_or_mut >] !(instance) };
|
||||||
|
$($(
|
||||||
$(let $param_let_name = $param_let_expr;)*
|
$(let $param_let_name = $param_let_expr;)*
|
||||||
|
)?)?
|
||||||
#[allow(
|
#[allow(
|
||||||
unused_variables,
|
unused_variables,
|
||||||
reason = "This variable may not be used depending on macro variables" )]
|
reason = "This variable may not be used depending on macro variables" )]
|
||||||
|
@ -65,9 +71,11 @@ macro_rules! wrap_method {
|
||||||
let $it = result;
|
let $it = result;
|
||||||
let result = $return_expr;
|
let result = $return_expr;
|
||||||
)?
|
)?
|
||||||
return result;
|
|
||||||
)?
|
)?
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
)+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -94,6 +102,7 @@ macro_rules! wrap_fields {
|
||||||
)+
|
)+
|
||||||
) => {
|
) => {
|
||||||
paste::paste! {
|
paste::paste! {
|
||||||
|
$crate::macros::wrap_functions!($prefix;
|
||||||
$(
|
$(
|
||||||
$(
|
$(
|
||||||
#[doc = concat!(" Gets the value of field `", stringify!($prop_name),
|
#[doc = concat!(" Gets the value of field `", stringify!($prop_name),
|
||||||
|
@ -102,8 +111,7 @@ macro_rules! wrap_fields {
|
||||||
#[doc = ""]
|
#[doc = ""]
|
||||||
#[$get_meta]
|
#[$get_meta]
|
||||||
)*)?
|
)*)?
|
||||||
#[no_mangle]
|
fn [<get _ $prop_name>](
|
||||||
pub unsafe extern "C" fn [<$prefix _ get _ $prop_name>](
|
|
||||||
instance: NonNull<$object_type>
|
instance: NonNull<$object_type>
|
||||||
) -> $prop_type {
|
) -> $prop_type {
|
||||||
let instance = unsafe { $crate::macros::nonnull_as_ref!(instance) };
|
let instance = unsafe { $crate::macros::nonnull_as_ref!(instance) };
|
||||||
|
@ -122,8 +130,7 @@ macro_rules! wrap_fields {
|
||||||
#[doc = ""]
|
#[doc = ""]
|
||||||
#[$set_meta]
|
#[$set_meta]
|
||||||
)*)?
|
)*)?
|
||||||
#[no_mangle]
|
fn [<set _ $prop_name>](
|
||||||
pub unsafe extern "C" fn [<$prefix _ set _ $prop_name>](
|
|
||||||
instance: NonNull<$object_type>,
|
instance: NonNull<$object_type>,
|
||||||
value: $prop_type,
|
value: $prop_type,
|
||||||
) {
|
) {
|
||||||
|
@ -136,11 +143,38 @@ macro_rules! wrap_fields {
|
||||||
}
|
}
|
||||||
)?
|
)?
|
||||||
)+
|
)+
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! wrap_functions {
|
||||||
|
(
|
||||||
|
$prefix:ident;
|
||||||
|
$(
|
||||||
|
$(#[$meta:meta])+
|
||||||
|
fn $function:ident($($param_name:ident: $param_type:ty),*$(,)?)
|
||||||
|
$(-> $return_type:ty)?
|
||||||
|
$block:block
|
||||||
|
)+
|
||||||
|
) => {
|
||||||
|
::paste::paste! {
|
||||||
|
$(
|
||||||
|
$(#[$meta])*
|
||||||
|
#[doc = ""]
|
||||||
|
#[doc = concat!(" This function is part of the ", stringify!($prefix), " module.")]
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn [<$prefix _ $function>](
|
||||||
|
$($param_name: $param_type),*
|
||||||
|
) $(-> $return_type)?
|
||||||
|
$block
|
||||||
|
|
||||||
|
)+
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) use {
|
pub(crate) use {
|
||||||
nonnull_as_mut, nonnull_as_ref, wrap_clone, wrap_fields, wrap_free,
|
nonnull_as_mut, nonnull_as_ref, wrap_clone, wrap_fields, wrap_free,
|
||||||
wrap_method,
|
wrap_functions, wrap_methods,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue