|
@@ -1,14 +1,14 @@
|
|
/**
|
|
/**
|
|
* Copyright (c) 2006-2010 LOVE Development Team
|
|
* Copyright (c) 2006-2010 LOVE Development Team
|
|
-*
|
|
|
|
|
|
+*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* arising from the use of this software.
|
|
* arising from the use of this software.
|
|
-*
|
|
|
|
|
|
+*
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* freely, subject to the following restrictions:
|
|
* freely, subject to the following restrictions:
|
|
-*
|
|
|
|
|
|
+*
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
* 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
|
|
* claim that you wrote the original software. If you use this software
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
@@ -20,22 +20,24 @@
|
|
|
|
|
|
#include "GlyphData.h"
|
|
#include "GlyphData.h"
|
|
|
|
|
|
|
|
+#include <iostream>
|
|
|
|
+
|
|
namespace love
|
|
namespace love
|
|
{
|
|
{
|
|
namespace font
|
|
namespace font
|
|
{
|
|
{
|
|
|
|
|
|
GlyphData::GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
|
|
GlyphData::GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
|
|
- : glyph(glyph), metrics(glyphMetrics), format(f), padded(false)
|
|
|
|
|
|
+ : glyph(glyph), metrics(glyphMetrics), format(f), padded(false), data(0)
|
|
{
|
|
{
|
|
- if (getWidth() && getHeight()) {
|
|
|
|
|
|
+ if (metrics.width && metrics.height) {
|
|
switch (f) {
|
|
switch (f) {
|
|
case GlyphData::FORMAT_LUMINOSITY_ALPHA:
|
|
case GlyphData::FORMAT_LUMINOSITY_ALPHA:
|
|
- data = new unsigned char[getWidth() * getHeight() * 2];
|
|
|
|
|
|
+ data = new unsigned char[metrics.width * metrics.height * 2];
|
|
break;
|
|
break;
|
|
case GlyphData::FORMAT_RGBA:
|
|
case GlyphData::FORMAT_RGBA:
|
|
default:
|
|
default:
|
|
- data = new unsigned char[getWidth() * getHeight() * 4];
|
|
|
|
|
|
+ data = new unsigned char[metrics.width * metrics.height * 4];
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -62,7 +64,7 @@ namespace font
|
|
return getWidth() * getHeight() * 4;
|
|
return getWidth() * getHeight() * 4;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
int GlyphData::getHeight() const
|
|
int GlyphData::getHeight() const
|
|
@@ -74,7 +76,7 @@ namespace font
|
|
{
|
|
{
|
|
return (padded ? getPaddedWidth() : metrics.width);
|
|
return (padded ? getPaddedWidth() : metrics.width);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
int GlyphData::getAdvance() const
|
|
int GlyphData::getAdvance() const
|
|
{
|
|
{
|
|
return metrics.advance;
|
|
return metrics.advance;
|
|
@@ -109,14 +111,16 @@ namespace font
|
|
{
|
|
{
|
|
return this->getBearingY();
|
|
return this->getBearingY();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
GlyphData::Format GlyphData::getFormat() const
|
|
GlyphData::Format GlyphData::getFormat() const
|
|
{
|
|
{
|
|
return format;
|
|
return format;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
void GlyphData::pad()
|
|
void GlyphData::pad()
|
|
{
|
|
{
|
|
|
|
+ if (data == 0)
|
|
|
|
+ return;
|
|
int w = getWidth();
|
|
int w = getWidth();
|
|
int h = getHeight();
|
|
int h = getHeight();
|
|
int pw = next_p2(w);
|
|
int pw = next_p2(w);
|
|
@@ -155,22 +159,22 @@ namespace font
|
|
data = d;
|
|
data = d;
|
|
padded = true;
|
|
padded = true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
bool GlyphData::isPadded() const
|
|
bool GlyphData::isPadded() const
|
|
{
|
|
{
|
|
return padded;
|
|
return padded;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
int GlyphData::getPaddedWidth() const
|
|
int GlyphData::getPaddedWidth() const
|
|
{
|
|
{
|
|
return next_p2(metrics.width);
|
|
return next_p2(metrics.width);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
int GlyphData::getPaddedHeight() const
|
|
int GlyphData::getPaddedHeight() const
|
|
{
|
|
{
|
|
return next_p2(metrics.height);
|
|
return next_p2(metrics.height);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
inline int GlyphData::next_p2(int num) const
|
|
inline int GlyphData::next_p2(int num) const
|
|
{
|
|
{
|
|
int powered = 2;
|
|
int powered = 2;
|