You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
4.0 KiB
C
107 lines
4.0 KiB
C
/* Public Domain Curses */
|
|
|
|
/* $Id: pdcwin.h,v 1.6 2008/07/13 06:36:32 wmcbrine Exp $ */
|
|
|
|
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
|
|
# define _CRT_SECURE_NO_DEPRECATE 1 /* kill nonsense warnings */
|
|
#endif
|
|
|
|
#if defined( PDC_FORCE_UTF8) && !defined( PDC_WIDE)
|
|
#define PDC_WIDE
|
|
#endif
|
|
|
|
#ifdef PDC_WIDE
|
|
#if !defined( UNICODE)
|
|
# define UNICODE
|
|
#endif
|
|
#if !defined( _UNICODE)
|
|
# define _UNICODE
|
|
#endif
|
|
#endif
|
|
|
|
#define INCL_PM
|
|
#define INCL_DOS
|
|
#include <os2.h>
|
|
|
|
#if defined( GS_8BIT_INDICES) && defined( PDC_WIDE)
|
|
/* We only need the 'fallback font' for the wide-char version, */
|
|
/* and it'll only work in Win2000 or later (earlier versions */
|
|
/* lack the necessary GetFontUnicodeRanges() function.) Comment */
|
|
/* out the following line if you're dealing with a really old */
|
|
/* system, or just don't want to use a fallback font. */
|
|
#define USE_FALLBACK_FONT
|
|
#endif
|
|
|
|
/* Windows.h will #define MOUSE_MOVED to 0x1, which is what the
|
|
Windows API expects. In Curses, MOUSE_MOVED is a macro indicating
|
|
whether the mouse has moved, so we'd get a compiler warning that
|
|
we're re-defining MOUSE_MOVED. That warning may be a Good Thing in
|
|
your software, letting you know: "Be careful; in a Curses program,
|
|
MOUSE_MOVED won't have the same meaning it does in a 'real' Windows
|
|
program."
|
|
|
|
But in building WinGUI itself, we're expecting the Curses
|
|
meaning for MOUSE_MOVED, and the compiler warning would just be
|
|
a nuisance. So we'll #undefine MOUSE_MOVED before getting to the
|
|
Curses definition : */
|
|
|
|
#undef MOUSE_MOVED
|
|
#include <curspriv.h>
|
|
|
|
extern int PDC_get_buffer_rows(void);
|
|
|
|
/* The following probably ought to go into 'curses.h' at some point. */
|
|
/* Or at least, not be here; this is a temporary place for them. */
|
|
|
|
/* WinGUI has some drastically extended cursor possibilities. The
|
|
following #defines can be used with curs_set(). For all other flavors
|
|
of PDCurses, only the invisible, "normal", and "intense" cursor
|
|
states will be recognized. In Win32, caret, half-block, central
|
|
block, cross, and outlined block cursors are available.
|
|
|
|
By default, all such cursors will blink. However, in WinGUI,
|
|
the input value to curs_set() is treated as a two-byte value, with
|
|
the cursor blinking between those two states. For example,
|
|
curs_set( 0x0102) would blink between a "normal" (underline) cursor and
|
|
an "intense" (full-block) cursor. One can see that this behavior is
|
|
backward-compatible; for example, curs_set( 1) would blink between a
|
|
"normal" underline cursor and an invisible cursor. (But curs_set( 0x0101)
|
|
would result in a non-blinking underline cursor.) Note that one can use
|
|
the PDC_CURSOR macro for this, as in...
|
|
|
|
curs_set( PDC_CURSOR( PDC_CURSOR_OUTLINE, PDC_CURSOR_INTENSE)); */
|
|
|
|
#define PDC_CURSOR_INVISIBLE 0x00
|
|
#define PDC_CURSOR_NORMAL 0x01
|
|
#define PDC_CURSOR_INTENSE 0x02
|
|
#define PDC_CURSOR_OUTLINE 0x03
|
|
#define PDC_CURSOR_CARET 0x04
|
|
#define PDC_CURSOR_HALF_BLOCK 0x05
|
|
#define PDC_CURSOR_CENTRAL_BLOCK 0x06
|
|
#define PDC_CURSOR_CROSS 0x07
|
|
#define PDC_CURSOR_OUTLINE_BLOCK 0x08
|
|
|
|
#define PDC_CURSOR( A, B) ((A)<<8 | (B))
|
|
#define PDC_CURSOR_IS_BLINKING \
|
|
((SP->visibility >> 8) != (SP->visibility & 0xff))
|
|
|
|
#define KEY_QUEUE_SIZE 30
|
|
|
|
extern int PDC_key_queue_low, PDC_key_queue_high;
|
|
extern int PDC_key_queue[KEY_QUEUE_SIZE];
|
|
|
|
extern int PDC_n_rows, PDC_n_cols;
|
|
extern int PDC_cxChar, PDC_cyChar;
|
|
extern HWND PDC_hWnd;
|
|
extern bool PDC_bDone;
|
|
|
|
extern char PDC_font_name[FACESIZE];
|
|
extern int PDC_font_size;
|
|
|
|
extern void PDC_set_font_box(HWND hwnd);
|
|
extern void PDC_setup_font(HPS hps);
|
|
extern void PDC_screen_to_pixel(int sx, int sy, RECTL *rect);
|
|
extern void PDC_pixel_to_screen(int px, int py, int *sx, int *sy);
|
|
extern int PDC_choose_a_new_font(char font[FACESIZE], int *fontsize);
|
|
extern int PDC_get_mouse_event_from_queue( void);
|