Files
harbour-core/harbour/contrib/hbxbp/presspace.prg
Viktor Szakats c300ba14ee 2012-07-23 17:26 UTC+0200 Viktor Szakats (harbour syenar.net)
+ contrib/gtwvg/3state.prg
  + contrib/gtwvg/activex.prg
  + contrib/gtwvg/bitmap.prg
  + contrib/gtwvg/checkbox.prg
  + contrib/gtwvg/class.prg
  + contrib/gtwvg/combobox.prg
  + contrib/gtwvg/crt.prg
  + contrib/gtwvg/dataref.prg
  + contrib/gtwvg/dialog.prg
  + contrib/gtwvg/drawarea.prg
  + contrib/gtwvg/genrc.prg
  + contrib/gtwvg/htmlview.prg
  + contrib/gtwvg/listbox.prg
  + contrib/gtwvg/menubar.prg
  + contrib/gtwvg/mle.prg
  + contrib/gtwvg/paint.prg
  + contrib/gtwvg/parthdlr.prg
  + contrib/gtwvg/pushbut.prg
  + contrib/gtwvg/radiobut.prg
  + contrib/gtwvg/scrollbr.prg
  + contrib/gtwvg/sle.prg
  + contrib/gtwvg/statbar.prg
  + contrib/gtwvg/static.prg
  + contrib/gtwvg/syswnd.prg
  + contrib/gtwvg/tabpage.prg
  + contrib/gtwvg/toolbar.prg
  + contrib/gtwvg/treeview.prg
  + contrib/gtwvg/wnd.prg
  + contrib/hbxbp/3state.prg
  + contrib/hbxbp/appevent.prg
  + contrib/hbxbp/bitmap.prg
  + contrib/hbxbp/browse.prg
  + contrib/hbxbp/checkbox.prg
  + contrib/hbxbp/clipboard.prg
  + contrib/hbxbp/combobox.prg
  + contrib/hbxbp/crt.prg
  + contrib/hbxbp/dataref.prg
  + contrib/hbxbp/dialog.prg
  + contrib/hbxbp/filedialog.prg
  + contrib/hbxbp/fontdialog.prg
  + contrib/hbxbp/generic.prg
  + contrib/hbxbp/gra.prg
  + contrib/hbxbp/htmlviewer.prg
  + contrib/hbxbp/listbox.prg
  + contrib/hbxbp/menubar.prg
  + contrib/hbxbp/mle.prg
  + contrib/hbxbp/parthandler.prg
  + contrib/hbxbp/presspace.prg
  + contrib/hbxbp/printdialog.prg
  + contrib/hbxbp/printer.prg
  + contrib/hbxbp/pushbutton.prg
  + contrib/hbxbp/radiobutton.prg
  + contrib/hbxbp/rtf.prg
  + contrib/hbxbp/scrollbar.prg
  + contrib/hbxbp/sle.prg
  + contrib/hbxbp/spinbutton.prg
  + contrib/hbxbp/static.prg
  + contrib/hbxbp/statusbar.prg
  + contrib/hbxbp/style.prg
  + contrib/hbxbp/tabpage.prg
  + contrib/hbxbp/toolbar.prg
  + contrib/hbxbp/treeview.prg
  + contrib/hbxbp/window.prg
  - contrib/gtwvg/wvg3stat.prg
  - contrib/gtwvg/wvgax.prg
  - contrib/gtwvg/wvgbitmp.prg
  - contrib/gtwvg/wvgcheck.prg
  - contrib/gtwvg/wvgclass.prg
  - contrib/gtwvg/wvgcombo.prg
  - contrib/gtwvg/wvgcrt.prg
  - contrib/gtwvg/wvgdarea.prg
  - contrib/gtwvg/wvgdatar.prg
  - contrib/gtwvg/wvgdlg.prg
  - contrib/gtwvg/wvggenrc.prg
  - contrib/gtwvg/wvghtmlv.prg
  - contrib/gtwvg/wvglistb.prg
  - contrib/gtwvg/wvgmenub.prg
  - contrib/gtwvg/wvgmle.prg
  - contrib/gtwvg/wvgpaint.prg
  - contrib/gtwvg/wvgphdlr.prg
  - contrib/gtwvg/wvgpushb.prg
  - contrib/gtwvg/wvgradio.prg
  - contrib/gtwvg/wvgscrlb.prg
  - contrib/gtwvg/wvgsle.prg
  - contrib/gtwvg/wvgstatb.prg
  - contrib/gtwvg/wvgstatc.prg
  - contrib/gtwvg/wvgsysw.prg
  - contrib/gtwvg/wvgtabpg.prg
  - contrib/gtwvg/wvgtoolb.prg
  - contrib/gtwvg/wvgtreev.prg
  - contrib/gtwvg/wvgwnd.prg
  - contrib/hbxbp/xbp3state.prg
  - contrib/hbxbp/xbpappevent.prg
  - contrib/hbxbp/xbpbitmap.prg
  - contrib/hbxbp/xbpbrowse.prg
  - contrib/hbxbp/xbpcheckbox.prg
  - contrib/hbxbp/xbpclipboard.prg
  - contrib/hbxbp/xbpcombobox.prg
  - contrib/hbxbp/xbpcrt.prg
  - contrib/hbxbp/xbpdataref.prg
  - contrib/hbxbp/xbpdialog.prg
  - contrib/hbxbp/xbpfiledialog.prg
  - contrib/hbxbp/xbpfontdialog.prg
  - contrib/hbxbp/xbpgeneric.prg
  - contrib/hbxbp/xbpgra.prg
  - contrib/hbxbp/xbphtmlviewer.prg
  - contrib/hbxbp/xbplistbox.prg
  - contrib/hbxbp/xbpmenubar.prg
  - contrib/hbxbp/xbpmle.prg
  - contrib/hbxbp/xbpparthandler.prg
  - contrib/hbxbp/xbppresspace.prg
  - contrib/hbxbp/xbpprintdialog.prg
  - contrib/hbxbp/xbpprinter.prg
  - contrib/hbxbp/xbppushbutton.prg
  - contrib/hbxbp/xbpradiobutton.prg
  - contrib/hbxbp/xbprtf.prg
  - contrib/hbxbp/xbpscrollbar.prg
  - contrib/hbxbp/xbpsle.prg
  - contrib/hbxbp/xbpspinbutton.prg
  - contrib/hbxbp/xbpstatic.prg
  - contrib/hbxbp/xbpstatusbar.prg
  - contrib/hbxbp/xbpstyle.prg
  - contrib/hbxbp/xbptabpage.prg
  - contrib/hbxbp/xbptoolbar.prg
  - contrib/hbxbp/xbptreeview.prg
  - contrib/hbxbp/xbpwindow.prg
  * contrib/gtwvg/gtwvg.hbp
  * contrib/hbxbp/hbxbp.hbp
    % deleted unnecessary prefix from .prg filenames, 
      thus making the much more easily searchable and 
      recognizable and also allowing more room for 
      the real description with much less undecipherable 
      abbreviations.
2012-07-23 15:32:39 +00:00

392 lines
13 KiB
Plaintext

/*
* $Id$
*/
/*
* Harbour Project source code:
* Source file for the Xbp*Classes
*
* Copyright 2009-2010 Pritpal Bedi <bedipritpal@hotmail.com>
* http://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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Xbase++ Compatible xbpPresSpace Class
*
* Pritpal Bedi
* 08Jul2009
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include "hbclass.ch"
#include "common.ch"
#include "xbp.ch"
#include "gra.ch"
#include "appevent.ch"
/*----------------------------------------------------------------------*/
CLASS XbpPresSpace
DATA mode INIT XBPPS_MODE_NORMAL
DATA d
METHOD init()
METHOD create( oDevice, aPageSize, nUnits )
METHOD configure() VIRTUAL
METHOD destroy() VIRTUAL
METHOD drawMode( nDrawMode )
METHOD device()
METHOD lastError()
METHOD mapPoint( aPoint, lMapToDevice )
METHOD mapColor( aRGB, lExactMatch )
METHOD maxColorIndex( lCompatible )
METHOD setAttrArea( aAttributes )
METHOD setAttrLine( aAttributes )
METHOD setAttrMarker( aAttributes )
METHOD setAttrString( aAttributes )
METHOD setColor( nForeground, nBackground )
METHOD setColorIndex( nColorIndex, aRGB )
METHOD setFont( oXbpFont )
METHOD setGraTransform( aMatrix, nMode )
METHOD setPageSize( aPageSize, nUnits )
METHOD setViewPort( aViewPort )
PROTECTED:
DATA aPalette INIT {}
DATA oDevice
DATA nDrawMode INIT GRA_DM_DRAWANDRETAIN
DATA lMapColorIndex
DATA nColorFG INIT GraMakeRGBColor( { 0,0,0 } )
DATA nColorBG INIT GraMakeRGBColor( { 255,255,255 } )
DATA oXbpFont
DATA aMatrix INIT { {1.0,0.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0} }
DATA nGraTransMode
DATA aPageSize
DATA nUnits
DATA aViewPort INIT {}
DATA x INIT 0
DATA y INIT 0
/* To be used in GraArc(), GraBox(), GraPathFill */
DATA aGRA_AA_ATTR INIT { GRA_CLR_NEUTRAL , ;
GRA_CLR_NEUTRAL , ;
GRA_CLR_BACKGROUND , ;
GRA_FGMIX_OVERPAINT , ;
GRA_BGMIX_LEAVEALONE, ;
GRA_SYM_SOLID , ;
{ 0, 0 } }
/* To be used in GraLine(), GraSpline(), GraPathOutLine() and GraArc() and GraBox() in certain cases */
DATA aGRA_AL_ATTR INIT { GRA_CLR_NEUTRAL , ;
GRA_FGMIX_OVERPAINT , ;
GRA_LINEWIDTH_NORMAL, ;
GRA_LINETYPE_SOLID }
/* To be used with GraMarker() */
DATA aGRA_AM_ATTR INIT { GRA_CLR_NEUTRAL , ;
GRA_CLR_BACKGROUND , ;
GRA_FGMIX_OVERPAINT , ;
GRA_BGMIX_LEAVEALONE, ;
GRA_MARKSYM_CROSS , ;
{ 1, 1 } }
/* To be used with GraString() */
DATA aGRA_AS_ATTR INIT { GRA_CLR_NEUTRAL , ;
GRA_CLR_BACKGROUND , ;
GRA_FGMIX_OVERPAINT , ;
GRA_BGMIX_LEAVEALONE, ;
{ 1, 1 } , ;
{ 1, 0 } , ;
{ 0, 1 } , ;
GRA_CHDIRN_LEFTRIGHT, ;
GRA_HALIGN_LEFT , ;
GRA_VALIGN_BASE , ;
0 , ;
0 }
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:init()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:create( oDevice, aPageSize, nUnits )
DEFAULT nUnits TO GRA_PU_PIXEL
IF HB_ISOBJECT( oDevice )
::oDevice := oDevice
ENDIF
IF HB_ISARRAY( aPageSize ) .AND. len( aPageSize ) == 2
::aPageSize := aPageSize
ENDIF
::nUnits := nUnits
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:drawMode( nDrawMode )
LOCAL nOldMode := ::nDrawMode
IF HB_ISNUMERIC( nDrawMode ) .AND. nDrawMode >= GRA_DM_DRAW .AND. nDrawMode <= GRA_DM_DRAWANDRETAIN
::nDrawMode := nDrawMode
ENDIF
RETURN nOldMode
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:device()
RETURN ::oDevice
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:lastError()
LOCAL nError := 0
RETURN nError
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:mapPoint( aPoint, lMapToDevice )
DEFAULT lMapToDevice TO .t.
IF HB_ISARRAY( aPoint )
IF lMapToDevice
aPoint := { 0,0 }
ENDIF
ENDIF
RETURN aPoint
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:mapColor( aRGB, lExactMatch )
LOCAL xValue := 0
HB_SYMBOL_UNUSED( aRGB )
DEFAULT lExactMatch TO .f.
RETURN xValue //<nColorIndex>|<nRGBColor>|NIL )
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:maxColorIndex( lCompatible )
DEFAULT lCompatible TO .t.
RETURN 255
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setAttrArea( aAttributes )
LOCAL v
LOCAL aOldAttr := ::aGRA_AA_ATTR
IF HB_ISARRAY( aAttributes ) .AND. len( aAttributes ) == GRA_AA_COUNT
FOR EACH v IN aAttributes
IF !empty( v )
::aGRA_AA_ATTR[ v:__enumIndex() ] := v
ENDIF
NEXT
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setAttrLine( aAttributes )
LOCAL v
LOCAL aOldAttr := ::aGRA_AL_ATTR
IF HB_ISARRAY( aAttributes ) .AND. len( aAttributes ) == GRA_AL_COUNT
FOR EACH v IN aAttributes
IF !empty( v )
::aGRA_AL_ATTR[ v:__enumIndex() ] := v
ENDIF
NEXT
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setAttrMarker( aAttributes )
LOCAL v
LOCAL aOldAttr := ::aGRA_AM_ATTR
IF HB_ISARRAY( aAttributes ) .AND. len( aAttributes ) == GRA_AM_COUNT
FOR EACH v IN aAttributes
IF !empty( v )
::aGRA_AM_ATTR[ v:__enumIndex() ] := v
ENDIF
NEXT
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setAttrString( aAttributes )
LOCAL v
LOCAL aOldAttr := ::aGRA_AS_ATTR
IF HB_ISARRAY( aAttributes ) .AND. len( aAttributes ) == GRA_AS_COUNT
FOR EACH v IN aAttributes
IF !empty( v )
::aGRA_AS_ATTR[ v:__enumIndex() ] := v
ENDIF
NEXT
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setColor( nForeground, nBackground )
LOCAL aOldAttr := { ::nColorFG, ::nColorBG }
IF !empty( nForeground )
::nColorFG := nForeground
ENDIF
IF !empty( nBackground )
::nColorBG := nBackground
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setColorIndex( nColorIndex, aRGB )
LOCAL a_
LOCAL aOldAttr := {}
IF HB_ISNUMERIC( nColorIndex ) .AND. nColorIndex > 15 .AND. nColorIndex <= 255 .AND. nColorIndex < len( ::aPalette )
aOldAttr := ::aPalette[ nColorIndex ]
IF HB_ISARRAY( aRGB )
IF HB_ISARRAY( aRGB[ 1 ] )
FOR EACH a_ IN aRGB
::aPalette[ nColorIndex + a_:__enumIndex() - 1 ] := a_
NEXT
ELSE
::aPalette[ nColorIndex ] := aRGB
ENDIF
ENDIF
ENDIF
RETURN aOldAttr
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setFont( oXbpFont )
LOCAL oOldFont := ::oXbpFont
IF HB_ISOBJECT( oXbpFont )
::oXbpFont := oXbpFont
ENDIF
RETURN oOldFont
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setGraTransform( aMatrix, nMode )
LOCAL oOldMatrix := ::aMatrix
DEFAULT nMode TO GRA_TRANSFORM_REPLACE
IF HB_ISARRAY( aMatrix )
IF nMode == GRA_TRANSFORM_REPLACE
::aMatrix := aMatrix
ELSE
// Recalculate ??
ENDIF
ENDIF
RETURN oOldMatrix
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setPageSize( aPageSize, nUnits )
LOCAL aOldSize := ::aPageSize
IF HB_ISARRAY( aPageSize ) .AND. len( aPageSize ) == 2
::aPageSize := aPageSize
ENDIF
IF HB_ISNUMERIC( nUnits )
::nUnits := nUnits
ENDIF
RETURN aOldSize
/*----------------------------------------------------------------------*/
METHOD XbpPresSpace:setViewPort( aViewPort )
LOCAL aOldViewPort := ::aViewPort
IF HB_ISARRAY( aViewPort )
::aViewPort := aViewPort
ENDIF
RETURN aOldViewPort
/*----------------------------------------------------------------------*/