diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b059120bb7..d0d67af29a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,17 @@ 2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2008-09-01 21:52 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + - contrib/hbw32ddr + * contrib/Makefile + * contrib/make_b32_all.bat + * contrib/make_gcc_all.sh + * contrib/make_vc_all.bat + - Removed contrib hbw32ddr. + For those wanting to peek into this code, or + pick up development, the exact source can be + found in Harbour 1.0.0 release. + 2008-09-01 21:33 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * contrib/hbziparch/hbziparc.c * contrib/hbziparch/hbzipnew.cpp diff --git a/harbour/contrib/Makefile b/harbour/contrib/Makefile index b3eb0738b0..40cc28e537 100644 --- a/harbour/contrib/Makefile +++ b/harbour/contrib/Makefile @@ -29,7 +29,6 @@ DIRS=\ xhb \ # hbsqlit2 \ -# hbw32ddr \ # hbwhat32 \ # hbziparch \ diff --git a/harbour/contrib/hbw32ddr/Makefile b/harbour/contrib/hbw32ddr/Makefile deleted file mode 100644 index 9d1a002257..0000000000 --- a/harbour/contrib/hbw32ddr/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# -# $Id$ -# - -# Needs Windows official ddraw.h to be copied to this directory, -# in order to compile under MingW. [vszakats] - -ROOT = ../../ - -LIBNAME=hbw32ddr - -ifeq ($(HB_ARCHITECTURE),w32) - -CPP_SOURCES=\ - w32_ddrw.cpp \ - -PRG_SOURCES=\ - -include $(TOP)$(ROOT)config/lib.cf - -C_USR += -I. - -else -include $(TOP)$(ROOT)config/none.cf -endif diff --git a/harbour/contrib/hbw32ddr/common.mak b/harbour/contrib/hbw32ddr/common.mak deleted file mode 100644 index 93e3e95938..0000000000 --- a/harbour/contrib/hbw32ddr/common.mak +++ /dev/null @@ -1,13 +0,0 @@ -# -# $Id$ -# - -LIBNAME = $(LIBPREF)hbw32ddr - -LIB_PATH = $(LIB_DIR)$(LIBNAME)$(LIBEXT) - -LIB_OBJS = \ - $(OBJ_DIR)w32_ddrw$(OBJEXT) \ - -all: \ - $(LIB_PATH) \ diff --git a/harbour/contrib/hbw32ddr/make_b32.bat b/harbour/contrib/hbw32ddr/make_b32.bat deleted file mode 100644 index 1c1f36ef56..0000000000 --- a/harbour/contrib/hbw32ddr/make_b32.bat +++ /dev/null @@ -1,54 +0,0 @@ -@echo off -rem -rem $Id$ -rem - -rem --------------------------------------------------------------- -rem IMPORTANT: You'll need MS SDK installed and this envvar to be -rem set, to build this library: -rem set INCLUDE="C:\Program Files\Microsoft SDKs\Windows\v6.0\include" -rem --------------------------------------------------------------- - -set HB_DLL_NAME=ddraw -set HB_DLL_DIR=%SystemRoot%\system32 - -rem --------------------------------------------------------------- - -call ..\mtpl_b32.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 - -rem --------------------------------------------------------------- - -set _HB_INSTALL_PREFIX=%HB_INSTALL_PREFIX% -if "%_HB_INSTALL_PREFIX%" == "" set _HB_INSTALL_PREFIX=..\.. -set _HB_LIB_INSTALL=%HB_LIB_INSTALL% -if "%_HB_LIB_INSTALL%" == "" set _HB_LIB_INSTALL=%_HB_INSTALL_PREFIX%\lib - -if "%1" == "clean" goto POST_CLEAN -if "%1" == "Clean" goto POST_CLEAN -if "%1" == "CLEAN" goto POST_CLEAN -if "%1" == "install" goto POST_INSTALL -if "%1" == "Install" goto POST_INSTALL -if "%1" == "INSTALL" goto POST_INSTALL - -:POST_BUILD - - implib ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib "%HB_DLL_DIR%\%HB_DLL_NAME%.dll" >> %_HB_MAKELOG% - goto POST_EXIT - -:POST_CLEAN - - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib del ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib > nul - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.exp del ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.exp > nul - if exist %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib del %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib > nul - goto POST_EXIT - -:POST_INSTALL - - if exist %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib del %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib copy ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib %_HB_LIB_INSTALL% - goto POST_EXIT - -:POST_EXIT - -set HB_DLL_NAME= -set HB_DLL_DIR= diff --git a/harbour/contrib/hbw32ddr/make_gcc.sh b/harbour/contrib/hbw32ddr/make_gcc.sh deleted file mode 100755 index 0593942308..0000000000 --- a/harbour/contrib/hbw32ddr/make_gcc.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -# -# $Id$ -# - -../mtpl_gcc.sh $1 $2 $3 $4 $5 $6 $7 $8 $9 diff --git a/harbour/contrib/hbw32ddr/make_vc.bat b/harbour/contrib/hbw32ddr/make_vc.bat deleted file mode 100644 index 162c7a58f5..0000000000 --- a/harbour/contrib/hbw32ddr/make_vc.bat +++ /dev/null @@ -1,65 +0,0 @@ -@echo off -rem -rem $Id$ -rem - -set HB_DLL_NAME=ddraw -set HB_DLL_DIR=%SystemRoot%\system32 - -rem --------------------------------------------------------------- - -call ..\mtpl_vc.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 - -rem --------------------------------------------------------------- - -set _HB_INSTALL_PREFIX=%HB_INSTALL_PREFIX% -if "%_HB_INSTALL_PREFIX%" == "" set _HB_INSTALL_PREFIX=..\.. -set _HB_LIB_INSTALL=%HB_LIB_INSTALL% -if "%_HB_LIB_INSTALL%" == "" set _HB_LIB_INSTALL=%_HB_INSTALL_PREFIX%\lib - -if "%1" == "clean" goto POST_CLEAN -if "%1" == "Clean" goto POST_CLEAN -if "%1" == "CLEAN" goto POST_CLEAN -if "%1" == "install" goto POST_INSTALL -if "%1" == "Install" goto POST_INSTALL -if "%1" == "INSTALL" goto POST_INSTALL - -:POST_BUILD - - rem --------------------------------------------------------------- - rem This .dll to .lib conversion needs GNU sed.exe in the path - rem --------------------------------------------------------------- - echo./[ \t]*ordinal hint/,/^^[ \t]*Summary/{> _temp.sed - echo. /^^[ \t]\+[0-9]\+/{>> _temp.sed - echo. s/^^[ \t]\+[0-9]\+[ \t]\+[0-9A-Fa-f]\+[ \t]\+[0-9A-Fa-f]\+[ \t]\+\(.*\)/\1/p>> _temp.sed - echo. }>> _temp.sed - echo.}>> _temp.sed - DUMPBIN /EXPORTS "%HB_DLL_DIR%\%HB_DLL_NAME%.dll" > _dump.tmp - echo.LIBRARY "%HB_DLL_DIR%\%HB_DLL_NAME%.dll" > _temp.def - echo.EXPORTS >> _temp.def - sed -nf _temp.sed < _dump.tmp >> _temp.def - LIB /MACHINE:X86 /DEF:_temp.def /OUT:..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib >> %_HB_MAKELOG% - del _dump.tmp - del _temp.def - del _temp.sed - rem --------------------------------------------------------------- - - goto POST_EXIT - -:POST_CLEAN - - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib del ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib > nul - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.exp del ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.exp > nul - if exist %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib del %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib > nul - goto POST_EXIT - -:POST_INSTALL - - if exist %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib del %_HB_LIB_INSTALL%\%HB_DLL_NAME%.lib - if exist ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib copy ..\..\lib\%_HB_CC_NAME%\%HB_DLL_NAME%.lib %_HB_LIB_INSTALL% - goto POST_EXIT - -:POST_EXIT - -set HB_DLL_NAME= -set HB_DLL_DIR= diff --git a/harbour/contrib/hbw32ddr/readme.txt b/harbour/contrib/hbw32ddr/readme.txt deleted file mode 100644 index 968fd407bc..0000000000 --- a/harbour/contrib/hbw32ddr/readme.txt +++ /dev/null @@ -1,126 +0,0 @@ -/* - * $Id$ - */ - -/* - * Copyright(C) 1999 by Jesus Salas - * - * This library 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 - * - * You can contact me at: jsalas@gruposp.com jsalas@sp-editores.es - * - */ - - - Harbour - GAL Lib - DirectX 6.1 ( DDraw implementation for Windows ) -------------------------------------------------------------------------------------------- - - Well, this is the first implementation of Graphics Animation Library - for Windows/DirectX 6.1 and Harbour - - INDEX - ----------------------------------------------------------------------------------- - 0)._ What are supported, what coming soon - 1)._ What do you need for make/run the samples. - 2)._ Files in this distribution. ( hdx01.zip ) - 3)._ Building the sample - 4)._ Reminder - ----------------------------------------------------------------------------------- - 0)._ What are supported, what coming soon - - Supported / translated to harbour: - - - DirectDraw Startup - - Masked Sprites Drawing - - Solid Sprites Controls - - Basic Animation Sequencer - - Up to 90 active animations in 133-MMX ( 166 clocked-down ;) ) - - Basic Collision Detect / Hit Collision - - Event handlers for sprites ( OnFirstFrame, OnOutOfBound, OnRenderSprite... ) - - Load animations - - KeyDown/KeyUp Detection - - (W) Waiting for implementation / (NT) not translated to Harbour: - - (NT) - OpenGL Wrapper ( For those that no want DirectX ) - (W) - GDI Wrapper ( For those that no want DirectX / OpenGL ) - (NT) - Advanced Sequencer ( Automations ) - (NT) - Blocking Animations - (NT) - Timers / Intervals Support - (NT) - 2D Shadows & Light control - (NT) - FX Particles support ( Plasma Explosions ) - (NT) - FX Star Fields Support ( 2D, 3D ) - (NT) - FX Fire Support - (NT) - Font Support - (NT) - Basic drawing functions support ( Circles, lines, putpixel, getpixel, bar ) - (W) - Support for 8 / 16 / 24 / 32 ( palettized, 5-6-5 RGB ,8-8-8 RGB, 8-8-8-8 RGBA bpps ) - (W) - Support for 800x600 video modes - (W) - Wav player/Mixer ( DirectSound, MMSystem , 3D Sound ) - (W) - Midi Player/Mixer ( DirecMusic, MMSystem ) - (NT) - Direct 3D Inmediate Mode ( Startup ) - (W) - Suppor for JPG / GIF - - 1)._ What do you need for make/run the samples. - - - A Windows 95/98 ( Nt don't support DirectX 6 ) - - MSVC 6.0 ( BC coming soon ) - - DirectX 6.1 Run-Time ( you can download it from - http://www.microsoft.com/directx ) - - - Set your resolution to 640x480 before running the sample. - - 2)._ Files in this distribution. - - - /hbw32ddr/hb_ddraw.h -> header file - - /hbw32ddr/hb_ddraw.cpp -> Source file for DDraw - - /hbw32ddr/directx.lib -> Lib for Harbour - - /hbw32ddr/lib/ddraw.lib -> Lib from MS for VC ( DirectX SDK ) - - /hbw32ddr/buvcdx.bat -> Bat file for Build the sample for MSVC 6.0 - - /hbw32ddr/samples/testdx.prg -> a BreakOut like sample Game - - /hbw32ddr/media -> Media files for the sample ( .bmp files ) - - 3)._ Building the sample - - copy testdx.prg to /harbour/tests/working/ - copy buvcdx.bat ro /harbour/tests/working/ - - 1) harbour testdx - 2) buvcdx testdx - 3) copy .exe to a directory with media files - - Run the .exe! - - Keys for the sample: - - Space -> Shot. - Cursor Left -> Bunny go to left. - Cursor Right -> Bunny go to right. - Shift hold down -> Bunny Turbo mode on. - - 4)._ Reminder. - - You need to have the media files into the same directory of final .exe file - - - Please if you test/use it... send to me feedback for continue supporting it! - - Enjoy it! - - Regards - Jesús Salas - Spain - jsalas@gruposp.com - - - - - diff --git a/harbour/contrib/hbw32ddr/tests/anima2.bmp b/harbour/contrib/hbw32ddr/tests/anima2.bmp deleted file mode 100644 index 1e801fe23e..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/anima2.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/black.bmp b/harbour/contrib/hbw32ddr/tests/black.bmp deleted file mode 100644 index ce6963e4e3..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/black.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/bld_b32.bat b/harbour/contrib/hbw32ddr/tests/bld_b32.bat deleted file mode 100644 index 494cdc1a94..0000000000 --- a/harbour/contrib/hbw32ddr/tests/bld_b32.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -rem -rem $Id$ -rem - -if "%HB_BIN_INSTALL%" == "" set HB_BIN_INSTALL=..\..\..\bin -if "%HB_LIB_INSTALL%" == "" set HB_LIB_INSTALL=..\..\..\lib -if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\..\..\include - -set HB_ARCHITECTURE=w32 -set HB_COMPILER=bcc32 -set HB_USER_LIBS=hbw32ddr.lib ddraw.lib - -call %HB_BIN_INSTALL%\bld.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/hbw32ddr/tests/bld_vc.bat b/harbour/contrib/hbw32ddr/tests/bld_vc.bat deleted file mode 100644 index 872b87d293..0000000000 --- a/harbour/contrib/hbw32ddr/tests/bld_vc.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -rem -rem $Id$ -rem - -if "%HB_BIN_INSTALL%" == "" set HB_BIN_INSTALL=..\..\..\bin -if "%HB_LIB_INSTALL%" == "" set HB_LIB_INSTALL=..\..\..\lib -if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\..\..\include - -set HB_ARCHITECTURE=w32 -set HB_COMPILER=msvc -set HB_USER_LIBS=hbw32ddr.lib ddraw.lib - -call %HB_BIN_INSTALL%\bld.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/hbw32ddr/tests/brick1.bmp b/harbour/contrib/hbw32ddr/tests/brick1.bmp deleted file mode 100644 index ce1b4d68bb..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/brick1.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/brick2.bmp b/harbour/contrib/hbw32ddr/tests/brick2.bmp deleted file mode 100644 index c3f7b55418..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/brick2.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/brick3.bmp b/harbour/contrib/hbw32ddr/tests/brick3.bmp deleted file mode 100644 index 52bfe3f4e6..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/brick3.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/shot.bmp b/harbour/contrib/hbw32ddr/tests/shot.bmp deleted file mode 100644 index 3796ca47d7..0000000000 Binary files a/harbour/contrib/hbw32ddr/tests/shot.bmp and /dev/null differ diff --git a/harbour/contrib/hbw32ddr/tests/testdx.prg b/harbour/contrib/hbw32ddr/tests/testdx.prg deleted file mode 100644 index 3b028303e2..0000000000 --- a/harbour/contrib/hbw32ddr/tests/testdx.prg +++ /dev/null @@ -1,178 +0,0 @@ -/* - * $Id$ - */ - -Static spBunny -Static spShots -Static nShotsActive -Static spaBreaks -Static spTorretShot -Static spTorretShot2 -Static spTorretShot3 -Static spTorretShot4 -Static spTorretShot5 -Static spTorretSequencer -Static spBunnyLife -Static spOuch -Static sppq -Static spzan - -Function Main() - - m_hWnd := dd_CreateWindow() - - // Background........... - - sfBack := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfBack, "black.bmp", 0 , 0, 640, 480 ) - spBack := dd_CreateSprite( sfBack, "background", 640, 480, 1, 101, .t., 240 ) - dd_SPSetXY( spBack, 0,0) - - - // Bricks...... - - sfBreak1 := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfBreak1, "brick1.bmp", 0 , 0, 640, 480 ) - - sfBreak2 := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfBreak2, "brick2.bmp", 0 , 0, 640, 480 ) - - sfBreak3 := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfBreak3, "brick3.bmp", 0 , 0, 640, 480 ) - - spaBreaks := Array(80) - nCont := 1 - for t := 1 to 80 - if nCont == 3 - spaBreaks[t] := dd_CreateSprite( sfBreak3, "Break", 30, 15, 6, 100, .f., 240 ) - nCont := 1 - else - if nCont == 2 - spaBreaks[t] := dd_CreateSprite( sfBreak2, "Break", 30, 15, 6, 100, .f., 240 ) - nCont := 3 - else - if nCont == 1 - spaBreaks[t] := dd_CreateSprite( sfBreak1, "Break", 30, 15, 6, 100, .f., 240 ) - nCont := 2 - endif - endif - endif - - dd_SPSetSolid( spaBreaks[t], .t. ) - dd_SPSetVisible( spaBreaks[t], .t. ) - dd_SPOnCollision( spaBreaks[t], "BRICK_ONCOLLISION" ) - next - - for t := 1 to 20 - dd_SPSetXY( spaBreaks[t], t*30 + 5,10 ) - next - for t := 21 to 40 - dd_SPSetXY( spaBreaks[t], ( t - 20 ) * 30 + 12,25 ) - next - for t := 41 to 60 - dd_SPSetXY( spaBreaks[t], ( t - 40 ) * 30+ 5 ,40 ) - next - for t := 61 to 80 - dd_SPSetXY( spaBreaks[t], ( t - 60 ) * 30 + 12,55 ) - next - - // Shots...... - - sfShot := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfShot, "shot.bmp", 0 , 0, 640, 480 ) - spShots := Array( 10 ) - nShotsActive := 1 - - for t := 1 to 10 - spShots[t] := dd_CreateSprite( sfShot, "Shot", 10, 20, 3, 100, .f., 240 ) - dd_SPSetSolid( spShots[ t ], .t. ) - dd_SPSetMasked( spShots[ t ], .t. ) - dd_SPOnOutScreen( spShots[ t ], "SHOT_OUTOFBOUND" ) - next - - - // Bunny.......... - - sfBunny := dd_CreateOffScreenBitmap(NIL,NIL) - dd_LoadBmpIntoSurface( sfBunny, "anima2.bmp", 0 , 0, 640, 480 ) - spBunny := dd_CreateSprite( sfBunny, "bunny",70,52 , 6, 101, .t., 240 ) - - dd_SPSetMasked( spBunny, .t. ) - dd_SPSetXY( spBunny, 0, 420 ) - dd_SPOnFirstFrame( spBunny, "BUNNY_ONFIRSTFRAME" ) - dd_SPSetVisible( spBunny , .t. ) - - spBunnyLife := 4 - - dd_StartWindow( m_hWnd ) - - -return - - -//-------------------------------------------------------------// - -function Brick_OnCollision( nMe, nCollided ) - lOk := .f. - for t := 1 to 10 - if nCollided == spShots[t] - lOk := .t. - endif - next - if lOk - dd_SPSetVisible( nCollided, .f. ) - dd_SPSetVisible( nMe, .f. ) - endif -return - -//-------------------------------------------------------------// - -function Shot_OutOfBound( nShot ) - dd_SPSetVisible( nShot, .f. ) -return - -//-------------------------------------------------------------// - -function Bunny_OnFirstFrame( ) - - if dd_isKeyPressed( 16 ) - plusVelo := 2 - else - plusVelo := 1 - endif - - dd_SPClearDirection( spBunny ) - - if dd_isKeyPressed( 39 ) - dd_SPSetDirection( spBunny, 6, 8 * plusVelo , 0 ) - endif - - if dd_isKeyPressed( 37 ) - dd_SPSetDirection( spBunny, 4, -8 * plusVelo , 0 ) - endif - -return - -//-------------------------------------------------------------// - -function ddOnRender() - - if dd_isKeyPressed( 32 ) - if spBunnyLife > 0 - dd_SPClearDirection( spShots[ nShotsActive ] ) - dd_SPSetDirection( spShots[nShotsActive] , 6 , 0 , (-15) ) - - x := dd_SPGetX( spBunny ) - y := dd_SPGetY( spBunny ) - - dd_SPSetXY( spShots[nShotsActive], x, y - 20 ) - dd_SPSetVisible( spShots[nShotsActive], .t. ) - nShotsActive += 1 - if nShotsActive > 10 - nShotsActive := 1 - endif - endif - endif -return - -//-------------------------------------------------------------// diff --git a/harbour/contrib/hbw32ddr/w32_ddrw.cpp b/harbour/contrib/hbw32ddr/w32_ddrw.cpp deleted file mode 100644 index ed3d8a9d62..0000000000 --- a/harbour/contrib/hbw32ddr/w32_ddrw.cpp +++ /dev/null @@ -1,881 +0,0 @@ -/* - * $Id$ - */ - -/* - * Copyright(C) 1999 by Jesus Salas - * - * 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 of the License, 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; if not, write to: - * - * The Free Software Foundation, Inc., - * 675 Mass Ave, Cambridge, MA 02139, USA. - * - * You can contact me at: jsalas@gruposp.com jsalas@sp-editores.es - * - */ - -#define INITGUID - -#define HB_OS_WIN_32_USED - -#include "hbapi.h" -#include "hbvm.h" - -/* DDraw initialize */ - -#include "ddraw.h" - -#define HB_DD_TIMER_ID 1 -#define HB_DD_TIMER_RATE 100 - -// DDRAW MANAGEMENT -// Global Data - -BOOL hb_dd_g_handling_events = FALSE; // painting? -LPDIRECTDRAW4 hb_dd_g_pDD = NULL; // DirectDraw object -HWND hb_dd_g_DDHwnd; // Our hWnd -long hb_dd_g_xWindow = 0; -long hb_dd_g_yWindow = 0; - -//------------------------------------------------------------------------------// -// Management Structs for surfaces... - -#define MAX_DDSURFACES 255 - -LPDIRECTDRAWSURFACE4 hb_dd_g_DDSFaces[ MAX_DDSURFACES + 1 ]; - -long hb_dd_g_DDSFaceCount = 0; - -//------------------------------------------------------------------------------// -// Sprites Management - -#define MAX_SPRITES 256 - -struct st_Sprites -{ - short int Type; // Type of Data - long Surface; // Surface index for loaded Image(s) - char * cName; // Sprite friendly Name - // 2D Engine data - long Width; // width of one frame - long Height; // height of one frame - long Images; // Number of frames in Surface - BOOL Visible; // Render it and do Hit detect? - long Frame; // Actual Frame to Render - long zOrder; // For painting - long x; // x in Virtual Screen - long y; // y in Virtual Screen - long VisibleX; // "real" y in Visible Screen - long VisibleY; // "real" x in Visible Screen - long FrameSpeed; // Render frame time ratio - long DrawInverted; // Draw Inverted - long Direction; // Clock wise code 1-2-3-4-5-6-7-8-9 - long xIncrement; // x Increment Increment; - long yIncrement; // y Increment - long Solid; // is Solid object ( collision on ) - long Masked; // is Masked? - short int lCollision; // Collision Detect On/Off - - // Sprite Event Handlers... - - char * OnRender; // Render event Handler - char * OnCollision; // Collision Event Handler - char * OnFirstFrame; // First Frame handler - char * OnOutScreen; // Out of Bounds... - -} hb_dd_Sprites[ MAX_SPRITES ]; - -long hb_dd_g_SpritesCount = 0; - -//------------------------------------------------------------------// -// Multi-Key control array. - -short int hb_dd_g_KeyDown[ 256 ]; - -//------------------------------------------------------------------// - -long hb_dd_checkError( HRESULT hr ) -{ - long p = 0; - - switch( hr ) - { - case DDERR_EXCEPTION : p++;break; - case DDERR_GENERIC : p++;break; - case DDERR_INVALIDOBJECT : p++;break; - case DDERR_INVALIDPARAMS : p++;break; - case DDERR_INVALIDRECT : p++;break; - case DDERR_NOBLTHW : p++;break; - case DDERR_SURFACEBUSY : p++;break; - case DDERR_SURFACELOST : p++;break; - case DDERR_UNSUPPORTED : p++;break; - case DDERR_WASSTILLDRAWING : p++;break; - case DDERR_NOOVERLAYHW : p++;break; - case DDERR_NOTAOVERLAYSURFACE : p++;break; - case DDERR_INVALIDSURFACETYPE : p++;break; - } - - return p; -} - -void hb_dd_g_Error( char *, long , char *) -{ -} - -void hb_dd_WinError( void ) -{ - LPVOID lpMsgBuf;FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - (LPTSTR) &lpMsgBuf, 0, NULL );// Process any inserts in lpMsgBuf. - // ...// Display the string. - MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); - // Free the buffer. - LocalFree( lpMsgBuf ); -} - -//------------------------------------------------------------------// - -void hb_dd_ReleaseAllObjects(void) -{ - long t; - if( hb_dd_g_pDD != NULL ) - { - if( hb_dd_g_DDSFaces[ 0 ] != NULL ) - { - hb_dd_g_DDSFaces[ 0 ]->Release(); - hb_dd_g_DDSFaces[ 0 ] = NULL; - } - - for( t = 2; t < MAX_DDSURFACES; t++ ) - { - if( hb_dd_g_DDSFaces[ t ] != NULL ) - { - hb_dd_g_DDSFaces[ t ]->Release(); - hb_dd_g_DDSFaces[ t ] = NULL; - } - } - hb_dd_g_pDD->Release(); - hb_dd_g_pDD = NULL; - } -} - -//------------------------------------------------------------------// - -DWORD hb_dd_DDColorMatch(IDirectDrawSurface4 * pdds, COLORREF rgb) -{ - COLORREF rgbT; - HDC hdc; - DWORD dw = CLR_INVALID; - DDSURFACEDESC2 ddsd; - HRESULT hres; - - // - // Use GDI SetPixel to color match for us - // - if( rgb != CLR_INVALID && pdds->GetDC( &hdc ) == DD_OK ) - { - rgbT = GetPixel( hdc, 0, 0 ); // Save current pixel value - SetPixel( hdc, 0, 0, rgb ); // Set our value - pdds->ReleaseDC( hdc ); - } - // - // Now lock the surface so we can read back the converted color - // - ddsd.dwSize = sizeof( ddsd ); - - while( ( hres = pdds->Lock( NULL, &ddsd, 0, NULL ) ) == DDERR_WASSTILLDRAWING ); - - if( hres == DD_OK ) - { - dw = *( DWORD * ) ddsd.lpSurface; // Get DWORD - if( ddsd.ddpfPixelFormat.dwRGBBitCount < 32 ) - dw &= ( 1 << ddsd.ddpfPixelFormat.dwRGBBitCount ) - 1; // Mask it to bpp - pdds->Unlock(NULL); - } - // - // Now put the color that was there back. - // - if( rgb != CLR_INVALID && pdds->GetDC( &hdc ) == DD_OK ) - { - SetPixel( hdc, 0, 0, rgbT ); - pdds->ReleaseDC( hdc ); - } - - return dw; -} - -//------------------------------------------------------------------// - -void hb_dd_RenderSprites( long control ) -{ - HRESULT hRet; - long cont,cont2; - RECT rcRect; - LPDIRECTDRAWSURFACE4 pdds; - PHB_DYNS pDynSym; - - pDynSym = hb_dynsymFindName( "DDONRENDER" ); - - if( pDynSym ) - { - hb_vmPushSymbol( hb_dynsymSymbol( pDynSym ) ); - hb_vmPushNil(); - hb_vmDo( 0 ); - } - - for( cont=0; cont hb_dd_Sprites[ cont ].Images ) - { - if( hb_dd_Sprites[ cont ].OnFirstFrame != NULL ) - { - pDynSym = hb_dynsymFindName( hb_dd_Sprites[ cont ].OnFirstFrame ); - - if( pDynSym ) - { - hb_vmPushSymbol( hb_dynsymSymbol( pDynSym ) ); - hb_vmPushNil(); - hb_vmDo(0); - } - } - hb_dd_Sprites[ cont ].Frame = 1; - } - - rcRect.left = ( hb_dd_Sprites[ cont ].Frame - 1 ) * hb_dd_Sprites[ cont ].Width; - rcRect.top = 0; - rcRect.right = ( hb_dd_Sprites[ cont ].Frame - 1 ) * hb_dd_Sprites[ cont ].Width + hb_dd_Sprites[ cont ].Width; - rcRect.bottom = hb_dd_Sprites[ cont ].Height; - - if( control == 1 ) - hb_dd_Sprites[ cont ].Frame++; - - pdds = hb_dd_g_DDSFaces[ hb_dd_Sprites[ cont ].Surface ]; - - while( TRUE ) - { - if( ! hb_dd_Sprites[ cont ].Masked ) - hRet = hb_dd_g_DDSFaces[1]->BltFast(hb_dd_Sprites[ cont ].x, hb_dd_Sprites[ cont ].y, pdds, &rcRect, FALSE ); - else - { - DDCOLORKEY ddck; - - ddck.dwColorSpaceLowValue = hb_dd_DDColorMatch( pdds, CLR_INVALID ); - ddck.dwColorSpaceHighValue = ddck.dwColorSpaceLowValue; - - pdds->SetColorKey( DDCKEY_SRCBLT ,&ddck ); - - hb_dd_g_DDSFaces[1]->SetColorKey( DDCKEY_DESTBLT ,&ddck ); - - hRet = hb_dd_g_DDSFaces[1]->BltFast(hb_dd_Sprites[ cont ].x, hb_dd_Sprites[ cont ].y, pdds, &rcRect, DDBLTFAST_SRCCOLORKEY ); - } - hb_dd_checkError( hRet ); - if( hRet == DD_OK ) - break; - if( hRet == DDERR_SURFACELOST ) - { - hRet = hb_dd_g_DDSFaces[1]->Restore(); - if (hRet != DD_OK) - break; - } - if( hRet != DDERR_WASSTILLDRAWING ) - break; - } - - if( hb_dd_Sprites[ cont ].OnOutScreen != NULL ) - { - if( hb_dd_Sprites[ cont ].x < 0 || hb_dd_Sprites[ cont ].y < 0 || hb_dd_Sprites[ cont ].x > 640 || hb_dd_Sprites[ cont ].y > 480 ) - { - if( hb_dd_Sprites[ cont ].OnOutScreen != NULL ) - { - pDynSym = hb_dynsymFindName( hb_dd_Sprites[ cont ].OnOutScreen ); - - if( pDynSym ) - { - hb_vmPushSymbol( hb_dynsymSymbol( pDynSym ) ); - hb_vmPushNil(); - hb_vmPushLong( cont ); - hb_vmDo( 1 ); - } - } - - //SetParam( ( void * ) &cont , TSI_DWORD ); - //VMCall( hb_dd_Sprites[ cont ].OnOutScreen ); - } - } - } - } -} - -//------------------------------------------------------------------// - -LRESULT _stdcall hb_dd_DDWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) -{ - HRESULT hRet; - int nVirtKey; - - switch( uMsg ) - { - case WM_DESTROY: - { - hb_dd_ReleaseAllObjects(); - break; - } - case WM_KEYUP: - { - nVirtKey = (int) wParam; // virtual-key code - hb_dd_g_KeyDown[ nVirtKey ] = 0; - break; - } - case WM_KEYDOWN: - { - nVirtKey = (int) wParam; // virtual-key code - hb_dd_g_KeyDown[ nVirtKey ] = 1; - - if( ( int ) wParam == 27 ) - { - PostMessage( hWnd, WM_CLOSE,0,0); - PostMessage( hWnd, WM_DESTROY,0,0); - } - break; - } - case WM_TIMER: - { - if( HB_DD_TIMER_ID == wParam ) - { - if( ! hb_dd_g_handling_events ) - { - hb_dd_g_handling_events = TRUE; - hb_dd_RenderSprites( 1 ); - while( TRUE ) - { - hRet = hb_dd_g_DDSFaces[0]->Flip(NULL, 0); - if( hRet == DD_OK ) - break; - if( hRet == DDERR_SURFACELOST ) - { - hRet = hb_dd_g_DDSFaces[0]->Restore(); - if( hRet != DD_OK ) - break; - } - if( hRet != DDERR_WASSTILLDRAWING ) - break; - } - hb_dd_g_handling_events = FALSE; - } - } - break; - } - } - - return DefWindowProc( hWnd, uMsg, wParam , lParam ); -} - -//------------------------------------------------------------------// - -int hb_dd_InitFail( HWND hWnd, HRESULT hRet, LPCTSTR szError, ... ) -{ - char szBuff[ 128 ]; - va_list vl; - va_start( vl, szError ); - vsprintf( szBuff, szError, vl ); - MessageBox( hWnd, szBuff, "4dNow extend sys.", MB_OK ); - DestroyWindow( hWnd ); - va_end( vl ); - exit( 1 ); - return hRet; -} - -//------------------------------------------------------------------// - -//------------------------------------------------------------------// - -void hb_RestoreAll(void) -{ - HRESULT hRet; - long t; - - hRet = hb_dd_g_DDSFaces[0]->Restore(); - if( hRet == DD_OK ) - { - for( t = 2; t < MAX_DDSURFACES; t++ ) - { - if( hb_dd_g_DDSFaces[ t ] != NULL ) - hb_dd_g_DDSFaces[ t ]->Restore(); - } - } -} - - -//------------------------------------------------------------------// - -void hb_dd_DDrawStartup( HWND hWnd ) -{ - DDSURFACEDESC2 ddsd; - DDSCAPS2 ddscaps; - HRESULT hRet; - LPDIRECTDRAW pDD; - long t; - - hb_dd_g_DDHwnd = hWnd; - - hRet = DirectDrawCreate(NULL, &pDD, NULL); - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "DirectDrawCreate FAILED" ); - - hRet = pDD->QueryInterface(IID_IDirectDraw4, (LPVOID *) &hb_dd_g_pDD ); - - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "QueryInterface FAILED" ); - - hRet = pDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT | DDSCL_ALLOWMODEX ); - - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "SetCooperativeLevel FAILED" ); - - hRet = hb_dd_g_pDD->SetDisplayMode(hb_dd_g_xWindow , hb_dd_g_yWindow , 16, 0, 0); - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "SetDisplayMode FAILED" ); - - for( t=0;t<= MAX_DDSURFACES;t++ ) - hb_dd_g_DDSFaces[t] = NULL; - for( t=0;t< MAX_SPRITES;t++) - hb_dd_Sprites[t].Surface = -1; - for( t=0;t<256;t++) - hb_dd_g_KeyDown[t] = 0; - ZeroMemory(&ddsd, sizeof(ddsd)); - - ddsd.dwSize = sizeof(ddsd); - ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT | DDSD_CKSRCBLT; - ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | - DDSCAPS_FLIP | - DDSCAPS_COMPLEX ; - ddsd.dwBackBufferCount = 1; - hRet = hb_dd_g_pDD->CreateSurface(&ddsd, &hb_dd_g_DDSFaces[0] , NULL); - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "CreateSurface FAILED" ); - - ddscaps.dwCaps = DDSCAPS_BACKBUFFER; - - hRet = hb_dd_g_DDSFaces[0]->GetAttachedSurface(&ddscaps,&hb_dd_g_DDSFaces[1] ); - - if( hRet != DD_OK ) - hb_dd_InitFail( hWnd, hRet, "GetAttachedSurface FAILED" ); - - if( HB_DD_TIMER_ID != SetTimer( hWnd, HB_DD_TIMER_ID, HB_DD_TIMER_RATE, NULL ) ) - hb_dd_InitFail( hWnd, hRet, "SetTimer FAILED" ); - - hb_dd_g_DDSFaceCount = 2; -} - -//------------------------------------------------------------------// -HRESULT hb_dd_DDCopyBitmap(IDirectDrawSurface4 * pdds, HBITMAP hbm, int x, int y, - int dx, int dy) -{ - HDC hdcImage; - HDC hdc; - BITMAP bm; - DDSURFACEDESC2 ddsd; - HRESULT hr; - - if( hbm == NULL || pdds == NULL ) - return E_FAIL; - - pdds->Restore(); - - hdcImage = CreateCompatibleDC(NULL); - if( !hdcImage ) - OutputDebugString("createcompatible dc failed\n"); - SelectObject(hdcImage, hbm); - - GetObject(hbm, sizeof(bm), &bm); - dx = dx == 0 ? bm.bmWidth : dx; // Use the passed size, unless zero - dy = dy == 0 ? bm.bmHeight : dy; - - ddsd.dwSize = sizeof(ddsd); - ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH; - - pdds->GetSurfaceDesc(&ddsd); - - if( ( hr = pdds->GetDC( &hdc ) ) == DD_OK ) - { - StretchBlt(hdc, 0, 0, ddsd.dwWidth, ddsd.dwHeight, hdcImage, x, y, - dx, dy, SRCCOPY); - pdds->ReleaseDC(hdc); - } - DeleteDC(hdcImage); - return hr; -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_ISKEYPRESSED ) -{ - if( hb_dd_g_KeyDown[ hb_parnl( 1 ) ] ) - hb_retl( 1 ); - else - hb_retl( 0 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPGETXY ) -{ - // This function is Broken ( hb_stornl fail ); - - long n = hb_parnl( 1 ); - - hb_reta( 2 ); - - hb_stornl( hb_dd_Sprites[ n ].x, -1, 0 ); - hb_stornl( hb_dd_Sprites[ n ].y, -1, 1 ); -} - -HB_FUNC( DD_SPGETX ) -{ - hb_retnl( hb_dd_Sprites[ hb_parnl( 1 ) ].x ); -} - -HB_FUNC( DD_SPGETY ) -{ - hb_retnl( hb_dd_Sprites[ hb_parnl( 1 ) ].y ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPGETVISIBLE ) -{ - hb_retl( hb_dd_Sprites[ hb_parnl( 1 ) ].Visible ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETVISIBLE ) -{ - hb_dd_Sprites[ hb_parnl( 1 ) ].Visible = ( int ) hb_parl( 2 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPONRENDER ) -{ - hb_dd_Sprites[ hb_parnl( 1 ) ].OnRender = hb_strdup( hb_parc(1) ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPCLEARDIRECTION ) -{ - long n = hb_parnl( 1 ); - hb_dd_Sprites[ n ].xIncrement = 0; - hb_dd_Sprites[ n ].yIncrement = 0; - hb_dd_Sprites[ n ].Direction = -1; -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETSOLID ) -{ - hb_dd_Sprites[hb_parnl( 1 ) ].Solid = hb_parl( 2 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETMASKED ) -{ - hb_dd_Sprites[hb_parnl( 1 ) ].Masked = hb_parl( 2 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETDIRECTION ) -{ - long n = hb_parnl( 1 ); - - hb_dd_Sprites[ n ].Direction = hb_parnl( 2 ); - hb_dd_Sprites[ n ].xIncrement += hb_parnl( 3 ); - hb_dd_Sprites[ n ].yIncrement += hb_parnl( 4 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPONFIRSTFRAME ) -{ - long n = hb_parnl( 1 ); - hb_dd_Sprites[ n ].OnFirstFrame = hb_strdup( hb_parc(2) ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPONOUTSCREEN ) -{ - long n = hb_parnl( 1 ); - hb_dd_Sprites[ n ].OnOutScreen = hb_strdup( hb_parc(2) ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPONCOLLISION ) -{ - long n = hb_parnl( 1 ); - hb_dd_Sprites[ n ].OnCollision = hb_strdup( hb_parc(2) ); - hb_dd_Sprites[ n ].lCollision = 1; -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_CREATESPRITE ) -{ - long n = hb_dd_g_SpritesCount; - - ZeroMemory( &hb_dd_Sprites[ n ], sizeof( struct st_Sprites ) ); - - hb_dd_Sprites[ n ].Surface = hb_parnl( 1 ); - hb_dd_Sprites[ n ].cName = hb_strdup( hb_parc( 2 ) ); - hb_dd_Sprites[ n ].Width = hb_parnl( 3 ); - hb_dd_Sprites[ n ].Height = hb_parnl( 4 ); - hb_dd_Sprites[ n ].Images = hb_parnl( 5 ); - hb_dd_Sprites[ n ].zOrder = hb_parnl( 6 ); - hb_dd_Sprites[ n ].Visible = hb_parl( 7 ); - hb_dd_Sprites[ n ].FrameSpeed = hb_parnl( 8 ); - - hb_dd_g_SpritesCount++; - - hb_retnl( n ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETXY ) -{ - long n = hb_parnl( 1 ); - long x = hb_parnl( 2 ); - long y = hb_parnl( 3 ); - hb_dd_Sprites[ n ].x = x; - hb_dd_Sprites[ n ].y = y; -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_SPSETINVERTED ) -{ - LPDIRECTDRAWSURFACE4 pdds; - long n = hb_parnl( 1 ); - RECT rt; - DDBLTFX todo; - - long dir = hb_parnl( 2 ); - if( dir != hb_dd_Sprites[ n ].DrawInverted ) - { - rt.top = 0; - rt.left = 0; - rt.bottom= hb_dd_Sprites[ n ].Height; - rt.right = hb_dd_Sprites[ n ].Width * hb_dd_Sprites[ n ].Images; - ZeroMemory( &todo, sizeof( DDBLTFX ) ); - - hb_dd_Sprites[ n ].DrawInverted = dir; - todo.dwSize = sizeof( DDBLTFX ); - todo.dwDDFX = DDBLTFX_MIRRORLEFTRIGHT; - pdds = hb_dd_g_DDSFaces[ hb_dd_Sprites[ n ].Surface ]; - pdds->Blt(&rt, pdds, &rt, DDBLT_DDFX ,&todo ); - } -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_MSGBOX ) -{ - char *m1; - char *m2; - char deftitle [100] = ""; - char defmsg [2] = ""; - - if( hb_pcount() > 0 ) - m1 = hb_parc( 1 ); - else - m1 = defmsg; - - if( hb_pcount() > 1 ) - m2 = hb_parc( 2 ); - else - m2 = deftitle; - - MessageBox( hb_dd_g_DDHwnd, m1, m2, 0 ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_CREATEWINDOW ) -{ - HWND m_hWnd; - HINSTANCE m_hInstance = GetModuleHandle(NULL); - long x,y; - - x= hb_pcount() > 10 ?hb_parnl( 1 ) : GetSystemMetrics(SM_CXSCREEN); - y= hb_pcount() > 11 ?hb_parnl( 2 ) : GetSystemMetrics(SM_CYSCREEN); - - hb_dd_g_xWindow = x; - hb_dd_g_yWindow = y; - - WNDCLASS wndClass = { CS_HREDRAW | CS_VREDRAW, hb_dd_DDWndProc, 0, 0, m_hInstance, - NULL, - LoadCursor(NULL, IDC_ARROW), - (HBRUSH)GetStockObject(BLACK_BRUSH), - NULL, - TEXT("4dNow") }; - - RegisterClass( &wndClass ); - - m_hWnd = CreateWindow( TEXT("4dNow"), TEXT("4dNow"), - WS_POPUP, 0, - 0, x,y, NULL, NULL, m_hInstance, 0L ); - - if( !m_hWnd ) - hb_dd_WinError(); - - ShowWindow( m_hWnd,SW_SHOWMAXIMIZED ); - - hb_dd_DDrawStartup( m_hWnd ); - hb_retnl( ( long ) m_hWnd ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_LOADBMPINTOSURFACE ) -{ - long nSurface = hb_parnl( 1 ); - char * cBitmap = hb_parc ( 2 ); - long x = hb_parnl( 3 ); - long y = hb_parnl( 4 ); - long dx = hb_parnl( 5 ); - long dy = hb_parnl( 6 ); - - HBITMAP hbm; - - // Load our bitmap resource. - - hbm = (HBITMAP) LoadImage(GetModuleHandle(NULL), cBitmap, IMAGE_BITMAP, 0, - 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE); - - if( hbm == NULL ) - hb_dd_g_Error( "Can't load Bitmap.",100,cBitmap ); - - if( hb_dd_g_DDSFaces[ nSurface ] == NULL ) - hb_dd_g_Error( "Invalid Surface",nSurface,"LoadBmpIntoSurface"); - - if( DD_OK != hb_dd_DDCopyBitmap( hb_dd_g_DDSFaces[ nSurface ], hbm, x,y, dx, dy ) ) - hb_dd_g_Error( "DDCopyBitmap",nSurface,"LoadBmpIntoSurface"); - - DeleteObject( hbm ); -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_CREATEOFFSCREENBITMAP ) -{ - DDSURFACEDESC2 ddsd; - HRESULT hRet; - - if( ! hb_dd_g_pDD ) - hb_dd_g_Error("No DDraw Initialized",1000,""); - - if( hb_dd_g_DDSFaceCount >= MAX_DDSURFACES ) - hb_dd_g_Error( "No more DDSurfaces -> Limit reached -> CreateDDSurface()",1000,"DDraw extend sys"); - else - { - ZeroMemory(&ddsd, sizeof(ddsd)); - ddsd.dwSize = sizeof(ddsd); - ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH ; - ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; - ddsd.dwHeight = hb_dd_g_yWindow; - ddsd.dwWidth = hb_dd_g_xWindow; - hRet = hb_dd_g_pDD->CreateSurface(&ddsd, &hb_dd_g_DDSFaces[ hb_dd_g_DDSFaceCount ], NULL); - if( hRet != DD_OK ) - hb_dd_InitFail( hb_dd_g_DDHwnd, hRet, "CreateSurface FAILED" ); - } - - hb_retnl( hb_dd_g_DDSFaceCount ); - hb_dd_g_DDSFaceCount++; -} - -//------------------------------------------------------------------// - -HB_FUNC( DD_STARTWINDOW ) -{ - MSG msg; - BOOL loop = TRUE; - - while( loop ) - { - if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) - { - TranslateMessage( &msg ); - DispatchMessage( &msg ); - } - if( WM_CLOSE == msg.message ) - loop = FALSE; - } -} diff --git a/harbour/contrib/make_b32_all.bat b/harbour/contrib/make_b32_all.bat index af3df03240..3348ae9638 100644 --- a/harbour/contrib/make_b32_all.bat +++ b/harbour/contrib/make_b32_all.bat @@ -39,7 +39,7 @@ rem ******************************************************* rem Compiling contrib dirs ... rem ******************************************************* -rem hbsqlit2 hbw32ddr hbwhat32 hbziparch +rem hbsqlit2 hbwhat32 hbziparch set _HB_DIRS=gtwvg hbbmcdx hbbtree hbclipsm hbct hbgt hbmisc for %%n in ( %_HB_DIRS% ) do %COMSPEC% /c %_HB_BATWORKER% %%n %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/make_gcc_all.sh b/harbour/contrib/make_gcc_all.sh index bc5f2a5543..ec6ff62bd8 100755 --- a/harbour/contrib/make_gcc_all.sh +++ b/harbour/contrib/make_gcc_all.sh @@ -44,7 +44,7 @@ _HB_DIRS="hbbmcdx hbbtree hbclipsm hbct hbgt hbmisc hbmsql hbmzip hbnf hbtip hbs case "$HB_ARCHITECTURE" in w32|cyg|os2) - # hbw32ddr hbwhat32 hbziparch + # hbwhat32 hbziparch _HB_DIRS_ADD="gtwvg hbole hbodbc hbw32 rddado" ;; *) diff --git a/harbour/contrib/make_vc_all.bat b/harbour/contrib/make_vc_all.bat index 09ff94fbc7..870581e5c6 100644 --- a/harbour/contrib/make_vc_all.bat +++ b/harbour/contrib/make_vc_all.bat @@ -39,7 +39,7 @@ rem ******************************************************* rem Compiling contrib dirs ... rem ******************************************************* -rem hbsqlit2 hbw32ddr hbwhat32 hbziparch +rem hbsqlit2 hbwhat32 hbziparch set _HB_DIRS=gtwvg hbbmcdx hbbtree hbclipsm hbct hbgt hbmisc for %%n in ( %_HB_DIRS% ) do %COMSPEC% /c %_HB_BATWORKER% %%n %1 %2 %3 %4 %5 %6 %7 %8 %9