Пример #1
0
LcdFont *LcdFontRenderClass::getFont(const char *family, const char *style, int size)
{
	FTC_FaceID id=getFaceID(family, style);
	if (!id)
		return 0;
	return new LcdFont(framebuffer, this, id, size);
}
Пример #2
0
void
EFAFragment3D::removeInvalidEmbeddedNodes(std::map<unsigned int, EFANode *> & EmbeddedNodes)
{
  // N.B. this method is only called before we update fragments
  // N.B. an embedded node is valid IF at least one of its host faces is exterior and has more than
  // 1 cuts
  // TODO: the invalid cases are generalized from 2D. The method may need improvements in 3D
  if (hasFaceWithOneCut())
  {
    // build a local inverse map for all emb cut nodes in this fragment
    std::map<EFANode *, std::vector<EFAFace *>> emb_inverse_map;
    for (unsigned int i = 0; i < _faces.size(); ++i)
    {
      for (unsigned int j = 0; j < _faces[i]->numEdges(); ++j)
      {
        if (_faces[i]->getEdge(j)->hasIntersection())
        {
          EFANode * emb_node = _faces[i]->getEdge(j)->getEmbeddedNode(0);
          emb_inverse_map[emb_node].push_back(_faces[i]);
        }
      } // i
    }   // j

    // find all invalid embedded nodes
    std::vector<EFANode *> invalid_emb;
    std::map<EFANode *, std::vector<EFAFace *>>::iterator it;
    for (it = emb_inverse_map.begin(); it != emb_inverse_map.end(); ++it)
    {
      EFANode * emb_node = it->first;
      std::vector<EFAFace *> & emb_faces = it->second;
      if (emb_faces.size() != 2)
        EFAError("one embedded node must be owned by 2 faces");
      unsigned int counter = 0;
      for (unsigned int i = 0; i < emb_faces.size(); ++i)
      {
        unsigned int face_id = getFaceID(emb_faces[i]);
        if (!isFaceInterior(face_id) && emb_faces[i]->hasIntersection())
          counter += 1; // count the appropriate emb's faces
      }
      if (counter == 0)
        invalid_emb.push_back(emb_node);
    }

    // delete all invalid emb nodes
    for (unsigned int i = 0; i < invalid_emb.size(); ++i)
    {
      Efa::deleteFromMap(EmbeddedNodes, invalid_emb[i]);
      _host_elem->removeEmbeddedNode(invalid_emb[i], true); // also remove from neighbors
    }                                                       // i
  }
}
Пример #3
0
float FontManager::getStrHeight(std::string face, float size, std::string text)
{
  return getStrHeight(getFaceID(face), size, text);
}
Пример #4
0
void FontManager::drawString(float x, float y, float z, std::string face, float size, std::string text)
{
  drawString(x, y, z, getFaceID(face), size, text);
}