/* * Xailer source code: * * Bitmap.prg * Clase TBitmap() * * Copyright 2003, 2007 Jose F. Gimenez * Copyright 2003, 2007 Xailer.com * All rights reserved * */ #include "Xailer.ch" //-------------------------------------------------------------------------- CLASS XBitmap FROM TWinObject PUBLISHED: PROPERTY cName WRITE METHOD Create PUBLIC: PROPERTY nWidth INIT 0 READONLY PROPERTY nHeight INIT 0 READONLY METHOD New( cName ) CONSTRUCTOR METHOD Create( cName ) CONSTRUCTOR METHOD CreateFromHandle( Handle ) CONSTRUCTOR METHOD CreateNew( nWidth, nHeight, nColorBits ) CONSTRUCTOR METHOD Destroy() // --> Nil METHOD Load( cName ) // --> Self METHOD LoadFromResource( cName ) // --> Self METHOD LoadFromFile( cName ) // --> Self METHOD Save( cFilename ) // --> lSuccess METHOD Paint( hDC, nLeft, nTop, nRight, nBottom ) // --> lSuccess RESERVED: METHOD GetSize() ENDCLASS //-------------------------------------------------------------------------- METHOD New( cName ) CLASS XBitmap RETURN ::Create( cName ) //-------------------------------------------------------------------------- METHOD Create( cName ) CLASS XBitmap DEFAULT ::FcName TO cName IF ! Empty( ::cName ) ::Load( ::cName ) ENDIF RETURN Self //-------------------------------------------------------------------------- METHOD CreateFromHandle( Handle ) CLASS XBitmap UPDATE ::Handle TO Handle ::GetSize() RETURN Self //-------------------------------------------------------------------------- METHOD Load( cName ) CLASS XBitmap DEFAULT ::FcName TO cName IF Valtype( ::cName ) == "N" .OR. At( ".", ::cName ) == 0 ::LoadFromResource( ::cName ) ELSE ::LoadFromFile( ::cName ) ENDIF RETURN Self //-------------------------------------------------------------------------- METHOD LoadFromResource( cName ) CLASS XBitmap DEFAULT ::FcName TO cName ::Destroy() IF ! Empty( ::cName ) ::Handle := XA_LoadImage( ::cName, IMAGE_BITMAP, 0, 0, LR_SHARED ) IF ! Empty( ::Handle ) ::GetSize() ENDIF ENDIF IF Empty( ::Handle ) .AND. IsDebug() ErrorLoadResource( "bitmap", cName ) ENDIF RETURN Self //-------------------------------------------------------------------------- METHOD LoadFromFile( cName ) CLASS XBitmap DEFAULT ::FcName TO cName IF ! Empty( ::cName ) ::Destroy() ::Handle := XA_LoadImage( ::cName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ) IF ! Empty( ::Handle ) ::GetSize() ENDIF ENDIF IF Empty( ::Handle ) .AND. IsDebug() ErrorLoadResource( "bitmap", cName ) ENDIF RETURN Self //-------------------------------------------------------------------------- METHOD Destroy() CLASS XBitmap IF ! Empty( ::Handle ) DeleteObject( ::Handle ) ::Handle := Nil ::FcName := Nil ENDIF RETURN Nil //-------------------------------------------------------------------------- METHOD Paint( hDC, nLeft, nTop, nRight, nBottom ) CLASS XBitmap LOCAL lRet := .F. IF ! Empty( ::Handle ) .AND. ! Empty( hDC ) lRet := XA_DrawBitmap( hDC, ::Handle, nLeft, nTop, nRight, nBottom, blSTRETCH ) ENDIF RETURN lRet //-------------------------------------------------------------------------- METHOD CreateNew( nWidth, nHeight, nColorBits ) CLASS XBitmap UPDATE ::FnWidth TO nWidth UPDATE ::FnHeight TO nHeight ::Handle := CreateBitmap( ::nWidth, ::nHeight, 1, nColorBits ) RETURN Self //--------------------------------------------------------------------------