Clean project structure.
This commit is contained in:
parent
78a4fa99ff
commit
947bf937fd
496 changed files with 206 additions and 137 deletions
97
src/rendering/fonts/FontGlyph.cpp
Normal file
97
src/rendering/fonts/FontGlyph.cpp
Normal file
|
@ -0,0 +1,97 @@
|
|||
#include "FontGlyph.h"
|
||||
|
||||
void GlyphRunOutlines::addSegment(const GlyphRunSegment& segment)
|
||||
{
|
||||
mFeatures[mFeatures.size() - 1].mSegments.push_back(segment);
|
||||
}
|
||||
|
||||
void GlyphRunOutlines::startFeature(const Point& point, bool isFilled)
|
||||
{
|
||||
GlyphRunFeature feature;
|
||||
feature.mFilled = isFilled;
|
||||
|
||||
GlyphRunSegment segment;
|
||||
segment.mType = GlyphRunSegment::Type::POINT;
|
||||
segment.mPoints.push_back(point);
|
||||
|
||||
feature.mSegments.push_back(segment);
|
||||
|
||||
mFeatures.push_back(feature);
|
||||
}
|
||||
|
||||
std::string GlyphRunOutlines::toPostScriptPath()
|
||||
{
|
||||
std::string path;
|
||||
for (const auto& feature : mFeatures)
|
||||
{
|
||||
if (feature.mSegments.empty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
auto start_point = feature.mSegments[0].mPoints[0];
|
||||
path += "M" + std::to_string(start_point.getX()) + " " + std::to_string(start_point.getY()) + " ";
|
||||
|
||||
for (std::size_t idx = 1; idx < feature.mSegments.size(); idx++)
|
||||
{
|
||||
if (feature.mSegments[idx].mType == GlyphRunSegment::Type::LINE)
|
||||
{
|
||||
for (const auto& point : feature.mSegments[idx].mPoints)
|
||||
{
|
||||
path += "L" + std::to_string(point.getX()) + " " + std::to_string(point.getY()) + " ";
|
||||
}
|
||||
}
|
||||
else if (feature.mSegments[idx].mType == GlyphRunSegment::Type::BEZIER)
|
||||
{
|
||||
path += "C";
|
||||
for (const auto& point : feature.mSegments[idx].mPoints)
|
||||
{
|
||||
path += std::to_string(point.getX()) + " " + std::to_string(point.getY()) + " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
path += "z ";
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
FontGlyph::FontGlyph(unsigned width, unsigned height, int bearingX, int bearingY, int advanceX, std::unique_ptr<Image> image)
|
||||
: mImage(std::move(image)),
|
||||
mWidth(width),
|
||||
mHeight(height),
|
||||
mBearingX(bearingX),
|
||||
mBearingY(bearingY),
|
||||
mAdvanceX(advanceX)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Image* FontGlyph::getImage() const
|
||||
{
|
||||
return mImage.get();
|
||||
}
|
||||
|
||||
unsigned FontGlyph::getWidth() const
|
||||
{
|
||||
return mWidth;
|
||||
}
|
||||
|
||||
unsigned FontGlyph::getHeight() const
|
||||
{
|
||||
return mHeight;
|
||||
}
|
||||
|
||||
int FontGlyph::getBearingX() const
|
||||
{
|
||||
return mBearingX;
|
||||
}
|
||||
|
||||
int FontGlyph::getBearingY() const
|
||||
{
|
||||
return mBearingY;
|
||||
}
|
||||
|
||||
int FontGlyph::getAdvanceX() const
|
||||
{
|
||||
return mAdvanceX;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue