28 #define NUM_FVW_SETTINGS        2 
   81 #define NUM_FVW_BUTTONS                 3 
   82 #define FVW_BUTTON_ACCEPT               0 
   83 #define FVW_BUTTON_SCROLL_UP    1 
   84 #define FVW_BUTTON_SCROLL_DOWN  2 
  159 static int Top_fiction_viewer_text_line = 0;
 
  160 static int Fiction_viewer_text_max_lines = 0;
 
  164 static int Fiction_viewer_bitmap = -1;
 
  165 static int Fiction_viewer_inited = 0;
 
  167 static int Fiction_viewer_old_fontnum = -1;
 
  168 static int Fiction_viewer_fontnum = -1;
 
  170 static char *Fiction_viewer_text = 
nullptr;
 
  171 static int Fiction_viewer_voice = -1;
 
  173 static int Fiction_viewer_ui = -1;
 
  175 static void use_fv_font()
 
  178         if (Fiction_viewer_fontnum >= 0)
 
  185                 Fiction_viewer_old_fontnum = -1;
 
  189 static void use_std_font()
 
  192         if (Fiction_viewer_old_fontnum >= 0)
 
  212         Top_fiction_viewer_text_line--;
 
  213         if (Top_fiction_viewer_text_line < 0)
 
  215                 Top_fiction_viewer_text_line = 0;
 
  226         Top_fiction_viewer_text_line++;
 
  229                 Top_fiction_viewer_text_line--;
 
  255                         Fiction_viewer_slider.
forceUp();
 
  272         if (Fiction_viewer_inited)
 
  286         Fiction_viewer_bitmap = -1;
 
  291                 if (Fiction_viewer_bitmap < 0)
 
  293                 else if (Fiction_viewer_ui < 0)
 
  294                         Fiction_viewer_ui = 0;
 
  298         if (Fiction_viewer_bitmap < 0)
 
  300                 if (Fiction_viewer_ui < 0)
 
  303                         for (Fiction_viewer_ui = 
NUM_FVW_SETTINGS - 1; Fiction_viewer_ui >= 0; Fiction_viewer_ui--)
 
  306                                 if (Fiction_viewer_bitmap >= 0)
 
  318         if (Fiction_viewer_ui < 0)
 
  320                 Warning(
LOCATION, 
"No fiction viewer graphics -- cannot display fiction viewer!");
 
  357                 Fiction_viewer_slider.
create(&Fiction_viewer_window,
 
  369         if (Fiction_viewer_voice >= 0)
 
  374         Fiction_viewer_inited = 1;
 
  380         if (!Fiction_viewer_inited)
 
  387         Fiction_viewer_window.
destroy();
 
  393         if (Fiction_viewer_bitmap >= 0)
 
  395         Fiction_viewer_bitmap = -1;
 
  403         Fiction_viewer_inited = 0;
 
  412         if (!Fiction_viewer_inited)
 
  438         if (Fiction_viewer_bitmap >= 0)
 
  445         Fiction_viewer_window.
draw();           
 
  473         if (Fiction_viewer_voice >= 0)
 
  481         if (Fiction_viewer_voice >= 0)
 
  490                 return !Fiction_viewer_stages.empty();
 
  492                 return (Fiction_viewer_text != 
nullptr);
 
  511         if (Fiction_viewer_text != 
nullptr)
 
  513         Fiction_viewer_text = 
nullptr;
 
  515         Fiction_viewer_stages.clear();
 
  518         Fiction_viewer_ui = -1;
 
  520         Top_fiction_viewer_text_line = 0;
 
  522         if (Fiction_viewer_voice >= 0)
 
  525                 Fiction_viewer_voice = -1;
 
  531         Assertion(stage >= 0 && static_cast<size_t>(stage) < Fiction_viewer_stages.size(), 
"stage parameter must be in range of Fiction_viewer_stages!");
 
  534         if (Fiction_viewer_text != 
nullptr)
 
  536                 Assertion(Fiction_viewer_text == 
nullptr, 
"Fiction viewer text should be a null pointer, but instead is '%s'. Trace out and fix!\n", Fiction_viewer_text);
 
  549                         Fiction_viewer_ui = ui_index;
 
  569                 Fiction_viewer_text = (
char *) 
vm_malloc(file_length + 1);
 
  570                 Fiction_viewer_text[file_length] = 
'\0';
 
  573                 cfread(Fiction_viewer_text, file_length, 1, fp);
 
void gr_rect(int x, int y, int w, int h, int resize_mode)
 
void set_highlight_action(void(*_user_function)(void))
 
int gr_get_fontnum(const char *filename)
 
void fiction_viewer_scroll_down()
 
int gr_get_current_fontnum()
 
void fiction_viewer_init()
 
int Num_brief_text_lines[MAX_TEXT_STREAMS]
 
GLfloat GLfloat GLfloat GLfloat h
 
int Mission_music[NUM_SCORES]
 
color Color_more_indicator
 
int cfread(void *buf, int elsize, int nelem, CFILE *fp)
 
char ui_name[NAME_LENGTH]
 
int brief_color_text_init(const char *src, int w, const char default_color, int instance, int max_lines, const bool append)
 
void fiction_viewer_unpause()
 
void fiction_viewer_pause()
 
void fiction_viewer_load(int stage)
 
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
#define GR_NUM_RESOLUTIONS
 
SCP_vector< fiction_viewer_stage > Fiction_viewer_stages
 
__inline void gr_string(int x, int y, const char *string, int resize_mode=GR_RESIZE_FULL)
 
int Fiction_viewer_active_stage
 
general failure sound for any event 
 
char story_filename[MAX_FILENAME_LEN]
 
void fiction_viewer_reset()
 
#define Assertion(expr, msg,...)                                                                        
 
int Fiction_viewer_text_coordinates[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][4]
 
char * Fiction_viewer_screen_filename[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
 
#define GR_MAYBE_CLEAR_RES(bmap)
 
void common_music_close()
 
char voice_filename[MAX_FILENAME_LEN]
 
#define SCORE_FICTION_VIEWER
 
void gr_set_color_fast(color *dst)
 
int red_alert_mission(void)
 
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
 
int bm_release(int handle, int clear_render_targets)
Frees both a bitmap's data and it's associated slot. 
 
void set_mask_bmap(char *fname)
 
int set_bmaps(char *ani_filename, int nframes=3, int start_frame=1)
 
int Default_fiction_viewer_ui
 
void fiction_viewer_scroll_capture()
 
int mission_has_cmd_brief()
 
#define FVW_BUTTON_ACCEPT
 
void create(UI_WINDOW *wnd, int _x, int _y, int _w, int _h, int _numberItems, char *_bitmapSliderControl, void(*_upCallback)(), void(*_downCallback)(), void(*_captureCallback)())
 
char * Fiction_viewer_slider_filename[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
 
char default_fiction_viewer_color
 
ui_button_info Fiction_viewer_buttons[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][NUM_FVW_BUTTONS]
 
void fiction_viewer_button_pressed(int button)
 
void audiostream_unpause(int i, bool via_sexp_or_script)
 
char * Fiction_viewer_screen_mask[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
 
const char * XSTR(const char *str, int index)
 
bool mission_has_fiction()
 
char font_filename[MAX_FILENAME_LEN]
 
#define FVW_BUTTON_SCROLL_UP
 
void set_hotkey(int keycode)
 
#define FVW_BUTTON_SCROLL_DOWN
 
void fiction_viewer_exit()
 
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later. 
 
GLboolean GLboolean GLboolean b
 
void audiostream_close_file(int i, int fade)
 
scroll pressed (and scroll) 
 
char * Fiction_viewer_ui_names[NUM_FVW_SETTINGS]
 
void link_hotspot(int num)
 
void create(UI_WINDOW *wnd, char *_text, int _x, int _y, int _w, int _h, int do_repeat=0, int ignore_focus=0)
 
void fiction_viewer_do_frame(float frametime)
 
void fiction_viewer_close()
 
void create(int _x, int _y, int _w, int _h, int _flags, int _f_id=-1)
 
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
 
void common_play_highlight_sound()
 
void audiostream_play(int i, float volume, int looping)
 
int brief_render_text(int line_offset, int x, int y, int h, float frametime, int instance, int line_spacing)
 
void gr_bitmap(int _x, int _y, int resize_mode)
 
int audiostream_open(const char *filename, int type)
 
void audiostream_pause(int i, bool via_sexp_or_script)
 
int fiction_viewer_ui_name_to_index(const char *ui_name)
 
int Fiction_viewer_slider_coordinates[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][4]
 
void gamesnd_play_iface(int n)
 
int cfclose(CFILE *cfile)
 
struct ui_button_info ui_button_info
 
void gr_set_font(int fontnum)
 
int process(int key_in=-1, int process_mouse=1)
 
void gameseq_post_event(int event)
 
int cfilelength(CFILE *cfile)
 
void fiction_viewer_scroll_up()
 
float Master_voice_volume
 
void common_music_init(int score_index)