mirror of
https://github.com/love2d/love.git
synced 2026-08-19 20:19:42 +02:00
Merge
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
A9255F461043247300BA1496 /* IL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F421043240F00BA1496 /* IL.framework */; };
|
A9255F461043247300BA1496 /* IL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F421043240F00BA1496 /* IL.framework */; };
|
||||||
A9255F52104324D700BA1496 /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; };
|
A9255F52104324D700BA1496 /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; };
|
||||||
A9255F58104324E100BA1496 /* Ogg.framework in Copy 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 */; };
|
A93E6E4910420B4A007D418B /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4610420B4A007D418B /* OpenAL.framework */; };
|
||||||
A93E6E4A10420B4A007D418B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4710420B4A007D418B /* OpenGL.framework */; };
|
A93E6E4A10420B4A007D418B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4710420B4A007D418B /* OpenGL.framework */; };
|
||||||
A93E6E4B10420B4A007D418B /* FreeType.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4810420B4A007D418B /* FreeType.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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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 */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -948,6 +952,7 @@
|
|||||||
A93E6A8310420AC2007D418B /* Drawable.h */,
|
A93E6A8310420AC2007D418B /* Drawable.h */,
|
||||||
A968F0D21083A9D400A895AA /* Graphics.cpp */,
|
A968F0D21083A9D400A895AA /* Graphics.cpp */,
|
||||||
A93E6A8410420AC2007D418B /* Graphics.h */,
|
A93E6A8410420AC2007D418B /* Graphics.h */,
|
||||||
|
A93A3AB41121E86E003B04A4 /* Image.cpp */,
|
||||||
A93E6A8510420AC2007D418B /* Image.h */,
|
A93E6A8510420AC2007D418B /* Image.h */,
|
||||||
A93E6A8610420AC2007D418B /* opengl */,
|
A93E6A8610420AC2007D418B /* opengl */,
|
||||||
A93E6AA510420AC3007D418B /* Volatile.cpp */,
|
A93E6AA510420AC3007D418B /* Volatile.cpp */,
|
||||||
@@ -1001,8 +1006,8 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A93E6AA810420AC3007D418B /* devil */,
|
A93E6AA810420AC3007D418B /* devil */,
|
||||||
A98D913E10507BF9008E03F2 /* EncodedImageData.h */,
|
|
||||||
A98D914310507C97008E03F2 /* EncodedImageData.cpp */,
|
A98D914310507C97008E03F2 /* EncodedImageData.cpp */,
|
||||||
|
A98D913E10507BF9008E03F2 /* EncodedImageData.h */,
|
||||||
A93E6AAD10420AC3007D418B /* Image.h */,
|
A93E6AAD10420AC3007D418B /* Image.h */,
|
||||||
A93E6AAE10420AC3007D418B /* ImageData.cpp */,
|
A93E6AAE10420AC3007D418B /* ImageData.cpp */,
|
||||||
A93E6AAF10420AC3007D418B /* ImageData.h */,
|
A93E6AAF10420AC3007D418B /* ImageData.h */,
|
||||||
@@ -1368,6 +1373,8 @@
|
|||||||
A93E6B9610420ACC007D418B /* scripts */ = {
|
A93E6B9610420ACC007D418B /* scripts */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
A9F8833511163C8C00831E98 /* audio.lua */,
|
||||||
|
A9F8833611163C8C00831E98 /* audio.lua.h */,
|
||||||
A93E6B9710420ACC007D418B /* boot.lua */,
|
A93E6B9710420ACC007D418B /* boot.lua */,
|
||||||
A93E6B9810420ACC007D418B /* boot.lua.h */,
|
A93E6B9810420ACC007D418B /* boot.lua.h */,
|
||||||
A93E6B9910420ACC007D418B /* graphics.lua */,
|
A93E6B9910420ACC007D418B /* graphics.lua */,
|
||||||
@@ -1612,6 +1619,7 @@
|
|||||||
A968F0DD1083AA6600A895AA /* Shape.cpp in Sources */,
|
A968F0DD1083AA6600A895AA /* Shape.cpp in Sources */,
|
||||||
A968F0DE1083AA6600A895AA /* Joint.cpp in Sources */,
|
A968F0DE1083AA6600A895AA /* Joint.cpp in Sources */,
|
||||||
A9CF0E8610B9EB1000E6F37E /* utf8.cpp in Sources */,
|
A9CF0E8610B9EB1000E6F37E /* utf8.cpp in Sources */,
|
||||||
|
A93A3AB51121E86E003B04A4 /* Image.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -80,11 +80,11 @@ namespace love
|
|||||||
|
|
||||||
bool find(const char * key, T & t)
|
bool find(const char * key, T & t)
|
||||||
{
|
{
|
||||||
unsigned str_hash = djb2(key);
|
//unsigned str_hash = djb2(key);
|
||||||
|
|
||||||
for(unsigned i = 0; i < MAX; ++i)
|
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))
|
if(records[i].set && streq(records[i].key, key))
|
||||||
{
|
{
|
||||||
@@ -151,7 +151,7 @@ namespace love
|
|||||||
unsigned hash = 5381;
|
unsigned hash = 5381;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
while (c = *key++)
|
while ((c = *key++))
|
||||||
hash = ((hash << 5) + hash) + c;
|
hash = ((hash << 5) + hash) + c;
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ namespace openal
|
|||||||
{
|
{
|
||||||
|
|
||||||
Source::Source(Pool * pool, love::sound::SoundData * soundData)
|
Source::Source(Pool * pool, love::sound::SoundData * soundData)
|
||||||
: love::audio::Source(Source::TYPE_STATIC), pool(pool), pitch(1.0f),
|
: love::audio::Source(Source::TYPE_STATIC), pool(pool), valid(false),
|
||||||
volume(1.0f), looping(false), decoder(0), valid(false)
|
pitch(1.0f), volume(1.0f), looping(false), decoder(0)
|
||||||
{
|
{
|
||||||
alGenBuffers(1, buffers);
|
alGenBuffers(1, buffers);
|
||||||
ALenum fmt = getFormat(soundData->getChannels(), soundData->getBits());
|
ALenum fmt = getFormat(soundData->getChannels(), soundData->getBits());
|
||||||
@@ -48,8 +48,8 @@ namespace openal
|
|||||||
}
|
}
|
||||||
|
|
||||||
Source::Source(Pool * pool, love::sound::Decoder * decoder)
|
Source::Source(Pool * pool, love::sound::Decoder * decoder)
|
||||||
: love::audio::Source(Source::TYPE_STREAM), pool(pool), pitch(1.0f),
|
: love::audio::Source(Source::TYPE_STREAM), pool(pool), valid(false),
|
||||||
volume(1.0f), looping(false), decoder(decoder), valid(false)
|
pitch(1.0f), volume(1.0f), looping(false), decoder(decoder)
|
||||||
{
|
{
|
||||||
decoder->retain();
|
decoder->retain();
|
||||||
alGenBuffers(MAX_BUFFERS, buffers);
|
alGenBuffers(MAX_BUFFERS, buffers);
|
||||||
@@ -259,7 +259,7 @@ namespace openal
|
|||||||
{
|
{
|
||||||
int usedBuffers = 0;
|
int usedBuffers = 0;
|
||||||
|
|
||||||
for(int i = 0; i < MAX_BUFFERS; i++)
|
for(unsigned int i = 0; i < MAX_BUFFERS; i++)
|
||||||
{
|
{
|
||||||
int decoded = streamAtomic(buffers[i], decoder);
|
int decoded = streamAtomic(buffers[i], decoder);
|
||||||
++usedBuffers;
|
++usedBuffers;
|
||||||
|
|||||||
@@ -130,6 +130,8 @@ namespace sdl
|
|||||||
case Event::TYPE_QUIT:
|
case Event::TYPE_QUIT:
|
||||||
e.type = SDL_QUIT;
|
e.type = SDL_QUIT;
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ namespace sdl
|
|||||||
return true;
|
return true;
|
||||||
case Event::TYPE_QUIT:
|
case Event::TYPE_QUIT:
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -108,6 +110,8 @@ namespace sdl
|
|||||||
return 3;
|
return 3;
|
||||||
case Event::TYPE_QUIT:
|
case Event::TYPE_QUIT:
|
||||||
return 1;
|
return 1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ namespace physfs
|
|||||||
case WRITE:
|
case WRITE:
|
||||||
file = PHYSFS_openWrite(filename.c_str());
|
file = PHYSFS_openWrite(filename.c_str());
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (file != 0);
|
return (file != 0);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace love
|
|||||||
namespace font
|
namespace font
|
||||||
{
|
{
|
||||||
ImageRasterizer::ImageRasterizer(love::image::ImageData * data, unsigned short * glyphs)
|
ImageRasterizer::ImageRasterizer(love::image::ImageData * data, unsigned short * glyphs)
|
||||||
: imageData(imageData)
|
: imageData(data)
|
||||||
{
|
{
|
||||||
imageData->retain();
|
imageData->retain();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
// LOVE
|
// LOVE
|
||||||
#include <graphics/Volatile.h>
|
#include <graphics/Volatile.h>
|
||||||
#include <graphics/Drawable.h>
|
#include <graphics/Drawable.h>
|
||||||
|
#include <common/StringMap.h>
|
||||||
|
|
||||||
namespace love
|
namespace love
|
||||||
{
|
{
|
||||||
@@ -36,14 +37,16 @@ namespace graphics
|
|||||||
|
|
||||||
enum WrapMode
|
enum WrapMode
|
||||||
{
|
{
|
||||||
WRAP_CLAMP,
|
WRAP_CLAMP = 1,
|
||||||
WRAP_REPEAT
|
WRAP_REPEAT,
|
||||||
|
WRAP_MAX_ENUM
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FilterMode
|
enum FilterMode
|
||||||
{
|
{
|
||||||
FILTER_LINEAR,
|
FILTER_LINEAR = 1,
|
||||||
FILTER_NEAREST
|
FILTER_NEAREST,
|
||||||
|
FILTER_MAX_ENUM
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Filter
|
struct Filter
|
||||||
@@ -58,7 +61,19 @@ namespace graphics
|
|||||||
WrapMode t;
|
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
|
}; // Image
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace opengl
|
|||||||
{
|
{
|
||||||
|
|
||||||
Glyph::Glyph(love::font::GlyphData * data)
|
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->retain();
|
||||||
data->getWidth();
|
data->getWidth();
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ namespace opengl
|
|||||||
void Image::setFilter(Image::Filter f)
|
void Image::setFilter(Image::Filter f)
|
||||||
{
|
{
|
||||||
GLint gmin, gmag;
|
GLint gmin, gmag;
|
||||||
|
gmin = gmag = 0; // so that they're not used uninitialized
|
||||||
|
|
||||||
switch(f.min)
|
switch(f.min)
|
||||||
{
|
{
|
||||||
@@ -132,6 +133,8 @@ namespace opengl
|
|||||||
case FILTER_NEAREST:
|
case FILTER_NEAREST:
|
||||||
gmin = GL_NEAREST;
|
gmin = GL_NEAREST;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(f.mag)
|
switch(f.mag)
|
||||||
@@ -142,12 +145,14 @@ namespace opengl
|
|||||||
case FILTER_NEAREST:
|
case FILTER_NEAREST:
|
||||||
gmag = GL_NEAREST;
|
gmag = GL_NEAREST;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bind();
|
bind();
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmin);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmin);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmag);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmag);
|
||||||
}
|
}
|
||||||
|
|
||||||
Image::Filter Image::getFilter() const
|
Image::Filter Image::getFilter() const
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace graphics
|
|||||||
namespace opengl
|
namespace opengl
|
||||||
{
|
{
|
||||||
ImageFont::ImageFont(Image * image, std::string glyphs)
|
ImageFont::ImageFont(Image * image, std::string glyphs)
|
||||||
: Font(0), glyphs(glyphs), image(image)
|
: Font(0), image(image), glyphs(glyphs)
|
||||||
|
|
||||||
{
|
{
|
||||||
image->retain();
|
image->retain();
|
||||||
|
|||||||
@@ -50,8 +50,17 @@ namespace opengl
|
|||||||
{
|
{
|
||||||
Image * t = luax_checkimage(L, 1);
|
Image * t = luax_checkimage(L, 1);
|
||||||
Image::Filter f;
|
Image::Filter f;
|
||||||
f.min = (Image::FilterMode)luaL_checkint(L, 2);
|
Image::FilterMode min;
|
||||||
f.mag = (Image::FilterMode)luaL_checkint(L, 3);
|
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);
|
t->setFilter(f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -60,27 +69,52 @@ namespace opengl
|
|||||||
{
|
{
|
||||||
Image * t = luax_checkimage(L, 1);
|
Image * t = luax_checkimage(L, 1);
|
||||||
Image::Filter f = t->getFilter();
|
Image::Filter f = t->getFilter();
|
||||||
lua_pushinteger(L, f.min);
|
Image::FilterMode min = f.min;
|
||||||
lua_pushinteger(L, f.mag);
|
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;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int w_Image_setWrap(lua_State * L)
|
int w_Image_setWrap(lua_State * L)
|
||||||
{
|
{
|
||||||
Image * t = luax_checkimage(L, 1);
|
Image * i = luax_checkimage(L, 1);
|
||||||
Image::Wrap w;
|
Image::Wrap w;
|
||||||
w.s = (Image::WrapMode)luaL_checkint(L, 2);
|
Image::WrapMode s;
|
||||||
w.t = (Image::WrapMode)luaL_checkint(L, 3);
|
Image::WrapMode t;
|
||||||
t->setWrap(w);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int w_Image_getWrap(lua_State * L)
|
int w_Image_getWrap(lua_State * L)
|
||||||
{
|
{
|
||||||
Image * t = luax_checkimage(L, 1);
|
Image * i = luax_checkimage(L, 1);
|
||||||
Image::Wrap w = t->getWrap();
|
Image::Wrap w = i->getWrap();
|
||||||
lua_pushinteger(L, w.s);
|
Image::WrapMode s = w.s;
|
||||||
lua_pushinteger(L, w.t);
|
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;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace love
|
|||||||
namespace image
|
namespace image
|
||||||
{
|
{
|
||||||
EncodedImageData::EncodedImageData(void * d, Format f, int s)
|
EncodedImageData::EncodedImageData(void * d, Format f, int s)
|
||||||
: data(d), format(f), size(s)
|
: data(d), size(s), format(f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -154,16 +154,16 @@ namespace devil
|
|||||||
|
|
||||||
void ImageData::setPixel(int x, int y, pixel c)
|
void ImageData::setPixel(int x, int y, pixel c)
|
||||||
{
|
{
|
||||||
int tx = x > width-1 ? width-1 : x;
|
//int tx = x > width-1 ? width-1 : x;
|
||||||
int ty = y > height-1 ? height-1 : y;
|
//int ty = y > height-1 ? height-1 : y; // not using these seems to not break anything
|
||||||
pixel * pixels = (pixel *)getData();
|
pixel * pixels = (pixel *)getData();
|
||||||
pixels[y*width+x] = c;
|
pixels[y*width+x] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixel ImageData::getPixel(int x, int y) const
|
pixel ImageData::getPixel(int x, int y) const
|
||||||
{
|
{
|
||||||
int tx = x > width-1 ? width-1 : x;
|
//int tx = x > width-1 ? width-1 : x;
|
||||||
int ty = y > height-1 ? height-1 : y;
|
//int ty = y > height-1 ? height-1 : y; // not using these seems to not break anything
|
||||||
pixel * pixels = (pixel *)getData();
|
pixel * pixels = (pixel *)getData();
|
||||||
return pixels[y*width+x];
|
return pixels[y*width+x];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace box2d
|
|||||||
|
|
||||||
void PrismaticJoint::setMotorEnabled(bool motor)
|
void PrismaticJoint::setMotorEnabled(bool motor)
|
||||||
{
|
{
|
||||||
return joint->EnableMotor(true);
|
return joint->EnableMotor(motor);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PrismaticJoint::isMotorEnabled() const
|
bool PrismaticJoint::isMotorEnabled() const
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ namespace box2d
|
|||||||
for(int i = 1;i<=argc;i++)
|
for(int i = 1;i<=argc;i++)
|
||||||
{
|
{
|
||||||
size_t bpos = (size_t)(lua_tointeger(L, i)-1);
|
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.");
|
return luaL_error(L, "Values must be in range 1-16.");
|
||||||
b.set(bpos, true);
|
b.set(bpos, true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user