From a55a271f64ecd0b24e8434f3b86a5996c134a394 Mon Sep 17 00:00:00 2001 From: tobigun Date: Tue, 19 Feb 2008 09:41:46 +0000 Subject: A C-Wrapper to make the ProjectM C++-Headers usable in Delphi. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@861 b956fd51-792f-4845-bead-9b4dfca2ff2c --- .../projectM/1.0/cwrapper/projectM-cwrapper.sln | 20 ++ .../projectM/1.0/cwrapper/projectM-cwrapper.vcproj | 207 +++++++++++++++++++++ Game/Code/lib/projectM/1.0/cwrapper/projectM.cpp | 69 +++++++ Game/Code/lib/projectM/1.0/cwrapper/projectM.h | 27 +++ 4 files changed, 323 insertions(+) create mode 100644 Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.sln create mode 100644 Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.vcproj create mode 100644 Game/Code/lib/projectM/1.0/cwrapper/projectM.cpp create mode 100644 Game/Code/lib/projectM/1.0/cwrapper/projectM.h diff --git a/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.sln b/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.sln new file mode 100644 index 00000000..e05f79a3 --- /dev/null +++ b/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "projectM-cwrapper", "projectM-cwrapper.vcproj", "{8E653284-12F3-4A90-9D0D-4195557051F7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E653284-12F3-4A90-9D0D-4195557051F7}.Debug|Win32.ActiveCfg = Debug|Win32 + {8E653284-12F3-4A90-9D0D-4195557051F7}.Debug|Win32.Build.0 = Debug|Win32 + {8E653284-12F3-4A90-9D0D-4195557051F7}.Release|Win32.ActiveCfg = Release|Win32 + {8E653284-12F3-4A90-9D0D-4195557051F7}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.vcproj b/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.vcproj new file mode 100644 index 00000000..9c182cac --- /dev/null +++ b/Game/Code/lib/projectM/1.0/cwrapper/projectM-cwrapper.vcproj @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Game/Code/lib/projectM/1.0/cwrapper/projectM.cpp b/Game/Code/lib/projectM/1.0/cwrapper/projectM.cpp new file mode 100644 index 00000000..ff8e2a2f --- /dev/null +++ b/Game/Code/lib/projectM/1.0/cwrapper/projectM.cpp @@ -0,0 +1,69 @@ +#include "projectM.h" + +projectM* projectM_create1(char* config_file) +{ + return new projectM(config_file); +} + +projectM* projectM_create2(int gx, int gy, int fps, int texsize, + int width, int height, char* preset_url, char* title_fonturl, char* title_menuurl) +{ + return new projectM(gx, gy, fps, texsize, width, height, + preset_url, title_fonturl, title_menuurl); +} + +void projectM_resetGL(projectM* pm, int width, int height) +{ + pm->projectM_resetGL(width, height); +} + +void projectM_setTitle(projectM* pm, char* title) +{ + pm->projectM_setTitle(title); +} + +void projectM_renderFrame(projectM* pm) +{ + pm->renderFrame(); +} + +unsigned projectM_initRenderToTexture(projectM* pm) +{ + return pm->initRenderToTexture(); +} + +void projectM_key_handler(projectM* pm, projectMEvent event, + projectMKeycode keycode, projectMModifier modifier) +{ + pm->key_handler(event, keycode, modifier); +} + +void projectM_free(projectM* pm) +{ + delete pm; +} + +void PCM_addPCMfloat(projectM* pm, float *PCMdata, int samples) +{ + pm->pcm->addPCMfloat(PCMdata, samples); +} + +void PCM_addPCM16(projectM* pm, short pcm_data[2][512]) +{ + pm->pcm->addPCM16(pcm_data); +} + +void PCM_addPCM16Data(projectM* pm, const short* pcm_data, short samples) +{ + pm->pcm->addPCM16Data(pcm_data, samples); +} + +void PCM_addPCM8(projectM* pm, unsigned char pcm_data[2][1024]) +{ + pm->pcm->addPCM8(pcm_data); +} + +void PCM_addPCM8_512(projectM* pm, const unsigned char pcm_data[2][512]) +{ + pm->pcm->addPCM8_512(pcm_data); +} diff --git a/Game/Code/lib/projectM/1.0/cwrapper/projectM.h b/Game/Code/lib/projectM/1.0/cwrapper/projectM.h new file mode 100644 index 00000000..a64f2666 --- /dev/null +++ b/Game/Code/lib/projectM/1.0/cwrapper/projectM.h @@ -0,0 +1,27 @@ +#ifndef __PROJECTM_CWRAPPER_H__ +#define __PROJECTM_CWRAPPER_H__ + +#include "projectM.hpp" + +extern "C" { + DLLEXPORT projectM* projectM_create1(char* config_file); + DLLEXPORT projectM* projectM_create2(int gx, int gy, int fps, int texsize, + int width, int height, char* preset_url, char* title_fonturl, char* title_menuurl); + + DLLEXPORT void projectM_resetGL(projectM* pm, int width, int height); + DLLEXPORT void projectM_setTitle(projectM* pm, char* title); + DLLEXPORT void projectM_renderFrame(projectM* pm); + DLLEXPORT unsigned projectM_initRenderToTexture(projectM* pm); + DLLEXPORT void projectM_key_handler(projectM* pm, projectMEvent event, + projectMKeycode keycode, projectMModifier modifier); + + DLLEXPORT void projectM_free(projectM* pm); + + DLLEXPORT void PCM_addPCMfloat(projectM* pm, float *PCMdata, int samples); + DLLEXPORT void PCM_addPCM16(projectM* pm, short [2][512]); + DLLEXPORT void PCM_addPCM16Data(projectM* pm, const short* pcm_data, short samples); + DLLEXPORT void PCM_addPCM8(projectM* pm, unsigned char [2][1024]); + DLLEXPORT void PCM_addPCM8_512(projectM* pm, const unsigned char [2][512]); +} + +#endif \ No newline at end of file -- cgit v1.2.3