diff --git a/platform/msvc2008/love.vcproj b/platform/msvc2008/love.vcproj index b7995c6d7..02f942fbf 100644 --- a/platform/msvc2008/love.vcproj +++ b/platform/msvc2008/love.vcproj @@ -869,6 +869,14 @@ RelativePath="..\..\src\modules\graphics\opengl\GLee.h" > + + + + @@ -1021,6 +1029,14 @@ RelativePath="..\..\src\modules\graphics\opengl\wrap_Frame.h" > + + + + @@ -3140,22 +3156,6 @@ - - - - - - - @@ -3205,7 +3205,7 @@ > + + + + + + + + + + + + + + + + + + + + + diff --git a/src/common/types.h b/src/common/types.h index 427bd1668..2242f4174 100644 --- a/src/common/types.h +++ b/src/common/types.h @@ -36,10 +36,15 @@ namespace love LOVE_FILESYSTEM_FILE_ID, LOVE_FILESYSTEM_FILE_DATA_ID, + // Font + LOVE_FONT_GLYPH_DATA_ID, + LOVE_FONT_RASTERIZER_ID, + // Graphics LOVE_GRAPHICS_DRAWABLE_ID, LOVE_GRAPHICS_IMAGE_ID, LOVE_GRAPHICS_FRAME_ID, + LOVE_GRAPHICS_GLYPH_ID, LOVE_GRAPHICS_ANIMATION_ID, LOVE_GRAPHICS_COLOR_ID, LOVE_GRAPHICS_FONT_ID, @@ -97,10 +102,14 @@ namespace love const bits LOVE_FILESYSTEM_FILE_BITS = (bits(1) << LOVE_FILESYSTEM_FILE_ID) | LOVE_OBJECT_BITS; const bits LOVE_FILESYSTEM_FILE_DATA_BITS = (bits(1) << LOVE_FILESYSTEM_FILE_DATA_ID) | LOVE_DATA_BITS; + const bits LOVE_FONT_GLYPH_DATA_BITS = (bits(1) << LOVE_FONT_GLYPH_DATA_ID) | LOVE_DATA_BITS; + const bits LOVE_FONT_RASTERIZER_BITS = (bits(1) << LOVE_FONT_RASTERIZER_ID) | LOVE_OBJECT_BITS; + // Graphics. const bits LOVE_GRAPHICS_DRAWABLE_BITS = (bits(1) << LOVE_GRAPHICS_DRAWABLE_ID) | LOVE_OBJECT_BITS; const bits LOVE_GRAPHICS_IMAGE_BITS = (bits(1) << LOVE_GRAPHICS_IMAGE_ID) | LOVE_GRAPHICS_DRAWABLE_BITS; - const bits LOVE_GRAPHICS_FRAME_BITS = (bits(1) << LOVE_GRAPHICS_FRAME_ID); + const bits LOVE_GRAPHICS_FRAME_BITS = (bits(1) << LOVE_GRAPHICS_FRAME_ID) | LOVE_OBJECT_BITS; + const bits LOVE_GRAPHICS_GLYPH_BITS = (bits(1) << LOVE_GRAPHICS_GLYPH_ID) | LOVE_GRAPHICS_DRAWABLE_BITS; const bits LOVE_GRAPHICS_ANIMATION_BITS = (bits(1) << LOVE_GRAPHICS_ANIMATION_ID) | LOVE_GRAPHICS_DRAWABLE_BITS; const bits LOVE_GRAPHICS_COLOR_BITS = (bits(1) << LOVE_GRAPHICS_COLOR_ID) | LOVE_OBJECT_BITS; const bits LOVE_GRAPHICS_FONT_BITS = (bits(1) << LOVE_GRAPHICS_FONT_ID) | LOVE_OBJECT_BITS; diff --git a/src/love.cpp b/src/love.cpp index 8ba711d94..e222ea54f 100644 --- a/src/love.cpp +++ b/src/love.cpp @@ -42,6 +42,7 @@ #include #include #include +#include // Libraries. #include "libraries/luasocket/luasocket.h" @@ -85,6 +86,7 @@ DECLSPEC int luaopen_love(lua_State * L) love::luax_preload(L, love::image::wrap_Image_open, "love.image"); love::luax_preload(L, love::physics::box2d::wrap_Physics_open, "love.physics"); love::luax_preload(L, love::sound::wrap_Sound_open, "love.sound"); + love::luax_preload(L, love::font::freetype::wrap_Font_open, "love.font"); love::luasocket::__open(L); love::lanes::open(L); @@ -132,8 +134,8 @@ int main(int argc, char ** argv) // which gets everything started. // TODO: This is obviously test code. - luaL_dofile(L, "../../src/scripts/boot.lua"); -//# include "scripts/boot.lua.h" + //luaL_dofile(L, "../../src/scripts/boot.lua"); +# include "scripts/boot.lua.h" lua_close(L); diff --git a/src/modules/font/GlyphData.cpp b/src/modules/font/GlyphData.cpp index 850444676..000b806d3 100644 --- a/src/modules/font/GlyphData.cpp +++ b/src/modules/font/GlyphData.cpp @@ -25,9 +25,10 @@ namespace love namespace font { - GlyphData::GlyphData(wchar_t glyph, unsigned char * glyphData, GlyphMetrics glyphMetrics, int glyphBPP) - : glyph(glyph), data(glyphData), metrics(glyphMetrics), bpp(glyphBPP) + GlyphData::GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics) + : glyph(glyph), metrics(glyphMetrics) { + data = new unsigned char[getWidth() * getHeight() * 2]; } GlyphData::~GlyphData() @@ -42,7 +43,7 @@ namespace font int GlyphData::getSize() const { - return getWidth() * getHeight() * bpp; + return getWidth() * getHeight() * 2; } int GlyphData::getHeight() const diff --git a/src/modules/font/GlyphData.h b/src/modules/font/GlyphData.h index c375c9510..eb2c8b861 100644 --- a/src/modules/font/GlyphData.h +++ b/src/modules/font/GlyphData.h @@ -47,19 +47,16 @@ namespace font { private: // The glyph itself - wchar_t glyph; + unsigned short glyph; // Glyph metrics GlyphMetrics metrics; // Glyph texture data unsigned char * data; - - // Bits Per Pixel - int bpp; public: - GlyphData(wchar_t glyph, unsigned char * glyphData, GlyphMetrics glyphMetrics, int glyphBPP); + GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics); virtual ~GlyphData(); // Implements Data. diff --git a/src/modules/font/ImageRasterizer.cpp b/src/modules/font/ImageRasterizer.cpp index 3bb455135..1d7ddc751 100644 --- a/src/modules/font/ImageRasterizer.cpp +++ b/src/modules/font/ImageRasterizer.cpp @@ -27,15 +27,15 @@ namespace love { namespace font { - ImageRasterizer::ImageRasterizer(love::filesystem::File * file, wchar_t * glyphs) - : glyphs(glyphs) + ImageRasterizer::ImageRasterizer(love::image::ImageData * data, unsigned short * glyphs) + : imageData(imageData) { - //imageData = new ImageData(file); + imageData->retain(); } ImageRasterizer::~ImageRasterizer() { - delete imageData; + imageData->release(); } int ImageRasterizer::getLineHeight() const @@ -43,7 +43,7 @@ namespace font return getHeight(); } - GlyphData * ImageRasterizer::getGlyphData(const wchar_t glyph) const + GlyphData * ImageRasterizer::getGlyphData(unsigned short glyph) const { return 0; } diff --git a/src/modules/font/ImageRasterizer.h b/src/modules/font/ImageRasterizer.h index fa03d64d9..dc3dcecbe 100644 --- a/src/modules/font/ImageRasterizer.h +++ b/src/modules/font/ImageRasterizer.h @@ -38,17 +38,14 @@ namespace font private: // The image data love::image::ImageData * imageData; - - // Glyphs - wchar_t * glyphs; - + public: - ImageRasterizer(love::filesystem::File * file, wchar_t * glyphs); + ImageRasterizer(love::image::ImageData * imageData, unsigned short * glyphs); virtual ~ImageRasterizer(); // Implement FontData virtual int getLineHeight() const; - virtual GlyphData * getGlyphData(const wchar_t glyph) const; + virtual GlyphData * getGlyphData(unsigned short glyph) const; }; // ImageRasterizer diff --git a/src/modules/font/Rasterizer.cpp b/src/modules/font/Rasterizer.cpp index ca1bbda57..8c9463eb6 100644 --- a/src/modules/font/Rasterizer.cpp +++ b/src/modules/font/Rasterizer.cpp @@ -26,6 +26,10 @@ namespace love namespace font { + Rasterizer::~Rasterizer() + { + } + int Rasterizer::getHeight() const { return metrics.height; diff --git a/src/modules/font/Rasterizer.h b/src/modules/font/Rasterizer.h index 8208d898f..9a309bc28 100644 --- a/src/modules/font/Rasterizer.h +++ b/src/modules/font/Rasterizer.h @@ -49,6 +49,9 @@ namespace font FontMetrics metrics; public: + + virtual ~Rasterizer(); + /** * Gets the max height of the glyphs. **/ @@ -78,10 +81,10 @@ namespace font * Gets a specific glyph. * @param glyph The (UNICODE) glyph to get data for **/ - virtual GlyphData * getGlyphData(const wchar_t glyph) const = 0; + virtual GlyphData * getGlyphData(unsigned short glyph) const = 0; - }; // FontData + }; // Rasterizer } // font } // love diff --git a/src/modules/font/freetype/Font.cpp b/src/modules/font/freetype/Font.cpp new file mode 100644 index 000000000..255d0c92f --- /dev/null +++ b/src/modules/font/freetype/Font.cpp @@ -0,0 +1,65 @@ +/** +* Copyright (c) 2006-2009 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 "Font.h" + +#include "TrueTypeRasterizer.h" +#include + +namespace love +{ +namespace font +{ +namespace freetype +{ + Font::Font() + { + if(FT_Init_FreeType(&library)) + throw love::Exception("TrueTypeFont Loading error: FT_Init_FreeType failed\n"); + } + + Font::~Font() + { + FT_Done_FreeType(library); + } + + Rasterizer * Font::newRasterizer(Data * data, int size) + { + return new TrueTypeRasterizer(library, data, size); + } + + Rasterizer * Font::newRasterizer(love::image::ImageData * data, unsigned short * glyphs) + { + return new ImageRasterizer(data, glyphs); + } + + GlyphData * Font::newGlyphData(Rasterizer * r, unsigned short glyph) + { + return r->getGlyphData(glyph); + } + + const char * Font::getName() const + { + return "love.font.freetype"; + } + +} // freetype +} // font +} // love diff --git a/src/modules/font/freetype/Font.h b/src/modules/font/freetype/Font.h new file mode 100644 index 000000000..ed8721cc8 --- /dev/null +++ b/src/modules/font/freetype/Font.h @@ -0,0 +1,73 @@ +/** +* Copyright (c) 2006-2009 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_FONT_FREETYPE_FONT_H +#define LOVE_FONT_FREETYPE_FONT_H + +// LOVE +#include +#include +#include +#include + +// FreeType2 +#include +#include +#include +#include +#include + +namespace love +{ +namespace font +{ +namespace freetype +{ + + class Font : public Module + { + private: + + // FreeType library + FT_Library library; + + public: + + Font(); + + /** + * Destructor. + **/ + virtual ~Font(); + + Rasterizer * newRasterizer(Data * data, int size); + Rasterizer * newRasterizer(love::image::ImageData * data, unsigned short * glyphs); + GlyphData * newGlyphData(Rasterizer * r, unsigned short glyph); + + // Implement Module + const char * getName() const; + + }; // Font + +} // freetype +} // font +} // love + +#endif // LOVE_FONT_FREETYPE_FONT_H \ No newline at end of file diff --git a/src/modules/font/freetype/FreeTypeRasterizer.cpp b/src/modules/font/freetype/TrueTypeRasterizer.cpp similarity index 68% rename from src/modules/font/freetype/FreeTypeRasterizer.cpp rename to src/modules/font/freetype/TrueTypeRasterizer.cpp index aa08c886a..691085a5e 100644 --- a/src/modules/font/freetype/FreeTypeRasterizer.cpp +++ b/src/modules/font/freetype/TrueTypeRasterizer.cpp @@ -19,7 +19,7 @@ **/ // LOVE -#include "FreeTypeRasterizer.h" +#include "TrueTypeRasterizer.h" #include @@ -29,20 +29,12 @@ namespace font { namespace freetype { - inline int next_p2(int num) - { - int powered = 2; - while(powered < num) powered <<= 1; - return powered; - } + struct la { unsigned char l,a; }; - FreeTypeRasterizer::FreeTypeRasterizer(love::filesystem::File * file, int size) + TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data * data, int size) + : data(data) { - // Initialize - data = file->read(); - - if(FT_Init_FreeType(&library)) - throw love::Exception("TrueTypeFont Loading error: FT_Init_FreeType failed\n"); + data->retain(); if(FT_New_Memory_Face( library, (const FT_Byte *)data->getData(), /* first byte in memory */ @@ -60,23 +52,20 @@ namespace freetype metrics.height = face->height; } - FreeTypeRasterizer::~FreeTypeRasterizer() + TrueTypeRasterizer::~TrueTypeRasterizer() { FT_Done_Face(face); - FT_Done_FreeType(library); data->release(); } - int FreeTypeRasterizer::getLineHeight() const + int TrueTypeRasterizer::getLineHeight() const { return (int)(getHeight() * 1.25); } - GlyphData * FreeTypeRasterizer::getGlyphData(const wchar_t glyph) const + GlyphData * TrueTypeRasterizer::getGlyphData(unsigned short glyph) const { - unsigned char * textureData; love::font::GlyphMetrics glyphMetrics; - int bpp = 2; FT_Glyph ftglyph; // Initialize @@ -85,7 +74,7 @@ namespace freetype if( FT_Get_Glyph(face->glyph, &ftglyph) ) throw love::Exception("TrueTypeFont Loading vm->error: FT_Get_Glyph failed\n"); - + FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1); FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph)ftglyph; FT_Bitmap& bitmap = bitmap_glyph->bitmap; //just to make things easier @@ -93,23 +82,25 @@ namespace freetype // Get metrics glyphMetrics.bearingX = face->glyph->metrics.horiBearingX; glyphMetrics.bearingY = face->glyph->metrics.horiBearingY; - glyphMetrics.height = face->glyph->metrics.height; - glyphMetrics.width = face->glyph->metrics.width; + glyphMetrics.height = bitmap.rows; + glyphMetrics.width = bitmap.width; glyphMetrics.advance = face->glyph->advance.x >> 6; - // Get texture - int w = next_p2(bitmap.width); - int h = next_p2(bitmap.rows); - textureData = new unsigned char[bpp * w * h]; + GlyphData * glyphData = new GlyphData(glyph, glyphMetrics); - for(int j = 0; j < h; j++) for(int i = 0; i < w; i++) { - textureData[bpp * (i + j * w)] = 255; - textureData[bpp * (i + j * w) + 1] = (i >= bitmap.width || j >= bitmap.rows) ? 0 : bitmap.buffer[i + bitmap.width * j]; + int size = bitmap.rows*bitmap.width; + unsigned char * dst = (unsigned char *)glyphData->getData(); + + // Note that bitmap.buffer contains only luminocity. We copy that single value to + // our luminocity-alpha format. + for(int i = 0; i #include -// FreeType2 +// TrueType2 #include #include #include @@ -41,26 +41,24 @@ namespace freetype /** * Holds data for a font object. **/ - class FreeTypeRasterizer : public Rasterizer + class TrueTypeRasterizer : public Rasterizer { private: - // FreeType library - FT_Library library; - // FreeType face + + // TrueType face FT_Face face; // File data Data * data; - public: - FreeTypeRasterizer(love::filesystem::File * file, int size); - virtual ~FreeTypeRasterizer(); + TrueTypeRasterizer(FT_Library library, Data * data, int size); + virtual ~TrueTypeRasterizer(); - // Implement FontData + // Implement Rasterizer virtual int getLineHeight() const; - virtual GlyphData * getGlyphData(const wchar_t glyph) const; + virtual GlyphData * getGlyphData(unsigned short glyph) const; }; // FreetypeRasterizer @@ -68,4 +66,4 @@ namespace freetype } // font } // love -#endif // LOVE_FONT_FREE_TYPE_RASTERIZER_H \ No newline at end of file +#endif // LOVE_FONT_FREETYPE_TRUE_TYPE_RASTERIZER_H \ No newline at end of file diff --git a/src/modules/font/wrap_Font.cpp b/src/modules/font/freetype/wrap_Font.cpp similarity index 63% rename from src/modules/font/wrap_Font.cpp rename to src/modules/font/freetype/wrap_Font.cpp index 75dc44555..0f05c2908 100644 --- a/src/modules/font/wrap_Font.cpp +++ b/src/modules/font/freetype/wrap_Font.cpp @@ -20,27 +20,49 @@ #include "wrap_Font.h" +#include +#include + +#include "TrueTypeRasterizer.h" + namespace love { namespace font +{ +namespace freetype { static Font * instance = 0; - int _wrap_test(lua_State * L) + int _wrap_newRasterizer(lua_State * L) { - lua_pushinteger(L, 696); + Data * d = luax_checkdata(L, 1); + int size = luaL_checkint(L, 2); + + Rasterizer * t = instance->newRasterizer(d, size); + luax_newtype(L, "Rasterizer", LOVE_FONT_RASTERIZER_BITS, t); + return 1; + } + int _wrap_newGlyphData(lua_State * L) + { + Rasterizer * r = luax_checkrasterizer(L, 1); + unsigned short g = (unsigned short)luaL_checkint(L, 2); + + GlyphData * t = instance->newGlyphData(r, g); + luax_newtype(L, "GlyphData", LOVE_FONT_GLYPH_DATA_BITS, t); return 1; } // List of functions to wrap. static const luaL_Reg wrap_Font_functions[] = { - { "test", _wrap_test }, + { "newRasterizer", _wrap_newRasterizer }, + { "newGlyphData", _wrap_newGlyphData }, { 0, 0 } }; static const lua_CFunction wrap_Font_types[] = { - _wrap_test, + wrap_GlyphData_open, + wrap_Rasterizer_open, 0 }; @@ -63,5 +85,6 @@ namespace font return luax_register_module(L, wrap_Font_functions, wrap_Font_types, "font"); } +} // freetype } // sound } // love diff --git a/src/modules/font/wrap_Font.h b/src/modules/font/freetype/wrap_Font.h similarity index 79% rename from src/modules/font/wrap_Font.h rename to src/modules/font/freetype/wrap_Font.h index f41b4b43d..ec5967400 100644 --- a/src/modules/font/wrap_Font.h +++ b/src/modules/font/freetype/wrap_Font.h @@ -18,8 +18,8 @@ * 3. This notice may not be removed or altered from any source distribution. **/ -#ifndef LOVE_FONT_WRAP_FONT_H -#define LOVE_FONT_WRAP_FONT_H +#ifndef LOVE_FONT_FREETYPE_WRAP_FONT_H +#define LOVE_FONT_FREETYPE_WRAP_FONT_H // LOVE #include "Font.h" @@ -29,10 +29,14 @@ namespace love { namespace font { - int _wrap_test(lua_State * L); +namespace freetype +{ + int _wrap_newRasterizer(lua_State * L); + int _wrap_newGlyphData(lua_State * L); int wrap_Font_open(lua_State * L); +} // freetype } // font } // love -#endif // LOVE_SOUND_WRAP_FONT_H +#endif // LOVE_FONT_FREETYPE_WRAP_FONT_H diff --git a/src/modules/font/wrap_GlyphData.cpp b/src/modules/font/wrap_GlyphData.cpp new file mode 100644 index 000000000..05e9095d1 --- /dev/null +++ b/src/modules/font/wrap_GlyphData.cpp @@ -0,0 +1,48 @@ +/** +* Copyright (c) 2006-2009 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 "wrap_GlyphData.h" + +namespace love +{ +namespace font +{ + GlyphData * luax_checkglyphdata(lua_State * L, int idx) + { + return luax_checktype(L, idx, "GlyphData", LOVE_FONT_GLYPH_DATA_BITS); + } + + static const luaL_Reg wrap_GlyphData_functions[] = { + + // Data + { "getPointer", _wrap_Data_getPointer }, + { "getSize", _wrap_Data_getSize }, + + { 0, 0 } + }; + + int wrap_GlyphData_open(lua_State * L) + { + luax_register_type(L, "GlyphData", wrap_GlyphData_functions); + return 0; + } + +} // sound +} // love diff --git a/src/modules/font/Font.h b/src/modules/font/wrap_GlyphData.h similarity index 68% rename from src/modules/font/Font.h rename to src/modules/font/wrap_GlyphData.h index 5ae011fd3..be016705f 100644 --- a/src/modules/font/Font.h +++ b/src/modules/font/wrap_GlyphData.h @@ -16,40 +16,25 @@ * 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_FONT_FONT_H -#define LOVE_FONT_FONT_H - -// LOVE -#include -#include -#include "Rasterizer.h" - -namespace love -{ -namespace font -{ - - /** - * The Font module is responsible for decoding font data. It is - * not responsible for drawing it. - **/ - class Font : public Module - { - public: - - /** - * Destructor. - **/ - virtual ~Font(); - - // Implement Module - const char * getName() const; - - }; // Font - -} // font -} // love - -#endif // LOVE_FONT_FONT_H \ No newline at end of file +**/ + +#ifndef LOVE_FONT_WRAP_GLYPH_DATA_H +#define LOVE_FONT_WRAP_GLYPH_DATA_H + +// LOVE +#include +#include + +#include "GlyphData.h" + +namespace love +{ +namespace font +{ + GlyphData * luax_checkglyphdata(lua_State * L, int idx); + int wrap_GlyphData_open(lua_State * L); + +} // font +} // love + +#endif // LOVE_FONT_WRAP_GLYPH_DATA_H diff --git a/src/modules/font/wrap_Rasterizer.cpp b/src/modules/font/wrap_Rasterizer.cpp new file mode 100644 index 000000000..d6c682fdf --- /dev/null +++ b/src/modules/font/wrap_Rasterizer.cpp @@ -0,0 +1,50 @@ +/** +* Copyright (c) 2006-2009 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 "wrap_Rasterizer.h" + +#include + +namespace love +{ +namespace font +{ + Rasterizer * luax_checkrasterizer(lua_State * L, int idx) + { + return luax_checktype(L, idx, "Rasterizer", LOVE_FONT_RASTERIZER_BITS); + } + + static const luaL_Reg wrap_Rasterizer_functions[] = { + + // Data + { "getPointer", _wrap_Data_getPointer }, + { "getSize", _wrap_Data_getSize }, + + { 0, 0 } + }; + + int wrap_Rasterizer_open(lua_State * L) + { + luax_register_type(L, "Rasterizer", wrap_Rasterizer_functions); + return 0; + } + +} // font +} // love diff --git a/src/modules/font/Font.cpp b/src/modules/font/wrap_Rasterizer.h similarity index 75% rename from src/modules/font/Font.cpp rename to src/modules/font/wrap_Rasterizer.h index 6ce488c13..3e1a48883 100644 --- a/src/modules/font/Font.cpp +++ b/src/modules/font/wrap_Rasterizer.h @@ -16,23 +16,23 @@ * 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 "Font.h" - -namespace love -{ -namespace font -{ - - Font::~Font() - { - } - - const char * Font::getName() const - { - return "love.font"; - } - -} // font -} // love +**/ + +#ifndef LOVE_FONT_WRAP_RASTERIZER_H +#define LOVE_FONT_WRAP_RASTERIZER_H + +// LOVE +#include +#include "Rasterizer.h" + +namespace love +{ +namespace font +{ + Rasterizer * luax_checkrasterizer(lua_State * L, int idx); + int wrap_Rasterizer_open(lua_State * L); + +} // font +} // love + +#endif // LOVE_FONT_WRAP_RASTERIZER_H diff --git a/src/modules/graphics/opengl/Glyph.cpp b/src/modules/graphics/opengl/Glyph.cpp new file mode 100644 index 000000000..4e6b055b5 --- /dev/null +++ b/src/modules/graphics/opengl/Glyph.cpp @@ -0,0 +1,129 @@ +/** +* Copyright (c) 2006-2009 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 "Glyph.h" + +// STD +#include // For memcpy + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + + Glyph::Glyph(love::font::GlyphData * data) + : data(data), texture(0), width((float)data->getWidth()), height((float)data->getHeight()) + { + data->retain(); + + memset(vertices, 255, sizeof(vertex)*4); + + vertices[0].x = 0; vertices[0].y = 0; + vertices[1].x = 0; vertices[1].y = height; + vertices[2].x = width; vertices[2].y = height; + vertices[3].x = width; vertices[3].y = 0; + + vertices[0].s = 0; vertices[0].t = 0; + vertices[1].s = 0; vertices[1].t = 1; + vertices[2].s = 1; vertices[2].t = 1; + vertices[3].s = 1; vertices[3].t = 0; + + } + + Glyph::~Glyph() + { + if(data != 0) + data->release(); + unload(); + } + + void Glyph::draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const + { + static Matrix t; + + t.setTransformation(x, y, angle, sx, sy, ox, oy); + + if(texture != 0) + glBindTexture(GL_TEXTURE_2D,texture); + + glPushMatrix(); + + glMultMatrixf((const GLfloat*)t.getElements()); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glVertexPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].x); + glTexCoordPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].s); + glDrawArrays(GL_QUADS, 0, 4); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + glPopMatrix(); + + } + + bool Glyph::load() + { + return loadVolatile(); + } + + void Glyph::unload() + { + unloadVolatile(); + } + + bool Glyph::loadVolatile() + { + glGenTextures(1,&texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glTexImage2D(GL_TEXTURE_2D, + 0, + GL_RGBA, + (GLsizei)width, + (GLsizei)height, + 0, + GL_LUMINANCE_ALPHA, + GL_UNSIGNED_BYTE, + data->getData()); + + return true; + } + + void Glyph::unloadVolatile() + { + // Delete the hardware texture. + if(texture != 0) + { + glDeleteTextures(1, (GLuint*)&texture); + texture = 0; + } + } + +} // opengl +} // graphics +} // love diff --git a/src/modules/graphics/opengl/Glyph.h b/src/modules/graphics/opengl/Glyph.h new file mode 100644 index 000000000..e3af6fea2 --- /dev/null +++ b/src/modules/graphics/opengl/Glyph.h @@ -0,0 +1,75 @@ +/** +* Copyright (c) 2006-2009 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_OPENGL_GLYPH_H +#define LOVE_GRAPHICS_OPENGL_GLYPH_H + +// LOVE +#include +#include +#include +#include +#include + +// OpenGL +#include "GLee.h" +#include + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + + class Glyph : public Drawable + { + private: + + love::font::GlyphData * data; + + float width, height; + + GLuint texture; + + vertex vertices[4]; + + public: + + + Glyph(love::font::GlyphData * data); + virtual ~Glyph(); + + bool load(); + void unload(); + + // Implements Volatile. + bool loadVolatile(); + void unloadVolatile(); + + void draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const; + + }; // Glyph + +} // opengl +} // graphics +} // love + +#endif // LOVE_GRAPHICS_OPENGL_GLYPH_H diff --git a/src/modules/graphics/opengl/wrap_Glyph.cpp b/src/modules/graphics/opengl/wrap_Glyph.cpp new file mode 100644 index 000000000..07f5c4e7b --- /dev/null +++ b/src/modules/graphics/opengl/wrap_Glyph.cpp @@ -0,0 +1,47 @@ +/** +* Copyright (c) 2006-2009 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 +#include "wrap_Glyph.h" + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + Glyph * luax_checkglyph(lua_State * L, int idx) + { + return luax_checktype(L, idx, "Glyph", LOVE_GRAPHICS_GLYPH_BITS); + } + + static const luaL_Reg wrap_Glyph_functions[] = { + { 0, 0 } + }; + + int wrap_Glyph_open(lua_State * L) + { + luax_register_type(L, "Glyph", wrap_Glyph_functions); + return 0; + } + +} // opengl +} // graphics +} // love diff --git a/src/modules/graphics/opengl/wrap_Glyph.h b/src/modules/graphics/opengl/wrap_Glyph.h new file mode 100644 index 000000000..f41d9f406 --- /dev/null +++ b/src/modules/graphics/opengl/wrap_Glyph.h @@ -0,0 +1,41 @@ +/** +* Copyright (c) 2006-2009 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_OPENGL_WRAP_GLYPH_H +#define LOVE_GRAPHICS_OPENGL_WRAP_GLYPH_H + +// LOVE +#include +#include "Glyph.h" + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + Glyph * luax_checkglyph(lua_State * L, int idx); + int wrap_Glyph_open(lua_State * L); + +} // opengl +} // graphics +} // love + +#endif // LOVE_GRAPHICS_OPENGL_WRAP_GLYPH_H diff --git a/src/modules/graphics/opengl/wrap_Graphics.cpp b/src/modules/graphics/opengl/wrap_Graphics.cpp index 1878d4969..152d185a1 100644 --- a/src/modules/graphics/opengl/wrap_Graphics.cpp +++ b/src/modules/graphics/opengl/wrap_Graphics.cpp @@ -20,6 +20,8 @@ #include "wrap_Graphics.h" +#include + namespace love { namespace graphics @@ -153,6 +155,21 @@ namespace opengl return 1; } + + int _wrap_newGlyph(lua_State * L) + { + + love::font::GlyphData * data = love::font::luax_checkglyphdata(L, 1); + + // Create the image. + Glyph * t = new Glyph(data); + t->load(); + + // Push the type. + luax_newtype(L, "Glyph", LOVE_GRAPHICS_GLYPH_BITS, (void*)t); + + return 1; + } int _wrap_newFrame(lua_State * L) { @@ -699,6 +716,7 @@ namespace opengl { "present", _wrap_present }, { "newImage", _wrap_newImage }, + { "newGlyph", _wrap_newGlyph }, { "newFrame", _wrap_newFrame }, { "newFont", _wrap_newFont }, { "newImageFont", _wrap_newImageFont }, @@ -764,6 +782,7 @@ namespace opengl { "pop", _wrap_pop }, { "rotate", _wrap_rotate }, { "scale", _wrap_scale }, + { "translate", _wrap_translate }, { 0, 0 } @@ -773,6 +792,7 @@ namespace opengl const lua_CFunction wrap_Graphics_types[] = { wrap_Font_open, wrap_Image_open, + wrap_Glyph_open, wrap_Frame_open, wrap_SpriteBatch_open, 0 @@ -795,8 +815,8 @@ namespace opengl luax_register_gc(L, "love.graphics", instance); luax_register_module(L, wrap_Graphics_functions, wrap_Graphics_types, "graphics"); -//# include - luaL_dofile(L, "../../src/scripts/graphics.lua"); +# include + //luaL_dofile(L, "../../src/scripts/graphics.lua"); return 0; } diff --git a/src/modules/graphics/opengl/wrap_Graphics.h b/src/modules/graphics/opengl/wrap_Graphics.h index 1e8e7662d..509b2e0e1 100644 --- a/src/modules/graphics/opengl/wrap_Graphics.h +++ b/src/modules/graphics/opengl/wrap_Graphics.h @@ -24,6 +24,7 @@ // LOVE #include "wrap_Font.h" #include "wrap_Image.h" +#include "wrap_Glyph.h" #include "wrap_Frame.h" #include "wrap_SpriteBatch.h" #include "Graphics.h" @@ -48,6 +49,7 @@ namespace opengl int _wrap_setScissor(lua_State * L); int _wrap_getScissor(lua_State * L); int _wrap_newImage(lua_State * L); + int _wrap_newGlyph(lua_State * L); int _wrap_newFrame(lua_State * L); int _wrap_newFont(lua_State * L); int _wrap_newImageFont(lua_State * L); diff --git a/src/modules/image/Image.h b/src/modules/image/Image.h index 352d752da..715ff9a60 100644 --- a/src/modules/image/Image.h +++ b/src/modules/image/Image.h @@ -24,6 +24,7 @@ // LOVE #include #include +#include #include "ImageData.h" namespace love diff --git a/src/modules/image/devil/Image.cpp b/src/modules/image/devil/Image.cpp index c58b850b4..68c78a6db 100644 --- a/src/modules/image/devil/Image.cpp +++ b/src/modules/image/devil/Image.cpp @@ -20,6 +20,8 @@ #include "Image.h" +#include "ImageData.h" + // DevIL #include diff --git a/src/modules/image/devil/Image.h b/src/modules/image/devil/Image.h index 70421f983..d010ef9cd 100644 --- a/src/modules/image/devil/Image.h +++ b/src/modules/image/devil/Image.h @@ -23,7 +23,6 @@ // LOVE #include -#include "ImageData.h" namespace love { diff --git a/src/modules/image/devil/ImageData.cpp b/src/modules/image/devil/ImageData.cpp index ed34d4dcd..5fd2db3a8 100644 --- a/src/modules/image/devil/ImageData.cpp +++ b/src/modules/image/devil/ImageData.cpp @@ -79,7 +79,7 @@ namespace devil // Bind the image. ilBindImage(image); - ilTexImage(width, height, 0, bpp, IL_RGBA, IL_UNSIGNED_BYTE, 0); + ilTexImage(width, height, 1, bpp, IL_RGBA, IL_UNSIGNED_BYTE, 0); } ImageData::~ImageData() diff --git a/src/scripts/boot.lua b/src/scripts/boot.lua index f6c37a398..ed81a86dc 100644 --- a/src/scripts/boot.lua +++ b/src/scripts/boot.lua @@ -135,6 +135,7 @@ function love.init() physics = true, sound = true, native = true, + font = true, }, } diff --git a/src/scripts/boot.lua.h b/src/scripts/boot.lua.h index d8ba233fa..ddb82f7e6 100644 --- a/src/scripts/boot.lua.h +++ b/src/scripts/boot.lua.h @@ -151,104 +151,105 @@ static const unsigned char B1[]={ 44, 13, 10, 9, 9, 9,112,104,121,115,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9, 9,115,111,117,110,100, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9, 9,110, 97,116,105,118,101, 32, 61, 32,116,114,117,101, 44, 13, 10, - 9, 9,125, 44, 13, 10, 9,125, 13, 10, 13, 10, 9, 45, 45, 32, 73,102, 32, 99, -111,110,102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108, -111, 97,100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32, -116,111, 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98, -108,101, 46, 13, 10, 9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121, -115,116,101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117, - 97, 34, 41, 32,116,104,101,110, 13, 10, 9, 9,114,101,113,117,105,114,101, 40, - 34, 99,111,110,102, 46,108,117, 97, 34, 41, 13, 10, 9, 9,108,111,118,101, 46, - 99,111,110,102, 40, 99, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 45, - 45, 32, 71,101,116,115, 32,100,101,115,105,114,101,100, 32,109,111,100,117,108, -101,115, 46, 13, 10, 9,102,111,114, 32,107, 44,118, 32,105,110, 32,112, 97,105, -114,115, 40, 99, 46,109,111,100,117,108,101,115, 41, 32,100,111, 13, 10, 9, 9, -105,102, 32,118, 32,116,104,101,110, 13, 10, 9, 9, 9,114,101,113,117,105,114, -101, 40, 34,108,111,118,101, 46, 34, 32, 46, 46, 32,107, 41, 13, 10, 9, 9,101, -110,100, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 13, 10, 9, 45, 45, 32, - 83,101,116,117,112, 32,115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10, - 9,105,102, 32, 99, 46,115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109, -111,100,117,108,101,115, 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110, - 32, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99, -115, 46, 99,104,101, 99,107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, - 46,119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105, -103,104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99, -114,101,101,110, 41, 32,116,104,101,110, 13, 10, 9, 9, 9,108,111,118,101, 46, -103,114, 97,112,104,105, 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115, - 99,114,101,101,110, 46,119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101, -110, 46,104,101,105,103,104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102, -117,108,108,115, 99,114,101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46, -118,115,121,110, 99, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97, - 41, 13, 10, 9, 9,101,110,100, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97, -112,104,105, 99,115, 46,115,101,116, 67, 97,112,116,105,111,110, 40, 99, 46,116, -105,116,108,101, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9,105,102, 32, -108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,101,120,105,115, -116,115, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,116,104,101,110, 32, -114,101,113,117,105,114,101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32, -101,110,100, 13, 10, 9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116, -105,111,110, 32,108,111,118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10, 9,105, -102, 32,108,111,118,101, 46,108,111, 97,100, 32,116,104,101,110, 32,108,111,118, -101, 46,108,111, 97,100, 40, 41, 32,101,110,100, 13, 10, 13, 10, 9, 45, 45, 32, - 77, 97,105,110, 32,108,111,111,112, 32,116,105,109,101, 46, 13, 10, 9,119,104, -105,108,101, 32,116,114,117,101, 32,100,111, 13, 10, 9, 9,108,111,118,101, 46, -116,105,109,101,114, 46,115,116,101,112, 40, 41, 13, 10, 9, 9,105,102, 32,108, -111,118,101, 46,117,112,100, 97,116,101, 32,116,104,101,110, 32,108,111,118,101, - 46,117,112,100, 97,116,101, 40,108,111,118,101, 46,116,105,109,101,114, 46,103, -101,116, 68,101,108,116, 97, 40, 41, 41, 32,101,110,100, 13, 10, 9, 9,108,111, -118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,108,101, 97,114, 40, 41, 13, - 10, 9, 9,105,102, 32,108,111,118,101, 46,100,114, 97,119, 32,116,104,101,110, - 32,108,111,118,101, 46,100,114, 97,119, 40, 41, 32,101,110,100, 13, 10, 13, 10, - 9, 9, 45, 45, 32, 80,114,111, 99,101,115,115, 32,101,118,101,110,116,115, 46, - 13, 10, 9, 9,102,111,114, 32,101, 44, 97, 44, 98, 44, 99, 32,105,110, 32,108, -111,118,101, 46,101,118,101,110,116, 46,112,111,108,108, 40, 41, 32,100,111, 13, - 10, 9, 9, 9,105,102, 32,101, 32, 61, 61, 32,108,111,118,101, 46,101,118,101, -110,116, 95,113,117,105,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, -101,110,100, 13, 10, 9, 9, 9,108,111,118,101, 46,104, 97,110,100,108,101,114, -115, 91,101, 93, 40, 97, 44, 98, 44, 99, 41, 13, 10, 9, 9,101,110,100, 13, 10, - 13, 10, 9, 9, 45, 45,108,111,118,101, 46,116,105,109,101,114, 46,115,108,101, -101,112, 40, 49, 48, 41, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104, -105, 99,115, 46,112,114,101,115,101,110,116, 40, 41, 13, 10, 13, 10, 9,101,110, -100, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, + 9, 9, 9,102,111,110,116, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9,125, + 44, 13, 10, 9,125, 13, 10, 13, 10, 9, 45, 45, 32, 73,102, 32, 99,111,110,102, +105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108,111, 97,100, + 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32,116,111, 32, +117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98,108,101, 46, + 13, 10, 9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116,101, +109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117, 97, 34, 41, + 32,116,104,101,110, 13, 10, 9, 9,114,101,113,117,105,114,101, 40, 34, 99,111, +110,102, 46,108,117, 97, 34, 41, 13, 10, 9, 9,108,111,118,101, 46, 99,111,110, +102, 40, 99, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 45, 45, 32, 71, +101,116,115, 32,100,101,115,105,114,101,100, 32,109,111,100,117,108,101,115, 46, + 13, 10, 9,102,111,114, 32,107, 44,118, 32,105,110, 32,112, 97,105,114,115, 40, + 99, 46,109,111,100,117,108,101,115, 41, 32,100,111, 13, 10, 9, 9,105,102, 32, +118, 32,116,104,101,110, 13, 10, 9, 9, 9,114,101,113,117,105,114,101, 40, 34, +108,111,118,101, 46, 34, 32, 46, 46, 32,107, 41, 13, 10, 9, 9,101,110,100, 13, + 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 13, 10, 9, 45, 45, 32, 83,101,116, +117,112, 32,115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10, 9,105,102, + 32, 99, 46,115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109,111,100,117, +108,101,115, 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110, 32, 13, 10, + 9, 9,105,102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99, +104,101, 99,107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,119,105, +100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,104,116, + 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,101,101, +110, 41, 32,116,104,101,110, 13, 10, 9, 9, 9,108,111,118,101, 46,103,114, 97, +112,104,105, 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115, 99,114,101, +101,110, 46,119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104, +101,105,103,104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108, +115, 99,114,101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46,118,115,121, +110, 99, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97, 41, 13, 10, + 9, 9,101,110,100, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, + 99,115, 46,115,101,116, 67, 97,112,116,105,111,110, 40, 99, 46,116,105,116,108, +101, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9,105,102, 32,108,111,118, +101, 46,102,105,108,101,115,121,115,116,101,109, 46,101,120,105,115,116,115, 40, + 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,116,104,101,110, 32,114,101,113, +117,105,114,101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,101,110,100, + 13, 10, 9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, + 32,108,111,118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10, 9,105,102, 32,108, +111,118,101, 46,108,111, 97,100, 32,116,104,101,110, 32,108,111,118,101, 46,108, +111, 97,100, 40, 41, 32,101,110,100, 13, 10, 13, 10, 9, 45, 45, 32, 77, 97,105, +110, 32,108,111,111,112, 32,116,105,109,101, 46, 13, 10, 9,119,104,105,108,101, + 32,116,114,117,101, 32,100,111, 13, 10, 9, 9,108,111,118,101, 46,116,105,109, +101,114, 46,115,116,101,112, 40, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, + 46,117,112,100, 97,116,101, 32,116,104,101,110, 32,108,111,118,101, 46,117,112, +100, 97,116,101, 40,108,111,118,101, 46,116,105,109,101,114, 46,103,101,116, 68, +101,108,116, 97, 40, 41, 41, 32,101,110,100, 13, 10, 9, 9,108,111,118,101, 46, +103,114, 97,112,104,105, 99,115, 46, 99,108,101, 97,114, 40, 41, 13, 10, 9, 9, +105,102, 32,108,111,118,101, 46,100,114, 97,119, 32,116,104,101,110, 32,108,111, +118,101, 46,100,114, 97,119, 40, 41, 32,101,110,100, 13, 10, 13, 10, 9, 9, 45, + 45, 32, 80,114,111, 99,101,115,115, 32,101,118,101,110,116,115, 46, 13, 10, 9, + 9,102,111,114, 32,101, 44, 97, 44, 98, 44, 99, 32,105,110, 32,108,111,118,101, + 46,101,118,101,110,116, 46,112,111,108,108, 40, 41, 32,100,111, 13, 10, 9, 9, + 9,105,102, 32,101, 32, 61, 61, 32,108,111,118,101, 46,101,118,101,110,116, 95, +113,117,105,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,101,110,100, + 13, 10, 9, 9, 9,108,111,118,101, 46,104, 97,110,100,108,101,114,115, 91,101, + 93, 40, 97, 44, 98, 44, 99, 41, 13, 10, 9, 9,101,110,100, 13, 10, 13, 10, 9, + 9, 45, 45,108,111,118,101, 46,116,105,109,101,114, 46,115,108,101,101,112, 40, + 49, 48, 41, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, + 46,112,114,101,115,101,110,116, 40, 41, 13, 10, 13, 10, 9,101,110,100, 13, 10, + 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97, -117,108,116, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97,117,108,116, + 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99, -116,105,111,110, 32,108,111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114, -101,101,110, 40, 41, 13, 10, 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111, -111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, - 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 13, 10, 45, 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, - 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46, -101,114,114,111,114,115, 99,114,101,101,110, 40, 41, 13, 10, 9, 13, 10, 9, 45, - 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114, -101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, - 32,114,111,111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,111, +110, 32,108,111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,101,101,110, + 40, 41, 13, 10, 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32, +103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112, -114,105,110,116,101,114, 40,109,115,103, 41, 13, 10, 9,112,114,105,110,116, 40, - 34, 98,111,111,116, 34, 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116, -114, 97, 99,101, 98, 97, 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10, + 13, 10, 45, 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46, 13, 10, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, + 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,114,114, +111,114,115, 99,114,101,101,110, 40, 41, 13, 10, 9, 13, 10, 9, 45, 45, 32, 77, + 97,105,110, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, + 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, 32,114,111, +111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, 10, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, + 10,102,117,110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,114,105,110, +116,101,114, 40,109,115,103, 41, 13, 10, 9,112,114,105,110,116, 40, 34, 98,111, +111,116, 34, 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, 97, 99, +101, 98, 97, 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,114,101,115, +117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46, 98,111, +111,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10, 114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, - 46, 98,111,111,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, + 46,105,110,105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108, -111,118,101, 46,105,110,105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110, -116,101,114, 41, 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108, -108, 40,108,111,118,101, 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114, -105,110,116,101,114, 41, 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110, -101, 46, 34, 41, +111,118,101, 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,105,110,116, +101,114, 41, 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101, 46, 34, + 41, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0); diff --git a/src/scripts/graphics.lua.h b/src/scripts/graphics.lua.h index 76ed33a37..989349e2b 100644 --- a/src/scripts/graphics.lua.h +++ b/src/scripts/graphics.lua.h @@ -70,9 +70,7 @@ static const unsigned char B1[]={ 46,112,114,105,110,116,102, 49, 40, 46, 46, 46, 41, 13, 10, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116,102, 32, 61, 32,108, 111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114,105,110,116,102, 49, - 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111, -118,101, 46,103,114, 97,112,104,105, 99,115, 46,102,105,115,116, 40,100, 41, 13, - 10, 9,112,114,105,110,116, 40,100, 41, 13, 10,101,110,100, + 13, 10,101,110,100, 13, 10, 13, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"graphics.lua")==0) lua_call(L, 0, 0);