[email protected] 15 years ago
parent
commit
d8963569f3

+ 11 - 3
platform/macosx/love.xcodeproj/project.pbxproj

@@ -18,6 +18,7 @@
 		A9255F461043247300BA1496 /* IL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F421043240F00BA1496 /* IL.framework */; };
 		A9255F52104324D700BA1496 /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; };
 		A9255F58104324E100BA1496 /* Ogg.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; };
+		A93A3AB51121E86E003B04A4 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93A3AB41121E86E003B04A4 /* Image.cpp */; };
 		A93E6E4910420B4A007D418B /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4610420B4A007D418B /* OpenAL.framework */; };
 		A93E6E4A10420B4A007D418B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4710420B4A007D418B /* OpenGL.framework */; };
 		A93E6E4B10420B4A007D418B /* FreeType.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4810420B4A007D418B /* FreeType.framework */; };
@@ -225,6 +226,7 @@
 		A9255E021043195A00BA1496 /* Vorbis.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Vorbis.framework; path = /Library/Frameworks/Vorbis.framework; sourceTree = "<absolute>"; };
 		A9255F421043240F00BA1496 /* IL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IL.framework; path = /Library/Frameworks/IL.framework; sourceTree = "<absolute>"; };
 		A9255F51104324D700BA1496 /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
+		A93A3AB41121E86E003B04A4 /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Image.cpp; sourceTree = "<group>"; };
 		A93E69DE10420ABF007D418B /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
 		A93E69DF10420ABF007D418B /* Data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Data.h; sourceTree = "<group>"; };
 		A93E69E010420ABF007D418B /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = "<group>"; };
@@ -560,9 +562,9 @@
 		A93E6B9210420ACC007D418B /* wrap_Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Timer.h; sourceTree = "<group>"; };
 		A93E6B9410420ACC007D418B /* resources.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resources.cpp; sourceTree = "<group>"; };
 		A93E6B9510420ACC007D418B /* resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resources.h; sourceTree = "<group>"; };
-		A93E6B9710420ACC007D418B /* boot.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = boot.lua; sourceTree = "<group>"; };
+		A93E6B9710420ACC007D418B /* boot.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lua; path = boot.lua; sourceTree = "<group>"; };
 		A93E6B9810420ACC007D418B /* boot.lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.lua.h; sourceTree = "<group>"; };
-		A93E6B9910420ACC007D418B /* graphics.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = graphics.lua; sourceTree = "<group>"; };
+		A93E6B9910420ACC007D418B /* graphics.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lua; path = graphics.lua; sourceTree = "<group>"; };
 		A93E6B9A10420ACC007D418B /* graphics.lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics.lua.h; sourceTree = "<group>"; };
 		A93E6E4610420B4A007D418B /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
 		A93E6E4710420B4A007D418B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
@@ -592,6 +594,8 @@
 		A9DEC1C01046EFA70049C70C /* LoveDocument.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = LoveDocument.icns; path = icons/LoveDocument.icns; sourceTree = "<group>"; };
 		A9F16926109E7BAD00FC83D1 /* libmodplug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libmodplug.framework; path = /Library/Frameworks/libmodplug.framework; sourceTree = "<absolute>"; };
 		A9F169A6109E824900FC83D1 /* mpg123.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpg123.framework; path = /Library/Frameworks/mpg123.framework; sourceTree = "<absolute>"; };
+		A9F8833511163C8C00831E98 /* audio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lua; path = audio.lua; sourceTree = "<group>"; };
+		A9F8833611163C8C00831E98 /* audio.lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio.lua.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -948,6 +952,7 @@
 				A93E6A8310420AC2007D418B /* Drawable.h */,
 				A968F0D21083A9D400A895AA /* Graphics.cpp */,
 				A93E6A8410420AC2007D418B /* Graphics.h */,
+				A93A3AB41121E86E003B04A4 /* Image.cpp */,
 				A93E6A8510420AC2007D418B /* Image.h */,
 				A93E6A8610420AC2007D418B /* opengl */,
 				A93E6AA510420AC3007D418B /* Volatile.cpp */,
@@ -1001,8 +1006,8 @@
 			isa = PBXGroup;
 			children = (
 				A93E6AA810420AC3007D418B /* devil */,
-				A98D913E10507BF9008E03F2 /* EncodedImageData.h */,
 				A98D914310507C97008E03F2 /* EncodedImageData.cpp */,
+				A98D913E10507BF9008E03F2 /* EncodedImageData.h */,
 				A93E6AAD10420AC3007D418B /* Image.h */,
 				A93E6AAE10420AC3007D418B /* ImageData.cpp */,
 				A93E6AAF10420AC3007D418B /* ImageData.h */,
@@ -1368,6 +1373,8 @@
 		A93E6B9610420ACC007D418B /* scripts */ = {
 			isa = PBXGroup;
 			children = (
+				A9F8833511163C8C00831E98 /* audio.lua */,
+				A9F8833611163C8C00831E98 /* audio.lua.h */,
 				A93E6B9710420ACC007D418B /* boot.lua */,
 				A93E6B9810420ACC007D418B /* boot.lua.h */,
 				A93E6B9910420ACC007D418B /* graphics.lua */,
@@ -1612,6 +1619,7 @@
 				A968F0DD1083AA6600A895AA /* Shape.cpp in Sources */,
 				A968F0DE1083AA6600A895AA /* Joint.cpp in Sources */,
 				A9CF0E8610B9EB1000E6F37E /* utf8.cpp in Sources */,
+				A93A3AB51121E86E003B04A4 /* Image.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 33 - 33
src/common/StringMap.h

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-* 
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* 
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 #ifndef LOVE_STRING_MAP_H
@@ -65,8 +65,8 @@ namespace love
 			}
 		}
 
-		bool streq(const char * a, const char * b)
-		{
+		bool streq(const char * a, const char * b)
+		{
 			while(*a != 0 && *b != 0)
 			{
 				if(*a != *b)
@@ -75,16 +75,16 @@ namespace love
 				++b;
 			}
 
-			return (*a == 0 && *b == 0);
+			return (*a == 0 && *b == 0);
 		}
 
 		bool find(const char * key, T & t)
 		{
-			unsigned str_hash = djb2(key);
+			//unsigned str_hash = djb2(key);
 
 			for(unsigned i = 0; i < MAX; ++i)
 			{
-				unsigned str_i = (str_hash + i) % MAX;
+				//unsigned str_i = (str_hash + i) % MAX; //this isn't used, is this intentional?
 
 				if(records[i].set && streq(records[i].key, key))
 				{
@@ -145,16 +145,16 @@ namespace love
 
 			return inserted;
 		}
-
-		unsigned djb2(const char * key)
-		{
-			unsigned hash = 5381;
-			int c;
-
-			while (c = *key++)
-				hash = ((hash << 5) + hash) + c;
-
-			return hash;
+
+		unsigned djb2(const char * key)
+		{
+			unsigned hash = 5381;
+			int c;
+
+			while ((c = *key++))
+				hash = ((hash << 5) + hash) + c;
+
+			return hash;
 		}
 
 	}; // StringMap

+ 72 - 72
src/modules/audio/openal/Source.cpp

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-* 
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* 
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 #include "Source.h"
@@ -33,8 +33,8 @@ namespace openal
 {
 
 	Source::Source(Pool * pool, love::sound::SoundData * soundData)
-		: love::audio::Source(Source::TYPE_STATIC), pool(pool), pitch(1.0f), 
-		volume(1.0f), looping(false), decoder(0), valid(false)
+		: love::audio::Source(Source::TYPE_STATIC), pool(pool), valid(false),
+		pitch(1.0f), volume(1.0f), looping(false), decoder(0) 
 	{
 		alGenBuffers(1, buffers);
 		ALenum fmt = getFormat(soundData->getChannels(), soundData->getBits());
@@ -48,8 +48,8 @@ namespace openal
 	}
 
 	Source::Source(Pool * pool, love::sound::Decoder * decoder)
-		: love::audio::Source(Source::TYPE_STREAM), pool(pool), pitch(1.0f), 
-		volume(1.0f), looping(false), decoder(decoder), valid(false)
+		: love::audio::Source(Source::TYPE_STREAM), pool(pool), valid(false), 
+		pitch(1.0f), volume(1.0f), looping(false), decoder(decoder)
 	{
 		decoder->retain();
 		alGenBuffers(MAX_BUFFERS, buffers);
@@ -65,13 +65,13 @@ namespace openal
 	{
 		stop();
 		alDeleteBuffers((type == TYPE_STATIC) ? 1 : MAX_BUFFERS, buffers);
-	}
-
-	love::audio::Source * Source::copy()
-	{
-		return 0;
-	}
-
+	}
+
+	love::audio::Source * Source::copy()
+	{
+		return 0;
+	}
+
 	void Source::play()
 	{
 		valid = pool->play(this, source);
@@ -84,7 +84,7 @@ namespace openal
 	{
 		pool->stop(this);
 	}
-
+
 	void Source::pause()
 	{
 		pool->pause();
@@ -99,13 +99,13 @@ namespace openal
 	{
 		pool->rewind();
 	}
-
+
 	bool Source::isStopped() const
 	{
 		if(valid)
 		{
-			ALenum state;
-			alGetSourcei(source, AL_SOURCE_STATE, &state);
+			ALenum state;
+			alGetSourcei(source, AL_SOURCE_STATE, &state);
 			return (state == AL_STOPPED);
 		}
 
@@ -143,7 +143,7 @@ namespace openal
 			}
 		}
 	}
-
+
 	void Source::setPitch(float pitch)
 	{
 		if(valid)
@@ -151,7 +151,7 @@ namespace openal
 
 		this->pitch = pitch;
 	}
-
+
 	float Source::getPitch() const
 	{
 		if(valid)
@@ -164,7 +164,7 @@ namespace openal
 		// In case the Source isn't playing.
 		return pitch;
 	}
-
+
 	void Source::setVolume(float volume)
 	{
 		if(valid)
@@ -174,7 +174,7 @@ namespace openal
 
 		this->volume = volume;
 	}
-
+
 	float Source::getVolume() const
 	{
 		if(valid)
@@ -194,40 +194,40 @@ namespace openal
 			alSourcefv(source, AL_POSITION, v);
 
 		setFloatv(position, v);
-	}
-
+	}
+
 	void Source::getPosition(float * v) const
 	{
 		if(valid)
 			alGetSourcefv(source, AL_POSITION, v);
 		else
 			setFloatv(v, position);
-	}
-
+	}
+
 	void Source::setVelocity(float * v)
 	{
 		if(valid)
 			alSourcefv(source, AL_VELOCITY, v);
 
 		setFloatv(velocity, v);
-	}
-
+	}
+
 	void Source::getVelocity(float * v) const
 	{
 		if(valid)
 			alGetSourcefv(source, AL_VELOCITY, v);
 		else
 			setFloatv(v, velocity);
-	}
-
+	}
+
 	void Source::setDirection(float * v)
 	{
 		if(valid)
 			alSourcefv(source, AL_DIRECTION, v);
 		else
 			setFloatv(direction, v);
-	}
-
+	}
+
 	void Source::getDirection(float * v) const
 	{
 		if(valid)
@@ -236,17 +236,17 @@ namespace openal
 			setFloatv(v, direction);
 	}
 
-	void Source::setLooping(bool looping)
-	{
-		if(valid && type == TYPE_STATIC)
-			alSourcei(source, AL_LOOPING, looping ? AL_TRUE : AL_FALSE);
-
-		this->looping = looping;
-	}
-
-	bool Source::isLooping() const
-	{
-		return looping;
+	void Source::setLooping(bool looping)
+	{
+		if(valid && type == TYPE_STATIC)
+			alSourcei(source, AL_LOOPING, looping ? AL_TRUE : AL_FALSE);
+
+		this->looping = looping;
+	}
+
+	bool Source::isLooping() const
+	{
+		return looping;
 	}
 
 	void Source::playAtomic()
@@ -259,15 +259,15 @@ namespace openal
 		{
 			int usedBuffers = 0;
 
-			for(int i = 0; i < MAX_BUFFERS; i++)
-			{
-				int decoded = streamAtomic(buffers[i], decoder);
-				++usedBuffers;
-				if(decoded < decoder->getSize())
-					break;
-			}
-
-			if(usedBuffers > 0)
+			for(unsigned int i = 0; i < MAX_BUFFERS; i++)
+			{
+				int decoded = streamAtomic(buffers[i], decoder);
+				++usedBuffers;
+				if(decoded < decoder->getSize())
+					break;
+			}
+
+			if(usedBuffers > 0)
 				alSourceQueueBuffers(source, usedBuffers, buffers);
 		}
 
@@ -294,10 +294,10 @@ namespace openal
 				int queued = 0;
 				alGetSourcei(source, AL_BUFFERS_QUEUED, &queued);
 
-				while(queued--)
-				{
-					ALuint buffer;
-					alSourceUnqueueBuffers(source, 1, &buffer);
+				while(queued--)
+				{
+					ALuint buffer;
+					alSourceUnqueueBuffers(source, 1, &buffer);
 				}
 			}
 
@@ -306,7 +306,7 @@ namespace openal
 		rewindAtomic();
 		valid = false;
 	}
-
+
 	void Source::pauseAtomic()
 	{
 		if(valid)

+ 32 - 30
src/modules/event/sdl/Event.cpp

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-* 
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* 
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 #include "Event.h"
@@ -33,12 +33,12 @@ namespace sdl
 	{
 		return "love.event.sdl";
 	}
-
-	Event::Event()
-	{
-		SDL_EnableUNICODE(1);
-	}
-
+
+	Event::Event()
+	{
+		SDL_EnableUNICODE(1);
+	}
+
 	void Event::pump()
 	{
 		SDL_PumpEvents();
@@ -66,12 +66,12 @@ namespace sdl
 		return ok && convert(e, message);
 	}
 
-	bool Event::push(Message & message)
-	{
-		static SDL_Event e;
-		bool ok = convert(message, e);
-		return ok && (SDL_PushEvent(&e) == 0);
-	}
+	bool Event::push(Message & message)
+	{
+		static SDL_Event e;
+		bool ok = convert(message, e);
+		return ok && (SDL_PushEvent(&e) == 0);
+	}
 
 	bool Event::convert(SDL_Event & e, Message & m)
 	{
@@ -130,6 +130,8 @@ namespace sdl
 		case Event::TYPE_QUIT:
 			e.type = SDL_QUIT;
 			return true;
+		default:
+			return true;
 		}
 
 		return true;

+ 71 - 67
src/modules/event/sdl/wrap_Event.cpp

@@ -41,31 +41,33 @@ namespace sdl
 		if(!Event::getConstant(str, msg.type))
 			return false;
 
-		switch(msg.type)
-		{
-		case Event::TYPE_KEY_PRESSED:
-			if(!Event::getConstant(luaL_checkstring(L, 2), msg.keyboard.k))
-				return false;
-			msg.keyboard.u = (unsigned short)luaL_optint(L, 3, 0);
-			return true;
-		case Event::TYPE_KEY_RELEASED:
-			if(!Event::getConstant(luaL_checkstring(L, 2), msg.keyboard.k))
-				return false;
-			return true;
-		case Event::TYPE_MOUSE_PRESSED:
-		case Event::TYPE_MOUSE_RELEASED:
-			if(!Event::getConstant(luaL_checkstring(L, 2), msg.mouse.b))
-				return false;
-			msg.mouse.x = luaL_checkint(L, 3);
-			msg.mouse.y = luaL_checkint(L, 4);
-			return true;
-		case Event::TYPE_JOYSTICK_PRESSED:
-		case Event::TYPE_JOYSTICK_RELEASED:
-			msg.joystick.index = luaL_checkint(L, 2);
-			msg.joystick.button = luaL_checkint(L, 3);
-			return true;
-		case Event::TYPE_QUIT:
-			return true;
+		switch(msg.type)
+		{
+		case Event::TYPE_KEY_PRESSED:
+			if(!Event::getConstant(luaL_checkstring(L, 2), msg.keyboard.k))
+				return false;
+			msg.keyboard.u = (unsigned short)luaL_optint(L, 3, 0);
+			return true;
+		case Event::TYPE_KEY_RELEASED:
+			if(!Event::getConstant(luaL_checkstring(L, 2), msg.keyboard.k))
+				return false;
+			return true;
+		case Event::TYPE_MOUSE_PRESSED:
+		case Event::TYPE_MOUSE_RELEASED:
+			if(!Event::getConstant(luaL_checkstring(L, 2), msg.mouse.b))
+				return false;
+			msg.mouse.x = luaL_checkint(L, 3);
+			msg.mouse.y = luaL_checkint(L, 4);
+			return true;
+		case Event::TYPE_JOYSTICK_PRESSED:
+		case Event::TYPE_JOYSTICK_RELEASED:
+			msg.joystick.index = luaL_checkint(L, 2);
+			msg.joystick.button = luaL_checkint(L, 3);
+			return true;
+		case Event::TYPE_QUIT:
+			return true;
+		default:
+			return false;
 		}
 
 		return false;
@@ -80,52 +82,54 @@ namespace sdl
 
 		lua_pushstring(L, str);
 
-		switch(msg.type)
-		{
-		case Event::TYPE_KEY_PRESSED:
-			if(!Event::getConstant(msg.keyboard.k, str))
-				return 0;
-			lua_pushstring(L, str);
-			lua_pushinteger(L, msg.keyboard.u);
-			return 3;
-		case Event::TYPE_KEY_RELEASED:
-			if(!Event::getConstant(msg.keyboard.k, str))
-				return 0;
-			lua_pushstring(L, str);
-			return 2;
-		case Event::TYPE_MOUSE_PRESSED:
-		case Event::TYPE_MOUSE_RELEASED:
-			if(!Event::getConstant(msg.mouse.b, str))
-				return 0;
-			lua_pushinteger(L, msg.mouse.x);
-			lua_pushinteger(L, msg.mouse.y);
-			lua_pushstring(L, str);
-			return 4;
-		case Event::TYPE_JOYSTICK_PRESSED:
-		case Event::TYPE_JOYSTICK_RELEASED:
-			lua_pushinteger(L, msg.joystick.index);
-			lua_pushinteger(L, msg.joystick.button);
-			return 3;
-		case Event::TYPE_QUIT:
-			return 1;
+		switch(msg.type)
+		{
+		case Event::TYPE_KEY_PRESSED:
+			if(!Event::getConstant(msg.keyboard.k, str))
+				return 0;
+			lua_pushstring(L, str);
+			lua_pushinteger(L, msg.keyboard.u);
+			return 3;
+		case Event::TYPE_KEY_RELEASED:
+			if(!Event::getConstant(msg.keyboard.k, str))
+				return 0;
+			lua_pushstring(L, str);
+			return 2;
+		case Event::TYPE_MOUSE_PRESSED:
+		case Event::TYPE_MOUSE_RELEASED:
+			if(!Event::getConstant(msg.mouse.b, str))
+				return 0;
+			lua_pushinteger(L, msg.mouse.x);
+			lua_pushinteger(L, msg.mouse.y);
+			lua_pushstring(L, str);
+			return 4;
+		case Event::TYPE_JOYSTICK_PRESSED:
+		case Event::TYPE_JOYSTICK_RELEASED:
+			lua_pushinteger(L, msg.joystick.index);
+			lua_pushinteger(L, msg.joystick.button);
+			return 3;
+		case Event::TYPE_QUIT:
+			return 1;
+		default:
+			return 0;
 		}
 
 		return 0;
 	}
 
-	static int poll_i(lua_State * L)
-	{
-		static Event::Message m;
-
-		while(instance->poll(m))
-		{
+	static int poll_i(lua_State * L)
+	{
+		static Event::Message m;
+
+		while(instance->poll(m))
+		{
 			int args = push_message(L, m);
 			if(args > 0)
 				return args;
 		}
 
 		// No pending events.
-		return 0;
+		return 0;
 	}
 
 	int w_pump(lua_State * L)
@@ -190,13 +194,13 @@ namespace sdl
 			}
 		}
 
-		WrappedModule w;
-		w.module = instance;
-		w.name = "event";
-		w.flags = MODULE_T;
-		w.functions = functions;
-		w.types = 0;
-
+		WrappedModule w;
+		w.module = instance;
+		w.name = "event";
+		w.flags = MODULE_T;
+		w.functions = functions;
+		w.types = 0;
+
 		return luax_register_module(L, w);
 	}
 

+ 2 - 0
src/modules/filesystem/physfs/File.cpp

@@ -74,6 +74,8 @@ namespace physfs
 		case WRITE:
 			file = PHYSFS_openWrite(filename.c_str());
 			break;
+		default:
+			break;
 		}
 
 		return (file != 0);

+ 19 - 19
src/modules/font/ImageRasterizer.cpp

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-* 
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* 
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 // LOVE
@@ -28,7 +28,7 @@ namespace love
 namespace font
 {
 	ImageRasterizer::ImageRasterizer(love::image::ImageData * data, unsigned short * glyphs)
-		: imageData(imageData)
+		: imageData(data)
 	{
 		imageData->retain();
 	}

+ 69 - 0
src/modules/graphics/Image.cpp

@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2006-2010 LOVE Development Team
+ * 
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ * 
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ * 
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "Image.h"
+
+namespace love
+{
+namespace graphics
+{
+	Image::~Image()
+	{
+	}
+	
+	bool Image::getConstant(const char * in, FilterMode & out)
+	{
+		return filterModes.find(in, out);
+	}
+	
+	bool Image::getConstant(FilterMode in, const char *& out)
+	{
+		return filterModes.find(in, out);
+	}
+	
+	bool Image::getConstant(const char * in, WrapMode & out)
+	{
+		return wrapModes.find(in, out);
+	}
+	
+	bool Image::getConstant(WrapMode in, const char *& out)
+	{
+		return wrapModes.find(in, out);
+	}
+	
+	StringMap<Image::FilterMode, Image::FILTER_MAX_ENUM>::Entry Image::filterModeEntries[] = 
+	{
+		{ "linear", Image::FILTER_LINEAR },
+		{ "nearest", Image::FILTER_NEAREST },
+	};
+	
+	StringMap<Image::FilterMode, Image::FILTER_MAX_ENUM> Image::filterModes(Image::filterModeEntries, sizeof(Image::filterModeEntries));
+
+	StringMap<Image::WrapMode, Image::WRAP_MAX_ENUM>::Entry Image::wrapModeEntries[] = 
+	{
+		{ "clamp", Image::WRAP_CLAMP },
+		{ "repeat", Image::WRAP_REPEAT },
+	};
+	
+	StringMap<Image::WrapMode, Image::WRAP_MAX_ENUM> Image::wrapModes(Image::wrapModeEntries, sizeof(Image::wrapModeEntries));
+	
+	
+} // graphics
+} // love

+ 38 - 23
src/modules/graphics/Image.h

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-* 
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* 
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+* 
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* 
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 #ifndef LOVE_GRAPHICS_IMAGE_H
@@ -24,6 +24,7 @@
 // LOVE
 #include <graphics/Volatile.h>
 #include <graphics/Drawable.h>
+#include <common/StringMap.h>
 
 namespace love
 {
@@ -36,14 +37,16 @@ namespace graphics
 	
 		enum WrapMode
 		{
-			WRAP_CLAMP, 
-			WRAP_REPEAT
+			WRAP_CLAMP = 1, 
+			WRAP_REPEAT,
+			WRAP_MAX_ENUM
 		};
 
 		enum FilterMode
 		{
-			FILTER_LINEAR,
-			FILTER_NEAREST
+			FILTER_LINEAR = 1,
+			FILTER_NEAREST,
+			FILTER_MAX_ENUM
 		};
 
 		struct Filter
@@ -58,7 +61,19 @@ namespace graphics
 			WrapMode t;
 		};
 
-		virtual ~Image(){};
+		virtual ~Image();
+		
+		static bool getConstant(const char * in, FilterMode & out);
+		static bool getConstant(FilterMode in, const char *& out);
+		static bool getConstant(const char * in, WrapMode & out);
+		static bool getConstant(WrapMode in, const char *& out);
+		
+	private:
+		
+		static StringMap<FilterMode, FILTER_MAX_ENUM>::Entry filterModeEntries[];
+		static StringMap<FilterMode, FILTER_MAX_ENUM> filterModes;
+		static StringMap<WrapMode, WRAP_MAX_ENUM>::Entry wrapModeEntries[];
+		static StringMap<WrapMode, WRAP_MAX_ENUM> wrapModes;
 
 	}; // Image
 	

+ 1 - 1
src/modules/graphics/opengl/Glyph.cpp

@@ -31,7 +31,7 @@ namespace opengl
 {
 
 	Glyph::Glyph(love::font::GlyphData * data)
-		: data(data), texture(0), width((float)data->getWidth()), height((float)data->getHeight())
+		: data(data), width((float)data->getWidth()), height((float)data->getHeight()), texture(0)
 	{
 		data->retain();
 		data->getWidth();

+ 7 - 2
src/modules/graphics/opengl/Image.cpp

@@ -123,6 +123,7 @@ namespace opengl
 	void Image::setFilter(Image::Filter f)
 	{
 		GLint gmin, gmag;
+		gmin = gmag = 0; // so that they're not used uninitialized
 
 		switch(f.min)
 		{
@@ -132,6 +133,8 @@ namespace opengl
 		case FILTER_NEAREST:
 			gmin = GL_NEAREST;
 			break;
+		default:
+			break;
 		}
 
 		switch(f.mag)
@@ -142,12 +145,14 @@ namespace opengl
 		case FILTER_NEAREST:
 			gmag = GL_NEAREST;
 			break;
+		default:
+			break;
 		}
 
 		bind();
 
-		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmin);
-		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmag);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmin);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmag);
 	}
 
 	Image::Filter Image::getFilter() const

+ 19 - 19
src/modules/graphics/opengl/ImageFont.cpp

@@ -1,21 +1,21 @@
-/**
-* Copyright (c) 2006-2010 LOVE Development Team
-*
-* This software is provided 'as-is', without any express or implied
-* warranty.  In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-*    claim that you wrote the original software. If you use this software
-*    in a product, an acknowledgment in the product documentation would be
-*    appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-*    misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
+/**
+* Copyright (c) 2006-2010 LOVE Development Team
+*
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+*
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+*
+* 1. The origin of this software must not be misrepresented; you must not
+*    claim that you wrote the original software. If you use this software
+*    in a product, an acknowledgment in the product documentation would be
+*    appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+*    misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
 **/
 
 #include "ImageFont.h"
@@ -31,7 +31,7 @@ namespace graphics
 namespace opengl
 {
 	ImageFont::ImageFont(Image * image, std::string glyphs)
-		: Font(0), glyphs(glyphs), image(image)
+		: Font(0), image(image), glyphs(glyphs)
 
 	{
 		image->retain();

+ 47 - 13
src/modules/graphics/opengl/wrap_Image.cpp

@@ -48,10 +48,19 @@ namespace opengl
 
 	int w_Image_setFilter(lua_State * L)
 	{
-		Image * t = luax_checkimage(L, 1); 
+		Image * t = luax_checkimage(L, 1);
 		Image::Filter f;
-		f.min = (Image::FilterMode)luaL_checkint(L, 2);
-		f.mag = (Image::FilterMode)luaL_checkint(L, 3);
+		Image::FilterMode min;
+		Image::FilterMode mag;
+		const char * minstr = luaL_checkstring(L, 2);
+		const char * magstr = luaL_checkstring(L, 3);
+		if (!Image::getConstant(minstr, min))
+			return luaL_error(L, "Invalid filter mode: %s", minstr);
+		if (!Image::getConstant(magstr, mag))
+			return luaL_error(L, "Invalid filter mode: %s", magstr);
+		
+		f.min = min;
+		f.mag = mag;
 		t->setFilter(f);
 		return 0;
 	}
@@ -60,27 +69,52 @@ namespace opengl
 	{
 		Image * t = luax_checkimage(L, 1); 
 		Image::Filter f = t->getFilter();
-		lua_pushinteger(L, f.min);
-		lua_pushinteger(L, f.mag);
+		Image::FilterMode min = f.min;
+		Image::FilterMode mag = f.mag;
+		const char * minstr;
+		const char * magstr;
+		if (!Image::getConstant(min, minstr))
+			return luaL_error(L, "Invalid filter mode: %s", minstr);
+		if (!Image::getConstant(mag, magstr))
+			return luaL_error(L, "Invalid filter mode: %s", magstr);
+		lua_pushstring(L, minstr);
+		lua_pushstring(L, magstr);
 		return 2;
 	}
 
 	int w_Image_setWrap(lua_State * L)
 	{
-		Image * t = luax_checkimage(L, 1); 
+		Image * i = luax_checkimage(L, 1); 
 		Image::Wrap w;
-		w.s = (Image::WrapMode)luaL_checkint(L, 2);
-		w.t = (Image::WrapMode)luaL_checkint(L, 3);
-		t->setWrap(w);
+		Image::WrapMode s;
+		Image::WrapMode t;
+		const char * sstr = luaL_checkstring(L, 2);
+		const char * tstr = luaL_checkstring(L, 3);
+		if (!Image::getConstant(sstr, s))
+			return luaL_error(L, "Invalid wrap mode: %s", sstr);
+		if (!Image::getConstant(tstr, t))
+			return luaL_error(L, "Invalid wrap mode, %s", tstr);
+		
+		w.s = s;
+		w.t = t;
+		i->setWrap(w);
 		return 0;
 	}
 
 	int w_Image_getWrap(lua_State * L)
 	{
-		Image * t = luax_checkimage(L, 1); 
-		Image::Wrap w = t->getWrap();
-		lua_pushinteger(L, w.s);
-		lua_pushinteger(L, w.t);
+		Image * i = luax_checkimage(L, 1); 
+		Image::Wrap w = i->getWrap();
+		Image::WrapMode s = w.s;
+		Image::WrapMode t = w.t;
+		const char * sstr;
+		const char * tstr;
+		if (!Image::getConstant(s, sstr))
+			return luaL_error(L, "Invalid filter mode: %s", sstr);
+		if (!Image::getConstant(t, tstr))
+			return luaL_error(L, "Invalid filter mode: %s", tstr);
+		lua_pushstring(L, sstr);
+		lua_pushstring(L, tstr);
 		return 2;
 	}
 

+ 1 - 1
src/modules/image/EncodedImageData.cpp

@@ -25,7 +25,7 @@ namespace love
 namespace image
 {
 	EncodedImageData::EncodedImageData(void * d, Format f, int s)
-		: data(d), format(f), size(s)
+		: data(d), size(s), format(f)
 	{
 	}
 	

+ 4 - 4
src/modules/image/devil/ImageData.cpp

@@ -154,16 +154,16 @@ namespace devil
 
 	void ImageData::setPixel(int x, int y, pixel c)
 	{
-		int tx = x > width-1 ? width-1 : x;
-		int ty = y > height-1 ? height-1 : y;
+		//int tx = x > width-1 ? width-1 : x;
+		//int ty = y > height-1 ? height-1 : y; // not using these seems to not break anything
 		pixel * pixels = (pixel *)getData();
 		pixels[y*width+x] = c;
 	}
 
 	pixel ImageData::getPixel(int x, int y) const
 	{
-		int tx = x > width-1 ? width-1 : x;
-		int ty = y > height-1 ? height-1 : y;
+		//int tx = x > width-1 ? width-1 : x;
+		//int ty = y > height-1 ? height-1 : y; // not using these seems to not break anything
 		pixel * pixels = (pixel *)getData();
 		return pixels[y*width+x];
 	}

+ 1 - 1
src/modules/physics/box2d/PrismaticJoint.cpp

@@ -60,7 +60,7 @@ namespace box2d
 
 	void PrismaticJoint::setMotorEnabled(bool motor)
 	{
-		return joint->EnableMotor(true);
+		return joint->EnableMotor(motor);
 	}
 
 	bool PrismaticJoint::isMotorEnabled() const

+ 1 - 1
src/modules/physics/box2d/Shape.cpp

@@ -218,7 +218,7 @@ namespace box2d
 		for(int i = 1;i<=argc;i++)
 		{
 			size_t bpos = (size_t)(lua_tointeger(L, i)-1);
-			if(bpos < 0 || bpos > 16)
+			if(bpos > 16)
 				return luaL_error(L, "Values must be in range 1-16.");
 			b.set(bpos, true);
 		}