move some left-over outdated files from old Mac
This commit is contained in:
345
outdated/include/mactty.h
Normal file
345
outdated/include/mactty.h
Normal file
@@ -0,0 +1,345 @@
|
||||
/* NetHack 3.7 mactty.h $NHDT-Date: 1596498543 2020/08/03 23:49:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $ */
|
||||
/* Copyright (c) Jon W{tte 1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/*
|
||||
* This header is the supported external interface for the "tty" window
|
||||
* package. This package sports care-free handling of "dumb" tty windows
|
||||
* (preferably using monospaced fonts) - it does NOT remember the strings
|
||||
* sent to it; rather, it uses an offscreen bitmap.
|
||||
*
|
||||
* For best performance, make sure it is aligned on a 32-pixel boundary
|
||||
* (or at least a 16-pixel one) in black & white. For 24bit color,
|
||||
* alignment doesn't matter, and for 8-bit color, alignment to every
|
||||
* fourth pixel is most efficient.
|
||||
*
|
||||
* (c) Copyright 1993 Jon W{tte
|
||||
*/
|
||||
|
||||
/*
|
||||
* You should really not poke in the structures used by the tty window.
|
||||
* However, since it uses the wRefCon of windows (by calling GetWRefCon
|
||||
* and SetWRefCon) you lose that possibility. If you still want to store
|
||||
* information about a window, the FIRST location _pointed to_ by the
|
||||
* wRefCon will be a void * that you can use for whatever reasons. Don't
|
||||
* take the address of this variable and expect it to stay the same
|
||||
* across calls to the tty window.
|
||||
*
|
||||
* void * my_config_ptr = * ( void * * ) GetWRefCon ( tty_window ) ;
|
||||
*/
|
||||
|
||||
/*
|
||||
* The library uses the window's port temporarily through SetPortBits;
|
||||
* that means you shouldn't do any funky things to the clipping region
|
||||
* etc. Actually, you shouldn't even resize the window, as that will clip
|
||||
* new drawing.
|
||||
*
|
||||
* Also, if you use this library under Pascal, remember that the string
|
||||
* passed to add_tty_string() is a "C" style string with NO length byte,
|
||||
* and a terminating zero byte at the end instead.
|
||||
*/
|
||||
|
||||
#ifndef _H_tty_public
|
||||
#define _H_tty_public
|
||||
#undef red /* undef internal color const strings from decl */
|
||||
#undef green
|
||||
#undef blue
|
||||
#if 1 /*!TARGET_API_MAC_CARBON*/
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Error code returned when it's probably our fault, or
|
||||
* bad parameters.
|
||||
*/
|
||||
#define general_failure 1
|
||||
|
||||
/*
|
||||
* Base resource id's for window types
|
||||
*/
|
||||
#define WIN_BASE_RES 128
|
||||
#define WIN_BASE_KIND 128
|
||||
|
||||
/*
|
||||
* Commonly used characters
|
||||
*/
|
||||
#define CHAR_ENTER ((char) 3)
|
||||
#define CHAR_BELL ((char) 7)
|
||||
#define CHAR_BS ((char) 8)
|
||||
#define CHAR_LF ((char) 10)
|
||||
#define CHAR_CR ((char) 13)
|
||||
#define CHAR_ESC ((char) 27)
|
||||
#define CHAR_BLANK ((char) 32)
|
||||
#define CHAR_DELETE ((char) 127)
|
||||
|
||||
extern char game_active; /* flag to window rendering routines
|
||||
not to use ppat */
|
||||
/*
|
||||
* If you want some fancy operations that not a normal TTY device normally
|
||||
* supports, use EXTENDED_SUPPORT. For frames, area erases and area scrolls,
|
||||
* plus bitmap graphics - RESOLUTION DEPENDENT, be sure to call
|
||||
* get_tty_metrics and use those limits.
|
||||
*/
|
||||
#define EXTENDED_SUPPORT 0
|
||||
/*
|
||||
* if you print a lot of single characters, accumulating each one in a
|
||||
* clipping region will take too much time. Instead, define this, which
|
||||
* will clip in rects.
|
||||
*/
|
||||
#define CLIP_RECT_ONLY 1
|
||||
|
||||
typedef enum tty_attrib {
|
||||
|
||||
/*
|
||||
* Flags relating to the general functioning of the window.
|
||||
* These flags are passed at create_tty time, and changing them
|
||||
* later will clear the screen.
|
||||
*/
|
||||
TTY_ATTRIB_FLAGS,
|
||||
/*
|
||||
* When using proportional fonts, this will place each character
|
||||
* separately, ensuring aligned columns (but looking ugly and taking
|
||||
* time)
|
||||
*/
|
||||
#define TA_MOVE_EACH_CHAR 1L
|
||||
/*
|
||||
* This means draw each change as it occurs instead of collecting the area
|
||||
* and draw it all at once at update_tty() - slower, but more reliable.
|
||||
*/
|
||||
#define TA_ALWAYS_REFRESH 2L
|
||||
/*
|
||||
* When reaching the right end, we either just stop drawing, or wrap to the
|
||||
* next line.
|
||||
*/
|
||||
#define TA_WRAP_AROUND 4L
|
||||
/*
|
||||
* Overstrike means that characters are added on top of each other; i e don't
|
||||
* clear the letter beneath. This is faster, using srcOr under QuickDraw
|
||||
*/
|
||||
#define TA_OVERSTRIKE 8L
|
||||
/*
|
||||
* We may want the window not to scroll when we reach the end line,
|
||||
* but stop drawing instead.
|
||||
*/
|
||||
#define TA_INHIBIT_VERT_SCROLL 16L
|
||||
|
||||
/*
|
||||
* Foreground and background colors. These only affect characters
|
||||
* drawn by subsequent calls; not what's already there (but it does
|
||||
* affect clears)
|
||||
* On b/w screens these do nothing.
|
||||
*/
|
||||
TTY_ATTRIB_FOREGROUND,
|
||||
TTY_ATTRIB_BACKGROUND,
|
||||
#define TA_RGB_TO_TTY(r) \
|
||||
((((long) ((r).red >> 8) & 0xff) << 16) \
|
||||
+ (((long) ((r).green >> 8) & 0xff) << 8) \
|
||||
+ ((long) ((r).blue >> 8) & 0xff))
|
||||
|
||||
/*
|
||||
* Attributes relating to the cursor, and character set mappings
|
||||
*/
|
||||
TTY_ATTRIB_CURSOR,
|
||||
/*
|
||||
* Blinking cursor is more noticeable when it's idle
|
||||
*/
|
||||
#define TA_BLINKING_CURSOR 1L
|
||||
/*
|
||||
* When handling input, do we echo characters as they are typed?
|
||||
*/
|
||||
#define TA_ECHO_INPUT 2L
|
||||
/*
|
||||
* Do we return each character code separately, or map delete etc? Note
|
||||
* that non-raw input means getchar won't return anything until the user
|
||||
* has typed a return.
|
||||
*/
|
||||
#define TA_RAW_INPUT 4L
|
||||
/*
|
||||
* Do we print every character as it is (including BS, NL and CR!) or do
|
||||
* do we interpret characters such as NL, BS and CR?
|
||||
*/
|
||||
#define TA_RAW_OUTPUT 8L
|
||||
/*
|
||||
* When getting a NL, do we also move to the left?
|
||||
*/
|
||||
#define TA_NL_ADD_CR 16L
|
||||
/*
|
||||
* When getting a CR, do we also move down?
|
||||
*/
|
||||
#define TA_CR_ADD_NL 32L
|
||||
/*
|
||||
* Wait for input or return what we've got?
|
||||
*/
|
||||
#define TA_NONBLOCKING_IO 64L
|
||||
|
||||
/*
|
||||
* Use this macro to cast a function pointer to a tty attribute; this will
|
||||
* help portability to systems where a function pointer doesn't fit in a long
|
||||
*/
|
||||
#define TA_ATTRIB_FUNC(x) ((long) (x))
|
||||
|
||||
/*
|
||||
* This symbolic constant is used to check the number of attributes
|
||||
*/
|
||||
TTY_NUMBER_ATTRIBUTES
|
||||
|
||||
} tty_attrib;
|
||||
|
||||
/*
|
||||
* Character returned by end-of-file condition
|
||||
*/
|
||||
#define TTY_EOF -1
|
||||
|
||||
/*
|
||||
* Create the window according to a resource WIND template.
|
||||
* The window pointer pointed to by window should be NULL to
|
||||
* allocate the window record dynamically, or point to a
|
||||
* WindowRecord structure already allocated.
|
||||
*
|
||||
* Passing in_color means you have to be sure there's color support;
|
||||
* on the Mac, this means 32bit QuickDraw present, else it will
|
||||
* crash. Not passing in_color means everything's rendered in
|
||||
* black & white.
|
||||
*/
|
||||
extern short create_tty(WindowPtr *window, short resource_id,
|
||||
Boolean in_color);
|
||||
|
||||
/*
|
||||
* Use init_tty_name or init_tty_number to initialize a window
|
||||
* once allocated by create_tty. Size parameters are in characters.
|
||||
*/
|
||||
|
||||
extern short init_tty_number(WindowPtr window, short font_number,
|
||||
short font_size, short x_size, short y_size);
|
||||
|
||||
/*
|
||||
* Close and deallocate a window and its data
|
||||
*/
|
||||
extern short destroy_tty(WindowPtr window);
|
||||
|
||||
/*
|
||||
* Change the font and font size used in the window for drawing after
|
||||
* the calls are made. To change the coordinate system, be sure to call
|
||||
* force_tty_coordinate_system_recalc() - else it may look strange if
|
||||
* the new font doesn't match the old one.
|
||||
*/
|
||||
extern short set_tty_font_name(winid window_type, char *name);
|
||||
extern short force_tty_coordinate_system_recalc(WindowPtr window);
|
||||
|
||||
/*
|
||||
* Getting some metrics about the tty and its drawing.
|
||||
*/
|
||||
extern short get_tty_metrics(WindowPtr window, short *x_size, short *y_size,
|
||||
short *x_size_pixels, short *y_size_pixels,
|
||||
short *font_number, short *font_size,
|
||||
short *char_width, short *row_height);
|
||||
|
||||
/*
|
||||
* The basic move cursor function. 0,0 is topleft.
|
||||
*/
|
||||
extern short move_tty_cursor(WindowPtr window, short x_pos, short y_pos);
|
||||
|
||||
/*
|
||||
* Flush all changes done to a tty to the screen (see TA_ALWAYS_UPDATE above)
|
||||
*/
|
||||
extern short update_tty(WindowPtr window);
|
||||
|
||||
/*
|
||||
* Add a character to the tty and update the cursor position
|
||||
*/
|
||||
extern short add_tty_char(WindowPtr window, short character);
|
||||
|
||||
/*
|
||||
* Add a string of characters to the tty and update the cursor
|
||||
* position. The string is 0-terminated!
|
||||
*/
|
||||
extern short add_tty_string(WindowPtr window, const char *string);
|
||||
|
||||
/*
|
||||
* Change or read an attribute of the tty. Note that some attribute changes
|
||||
* may clear the screen. See the above enum and defines for values.
|
||||
* Attributes can be both function pointers and special flag values.
|
||||
*/
|
||||
extern short get_tty_attrib(WindowPtr window, tty_attrib attrib, long *value);
|
||||
extern short set_tty_attrib(WindowPtr window, tty_attrib attrib, long value);
|
||||
|
||||
/*
|
||||
* Scroll the actual TTY image, in characters, positive means up/left
|
||||
* scroll_tty ( my_tty , 0 , 1 ) means a linefeed. Is always carried out
|
||||
* directly, regardless of the wait-update setting. Does updates before
|
||||
* scrolling.
|
||||
*/
|
||||
extern short scroll_tty(WindowPtr window, short delta_x, short delta_y);
|
||||
|
||||
/*
|
||||
* Erase the offscreen bitmap and move the cursor to 0,0. Re-init some window
|
||||
* values (font etc) Is always carried out directly on-screen, regardless of
|
||||
* the wait-for-update setting. Clears update area.
|
||||
*/
|
||||
extern short clear_tty(WindowPtr window);
|
||||
|
||||
/*
|
||||
* Call this routine with a window (always _mt_window) and a time (usually
|
||||
* from most recent event) to determine if cursor in window should be blinked
|
||||
*/
|
||||
extern short blink_cursor(WindowPtr window, long when);
|
||||
|
||||
/*
|
||||
* For screen dumps, open the printer port and call this function. Can be used
|
||||
* for clipboard as well (only for a PICT, though; this library doesn't
|
||||
* concern
|
||||
* itself with characters, just bitmaps)
|
||||
*/
|
||||
extern short image_tty(EventRecord *theEvent, WindowPtr window);
|
||||
|
||||
/*
|
||||
* For erasing just an area of characters
|
||||
*/
|
||||
extern short clear_tty_window(WindowPtr window, short from_row,
|
||||
short from_col, short to_row, short to_col);
|
||||
|
||||
/*
|
||||
* get and set the invalid region of the main window
|
||||
*/
|
||||
extern short get_invalid_region(WindowPtr window, Rect *inval_rect);
|
||||
extern short set_invalid_region(WindowPtr window, Rect *inval_rect);
|
||||
|
||||
|
||||
#if EXTENDED_SUPPORT
|
||||
|
||||
/*
|
||||
* Various versions of delete character/s, insert line/s etc can be handled by
|
||||
* this general-purpose function. Negative num_ means delete, positive means
|
||||
* insert, and you can never be sure which of row and col operations come
|
||||
* first
|
||||
* if you specify both...
|
||||
*/
|
||||
extern short mangle_tty_rows_columns(WindowPtr window, short from_row,
|
||||
short num_rows, short from_col,
|
||||
short num_cols);
|
||||
|
||||
/*
|
||||
* For framing an area without using grahpics characters.
|
||||
* Note that the given limits are those used for framing, you should not
|
||||
* draw in them. frame_fatness should typically be 1-5, and may be clipped
|
||||
* if it is too large.
|
||||
*/
|
||||
extern short frame_tty_window(WindowPtr window, short from_row,
|
||||
short from_col, short to_row, short to_col,
|
||||
short frame_fatness);
|
||||
|
||||
/*
|
||||
* For inverting specific characters after the fact. May look funny in color.
|
||||
*/
|
||||
extern short invert_tty_window(WindowPtr window, short from_row,
|
||||
short from_col, short to_row, short to_col);
|
||||
|
||||
/*
|
||||
* For drawing lines on the tty - VERY DEVICE DEPENDENT. Use get_tty_metrics.
|
||||
*/
|
||||
extern short draw_tty_line(WindowPtr window, short from_x, short from_y,
|
||||
short to_x, short to_y);
|
||||
|
||||
#endif /* EXTENDED_SUPPORT */
|
||||
|
||||
#endif /* _H_tty_public */
|
||||
Reference in New Issue
Block a user