mirror of
https://github.com/love2d/love.git
synced 2026-08-16 08:11:02 +02:00
Use unsigned ints instead of unsigned shorts to represent UTF8 font glyphs
This commit is contained in:
@@ -41,8 +41,8 @@ public:
|
||||
|
||||
virtual Rasterizer *newRasterizer(Data *data, int size) = 0;
|
||||
virtual Rasterizer *newRasterizer(love::image::ImageData *data, std::string glyphs) = 0;
|
||||
virtual Rasterizer *newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length) = 0;
|
||||
virtual GlyphData *newGlyphData(Rasterizer *r, unsigned short glyph) = 0;
|
||||
virtual Rasterizer *newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int length) = 0;
|
||||
virtual GlyphData *newGlyphData(Rasterizer *r, unsigned int glyph) = 0;
|
||||
|
||||
// Implement Module
|
||||
virtual const char *getName() const = 0;
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace love
|
||||
namespace font
|
||||
{
|
||||
|
||||
GlyphData::GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
|
||||
GlyphData::GlyphData(unsigned int glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
|
||||
: glyph(glyph)
|
||||
, metrics(glyphMetrics)
|
||||
, data(0)
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
FORMAT_RGBA
|
||||
};
|
||||
|
||||
GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, Format f);
|
||||
GlyphData(unsigned int glyph, GlyphMetrics glyphMetrics, Format f);
|
||||
virtual ~GlyphData();
|
||||
|
||||
// Implements Data.
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
|
||||
private:
|
||||
// The glyph itself
|
||||
unsigned short glyph;
|
||||
unsigned int glyph;
|
||||
|
||||
// Glyph metrics
|
||||
GlyphMetrics metrics;
|
||||
|
||||
@@ -34,7 +34,7 @@ inline bool equal(const love::image::pixel &a, const love::image::pixel &b)
|
||||
return (a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a);
|
||||
}
|
||||
|
||||
ImageRasterizer::ImageRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length)
|
||||
ImageRasterizer::ImageRasterizer(love::image::ImageData *data, unsigned int *glyphs, int length)
|
||||
: imageData(data)
|
||||
, glyphs(glyphs)
|
||||
, length(length)
|
||||
@@ -62,7 +62,7 @@ int ImageRasterizer::getLineHeight() const
|
||||
return getHeight();
|
||||
}
|
||||
|
||||
GlyphData *ImageRasterizer::getGlyphData(unsigned short glyph) const
|
||||
GlyphData *ImageRasterizer::getGlyphData(unsigned int glyph) const
|
||||
{
|
||||
GlyphMetrics gm;
|
||||
gm.height = metrics.height;
|
||||
|
||||
@@ -43,7 +43,7 @@ private:
|
||||
// The image data
|
||||
love::image::ImageData *imageData;
|
||||
// The glyphs in the font
|
||||
unsigned short *glyphs;
|
||||
unsigned int *glyphs;
|
||||
// The length of the glyph array
|
||||
unsigned int length;
|
||||
// The positions of each glyph
|
||||
@@ -54,12 +54,12 @@ private:
|
||||
unsigned int *spacing;
|
||||
|
||||
public:
|
||||
ImageRasterizer(love::image::ImageData *imageData, unsigned short *glyphs, int length);
|
||||
ImageRasterizer(love::image::ImageData *imageData, unsigned int *glyphs, int length);
|
||||
virtual ~ImageRasterizer();
|
||||
|
||||
// Implement Rasterizer
|
||||
virtual int getLineHeight() const;
|
||||
virtual GlyphData *getGlyphData(unsigned short glyph) const;
|
||||
virtual GlyphData *getGlyphData(unsigned int glyph) const;
|
||||
virtual int getNumGlyphs() const;
|
||||
|
||||
static const unsigned int MAX_CHARS = 256;
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
* Gets a specific glyph.
|
||||
* @param glyph The (UNICODE) glyph to get data for
|
||||
**/
|
||||
virtual GlyphData *getGlyphData(unsigned short glyph) const = 0;
|
||||
virtual GlyphData *getGlyphData(unsigned int glyph) const = 0;
|
||||
|
||||
/**
|
||||
* Gets the number of glyphs the rasterizer has data for.
|
||||
|
||||
@@ -49,7 +49,7 @@ Rasterizer *Font::newRasterizer(Data *data, int size)
|
||||
Rasterizer *Font::newRasterizer(love::image::ImageData *data, std::string glyphs)
|
||||
{
|
||||
int length = glyphs.size();
|
||||
unsigned short *g = new unsigned short[length];
|
||||
unsigned int *g = new unsigned int[length];
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
g[i] = (unsigned char)glyphs[i];
|
||||
@@ -59,12 +59,12 @@ Rasterizer *Font::newRasterizer(love::image::ImageData *data, std::string glyphs
|
||||
return r;
|
||||
}
|
||||
|
||||
Rasterizer *Font::newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length)
|
||||
Rasterizer *Font::newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int length)
|
||||
{
|
||||
return new ImageRasterizer(data, glyphs, length);
|
||||
}
|
||||
|
||||
GlyphData *Font::newGlyphData(Rasterizer *r, unsigned short glyph)
|
||||
GlyphData *Font::newGlyphData(Rasterizer *r, unsigned int glyph)
|
||||
{
|
||||
return r->getGlyphData(glyph);
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ public:
|
||||
// Implements Font
|
||||
Rasterizer *newRasterizer(Data *data, int size);
|
||||
Rasterizer *newRasterizer(love::image::ImageData *data, std::string glyphs);
|
||||
Rasterizer *newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length);
|
||||
GlyphData *newGlyphData(Rasterizer *r, unsigned short glyph);
|
||||
Rasterizer *newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int length);
|
||||
GlyphData *newGlyphData(Rasterizer *r, unsigned int glyph);
|
||||
|
||||
// Implement Module
|
||||
const char *getName() const;
|
||||
|
||||
@@ -68,7 +68,7 @@ int TrueTypeRasterizer::getLineHeight() const
|
||||
return (int)(getHeight() * 1.25);
|
||||
}
|
||||
|
||||
GlyphData *TrueTypeRasterizer::getGlyphData(unsigned short glyph) const
|
||||
GlyphData *TrueTypeRasterizer::getGlyphData(unsigned int glyph) const
|
||||
{
|
||||
love::font::GlyphMetrics glyphMetrics;
|
||||
FT_Glyph ftglyph;
|
||||
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
|
||||
// Implement Rasterizer
|
||||
virtual int getLineHeight() const;
|
||||
virtual GlyphData *getGlyphData(unsigned short glyph) const;
|
||||
virtual GlyphData *getGlyphData(unsigned int glyph) const;
|
||||
virtual int getNumGlyphs() const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -67,7 +67,7 @@ int w_newRasterizer(lua_State *L)
|
||||
int w_newGlyphData(lua_State *L)
|
||||
{
|
||||
Rasterizer *r = luax_checkrasterizer(L, 1);
|
||||
unsigned short g = (unsigned short)luaL_checkint(L, 2);
|
||||
unsigned int g = (unsigned int)luaL_checknumber(L, 2);
|
||||
|
||||
GlyphData *t = instance->newGlyphData(r, g);
|
||||
luax_newtype(L, "GlyphData", FONT_GLYPH_DATA_T, t);
|
||||
|
||||
Reference in New Issue
Block a user