Exemplo n.º 1
0
void vgft_get_text_extents(VGFT_FONT_T *font,
                           const char *text,
                           unsigned text_length,
                           VGfloat x, VGfloat y,
                           VGfloat *w, VGfloat *h)
{
   int last_draw = 0;
   int i = 0;
   VGfloat start_x = x;
   VGfloat start_y = y;
   VGfloat max_x = x;

   for (;;) 
   {
      int last = !text[i] || (text_length && i==text_length);
      if ((text[i] == '\n') || last)
      {
         line_extents(font, &x, &y, text + last_draw, i - last_draw);
         last_draw = i+1;
         y -= float_from_26_6(font->ft_face->size->metrics.height);
         if (x > max_x)
            max_x = x;
      }
      if (last)
      {
         break;
      }


      ++i;
   }
   *w = max_x - start_x;
   *h = start_y - y;
}
Exemplo n.º 2
0
void vgft_get_text_extents(VGFT_FONT_T *font,
                           const char *text,
                           unsigned text_length,
                           VGfloat unused0, VGfloat unused1,
                           VGfloat *w, VGfloat *h) {
   int last_draw = 0;
   VGfloat max_x = 0;
   VGfloat y = 0;

   int i, last;
   for (i = 0, last = 0; !last; ++i) {
      last = !text[i] || (text_length && i==text_length);
      if ((text[i] == '\n') || last) {
         VGfloat x = 0;
         line_extents(font, &x, &y, text + last_draw, i - last_draw);
         last_draw = i + 1;
         y -= float_from_26_6(font->ft_face->size->metrics.height);
         if (x > max_x) max_x = x;
      }
   }
   *w = max_x;
   *h = -y;
}