FontGeometry constructor fix
This commit is contained in:
parent
c27de5988d
commit
7e8d34645a
|
|
@ -1 +1 @@
|
|||
Subproject commit 888674220216d1d326c6f29cf89165b545279c1f
|
||||
Subproject commit af79386abe0857fe1c30be97eec760dbd84022c5
|
||||
|
|
@ -25,9 +25,34 @@ const GlyphGeometry *FontGeometry::GlyphRange::end() const {
|
|||
return glyphs->data()+rangeEnd;
|
||||
}
|
||||
|
||||
FontGeometry::FontGeometry() : geometryScale(1), metrics(), preferredIdentifierType(GlyphIdentifierType::UNICODE_CODEPOINT), glyphs(&ownGlyphs), rangeStart(glyphs->size()), rangeEnd(glyphs->size()) { }
|
||||
FontGeometry::FontGeometry() : geometryScale(1), metrics(), preferredIdentifierType(GlyphIdentifierType::UNICODE_CODEPOINT), glyphs(&ownGlyphs), rangeStart(0), rangeEnd(0) { }
|
||||
|
||||
FontGeometry::FontGeometry(std::vector<GlyphGeometry> *glyphStorage) : geometryScale(1), metrics(), preferredIdentifierType(GlyphIdentifierType::UNICODE_CODEPOINT), glyphs(glyphStorage), rangeStart(glyphs->size()), rangeEnd(glyphs->size()) { }
|
||||
FontGeometry::FontGeometry(std::vector<GlyphGeometry> *glyphStorage) : geometryScale(1), metrics(), preferredIdentifierType(GlyphIdentifierType::UNICODE_CODEPOINT) {
|
||||
glyphs = glyphStorage ? glyphStorage : &ownGlyphs;
|
||||
rangeStart = glyphs->size();
|
||||
rangeEnd = glyphs->size();
|
||||
}
|
||||
|
||||
FontGeometry::FontGeometry(FontGeometry &&orig) : geometryScale(orig.geometryScale), metrics(orig.metrics), preferredIdentifierType(orig.preferredIdentifierType), glyphs(orig.glyphs), rangeStart(orig.rangeStart), rangeEnd(orig.rangeEnd), glyphsByIndex((std::map<int, size_t> &&) orig.glyphsByIndex), glyphsByCodepoint((std::map<unicode_t, size_t> &&) orig.glyphsByCodepoint), kerning((std::map<std::pair<int, int>, double> &&) orig.kerning), ownGlyphs((std::vector<GlyphGeometry> &&) orig.ownGlyphs), name((std::string &&) orig.name) {
|
||||
if (glyphs == &orig.ownGlyphs)
|
||||
glyphs = &ownGlyphs;
|
||||
}
|
||||
|
||||
FontGeometry &FontGeometry::operator=(FontGeometry &&orig) {
|
||||
if (this != &orig) {
|
||||
geometryScale = orig.geometryScale;
|
||||
metrics = orig.metrics;
|
||||
glyphs = orig.glyphs == &orig.ownGlyphs ? &ownGlyphs : orig.glyphs;
|
||||
rangeStart = orig.rangeStart;
|
||||
rangeEnd = orig.rangeEnd;
|
||||
glyphsByIndex = (std::map<int, size_t> &&) orig.glyphsByIndex;
|
||||
glyphsByCodepoint = (std::map<unicode_t, size_t> &&) orig.glyphsByCodepoint;
|
||||
kerning = (std::map<std::pair<int, int>, double> &&) orig.kerning;
|
||||
ownGlyphs = (std::vector<GlyphGeometry> &&) orig.ownGlyphs;
|
||||
name = (std::string &&) orig.name;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
int FontGeometry::loadGlyphRange(msdfgen::FontHandle *font, double fontScale, unsigned rangeStart, unsigned rangeEnd, bool preprocessGeometry, bool enableKerning) {
|
||||
if (!(glyphs->size() == this->rangeEnd && loadMetrics(font, fontScale)))
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ public:
|
|||
|
||||
FontGeometry();
|
||||
explicit FontGeometry(std::vector<GlyphGeometry> *glyphStorage);
|
||||
FontGeometry(FontGeometry &&orig);
|
||||
FontGeometry &operator=(FontGeometry &&orig);
|
||||
|
||||
/// Loads the consecutive range of glyphs between rangeStart (inclusive) and rangeEnd (exclusive), returns the number of successfully loaded glyphs
|
||||
int loadGlyphRange(msdfgen::FontHandle *font, double fontScale, unsigned rangeStart, unsigned rangeEnd, bool preprocessGeometry = true, bool enableKerning = true);
|
||||
|
|
@ -81,6 +83,9 @@ private:
|
|||
std::vector<GlyphGeometry> ownGlyphs;
|
||||
std::string name;
|
||||
|
||||
FontGeometry(const FontGeometry &);
|
||||
FontGeometry &operator=(const FontGeometry &);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
2
msdfgen
2
msdfgen
|
|
@ -1 +1 @@
|
|||
Subproject commit 85e8b3d47b3d1a42e4a5ebda0a24fb1cc2e669e0
|
||||
Subproject commit 5a88b0c2b95033f7eee826b27c48d399d544d814
|
||||
Loading…
Reference in New Issue