From e7319c6cad33545c8ece3b17c024bfbd26fca413 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sun, 10 Feb 2019 10:52:41 +0200 Subject: [PATCH] kill -sdlvis; can't even find anything about it on google. ancient code. --- src/projectM-sdlvis/Info.plist | 36 ---- src/projectM-sdlvis/Makefile | 54 ----- src/projectM-sdlvis/Makefile.dist | 20 -- src/projectM-sdlvis/Makefile.macos | 79 -------- src/projectM-sdlvis/PkgInfo | 1 - src/projectM-sdlvis/projectM.icns | Bin 72380 -> 0 bytes src/projectM-sdlvis/projectMvis.cc | 293 ---------------------------- src/projectM-sdlvis/projectMvis.dsp | 106 ---------- src/projectM-sdlvis/sdltoprojectM.h | 165 ---------------- 9 files changed, 754 deletions(-) delete mode 100755 src/projectM-sdlvis/Info.plist delete mode 100755 src/projectM-sdlvis/Makefile delete mode 100644 src/projectM-sdlvis/Makefile.dist delete mode 100755 src/projectM-sdlvis/Makefile.macos delete mode 100755 src/projectM-sdlvis/PkgInfo delete mode 100755 src/projectM-sdlvis/projectM.icns delete mode 100755 src/projectM-sdlvis/projectMvis.cc delete mode 100755 src/projectM-sdlvis/projectMvis.dsp delete mode 100755 src/projectM-sdlvis/sdltoprojectM.h diff --git a/src/projectM-sdlvis/Info.plist b/src/projectM-sdlvis/Info.plist deleted file mode 100755 index 0149b4a90..000000000 --- a/src/projectM-sdlvis/Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleIdentifier - org.projectM.projectMvis - CFBundleDevelopmentRegion - English - CFBundleExecutable - projectMvis - CFBundleIconFile - projectM.icns - CFBundleName - projectMvis - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 0.95 - CFBundleShortVersionString - 0.95 - CFBundleGetInfoString - projectMvis 0.95, (c)2004 projectM Team - CFBundleLongVersionString - projectMvis 0.95, (c)2004 projectM Team - NSHumanReadableCopyright - Copyright (c)2004 projectM Team - LSRequiresCarbon - - CSResourcesFileMapped - - - diff --git a/src/projectM-sdlvis/Makefile b/src/projectM-sdlvis/Makefile deleted file mode 100755 index 6df24f7c9..000000000 --- a/src/projectM-sdlvis/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# -# - -SUBDIRS= -RANLIB=ranlib -INCLUDES=-I. -I.. -I../projectm -I/usr/include/xmms -I/usr/include/glib-1.2 -I/usr/lib/glib/include -DHAVE_OPENGL -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/include/SDL -DEFINES= -DLINUX -DHAVE_OPENGL -DHAVE_CONFIG_H -D_THREAD_SAFE -CFLAGS=-O2 -#CFLAGS=-g -LIBRARIES= -L/usr/lib -lglib -L/usr/lib -lSDL -lGL -lGLU - -LD_FLAGS=-lprojectM -L../projectM -L/usr/local/lib $(LIBRARIES) - -SRCS=\ -projectMvis.cc -OBJS=$(SRCS:.c=.o) - -.SUFFIXES: .c - -all: projectMvis - -### Relinks the executable -projectMvis: $(OBJS) - rm -f projectMvis - $(CC) -o projectMvis $(OBJS) $(LD_FLAGS) - - -$(LIB_TOP): - @( if [ ! -d $(LIB_TOP) ]; then \ - ( mkdir $(LIB_TOP) ) \ - fi ) - -$(OBJS): %.o: %.c - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $*.c -o $*.o - -clean: - rm -f *.o - rm -f projectMvis - -distcln: cln - rm -f config.log - rm -f config.cache - rm -f config.status - -install: - mkdir -p /etc/projectM/fonts - mkdir -p /etc/projectM/presets - cp projectMvis /usr/local/bin/projectMvis - cp -r ../../fonts /etc/projectM - cp -r ../../presets_projectM /etc/projectM - chmod -R 755 /etc/projectM - chmod -R 777 /etc/projectM/presets - diff --git a/src/projectM-sdlvis/Makefile.dist b/src/projectM-sdlvis/Makefile.dist deleted file mode 100644 index 07988392e..000000000 --- a/src/projectM-sdlvis/Makefile.dist +++ /dev/null @@ -1,20 +0,0 @@ -# -# projectM -- Milkdrop-esque visualisation SDK -# Copyright (C)2003-2007 projectM Team -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# 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 PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# See 'LICENSE.txt' included within this release - -clean: diff --git a/src/projectM-sdlvis/Makefile.macos b/src/projectM-sdlvis/Makefile.macos deleted file mode 100755 index 42d53c739..000000000 --- a/src/projectM-sdlvis/Makefile.macos +++ /dev/null @@ -1,79 +0,0 @@ -# -# projectM -- Milkdrop-esque visualisation SDK -# Copyright (C)2003-2004 projectM Team -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# 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 PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# See 'LICENSE.txt' included within this release - -SUBDIRS= -RANLIB=ranlib - -INCLUDES=-I. -I.. -I../projectM -I../include -I/usr/local/include \ - -I/System/Library/Frameworks/AGL.framework/Headers \ - -I/System/Library/Frameworks/OpenGL.framework/Headers \ - -I/Developer/Headers/FlatCarbon - -DEFINES= -DMACOS -DHAVE_OPENGL -DHAVE_CONFIG_H -D_THREAD_SAFE -DDEBUG -CFLAGS=-O2 -#CFLAGS=-g -LIBRARIES= -framework QuickTime -framework IOKit -framework Cocoa -framework Carbon -framework AGL -framework OpenGL -lSDL -lSDLmain -#LD_FLAGS=-bundle -L/usr/local/lib $(LIBRARIES) -LD_FLAGS=-lprojectm -L../projectm -L/usr/local/lib $(LIBRARIES) - -SRCS=\ -projectMvis.c -OBJS=$(SRCS:.c=.o) - -.SUFFIXES: .c - -all: projectMvis - -### Relinks the executable -projectMvis: $(OBJS) - rm -f projectMvis - $(CC) -o projectMvis $(OBJS) $(LD_FLAGS) - /Developer/Tools/Rez -t APPL Carbon.r -o projectMvis - -$(LIB_TOP): - @( if [ ! -d $(LIB_TOP) ]; then \ - ( mkdir $(LIB_TOP) ) \ - fi ) - -$(OBJS): %.o: %.c - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $*.c -o $*.o - -clean: - rm -f *.o - rm -f projectMvis - -distcln: cln - rm -f config.log - rm -f config.cache - rm -f config.status - -bundle: projectMvis - rm -rf projectMvis.app - mkdir -p projectMvis.app/Contents - mkdir -p projectMvis.app/Contents/MacOS - mkdir -p projectMvis.app/Contents/Resources - cp projectMvis projectMvis.app/Contents/MacOS/projectMvis - cp Info.plist projectMvis.app/Contents - cp projectM.icns projectMvis.app/Contents/Resources/projectM.icns - cp -r ../../fonts projectMvis.app/Contents/Resources - cp -r ../../presets projectMvis.app/Contents/Resources - -image: bundle - rm -f projectMvis.dmg - hdiutil create -srcfolder projectMvis.app projectMvis.dmg diff --git a/src/projectM-sdlvis/PkgInfo b/src/projectM-sdlvis/PkgInfo deleted file mode 100755 index 791cf4dff..000000000 --- a/src/projectM-sdlvis/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -hvplhook \ No newline at end of file diff --git a/src/projectM-sdlvis/projectM.icns b/src/projectM-sdlvis/projectM.icns deleted file mode 100755 index 841b713431a921860fa8beb14c38456e0899847b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72380 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 -#include -#include - -#ifdef DEBUG -FILE *debugFile = NULL; -#endif - -projectM *globalPM = NULL; - -int dumpFrame = 0; -int frameNumber = 0; -GLubyte *fbuffer = NULL; - -extern void addPCM16(short [2][512]); - -void renderLoop( projectM *pm ) { - - int i; - int x, y; - int index; - short pcm_data[2][512]; - - while ( 1 ) { - projectMEvent evt; - projectMKeycode key; - projectMModifier mod; - - /** Process SDL events */ - SDL_Event event; - while ( SDL_PollEvent( &event ) ) { - /** Translate into projectM codes and process */ - evt = sdl2pmEvent( event ); - key = sdl2pmKeycode( event.key.keysym.sym ); - mod = sdl2pmModifier( event.key.keysym.mod ); - if ( evt == PROJECTM_KEYDOWN ) { - pm->key_handler( evt, key, mod ); - } - } - - /** Produce some fake PCM data to stuff into projectM */ - if ( pm->count % 5 == 0 ) { - for ( i = 0 ; i < 512 ; i++ ) { - pcm_data[0][i] = 0; - pcm_data[1][i] = 0; - } - } else { - for ( i = 0 ; i < 512 ; i++ ) { - if ( i % 2 == 0 ) { - pcm_data[0][i] = (float)( rand() / ( (float)RAND_MAX ) * (pow(2,14) ) ); - pcm_data[1][i] = (float)( rand() / ( (float)RAND_MAX ) * (pow(2,14) ) ); - } else { - pcm_data[0][i] = (float)( rand() / ( (float)RAND_MAX ) * (pow(2,14) ) ); - pcm_data[1][i] = (float)( rand() / ( (float)RAND_MAX ) * (pow(2,14) ) ); - } - if ( i % 2 == 1 ) { - pcm_data[0][i] = -pcm_data[0][i]; - pcm_data[1][i] = -pcm_data[1][i]; - } - } - } - - /** Add the waveform data */ - //addPCM16( pcm_data ); - - /** Render the new frame */ - pm->renderFrame(); - - if ( dumpFrame ) { - char fname[1024]; - FILE *f; - sprintf( fname, "projectM_%08d.ppm", frameNumber++ ); - f = fopen( fname, "wb" ); - fprintf( f, "P3\n#\n%d %d\n255\n", pm->wvw, pm->wvh ); - glReadPixels( 0, 0, pm->wvw, pm->wvh, GL_RGB, GL_UNSIGNED_BYTE, fbuffer ); - index = 0; - for ( y = 0 ; y < pm->wvh ; y++ ) { - for ( x = 0 ; x < pm->wvw ; x++ ) { - fprintf( f, "%d %d %d ", fbuffer[index++], fbuffer[index++], fbuffer[index++] ); - } - fprintf( f, "\n" ); - } - fclose( f ); - } - - SDL_GL_SwapBuffers(); - } - - printf("Worker thread: Exiting\n"); - } - - -int main( int argc, char *argv[] ) { - - /** Variables */ - int fullscreen = 0; - int width = 784, - height = 784; - SDL_Surface *screen; - -#ifdef DEBUG - int value; - int rgb_size[3]; -#endif - - const SDL_VideoInfo* info = NULL; - int bpp = 0; - /* Flags we will pass into SDL_SetVideoMode. */ - int flags = 0; - -#ifdef DEBUG -#ifdef WIN32 - /** Init debug */ - debugFile = fopen( "c:\\projectMvis.txt", "wb" ); -#else - debugFile = fopen( "/tmp/projectMvis.txt", "wb" ); -#endif /** WIN32 */ -#endif /** DEBUG */ - - /** Allocate the SDL windows */ - /* Information about the current video settings. */ - /* First, initialize SDL's video subsystem. */ - if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { - /* Failed, exit. */ -#ifdef DEBUG - fprintf( debugFile, "Video initialization failed: %s\n", - SDL_GetError( ) ); -#endif - //projectM_vtable.disable_plugin (&projectM_vtable); - return PROJECTM_ERROR; - - } - - /* Let's get some video information. */ - info = SDL_GetVideoInfo( ); - if( !info ) { - /* This should probably never happen. */ -#ifdef DEBUG - fprintf( debugFile, "Video query failed: %s\n", - SDL_GetError( ) ); -#endif - // projectM_vtable.disable_plugin (&projectM_vtable); - return PROJECTM_ERROR; - } - - bpp = info->vfmt->BitsPerPixel; - -// SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); -// SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 ); -// SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); - - //SDL_GL_SetAttribute( SDL_GL_ACCUM_RED_SIZE, 8 ); - // SDL_GL_SetAttribute( SDL_GL_ACCUM_GREEN_SIZE, 8 ); - // SDL_GL_SetAttribute( SDL_GL_ACCUM_BLUE_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - - if (fullscreen==0) - flags = SDL_OPENGL | SDL_HWSURFACE; - else flags = SDL_OPENGL | SDL_HWSURFACE |SDL_FULLSCREEN; - -// w = 512; h = 512; bpp = 16; -#ifdef DEBUG -fprintf( debugFile, "pre SDL_SetVideoMode()\n" ); -#endif - screen = SDL_SetVideoMode( width, height, bpp, flags ) ; -#ifdef DEBUG -fprintf( debugFile, "post SDL_SetVideoMode()\n" ); -#endif - - - if(screen == NULL ) { - /* - * This could happen for a variety of reasons, - * including DISPLAY not being set, the specified - * resolution not being available, etc. - */ -#ifdef DEBUG - fprintf( debugFile, "Video mode set failed: %s\n", - SDL_GetError( ) ); -#endif - - // projectM_vtable.disable_plugin (&projectM_vtable); - return PROJECTM_ERROR; - } - -#ifdef DEBUG - fprintf(debugFile, "Screen BPP: %d\n", SDL_GetVideoSurface()->format->BitsPerPixel); - fprintf(debugFile, "\n"); - fprintf( debugFile, "Vendor : %s\n", glGetString( GL_VENDOR ) ); - fprintf( debugFile, "Renderer : %s\n", glGetString( GL_RENDERER ) ); - fprintf( debugFile, "Version : %s\n", glGetString( GL_VERSION ) ); - fprintf( debugFile, "Extensions : %s\n", glGetString( GL_EXTENSIONS ) ); - fprintf(debugFile, "\n"); - - rgb_size[0] = 8; - rgb_size[1] = 8; - rgb_size[2] = 8; - SDL_GL_GetAttribute( SDL_GL_RED_SIZE, &value ); - fprintf( debugFile, "SDL_GL_RED_SIZE: requested %d, got %d\n", rgb_size[0],value); - SDL_GL_GetAttribute( SDL_GL_GREEN_SIZE, &value ); - fprintf( debugFile, "SDL_GL_GREEN_SIZE: requested %d, got %d\n", rgb_size[1],value); - SDL_GL_GetAttribute( SDL_GL_BLUE_SIZE, &value ); - fprintf( debugFile, "SDL_GL_BLUE_SIZE: requested %d, got %d\n", rgb_size[2],value); - SDL_GL_GetAttribute( SDL_GL_DEPTH_SIZE, &value ); - fprintf( debugFile, "SDL_GL_DEPTH_SIZE: requested %d, got %d\n", bpp, value ); - SDL_GL_GetAttribute( SDL_GL_DOUBLEBUFFER, &value ); - fprintf( debugFile, "SDL_GL_DOUBLEBUFFER: requested 1, got %d\n", value ); -#ifdef PANTS - if ( fsaa ) { - SDL_GL_GetAttribute( SDL_GL_MULTISAMPLEBUFFERS, &value ); - printf( "SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value ); - SDL_GL_GetAttribute( SDL_GL_MULTISAMPLESAMPLES, &value ); - printf( "SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, value ); - } -#endif -#endif - - /** Setup some window stuff */ - SDL_WM_SetCaption( PROJECTM_TITLE, NULL ); - - /** Initialise projectM */ - globalPM = (projectM *)malloc( sizeof( projectM ) ); - globalPM->projectM_reset(); - - globalPM->fullscreen = 0; -// globalPM->renderTarget->texsize = 1024; -// globalPM->renderTarget->context1 = (void *)aglGetCurrentContext(); -#ifdef DEBUG22 - if ( debugFile != NULL ) { - fprintf( debugFile, "current context: %X\n", - globalPM->renderTarget->context1 ); - fflush( debugFile ); - } -#endif - -#ifdef __APPLE__ - globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->fontURL, "../../fonts" ); - - globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->presetURL, "../../presets" ); -#endif -#ifdef WIN32 - globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->fontURL, "c:\\tmp\\projectM\\fonts" ); - - globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->presetURL, "c:\\tmp\\projectM\\presets_test" ); -#endif -#ifdef LINUX - globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->fontURL, "/etc/projectM/fonts" ); - - globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); - strcpy( globalPM->presetURL, "/etc/projectM/presets" ); -#endif - globalPM->projectM_init(); - - globalPM->projectM_resetGL( width, height ); - - /** Allocate the buffer for frame dumping, if applicable */ - if ( dumpFrame ) { - fbuffer = (GLubyte *)malloc( sizeof( GLubyte ) * globalPM->wvw * globalPM->wvh * 3 ); - } - - /** Initialise the thread */ - renderLoop( globalPM ); - - return PROJECTM_SUCCESS; - } diff --git a/src/projectM-sdlvis/projectMvis.dsp b/src/projectM-sdlvis/projectMvis.dsp deleted file mode 100755 index 5bf94dcf2..000000000 --- a/src/projectM-sdlvis/projectMvis.dsp +++ /dev/null @@ -1,106 +0,0 @@ -# Microsoft Developer Studio Project File - Name="projectMvis" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=projectMvis - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "projectMvis.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "projectMvis.mak" CFG="projectMvis - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "projectMvis - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "projectMvis - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "projectMvis - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I ".." /I "c:\sdl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib opengl32.lib glu32.lib projectM.lib sdl.lib sdlmain.lib /nologo /subsystem:windows /machine:I386 /libpath:"..\projectM\Release" /libpath:"C:\SDL\VisualC\SDL\Debug" /libpath:"C:\SDL\VisualC\SDLmain\Debug" - -!ELSEIF "$(CFG)" == "projectMvis - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".." /I "c:\sdl\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "DEBUG" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib opengl32.lib glu32.lib projectM.lib sdl.lib sdlmain.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"..\projectM\Debug" /libpath:"C:\SDL\VisualC\SDL\Debug" /libpath:"C:\SDL\VisualC\SDLmain\Debug" - -!ENDIF - -# Begin Target - -# Name "projectMvis - Win32 Release" -# Name "projectMvis - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\projectMvis.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/projectM-sdlvis/sdltoprojectM.h b/src/projectM-sdlvis/sdltoprojectM.h deleted file mode 100755 index 1628fdbd2..000000000 --- a/src/projectM-sdlvis/sdltoprojectM.h +++ /dev/null @@ -1,165 +0,0 @@ -/** - * projectM -- Milkdrop-esque visualisation SDK - * Copyright (C)2003-2007 projectM Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * 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 PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * See 'LICENSE.txt' included within this release - * - */ -/** - * $Id: sdltoprojectM.hpp,v 1.1 2004/10/08 00:35:28 cvs Exp $ - * - * Translates SDL -> projectM variables - * - * $Log: sdltoprojectM.hpp,v $ - * Revision 1.1 2004/10/08 00:35:28 cvs - * Moved and imported - * - * Revision 1.1.1.1 2004/10/04 12:56:00 cvs - * Imported - * - */ - -#ifndef _SDLTOPROJECTM_H -#define _SDLTOPROJECTM_H - -#include "event.h" - - //#include "projectM/projectM.hpp" -#ifdef WIN32 -#include -#else -#include -#endif - -projectMEvent sdl2pmEvent( SDL_Event event ) { \ - - switch ( event.type ) { \ - case SDL_VIDEORESIZE: - return PROJECTM_VIDEORESIZE; \ - case SDL_KEYUP: \ - return PROJECTM_KEYUP; \ - case SDL_KEYDOWN: \ - return PROJECTM_KEYDOWN; \ - default: - return PROJECTM_KEYUP; \ - } \ - } \ - -projectMKeycode sdl2pmKeycode( SDLKey keysym ) { \ - switch ( keysym ) { \ - case SDLK_F1: \ - return PROJECTM_K_F1; \ - case SDLK_F2: \ - return PROJECTM_K_F2; \ - case SDLK_F3: \ - return PROJECTM_K_F3; \ - case SDLK_F4: \ - return PROJECTM_K_F4; \ - case SDLK_F5: \ - return PROJECTM_K_F5; \ - case SDLK_F6: \ - return PROJECTM_K_F6; \ - case SDLK_F7: \ - return PROJECTM_K_F7; \ - case SDLK_F8: \ - return PROJECTM_K_F8; \ - case SDLK_F9: \ - return PROJECTM_K_F9; \ - case SDLK_F10: \ - return PROJECTM_K_F10; \ - case SDLK_F11: \ - return PROJECTM_K_F11; \ - case SDLK_F12: \ - return PROJECTM_K_F12; \ - case SDLK_ESCAPE: \ - return PROJECTM_K_ESCAPE; - case SDLK_a: - return PROJECTM_K_a; - case SDLK_b: - return PROJECTM_K_b; - case SDLK_c: - return PROJECTM_K_c; - case SDLK_d: - return PROJECTM_K_d; - case SDLK_e: - return PROJECTM_K_e; - case SDLK_f: - return PROJECTM_K_f; - case SDLK_g: - return PROJECTM_K_g; - case SDLK_h: - return PROJECTM_K_h; - case SDLK_i: - return PROJECTM_K_i; - case SDLK_j: - return PROJECTM_K_j; - case SDLK_k: - return PROJECTM_K_k; - case SDLK_l: - return PROJECTM_K_l; - case SDLK_m: - return PROJECTM_K_m; - case SDLK_n: - return PROJECTM_K_n; - case SDLK_o: - return PROJECTM_K_o; - case SDLK_p: - return PROJECTM_K_p; - case SDLK_q: - return PROJECTM_K_q; - case SDLK_r: - return PROJECTM_K_r; - case SDLK_s: - return PROJECTM_K_s; - case SDLK_t: - return PROJECTM_K_t; - case SDLK_u: - return PROJECTM_K_u; - case SDLK_v: - return PROJECTM_K_v; - case SDLK_w: - return PROJECTM_K_w; - case SDLK_x: - return PROJECTM_K_x; - case SDLK_y: - return PROJECTM_K_y; - case SDLK_z: - return PROJECTM_K_z; - case SDLK_UP: - return PROJECTM_K_UP; - case SDLK_RETURN: - return PROJECTM_K_RETURN; - case SDLK_RIGHT: - return PROJECTM_K_RIGHT; - case SDLK_LEFT: - return PROJECTM_K_LEFT; - case SDLK_DOWN: - return PROJECTM_K_DOWN; - case SDLK_PAGEUP: - return PROJECTM_K_PAGEUP; - case SDLK_PAGEDOWN: - return PROJECTM_K_PAGEDOWN; - - default: \ - return PROJECTM_K_NONE; \ - } \ - } \ - -projectMModifier sdl2pmModifier( SDLMod mod ) { \ - return PROJECTM_KMOD_LSHIFT; \ - } \ - -#endif /** _SDLTOPROJECTM_H */