/* Web64 SDK header printout: web64/bitmap.h * Generated by scripts/copy-web64-ide-source.mjs. * The IDE resolves this header as a read-only virtual SDK document. */ #ifndef WEB64_BITMAP_H #define WEB64_BITMAP_H #include #include #define WEB64_BITMAP_MODE_HIRES 0 #define WEB64_BITMAP_MODE_MULTICOLOR 1 #define WEB64_BITMAP_OP_REPLACE 0 #define WEB64_BITMAP_OP_XOR 1 #define WEB64_BITMAP_OK 0 #define WEB64_BITMAP_CLIPPED 1 #define WEB64_BITMAP_INVALID_CONTEXT 2 #define WEB64_BITMAP_INVALID_LAYOUT 4 #define WEB64_BITMAP_INVALID_PIXEL 8 #define WEB64_BITMAP_INVALID_OPERATION 16 #define WEB64_BITMAP_PALETTE_CONFLICT 32 #define WEB64_BITMAP_INVALID_ARGUMENT 64 #define WEB64_BITMAP_WORKSPACE_EXHAUSTED 128 #define WEB64_BITMAP_PIXEL_INVALID 0xff typedef struct { uint16_t pixels; uint16_t screen; uint8_t mode; uint8_t background; uint8_t vic_bank; uint8_t memory_setup; uint8_t flags; } Web64Bitmap; typedef struct { uint8_t color0; uint8_t color1; uint8_t color2; uint8_t color3; } Web64BitmapPalette; typedef struct { uint16_t first_x; uint16_t last_x; uint8_t y; } Web64BitmapFloodSpan; typedef struct { Web64BitmapFloodSpan *spans; uint16_t capacity; uint16_t used; } Web64BitmapFloodWorkspace; #define WEB64_BITMAP_FLOOD_STORAGE(name, capacity) Web64BitmapFloodSpan name##_span_storage[(capacity)]; Web64BitmapFloodWorkspace name #define WEB64_BITMAP_FLOOD_WORKSPACE_INIT(name, span_count) (name).spans = name##_span_storage; (name).capacity = (span_count); (name).used = 0 _web64_rt uint8_t web64_bitmap_configure(Web64Bitmap *bitmap, uint8_t *pixels, uint8_t *screen, uint8_t mode); _web64_rt uint8_t web64_bitmap_activate(const Web64Bitmap *bitmap); _web64_rt uint8_t web64_bitmap_clear(Web64Bitmap *bitmap, uint8_t pixel); _web64_rt uint8_t web64_bitmap_palette_uniform(Web64Bitmap *bitmap, const Web64BitmapPalette *palette); _web64_rt uint8_t web64_bitmap_palette_cell(Web64Bitmap *bitmap, uint8_t column, uint8_t row, const Web64BitmapPalette *palette); _web64_rt uint8_t web64_bitmap_init(Web64Bitmap *bitmap, uint8_t *pixels, uint8_t *screen, uint8_t mode, const Web64BitmapPalette *palette); /* Expand a 40x25 imported character map into bitmap RAM and copy its screen/Color RAM planes. Configure first; activate after loading. */ _web64_rt uint8_t web64_bitmap_load_map(Web64Bitmap *bitmap, const Web64MapAsset *map, const Web64CharsetAsset *charset); _web64_rt uint8_t web64_bitmap_plot(Web64Bitmap *bitmap, int16_t x, int16_t y, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_plot_fast(Web64Bitmap *bitmap, uint16_t x, uint8_t y, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_get(const Web64Bitmap *bitmap, int16_t x, int16_t y); _web64_rt uint8_t web64_bitmap_get_fast(const Web64Bitmap *bitmap, uint16_t x, uint8_t y); _web64_rt uint8_t web64_bitmap_hline(Web64Bitmap *bitmap, int16_t x, int16_t y, uint16_t width, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_hline_fast(Web64Bitmap *bitmap, uint16_t x, uint8_t y, uint16_t width, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_vline(Web64Bitmap *bitmap, int16_t x, int16_t y, uint16_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_vline_fast(Web64Bitmap *bitmap, uint16_t x, uint8_t y, uint16_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_line(Web64Bitmap *bitmap, int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_line_fast(Web64Bitmap *bitmap, uint16_t x0, uint8_t y0, uint16_t x1, uint8_t y1, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_rect(Web64Bitmap *bitmap, int16_t x, int16_t y, uint16_t width, uint16_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_rect_fast(Web64Bitmap *bitmap, uint16_t x, uint8_t y, uint16_t width, uint8_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_fill_rect(Web64Bitmap *bitmap, int16_t x, int16_t y, uint16_t width, uint16_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_fill_rect_fast(Web64Bitmap *bitmap, uint16_t x, uint8_t y, uint16_t width, uint8_t height, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_ellipse(Web64Bitmap *bitmap, int16_t center_x, int16_t center_y, uint16_t radius_x, uint16_t radius_y, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_ellipse_fast(Web64Bitmap *bitmap, uint16_t center_x, uint8_t center_y, uint16_t radius_x, uint8_t radius_y, uint8_t pixel, uint8_t operation); _web64_rt uint8_t web64_bitmap_flood_fill(Web64Bitmap *bitmap, int16_t seed_x, int16_t seed_y, uint8_t replacement, Web64BitmapFloodWorkspace *workspace); _web64_rt uint8_t web64_bitmap_flood_fill_fast(Web64Bitmap *bitmap, uint16_t seed_x, uint8_t seed_y, uint8_t replacement, Web64BitmapFloodWorkspace *workspace); #define web64_bitmap_dot(bitmap, x, y, pixel, operation) web64_bitmap_plot((bitmap), (x), (y), (pixel), (operation)) #define web64_bitmap_dot_fast(bitmap, x, y, pixel, operation) web64_bitmap_plot_fast((bitmap), (x), (y), (pixel), (operation)) #define web64_bitmap_circle(bitmap, center_x, center_y, radius, pixel, operation) web64_bitmap_ellipse((bitmap), (center_x), (center_y), (radius), (radius), (pixel), (operation)) #define web64_bitmap_circle_fast(bitmap, center_x, center_y, radius, pixel, operation) web64_bitmap_ellipse_fast((bitmap), (center_x), (center_y), (radius), (radius), (pixel), (operation)) #endif