* include/hbapigt.h
! removed dummy declaration for hb_inkeyExit()
* include/hbexprop.h
! removed dummy declarations for hb_compExprNewCodeblockExpr(),
hb_compExprNewAssign() and hb_compExprEqual()
; marked compiler only hb_compExpr*() functions
* include/hbgtcore.h
! removed dummy declaration for hb_gt_gcMark()
* include/hbxvm.h
! removed dummy declarations for hb_xvmPushBlockLarge() and
hb_xvmMacroPushArg()
* src/harbour.def
+ added hb_iswinbuild()
+ added exported PCRE variable pcre_stack_guard
+ added exported ZLIB functions: gzfread(), gzwrite(),
adler32_z(), crc32_z(), crc32_combine_gen(),
crc32_combine_gen64(), crc32_combine_op(),
uncompress2(), deflateGetDictionary(),
inflateValidate(), inflateCodesUsed()
350 lines
19 KiB
C
350 lines
19 KiB
C
/*
|
|
* Header file for the Terminal API
|
|
*
|
|
* Copyright 1999 {list of individual authors and e-mail addresses}
|
|
* Copyright 1999 David G. Holm <dholm@jsd-llc.com> (Keyboard related declarations, Cursor declarations)
|
|
* Copyright 1999-2001 Viktor Szakats (vszakats.net/harbour) (Mouse related declarations, Undocumented GT API declarations)
|
|
* Copyright 2005 Przemyslaw Czerpak < druzus /at/ priv.onet.pl > (Internal GT code reimplemented in different way)
|
|
*
|
|
* 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 2, 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; see the file LICENSE.txt. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301 USA (or visit https://www.gnu.org/licenses/).
|
|
*
|
|
* As a special exception, the Harbour Project gives permission for
|
|
* additional uses of the text contained in its release of Harbour.
|
|
*
|
|
* The exception is that, if you link the Harbour libraries with other
|
|
* files to produce an executable, this does not by itself cause the
|
|
* resulting executable to be covered by the GNU General Public License.
|
|
* Your use of that executable is in no way restricted on account of
|
|
* linking the Harbour library code into it.
|
|
*
|
|
* This exception does not however invalidate any other reasons why
|
|
* the executable file might be covered by the GNU General Public License.
|
|
*
|
|
* This exception applies only to the code released by the Harbour
|
|
* Project under the name Harbour. If you copy code from other
|
|
* Harbour Project or Free Software Foundation releases into a copy of
|
|
* Harbour, as the General Public License permits, the exception does
|
|
* not apply to the code that you add in this way. To avoid misleading
|
|
* anyone as to the status of such modified files, you must delete
|
|
* this exception notice from them.
|
|
*
|
|
* If you write modifications of your own for Harbour, it is your choice
|
|
* whether to permit this exception to apply to your modifications.
|
|
* If you do not wish that, delete this exception notice.
|
|
*
|
|
*/
|
|
|
|
#ifndef HB_APIGT_H_
|
|
#define HB_APIGT_H_
|
|
|
|
#include "hbapi.h"
|
|
#include "hbapicdp.h"
|
|
|
|
HB_EXTERN_BEGIN
|
|
|
|
#include "inkey.ch"
|
|
#include "setcurs.ch"
|
|
#include "hbgtinfo.ch"
|
|
|
|
/* maximum length of color string */
|
|
#define HB_CLRSTR_LEN 64
|
|
|
|
/* attributes for color strings, these are the same as the ones in color.ch
|
|
but prefixed with HB_ to avoid collision. */
|
|
#define HB_CLR_STANDARD 0
|
|
#define HB_CLR_ENHANCED 1
|
|
#define HB_CLR_BORDER 2
|
|
#define HB_CLR_BACKGROUND 3
|
|
#define HB_CLR_UNSELECTED 4
|
|
#define HB_CLR_MAX_ HB_CLR_UNSELECTED
|
|
|
|
/* extended attributes used by core screen buffer */
|
|
#define HB_GT_ATTR_BOX 0x01
|
|
#define HB_GT_ATTR_SHADOW 0x02
|
|
#define HB_GT_ATTR_UNDEF 0x40
|
|
#define HB_GT_ATTR_REFRESH 0x80
|
|
|
|
/* strings for borders (same as box.ch, but defined for use by C) */
|
|
#define _B_SINGLE "\xDA\xC4\xBF\xB3\xD9\xC4\xC0\xB3" /* "┌─┐│┘─└│" */
|
|
#define _B_DOUBLE "\xC9\xCD\xBB\xBA\xBC\xCD\xC8\xBA" /* "╔═╗║╝═╚║" */
|
|
#define _B_SINGLE_DOUBLE "\xD6\xC4\xB7\xBA\xBD\xC4\xD3\xBA" /* "╓─╖║╜─╙║" */
|
|
#define _B_DOUBLE_SINGLE "\xD5\xCD\xB8\xB3\xBE\xCD\xD4\xB3" /* "╒═╕│╛═╘│" */
|
|
#define HB_B_SINGLE_V '\xB3' /* '│' */
|
|
#define HB_B_SINGLE_H '\xC4' /* '─' */
|
|
#define HB_B_DOUBLE_V '\xBA' /* '║' */
|
|
#define HB_B_DOUBLE_H '\xCD' /* '═' */
|
|
|
|
#define HB_B_SINGLE_W { 0x250C, 0x2500, 0x2510, 0x2502, 0x2518, 0x2500, 0x2514, 0x2502, 0x0000 }
|
|
#define HB_B_DOUBLE_W { 0x2554, 0x2550, 0x2557, 0x2551, 0x255D, 0x2550, 0x255A, 0x2551, 0x0000 }
|
|
#define HB_B_SINGLE_DOUBLE_W { 0x2553, 0x2500, 0x2556, 0x2551, 0x255C, 0x2500, 0x2559, 0x2551, 0x0000 }
|
|
#define HB_B_DOUBLE_SINGLE_W { 0x2552, 0x2550, 0x2555, 0x2502, 0x255B, 0x2550, 0x2558, 0x2502, 0x0000 }
|
|
#define HB_B_HALF_FULL_W { 0x2588, 0x2580, 0x2588, 0x2588, 0x2588, 0x2584, 0x2588, 0x2588, 0x0000 }
|
|
#define HB_B_HALF_W { 0x2590, 0x2580, 0x258C, 0x258C, 0x258C, 0x2584, 0x2590, 0x2590, 0x0000 }
|
|
#define HB_B_FULL_HALF_W { 0x2590, 0x2588, 0x258C, 0x258C, 0x258C, 0x2588, 0x2590, 0x2590, 0x0000 }
|
|
#define HB_B_FULL_W { 0x2588, 0x2588, 0x2588, 0x2588, 0x2588, 0x2588, 0x2588, 0x2588, 0x0000 }
|
|
|
|
|
|
#if defined( HB_COMPAT_C53 ) && ! defined( HB_CLP_STRICT )
|
|
# define HB_DEFAULT_INKEY_BUFSIZE 50
|
|
#else
|
|
# define HB_DEFAULT_INKEY_BUFSIZE 15
|
|
#endif
|
|
|
|
|
|
#define HB_STDIN_HANDLE 0
|
|
#define HB_STDOUT_HANDLE 1
|
|
#define HB_STDERR_HANDLE 2
|
|
|
|
|
|
/* structure used to pass/receive parameters in hb_gtInfo() */
|
|
|
|
typedef struct
|
|
{
|
|
PHB_ITEM pNewVal;
|
|
PHB_ITEM pResult;
|
|
PHB_ITEM pNewVal2;
|
|
} HB_GT_INFO, * PHB_GT_INFO;
|
|
|
|
/* Public interface. These should never change, only be added to. */
|
|
|
|
extern void hb_gtIsGtRef( void * );
|
|
|
|
extern HB_EXPORT void hb_gtStartupInit( void );
|
|
extern HB_EXPORT void hb_gtSetDefault( const char * szGtName );
|
|
extern HB_EXPORT void * hb_gtAlloc( void * hGT );
|
|
extern HB_EXPORT void hb_gtRelease( void * hGT );
|
|
extern HB_EXPORT void hb_gtAttach( void * hGT );
|
|
extern HB_EXPORT void * hb_gtSwap( void * hGT );
|
|
extern HB_EXPORT HB_BOOL hb_gtReload( const char * szGtName,
|
|
HB_FHANDLE hFilenoStdin,
|
|
HB_FHANDLE hFilenoStdout,
|
|
HB_FHANDLE hFilenoStderr );
|
|
extern HB_EXPORT void * hb_gtCreate( const char * szGtName,
|
|
HB_FHANDLE hFilenoStdin,
|
|
HB_FHANDLE hFilenoStdout,
|
|
HB_FHANDLE hFilenoStderr );
|
|
|
|
extern HB_EXPORT HB_ERRCODE hb_gtInit( HB_FHANDLE hFilenoStdin, HB_FHANDLE hFilenoStdout, HB_FHANDLE hFilenoStderr );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtExit( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtLock( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtUnlock( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtBox( int iTop, int iLeft, int iBottom, int iRight, const char * szFrame );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtBoxD( int iTop, int iLeft, int iBottom, int iRight );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtBoxS( int iTop, int iLeft, int iBottom, int iRight );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtDrawBox( int iTop, int iLeft, int iBottom, int iRight, const char * szFrame, int iColor );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtColorSelect( int iColorIndex );
|
|
extern HB_EXPORT int hb_gtColorToN( const char * szColorString );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtColorsToString( int * pColors, int iColorCount, char * pszColorString, int iBufSize );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtDispBegin( void );
|
|
extern HB_EXPORT int hb_gtDispCount( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtDispEnd( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtDrawShadow( int iTop, int iLeft, int iBottom, int iRight, int iColor );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetBlink( HB_BOOL * pbBlink );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetColorStr( char * pszColorString );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetCursor( int * piCursorShape );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetPos( int * piRow, int * piCol );
|
|
extern HB_EXPORT HB_BOOL hb_gtIsColor( void );
|
|
extern HB_EXPORT int hb_gtMaxCol( void );
|
|
extern HB_EXPORT int hb_gtMaxRow( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtPostExt( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtPreExt( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSuspend( void ); /* prepare the terminal for shell output */
|
|
extern HB_EXPORT HB_ERRCODE hb_gtResume( void ); /* resume the terminal after the shell output */
|
|
extern HB_EXPORT int hb_gtReadKey( int iEventMask );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtRectSize( int iTop, int iLeft, int iBottom, int iRight, HB_SIZE * pnBuffSize );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtRepChar( int iRow, int iCol, HB_USHORT usChar, HB_SIZE nCount );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSave( int iTop, int iLeft, int iBottom, int iRight, void * pScrBuff );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtRest( int iTop, int iLeft, int iBottom, int iRight, const void * pScrBuff );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetChar( int iRow, int iCol, int * piColor, HB_BYTE * pbAttr, HB_USHORT * pusChar );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtPutChar( int iRow, int iCol, int iColor, HB_BYTE bAttr, HB_USHORT usChar );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtBeginWrite( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtEndWrite( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtScrDim( int * piHeight, int * piWidth );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtScroll( int iTop, int iLeft, int iBottom, int iRight, int iRows, int iCols );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtScrollUp( int iRows );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetAttribute( int iTop, int iLeft, int iBottom, int iRight, int iColor );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetBlink( HB_BOOL bBlink );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetColorStr( const char * pszColorString );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetCursor( int iCursorShape );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetMode( int iRows, int iCols );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetPos( int iRow, int iCol );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetSnowFlag( HB_BOOL bNoSnow );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtTone( double dFrequency, double dDuration );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtWrite( const char * szStr, HB_SIZE nLen );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtWriteAt( int iRow, int iCol, const char * szStr, HB_SIZE nLen );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtWriteCon( const char * szStr, HB_SIZE nLen );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtPutText( int iRow, int iCol, const char * szStr, HB_SIZE nLength, int iColor );
|
|
extern HB_EXPORT const char * hb_gtVersion( int iType );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtOutStd( const char * szStr, HB_SIZE nLen );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtOutErr( const char * szStr, HB_SIZE nLen );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetDispCP( const char * pszTermCDP, const char * pszHostCDP, HB_BOOL fBox );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetKeyCP( const char * pszTermCDP, const char * pszHostCDP );
|
|
extern HB_EXPORT PHB_CODEPAGE hb_gtHostCP( void );
|
|
extern HB_EXPORT PHB_CODEPAGE hb_gtBoxCP( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtInfo( int iType, PHB_GT_INFO pInfo );
|
|
extern HB_EXPORT int hb_gtAlert( PHB_ITEM pMessage, PHB_ITEM pOptions, int iClrNorm, int iClrHigh, double dDelay );
|
|
extern HB_EXPORT int hb_gtSetFlag( int iType, int iNewValue );
|
|
extern HB_EXPORT int hb_gtGetCurrColor( void );
|
|
extern HB_EXPORT int hb_gtGetClearColor( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetClearColor( int iColor );
|
|
extern HB_EXPORT HB_USHORT hb_gtGetClearChar( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetClearChar( HB_USHORT usChar );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetScrChar( int iRow, int iCol, int * piColor, HB_BYTE * pbAttr, HB_USHORT * pusChar );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtPutScrChar( int iRow, int iCol, int iColor, HB_BYTE bAttr, HB_USHORT usChar );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtFlush( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetPosEx( int * piRow, int * piCol );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, int iColor, int iChar, int iRows, int iCols );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtBoxEx( int iTop, int iLeft, int iBottom, int iRight, const char * szFrame, int iColor );
|
|
extern HB_EXPORT int hb_gtGfxPrimitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGfxText( int iTop, int iLeft, const char * szText, int iColor, int iSize, int iWidth );
|
|
|
|
extern HB_EXPORT HB_BOOL hb_mouseIsPresent( void );
|
|
extern HB_EXPORT HB_BOOL hb_mouseGetCursor( void );
|
|
extern HB_EXPORT void hb_mouseSetCursor( HB_BOOL bVisible );
|
|
extern HB_EXPORT int hb_mouseCol( void );
|
|
extern HB_EXPORT int hb_mouseRow( void );
|
|
extern HB_EXPORT void hb_mouseGetPos( int * piRow, int * piCol );
|
|
extern HB_EXPORT void hb_mouseSetPos( int iRow, int iCol );
|
|
extern HB_EXPORT void hb_mouseSetBounds( int iTop, int iLeft, int iBottom, int iRight );
|
|
extern HB_EXPORT void hb_mouseGetBounds( int * piTop, int * piLeft, int * piBottom, int * piRight );
|
|
extern HB_EXPORT int hb_mouseStorageSize( void );
|
|
extern HB_EXPORT void hb_mouseSaveState( void * pBuffer );
|
|
extern HB_EXPORT void hb_mouseRestoreState( const void * pBuffer );
|
|
extern HB_EXPORT int hb_mouseGetDoubleClickSpeed( void );
|
|
extern HB_EXPORT void hb_mouseSetDoubleClickSpeed( int iSpeed );
|
|
extern HB_EXPORT int hb_mouseCountButton( void );
|
|
extern HB_EXPORT HB_BOOL hb_mouseButtonState( int iButton );
|
|
extern HB_EXPORT HB_BOOL hb_mouseButtonPressed( int iButton, int * piRow, int * piCol );
|
|
extern HB_EXPORT HB_BOOL hb_mouseButtonReleased( int iButton, int * piRow, int * piCol );
|
|
extern HB_EXPORT int hb_mouseReadKey( int iEventMask );
|
|
|
|
typedef struct
|
|
{
|
|
int iTop;
|
|
int iLeft;
|
|
int iBottom;
|
|
int iRight;
|
|
} HB_GT_RECT;
|
|
typedef HB_GT_RECT * PHB_GT_RECT;
|
|
|
|
typedef struct
|
|
{
|
|
int iRow;
|
|
int iCol;
|
|
} HB_GT_CORD;
|
|
typedef HB_GT_CORD * PHB_GT_CORD;
|
|
|
|
/* Undocumented CA-Cl*pper 5.x GT API calls */
|
|
|
|
#define HB_GT_WND void
|
|
#define HB_GT_RGB void
|
|
#define HB_GT_SLR void
|
|
|
|
extern HB_EXPORT void hb_gtWCreate( HB_GT_RECT * rect, HB_GT_WND ** wnd );
|
|
extern HB_EXPORT void hb_gtWDestroy( HB_GT_WND * wnd );
|
|
extern HB_EXPORT HB_BOOL hb_gtWFlash( void );
|
|
extern HB_EXPORT void hb_gtWApp( HB_GT_WND ** wnd );
|
|
extern HB_EXPORT void hb_gtWCurrent( HB_GT_WND * wnd );
|
|
extern HB_EXPORT void hb_gtWPos( HB_GT_WND * wnd, HB_GT_RECT * rect );
|
|
extern HB_EXPORT HB_BOOL hb_gtWVis( HB_GT_WND * wnd, HB_USHORT uiStatus );
|
|
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSLR( HB_GT_SLR * pSLR ); /* System-Level Request */
|
|
extern HB_EXPORT HB_ERRCODE hb_gtModalRead( void * );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtFlushCursor( void );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetColor( HB_GT_RGB * color );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtGetColor( HB_GT_RGB * color );
|
|
extern HB_EXPORT HB_ERRCODE hb_gtSetBorder( HB_GT_RGB * color );
|
|
|
|
|
|
/* Keyboard related declarations */
|
|
|
|
#define HB_BREAK_FLAG 256 /* 256, because that's what DJGPP returns Ctrl+Break as.
|
|
Clipper has no key code 256, so it may as well be
|
|
used for all the Harbour builds that need it */
|
|
|
|
/* mouse buttons */
|
|
#define HB_MBUTTON_LEFT 0
|
|
#define HB_MBUTTON_RIGHT 1
|
|
#define HB_MBUTTON_MIDDLE 2
|
|
|
|
|
|
/* Harbour keyboard support functions */
|
|
extern HB_EXPORT int hb_inkey( HB_BOOL bWait, double dSeconds, int iEvenMask ); /* Wait for keyboard input */
|
|
extern HB_EXPORT void hb_inkeyPut( int ch ); /* Inserts an inkey code into the keyboard buffer */
|
|
extern HB_EXPORT void hb_inkeyIns( int ch ); /* Inserts an inkey code into the keyboard buffer */
|
|
extern HB_EXPORT int hb_inkeyLast( int iEvenMask ); /* Return the value of the last key that was extracted */
|
|
extern HB_EXPORT int hb_inkeyNext( int iEvenMask ); /* Return the next key without extracting it */
|
|
extern HB_EXPORT void hb_inkeyPoll( void ); /* Poll the console keyboard to stuff the Harbour buffer */
|
|
extern HB_EXPORT void hb_inkeyReset( void ); /* Reset the Harbour keyboard buffer */
|
|
extern HB_EXPORT void hb_inkeySetText( const char * szText, HB_SIZE nLen, HB_BOOL fEol ); /* Set text into inkey buffer */
|
|
extern HB_EXPORT int hb_inkeySetLast( int iKey ); /* Set new LastKey() value, return previous one */
|
|
|
|
extern HB_EXPORT HB_SIZE hb_inkeyKeyString( int iKey, char * buffer, HB_SIZE nSize ); /* convert key value to string */
|
|
extern HB_EXPORT int hb_inkeyKeyStd( int iKey ); /* convert Harbour extended key code to Cl*pper inkey code */
|
|
extern HB_EXPORT int hb_inkeyKeyExt( int iKey ); /* extract function/edit key code value HB_KX_* from Harbour extended key code */
|
|
extern HB_EXPORT int hb_inkeyKeyMod( int iKey ); /* extract keyboard modifiers HB_KF_* from Harbour extended key code */
|
|
extern HB_EXPORT int hb_inkeyKeyVal( int iKey ); /* extract key/character code from Harbour extended key code */
|
|
|
|
/* macros to manipulate Harbour extended key codes */
|
|
#define HB_INKEY_EXT_MASK 0xF8000000
|
|
#define HB_INKEY_EXT_BIT 0x40000000
|
|
#define HB_INKEY_EXT_TYPEMASK 0xFF000000
|
|
#define HB_INKEY_EXT_VALBITS 16
|
|
#define HB_INKEY_EXT_VALMASK ( ( 1 << HB_INKEY_EXT_VALBITS ) - 1 )
|
|
#define HB_INKEY_EXT_FLAGMASK ( 0xFF << HB_INKEY_EXT_VALBITS )
|
|
#define HB_INKEY_EXT_KEY 0x01000000
|
|
#define HB_INKEY_EXT_CHAR 0x02000000
|
|
#define HB_INKEY_EXT_UNICODE 0x03000000
|
|
#define HB_INKEY_EXT_MOUSEKEY 0x04000000
|
|
#define HB_INKEY_EXT_MOUSEPOS 0x05000000
|
|
#define HB_INKEY_EXT_EVENT 0x06000000
|
|
#define HB_INKEY_EXT_POSBITS 12
|
|
#define HB_INKEY_EXT_POSMASK ( ( 1 << HB_INKEY_EXT_POSBITS ) - 1 )
|
|
|
|
#define HB_INKEY_ISEXT( n ) ( ( ( n ) & HB_INKEY_EXT_MASK ) == HB_INKEY_EXT_BIT )
|
|
#define HB_INKEY_TYPE( n ) ( ( ( n ) ^ HB_INKEY_EXT_BIT ) & HB_INKEY_EXT_TYPEMASK )
|
|
#define HB_INKEY_ISKEY( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_KEY )
|
|
#define HB_INKEY_ISCHAR( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_CHAR )
|
|
#define HB_INKEY_ISUNICODE( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_UNICODE )
|
|
#define HB_INKEY_ISMOUSEKEY( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_MOUSEKEY )
|
|
#define HB_INKEY_ISMOUSEPOS( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_MOUSEPOS )
|
|
#define HB_INKEY_ISEVENT( n ) ( HB_INKEY_TYPE( n ) == HB_INKEY_EXT_EVENT )
|
|
|
|
#define HB_INKEY_NEW_VALF( v, f ) ( ( ( v ) & HB_INKEY_EXT_VALMASK ) | \
|
|
( ( ( f ) << HB_INKEY_EXT_VALBITS ) & HB_INKEY_EXT_FLAGMASK ) )
|
|
|
|
#define HB_INKEY_NEW_MKEY( k, f ) ( HB_INKEY_NEW_VALF( k, f ) | HB_INKEY_EXT_BIT | HB_INKEY_EXT_MOUSEKEY )
|
|
#define HB_INKEY_NEW_KEY( k, f ) ( HB_INKEY_NEW_VALF( k, f ) | HB_INKEY_EXT_BIT | HB_INKEY_EXT_KEY )
|
|
#define HB_INKEY_NEW_CHAR( b ) ( ( b ) | ( HB_INKEY_EXT_BIT | HB_INKEY_EXT_CHAR ) )
|
|
#define HB_INKEY_NEW_CHARF( b, f ) ( HB_INKEY_NEW_VALF( b, f ) | ( HB_INKEY_EXT_BIT | HB_INKEY_EXT_CHAR ) )
|
|
#define HB_INKEY_NEW_UNICODE( b ) ( ( b ) | ( HB_INKEY_EXT_BIT | HB_INKEY_EXT_UNICODE ) )
|
|
#define HB_INKEY_NEW_UNICODEF( b, f ) ( HB_INKEY_NEW_VALF( b, f ) | ( HB_INKEY_EXT_BIT | HB_INKEY_EXT_UNICODE ) )
|
|
|
|
#define HB_INKEY_NEW_MPOS( x, y ) ( ( ( ( y ) & HB_INKEY_EXT_POSMASK ) << HB_INKEY_EXT_POSBITS ) | \
|
|
( ( x ) & HB_INKEY_EXT_POSMASK ) | \
|
|
( HB_INKEY_EXT_BIT | HB_INKEY_EXT_MOUSEPOS ) )
|
|
#define HB_INKEY_NEW_EVENT( e ) ( ( e ) | ( HB_INKEY_EXT_BIT | HB_INKEY_EXT_EVENT ) )
|
|
|
|
#define HB_INKEY_MOUSEPOSX( n ) ( ( n ) & HB_INKEY_EXT_POSMASK )
|
|
#define HB_INKEY_MOUSEPOSY( n ) ( ( ( n ) >> HB_INKEY_EXT_POSBITS ) & HB_INKEY_EXT_POSMASK )
|
|
|
|
#define HB_INKEY_VALUE( n ) ( ( n ) & HB_INKEY_EXT_VALMASK )
|
|
#define HB_INKEY_FLAGS( n ) ( ( ( n ) & HB_INKEY_EXT_FLAGMASK ) >> HB_INKEY_EXT_VALBITS )
|
|
|
|
HB_EXTERN_END
|
|
|
|
#endif /* HB_APIGT_H_ */
|