Files
harbour-core/harbour/include/hbgtinfo.ch
Przemyslaw Czerpak 9cb4e6047d 2008-03-05 19:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbct/screen2.c
    ! fixed possible vary bad bug (memory buffer overflow) in SCREENSTR()

  * harbour/source/rtl/hbffind.c
    ! fixed possible GPF in some *nixes

  * harbour/source/vm/classes.c
    ! do not execute the same destructor inherited from different parent
      classes more then once

  * harbour/source/rtl/transfrm.c
    ! fixed bug with '9' used as stop condition of function pattern
      this character cannot be stripped, f.e.:
        ? transform( "abc", "@_99*" )
    ! fixed bug with '*' or '$' used with @), f.e.:
        ? transform( -12345, "@) $999999" )
    ! fixed replacing '.' with ',' when @E is used without picture part, f.e.:
        ? transform( 123.45, "@E" )
    ! fixed ',' conversions
        ? transform( 12.34,"@E ab,cd.ef9,9.99,.--" )
    ! fixed bug with picture starting with ".", f.e.:
	? transform( 0.3456, ".999" )
    ! fixed "@(" and "@)" conversions, f.e.:
        ? transform( -12345, "@) 1999*999" )
    ! fixed late oveflow detection in "@(" and "@)", f.e.:
        ? transtest( -12345, "@( 6798^999" )
    ! fixed "@E" conversion for dates to keep user delimiters set in
      _SET_DATEFORMAT, f.e.:
        set( _SET_DATEFORMAT, "mm:dd:yyyy" ); ? transform( date(), "@E" )
        set( _SET_DATEFORMAT, "yyyy<mm>dd" ); ? transform( date(), "@E" )
      Please note that Harbour is not strictly Clipper compatible here
      because it respects _SET_DATEFORMAT set by user.
    ! fixed 64bit integer conversion by eliminating conversion to
      'double' f.e.:
        ? transform(  1234567890123456789, "99999999999999999999" )
        ? transform( -1234567890123456789, "99999999999999999999" )
    ! some other fixes, see regression test transtst.prg
    % speed improvement in numeric conversions

  + harbour/tests/transtst.prg
    + added regression test for transform function

  * harbour/utils/hbtest/rt_trans.prg
    * disabled transform() tests for "@E" and result smaller then 5 bytes
      CA-Cl*pper do not check result size and always exchanges
      bytes 1-2 with bytes 4-5 for @E conversion. It's buffer overflow
      bug and I do not want to replicate it inside our transform
      implementation. It also causes that the results for for strings
      smaller then 5 bytes behaves randomly.
      In fact precise tests can show that it's not random behavior
      but CA-Cl*pper uses static buffer for result and when current one
      is smaller then 5 bytes then first two bytes are replaced with
      4-5 bytes from previous result which was length enough, f.e.:
               ? transform( "0123456789", "" )
               ? transform( "AB", "@E" )
               ? transform( "ab", "@E" )
      Replicating exact CA-Cl*pper behavior it's trivial (it will be enough
      to use static buffer two and not check the size of current result) but
      IMHO it's bug.

  * harbour/source/rtl/round.c
    * added strictly Clipper compatible code covered by HB_C52_STRICT
      and comment about possible difference in Harbour.

  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtwvt/gtwvt.c
    + added HB_GTI_ISUNICODE - it returns logical value with information
      about Unicode mode in active GT driver - it's necessary for proper
      CP initialization in some GTDs which can work in both mode depending
      on client side settings

  * harbour/source/rtl/gttrm/gttrm.c
    * improved UTF-8 detection
    * added automatic PuTTY detection
    * improved PuTTY and some xterm key handling
    * added some missing RXVT keys
2008-03-05 18:10:52 +00:00

229 lines
11 KiB
Plaintext

/*
* $Id$
*/
/*
* Harbour Project source code:
* Header file for the GTINFO API
*
* Copyright 2004 Mauricio Abre <maurifull@datafull.com>
* www - http://www.xharbour.org
* www - http://www.harbour-project.org
*
* 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 software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* 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_GTINFO_CH_
#define HB_GTINFO_CH_
#define HB_GTI_ISGRAPHIC 0 /* 1 if GT has graphic support / pixel oriented */
#define HB_GTI_SCREENWIDTH 1 /* Get/set width of application window in pixels */
#define HB_GTI_SCREENHEIGHT 2 /* Get/set height of appl. window in pixels */
#define HB_GTI_SCREENDEPTH 3 /* Amount of bits used for colors in the application */
#define HB_GTI_FONTSIZE 4 /* Get/set height of application font in pixels */
#define HB_GTI_FONTWIDTH 5 /* Get/set width of application font characters */
#define HB_GTI_DESKTOPWIDTH 6 /* Get width of desktop in pixels */
#define HB_GTI_DESKTOPHEIGHT 7 /* Get height of desktop in pixels */
#define HB_GTI_DESKTOPDEPTH 8 /* Amount of bits used for colors in system */
#define HB_GTI_COMPATBUFFER 9 /* Use DOS CGA/EGA/VGA character/attribute buffer in SAVE/REST SCREEN */
#define HB_GTI_KBDSHIFTS 10 /* Keyboard shift/ctrl/alt, caps/num/scroll & winkeys state */
#define HB_GTI_KBDSPECIAL 11 /* This will get/set the status of the top row
shift state handling. Enable to correct a
documented keyboard handling bug under Win9x.
Enable if the caps-lock key affects the top
row keys. (Alternate language keys are not
handled properly by this temporary fix.
Default is disabled. */
#define HB_GTI_KBDALT 12 /* This will get/set the status of the alt-numpad
key handling.
Default is Enabled. */
#define HB_GTI_FULLSCREEN 13 /* Is it full screen GT driver? */
#define HB_GTI_KBDSUPPORT 14 /* Is it keyboard input supported? */
#define HB_GTI_CLIPBOARDDATA 15 /* Get/Set clipboard */
#define HB_GTI_CLIPBOARDPAST 16 /* Paste clipboard data into keyboard buffer */
#define HB_GTI_CURSORBLINKRATE 19 /* Get/Set cursor blinking rate in milliseconds */
#define HB_GTI_DESKTOPROWS 20 /* Get Size of desktop in character rows */
#define HB_GTI_DESKTOPCOLS 21 /* Get Size of desktop in character cols */
#define HB_GTI_FONTWEIGHT 22 /* Get/set the weight of the font used in application */
#define HB_GTI_FONTQUALITY 23 /* Get/set quality of font rendering in the appl. */
#define HB_GTI_FONTNAME 24 /* Set-only font name */
#define HB_GTI_CODEPAGE 25 /* codepage */
#define HB_GTI_WINTITLE 26 /* title */
#define HB_GTI_ICONFILE 27 /* icon file */
#define HB_GTI_ICONRES 28 /* icon resource */
#define HB_GTI_MOUSESTATUS 29 /* mouse enabled = 1 mouse disabled = 0 */
#define HB_GTI_INPUTFD 30 /* Get Standard input stream of application/GT */
#define HB_GTI_OUTPUTFD 31 /* Get Standard output stream of application/GT */
#define HB_GTI_ERRORFD 32 /* Get Standard error stream of application/GT */
#define HB_GTI_ESCDELAY 33 /* Get/Set escape key delay */
/* these 2 are used for MaxCol(?) and MaxRow(?) */
#define HB_GTI_VIEWMAXHEIGHT 34 /* Maximum viewable height:for current mode */
#define HB_GTI_VIEWMAXWIDTH 35 /* Maximum viewable width:either win or full scrn */
#define HB_GTI_VIEWPORTHEIGHT 36 /* Current viewport height:for current mode */
#define HB_GTI_VIEWPORTWIDTH 37 /* Current viewport width:either win or full scrn */
#define HB_GTI_STDOUTCON 38 /* redirect STDOUT to console */
#define HB_GTI_STDERRCON 39 /* redirect STDERR to console */
#define HB_GTI_ISCTWIN 40 /* is CTWIN supported? */
#define HB_GTI_ISMULTIWIN 41 /* is multi window supported? */
#define HB_GTI_GETWIN 42 /* get current window handle or screen settings */
#define HB_GTI_SETWIN 43 /* restore window or screen settings */
#define HB_GTI_NEWWIN 44 /* create new window */
#define HB_GTI_ADDKEYMAP 45 /* add key escape sequences */
#define HB_GTI_DELKEYMAP 46 /* del key escape sequences */
#define HB_GTI_ISUNICODE 47 /* is Unicode input/output enabled? */
/* Font weights */
#define HB_GTI_FONTW_THIN 1
#define HB_GTI_FONTW_NORMAL 2
#define HB_GTI_FONTW_BOLD 3
/* Font sizes */
#define HB_GTI_FONTQ_DRAFT 1
#define HB_GTI_FONTQ_NORMAL 2
#define HB_GTI_FONTQ_HIGH 3
/* Keyboard shifts states */
#define HB_GTI_KBD_SHIFT 1
#define HB_GTI_KBD_CTRL 2
#define HB_GTI_KBD_ALT 4
#define HB_GTI_KBD_LWIN 8
#define HB_GTI_KBD_RWIN 16
#define HB_GTI_KBD_MENU 32
#define HB_GTI_KBD_INSERT 128
#define HB_GTI_KBD_SCROLOCK 256
#define HB_GTI_KBD_NUMLOCK 512
#define HB_GTI_KBD_CAPSLOCK 1024
#define HB_GTI_KBD_INALTSEQ 2048
#define HB_GTI_KBD_ACCENT1 4096
#define HB_GTI_KBD_ACCENT2 8192
#define HB_GTI_KBD_ACCENT3 16384
#define HB_GTI_KBD_ACCENT4 32768
/* Compatibility #defines */
#ifndef HB_GT_NO_XHB
#define GTI_ISGRAPHIC HB_GTI_ISGRAPHIC
#define GTI_SCREENWIDTH HB_GTI_SCREENWIDTH
#define GTI_SCREENHEIGHT HB_GTI_SCREENHEIGHT
#define GTI_SCREENDEPTH HB_GTI_SCREENDEPTH
#define GTI_FONTSIZE HB_GTI_FONTSIZE
#define GTI_FONTWIDTH HB_GTI_FONTWIDTH
#define GTI_DESKTOPWIDTH HB_GTI_DESKTOPWIDTH
#define GTI_DESKTOPHEIGHT HB_GTI_DESKTOPHEIGHT
#define GTI_DESKTOPDEPTH HB_GTI_DESKTOPDEPTH
#define GTI_COMPATBUFFER HB_GTI_COMPATBUFFER
#define GTI_KBDSHIFTS HB_GTI_KBDSHIFTS
#define GTI_KBDSPECIAL HB_GTI_KBDSPECIAL
#define GTI_KBDALT HB_GTI_KBDALT
#define GTI_FULLSCREEN HB_GTI_FULLSCREEN
#define GTI_KBDSUPPORT HB_GTI_KBDSUPPORT
#define GTI_CLIPBOARDDATA HB_GTI_CLIPBOARDDATA
#define GTI_CLIPBOARDPAST HB_GTI_CLIPBOARDPAST
#define GTI_CURSORBLINKRATE HB_GTI_CURSORBLINKRATE
#define GTI_DESKTOPROWS HB_GTI_DESKTOPROWS
#define GTI_DESKTOPCOLS HB_GTI_DESKTOPCOLS
#define GTI_FONTWEIGHT HB_GTI_FONTWEIGHT
#define GTI_FONTQUALITY HB_GTI_FONTQUALITY
#define GTI_FONTNAME HB_GTI_FONTNAME
#define GTI_CODEPAGE HB_GTI_CODEPAGE
#define GTI_WINTITLE HB_GTI_WINTITLE
#define GTI_ICONFILE HB_GTI_ICONFILE
#define GTI_ICONRES HB_GTI_ICONRES
#define GTI_MOUSESTATUS HB_GTI_MOUSESTATUS
#define GTI_INPUTFD HB_GTI_INPUTFD
#define GTI_OUTPUTFD HB_GTI_OUTPUTFD
#define GTI_ERRORFD HB_GTI_ERRORFD
#define GTI_ESCDELAY HB_GTI_ESCDELAY
#define GTI_VIEWMAXHEIGHT HB_GTI_VIEWMAXHEIGHT
#define GTI_VIEWMAXWIDTH HB_GTI_VIEWMAXWIDTH
#define GTI_VIEWPORTHEIGHT HB_GTI_VIEWPORTHEIGHT
#define GTI_VIEWPORTWIDTH HB_GTI_VIEWPORTWIDTH
#define GTI_STDOUTCON HB_GTI_STDOUTCON
#define GTI_STDERRCON HB_GTI_STDERRCON
#define GTI_ISCTWIN HB_GTI_ISCTWIN
#define GTI_ISMULTIWIN HB_GTI_ISMULTIWIN
#define GTI_GETWIN HB_GTI_GETWIN
#define GTI_SETWIN HB_GTI_SETWIN
#define GTI_NEWWIN HB_GTI_NEWWIN
#define GTI_ADDKEYMAP HB_GTI_ADDKEYMAP
#define GTI_DELKEYMAP HB_GTI_DELKEYMAP
#define GTI_ISUNICODE HB_GTI_ISUNICODE
/* Font weights */
#define GTI_FONTW_THIN HB_GTI_FONTW_THIN
#define GTI_FONTW_NORMAL HB_GTI_FONTW_NORMAL
#define GTI_FONTW_BOLD HB_GTI_FONTW_BOLD
/* Font sizes */
#define GTI_FONTQ_DRAFT HB_GTI_FONTQ_DRAFT
#define GTI_FONTQ_NORMAL HB_GTI_FONTQ_NORMAL
#define GTI_FONTQ_HIGH HB_GTI_FONTQ_HIGH
/* Keyboard shifts states */
#define GTI_KBD_SHIFT HB_GTI_KBD_SHIFT
#define GTI_KBD_CTRL HB_GTI_KBD_CTRL
#define GTI_KBD_ALT HB_GTI_KBD_ALT
#define GTI_KBD_LWIN HB_GTI_KBD_LWIN
#define GTI_KBD_RWIN HB_GTI_KBD_RWIN
#define GTI_KBD_MENU HB_GTI_KBD_MENU
#define GTI_KBD_INSERT HB_GTI_KBD_INSERT
#define GTI_KBD_SCROLOCK HB_GTI_KBD_SCROLOCK
#define GTI_KBD_NUMLOCK HB_GTI_KBD_NUMLOCK
#define GTI_KBD_CAPSLOCK HB_GTI_KBD_CAPSLOCK
#define GTI_KBD_INALTSEQ HB_GTI_KBD_INALTSEQ
#define GTI_KBD_ACCENT1 HB_GTI_KBD_ACCENT1
#define GTI_KBD_ACCENT2 HB_GTI_KBD_ACCENT2
#define GTI_KBD_ACCENT3 HB_GTI_KBD_ACCENT3
#define GTI_KBD_ACCENT4 HB_GTI_KBD_ACCENT4
#endif
#endif /* HB_GTINFO_CH_ */