22#ifndef MADS_CORE_MATTE_H
23#define MADS_CORE_MATTE_H
25#include "mads/core/general.h"
26#include "mads/core/anim.h"
27#include "mads/core/tile.h"
31#define SERIES_LIST_SIZE 50
33#define SERIES_BONUS_SIZE 1
34#define SERIES_BONUS_OBJECT 1
37#define IMAGE_LIST_SIZE 50
38#define MESSAGE_LIST_SIZE 40
40#define IMAGE_INTER_LIST_SIZE 50
42#define MATTE_LIST_SIZE (IMAGE_LIST_SIZE + MESSAGE_LIST_SIZE)
43#define FIRST_MESSAGE_MATTE IMAGE_LIST_SIZE
45#define MATTE_FX_NONE 0
46#define MATTE_FX_FADE_FROM_BLACK 1
47#define MATTE_FX_FADE_THRU_BLACK 2
48#define MATTE_FX_CORNER_LOWER_LEFT 3
49#define MATTE_FX_CORNER_LOWER_RIGHT 4
50#define MATTE_FX_CORNER_UPPER_LEFT 5
51#define MATTE_FX_CORNER_UPPER_RIGHT 6
52#define MATTE_FX_EDGE_LEFT 7
53#define MATTE_FX_EDGE_RIGHT 8
54#define MATTE_FX_CIRCLE_OUT_SLOW 9
55#define MATTE_FX_CIRCLE_IN_SLOW 10
56#define MATTE_FX_CIRCLE_OUT_FAST 11
57#define MATTE_FX_CIRCLE_IN_FAST 12
59#define MATTE_FX_FAST_THRU_BLACK 20
60#define MATTE_FX_FAST_AND_FANCY 21
75extern SeriesPtr series_list[SERIES_LIST_SIZE + SERIES_BONUS_SIZE];
77extern char series_name[SERIES_LIST_SIZE][9];
78extern byte series_user[SERIES_LIST_SIZE];
80extern Image image_list[IMAGE_LIST_SIZE];
81extern Matte matte_list[MATTE_LIST_SIZE];
83extern byte depth_list_id[MATTE_LIST_SIZE];
84extern word depth_list[MATTE_LIST_SIZE];
86extern Message message_list[MESSAGE_LIST_SIZE];
88extern ImageInter image_inter_list[IMAGE_INTER_LIST_SIZE];
89extern Matte matte_inter_list[IMAGE_INTER_LIST_SIZE];
91extern int series_list_marker;
93extern int picture_view_x;
94extern int picture_view_y;
96extern int viewing_at_x;
97extern int viewing_at_y;
98extern int inter_viewing_at_y;
100extern int matte_disable_screen_update;
102extern byte attr_packed;
104extern byte image_marker;
105extern byte image_inter_marker;
116extern Buffer scr_inter_orig;
118extern int matte_guard_depth_0;
120extern int work_screen_ems_handle;
125extern void matte_init(
int init_series);
126extern int matte_map_work_screen();
133extern void matte_frame(
int special_effect,
int full_screen,
134 bool full_fade_in =
false,
int fade_step_rate = 0,
135 long *completion_deadline =
nullptr,
int minimum_black_ticks = 0,
136 int boundary_line_color = -1);
138extern int matte_load_series(
const char *name,
int load_flags,
int bonus_series_number);
139extern void matte_deallocate_series(
int id,
int free_memory);
140extern int matte_allocate_series(
SeriesPtr series,
int bonus_series_number);
142extern int matte_add_message(
FontPtr font,
char *text,
int x,
int y,
143 int message_color,
int auto_spacing,
bool useMacintoshFont =
false);
144extern void matte_clear_message(
int handle);
146extern int matte_allocate_image();
148extern void matte_refresh_work();
150extern void matte_inter_frame(
int update_live,
int clear_chaff);
151extern int matte_allocate_inter_image();
152extern void matte_refresh_inter();
154extern void init_matte();