blob: 2d8cbe33a899bd6b1757c71cb09a01ae35cd3e3a [file]
/*
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu>
* Copyright (c) 2023 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*
* "Bottom" of the SDL display driver.
* When built with the native_simulator this will be built in the runner context,
* that is, with the host C library, and with the host include paths.
*/
#ifndef DRIVERS_DISPLAY_DISPLAY_SDL_BOTTOM_H
#define DRIVERS_DISPLAY_DISPLAY_SDL_BOTTOM_H
#include <stdbool.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Note: None of these functions are public interfaces. But internal to the SDL display driver */
struct sdl_display_init_params {
uint16_t height;
uint16_t width;
uint16_t zoom_pct;
bool use_accelerator;
void **window;
const void *window_user_data;
const char *title;
void **renderer;
void **mutex;
void **texture;
void **read_texture;
void **background_texture;
uint32_t transparency_grid_color1;
uint32_t transparency_grid_color2;
uint16_t transparency_grid_cell_size;
void **round_disp_mask;
uint32_t mask_color;
double angle;
};
struct sdl_display_write_params {
uint16_t height;
uint16_t width;
uint16_t x;
uint16_t y;
void *renderer;
void *mutex;
void *texture;
void *background_texture;
uint8_t *buf;
bool display_on;
bool frame_incomplete;
uint32_t color_tint;
void *round_disp_mask;
double angle;
};
struct sdl_display_read_params {
uint16_t height;
uint16_t width;
uint16_t x;
uint16_t y;
void *renderer;
void *buf;
uint16_t pitch;
void *mutex;
void *texture;
void *read_texture;
double angle;
};
struct sdl_display_blanking_off_params {
void *renderer;
void *texture;
void *background_texture;
uint32_t color_tint;
void *round_disp_mask;
double angle;
};
struct sdl_display_cleanup_params {
void **window;
void **renderer;
void **mutex;
void **texture;
void **read_texture;
void **background_texture;
void **round_disp_mask;
};
int sdl_display_init_bottom(struct sdl_display_init_params *params);
void sdl_display_write_bottom(const struct sdl_display_write_params *params);
int sdl_display_read_bottom(const struct sdl_display_read_params *params);
void sdl_display_blanking_off_bottom(const struct sdl_display_blanking_off_params *params);
void sdl_display_blanking_on_bottom(void *renderer);
void sdl_display_cleanup_bottom(const struct sdl_display_cleanup_params *params);
#ifdef __cplusplus
}
#endif
#endif /* DRIVERS_DISPLAY_DISPLAY_SDL_BOTTOM_H */