0

我正在尝试设计一个矢量字体引擎,就像 Atari 1979 中的那样。我有保存预定义字符集及其坐标的问题,我不知道保存这些多边形的最佳数据结构是什么或什么是为此设计课程的最佳方式。这是我的试验,我对此感到不舒服。

class Character
{
public:
      Character();

public:
    int ascii;
    int strokes;
    std::vector<ci::Vec2i> points;

};
void VectorFont::Init_Chars()
{

    for (int i=0; i<1;i++)
    {
        Character char_A;
        char_A.ascii = 65;
        char_A.strokes = 6;
        ci::Vec2i point_1 = ci::Vec2i(-6,-4);
        ci::Vec2i point_2 = ci::Vec2i(0,8);
        ci::Vec2i point_3 = ci::Vec2i(0,8);
        ci::Vec2i point_4 = ci::Vec2i(6,-4);
        ci::Vec2i point_5 = ci::Vec2i(4,0);
        ci::Vec2i point_6 = ci::Vec2i(-4,0);
        char_A.points.push_back(point_1);
        char_A.points.push_back(point_2);
        char_A.points.push_back(point_3);
        char_A.points.push_back(point_4);
        char_A.points.push_back(point_5);
        char_A.points.push_back(point_6);
        chars.push_back(char_A);
    }

}
4

1 回答 1

0

由于这些字符有孔,您需要定义一个Path类:

class Path
{
     public: 
         std::vector<ci::Vec2i> points;
         int orientation; // 1 for fill, 0 for hole.
}

APath是点和方向的集合。你的路径应该是封闭的,也就是说,第一点和最后一点是相同的。如果方向为 1,则表示用黑色填充。如果是0,切一个洞。

然后,您的Character班级将拥有一组路径,这些路径将是填充或孔。

上面只是描述了填充和孔上的点的数据结构。必须编写一个引擎来将该数据结构转换为像素。那是另一个话题。

于 2012-12-12T01:29:35.430 回答