Initial commit
This commit is contained in:
222
engines/glk/tads/tads2/text_io.h
Normal file
222
engines/glk/tads/tads2/text_io.h
Normal file
@@ -0,0 +1,222 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GLK_TADS_TADS2_TEXT_IO
|
||||
#define GLK_TADS_TADS2_TEXT_IO
|
||||
|
||||
/*
|
||||
* Text I/O interface
|
||||
*
|
||||
* Formatted text input and output interface definition
|
||||
*/
|
||||
|
||||
#include "glk/tads/tads.h"
|
||||
#include "glk/tads/tads2/error_handling.h"
|
||||
#include "glk/tads/tads2/run.h"
|
||||
|
||||
namespace Glk {
|
||||
namespace TADS {
|
||||
namespace TADS2 {
|
||||
|
||||
/* forward decls */
|
||||
struct runcxdef;
|
||||
|
||||
/**
|
||||
* Text i/o context
|
||||
*/
|
||||
struct tiocxdef {
|
||||
errcxdef *tiocxerr; /* error handling context */
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the output formatter subsystem. This must be called once
|
||||
* at startup.
|
||||
*/
|
||||
void out_init();
|
||||
|
||||
|
||||
/* redirect all tioxxx routines to TADS v1.x outxxx equivalents */
|
||||
#define tioflushn(ctx, nl) outflushn(nl)
|
||||
#define tioflush(ctx) outflush()
|
||||
#define tioblank(ctx) outblank()
|
||||
#define tioreset(ctx) outreset()
|
||||
#define tiogets(ctx, prompt, str, siz) getstring(prompt, str, siz)
|
||||
#define tioputs(ctx, str) outformat(str)
|
||||
#define tioputslen(ctx, str, len) outformatlen(str, len)
|
||||
#define tiocaps(ctx) outcaps()
|
||||
#define tionocaps(ctx) outnocaps()
|
||||
#define tioshow(ctx) outshow()
|
||||
#define tiohide(ctx) outhide()
|
||||
#define tioscore(ctx, s1, s2) os_score(s1, s2)
|
||||
#define tiostrsc(ctx, s) os_strsc(s)
|
||||
|
||||
/* set up format strings in output subsystem */
|
||||
void tiosetfmt(tiocxdef *ctx, runcxdef *rctx, uchar *fmtbase,
|
||||
uint fmtlen);
|
||||
|
||||
/* tell tio subsystem the current actor */
|
||||
void tiosetactor(tiocxdef *ctx, objnum actor);
|
||||
|
||||
/* get the current tio subsystem actor */
|
||||
objnum tiogetactor(tiocxdef *ctx);
|
||||
|
||||
/* turn output capture on/off */
|
||||
void tiocapture(tiocxdef *tioctx, mcmcxdef *memctx, int flag);
|
||||
|
||||
/* get the capture object handle */
|
||||
mcmon tiogetcapture(tiocxdef *ctx);
|
||||
|
||||
/* get the amount of text captured */
|
||||
uint tiocapturesize(tiocxdef *ctx);
|
||||
|
||||
/* format a length-prefixed (runtime-style) string to the display */
|
||||
void outfmt(tiocxdef *ctx, uchar *txt);
|
||||
|
||||
/* format a null-terminated (C-style) string to the display */
|
||||
int outformat(const char *s);
|
||||
|
||||
/* format a counted-length string, which may not be null-terminated */
|
||||
int outformatlen(const char *s, uint len);
|
||||
|
||||
/* flush output, with specified newline mode */
|
||||
void outflushn(int nl);
|
||||
|
||||
/* flush output */
|
||||
void outflush(void);
|
||||
|
||||
/* reset output state */
|
||||
void outreset(void);
|
||||
|
||||
/*
|
||||
* Get a string from the keyboard. Returns non-zero if an error occurs
|
||||
* (in particular, if no more input is available from the keyboard),
|
||||
* zero on success.
|
||||
*/
|
||||
int getstring(const char *prompt, char *buf, int bufl);
|
||||
|
||||
/* set capitalize-next-character mode on/off */
|
||||
void outcaps(void);
|
||||
void outnocaps(void);
|
||||
|
||||
/* open/close output log file */
|
||||
int tiologopn(tiocxdef *ctx, char *fn);
|
||||
int tiologcls(tiocxdef *ctx);
|
||||
|
||||
/*
|
||||
* Write text explicitly to the log file. This can be used to add
|
||||
* special text (such as prompt text) that would normally be suppressed
|
||||
* from the log file. When more mode is turned off, we don't
|
||||
* automatically copy text to the log file; any text that the caller
|
||||
* knows should be in the log file during times when more mode is turned
|
||||
* off can be explicitly added with this function.
|
||||
*
|
||||
* If nl is true, we'll add a newline at the end of this text. The
|
||||
* caller should not include any newlines in the text being displayed
|
||||
* here.
|
||||
*/
|
||||
void out_logfile_print(const char *txt, int nl);
|
||||
|
||||
|
||||
/*
|
||||
* Check output status. Indicate whether output is currently hidden,
|
||||
* and whether any hidden output has occurred.
|
||||
*/
|
||||
void outstat(int *hidden, int *output_occurred);
|
||||
|
||||
/* hide/show output */
|
||||
void outhide(void);
|
||||
int outshow(void);
|
||||
|
||||
/* set the flag to indicate that output has occurred */
|
||||
void outsethidden(void);
|
||||
|
||||
/* write a blank line */
|
||||
void outblank(void);
|
||||
|
||||
/* start/end watchpoint evaluation */
|
||||
void outwx(int flag);
|
||||
|
||||
/* clear all captured output */
|
||||
void tioclrcapture(tiocxdef *tioctx);
|
||||
|
||||
/*
|
||||
* clear captured output back to a given point -- this can be used to
|
||||
* remove captured output in an inner capture from an enclosing capture
|
||||
*/
|
||||
void tiopopcapture(tiocxdef *tioctx, uint orig_size);
|
||||
|
||||
/* turn MORE mode on or off */
|
||||
int setmore(int state);
|
||||
|
||||
/* explicitly activate the "MORE" prompt */
|
||||
void out_more_prompt();
|
||||
|
||||
/*
|
||||
* QA controller functions
|
||||
*/
|
||||
int qasopn(char *scrnam, int quiet);
|
||||
void qasclose(void);
|
||||
char *qasgets(char *buf, int bufl);
|
||||
|
||||
/*
|
||||
* Set an HTML entity expansion. This is called during initialization
|
||||
* when we read a character mapping table that includes HTML entity
|
||||
* expansions. The HTML run-time uses its own expansion mechanism, so
|
||||
* it will ignore this information. The standard character-mode TADS
|
||||
* run-time, however, uses this information to map HTML entities to the
|
||||
* local character set.
|
||||
*/
|
||||
void tio_set_html_expansion(unsigned int html_char_val,
|
||||
const char *expansion, size_t expansion_len);
|
||||
|
||||
/* check for HTML mode - returns true if an "\H+" sequence is active */
|
||||
int tio_is_html_mode();
|
||||
|
||||
/* set the user output filter function */
|
||||
void out_set_filter(objnum filter_fn);
|
||||
|
||||
/* set the double-space mode */
|
||||
void out_set_doublespace(int dbl);
|
||||
|
||||
/*
|
||||
* Ask for a filename, using a system-defined dialog (via os_askfile) if
|
||||
* possible. Uses the same interface as os_askfile(), which we will
|
||||
* call directly for graphical implementations. We'll use formatted
|
||||
* text for text-only implementations.
|
||||
*/
|
||||
int tio_askfile(const char *prompt, char *reply, int replen, int prompt_type, os_filetype_t file_type);
|
||||
|
||||
/*
|
||||
* Display a dialog, using a system-defined dialog (via os_input_dialog)
|
||||
* if possible. Uses the same interface as os_input_dialog(), which we
|
||||
* will call directly for graphical implementations. We'll use
|
||||
* formatted text for text-only implementations.
|
||||
*/
|
||||
int tio_input_dialog(int icon_id, const char *prompt, int standard_button_set,
|
||||
const char **buttons, int button_count,
|
||||
int default_index, int cancel_index);
|
||||
|
||||
|
||||
} // End of namespace TADS2
|
||||
} // End of namespace TADS
|
||||
} // End of namespace Glk
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user