Adusted for the change of MGlyph.
authorhanda <handa>
Mon, 29 Oct 2007 02:21:38 +0000 (02:21 +0000)
committerhanda <handa>
Mon, 29 Oct 2007 02:21:38 +0000 (02:21 +0000)
src/m17n-gd.c

index 0604178..fedf1c6 100644 (file)
@@ -328,14 +328,14 @@ gd_render (MDrawWindow win, int x, int y,
 #endif
     }
 
-  for (; from < to; x += from++->width)
+  for (; from < to; x += from++->g.xadv)
     {
       unsigned char *bmp;
       int xoff, yoff;
       int width, pitch;
 
-      FT_Load_Glyph (ft_face, (FT_UInt) from->code, load_flags);
-      yoff = y - ft_face->glyph->bitmap_top + from->yoff;
+      FT_Load_Glyph (ft_face, (FT_UInt) from->g.code, load_flags);
+      yoff = y - ft_face->glyph->bitmap_top + from->g.yoff;
       bmp = ft_face->glyph->bitmap.buffer;
       width = ft_face->glyph->bitmap.width;
       pitch = ft_face->glyph->bitmap.pitch;
@@ -348,7 +348,7 @@ gd_render (MDrawWindow win, int x, int y,
        for (i = 0; i < ft_face->glyph->bitmap.rows;
             i++, bmp += ft_face->glyph->bitmap.pitch, yoff++)
          {
-           xoff = x + ft_face->glyph->bitmap_left + from->xoff;
+           xoff = x + ft_face->glyph->bitmap_left + from->g.xoff;
            for (j = 0; j < width; j++, xoff++)
              if (bmp[j] > 0)
                {
@@ -382,7 +382,7 @@ gd_render (MDrawWindow win, int x, int y,
        for (i = 0; i < ft_face->glyph->bitmap.rows;
             i++, bmp += ft_face->glyph->bitmap.pitch, yoff++)
          {
-           xoff = x + ft_face->glyph->bitmap_left + from->xoff;
+           xoff = x + ft_face->glyph->bitmap_left + from->g.xoff;
            for (j = 0; j < width; j++, xoff++)
              if (bmp[j / 8] & (1 << (7 - (j % 8))))
                gdImageSetPixel (img, xoff, yoff, pixel);
@@ -514,15 +514,15 @@ gd_draw_empty_boxes (MDrawWindow win, int x, int y,
   y -= gstring->ascent - 1;
   height = gstring->ascent + gstring->descent - 2;
   if (! region)
-    for (; from < to; x += from++->width)
-      gdImageRectangle (img, x, y, x + from->width - 2, y + height - 1, color);
+    for (; from < to; x += from++->g.xadv)
+      gdImageRectangle (img, x, y, x + from->g.xadv - 2, y + height - 1, color);
   else
     {
       gdImagePtr cpy;
       MGlyph *g;
       int width, x1;
 
-      for (g = from, width = 0; g < to; width += g++->width);
+      for (g = from, width = 0; g < to; width += g++->g.xadv);
       cpy = get_scrach_image (img, width, height);
       MPLIST_DO (plist, region_list)
        {
@@ -530,8 +530,8 @@ gd_draw_empty_boxes (MDrawWindow win, int x, int y,
          gdImageCopy (cpy, img, rect->x - x, rect->y - y, rect->x, rect->y,
                       rect->x + rect->width, rect->y + rect->height);
        }
-      for (x1 = 0; from < to; x1 += from++->width)
-       gdImageRectangle (cpy, x1, 0, x1 + from->width - 2, height - 1, color);
+      for (x1 = 0; from < to; x1 += from++->g.xadv)
+       gdImageRectangle (cpy, x1, 0, x1 + from->g.xadv - 2, height - 1, color);
       MPLIST_DO (plist, region_list)
        {
          MDrawMetric *rect = MPLIST_VAL (plist);
@@ -605,7 +605,7 @@ gd_draw_box (MFrame *frame, MDrawWindow win, MGlyphString *gstring,
       gdImagePtr cpy;
 
       if (g->type == GLYPH_BOX)
-       width = g->width;
+       width = g->g.xadv;
       cpy = get_scrach_image (img, width, height);
       MPLIST_DO (plist, region_list)
        {
@@ -628,9 +628,9 @@ gd_draw_box (MFrame *frame, MDrawWindow win, MGlyphString *gstring,
       int x0, x1;
 
       if (g->left_padding)
-       x0 = x + box->outer_hmargin, x1 = x + g->width - 1;
+       x0 = x + box->outer_hmargin, x1 = x + g->g.xadv - 1;
       else
-       x0 = x, x1 = x + g->width - box->outer_hmargin - 1;
+       x0 = x, x1 = x + g->g.xadv - box->outer_hmargin - 1;
 
       /* Draw the top side.  */
       color = RESOLVE_COLOR (img, colors[COLOR_BOX_TOP]);
@@ -815,6 +815,8 @@ device_init ()
   gd_font_driver.has_char = mfont__ft_driver.has_char;
   gd_font_driver.encode_char = mfont__ft_driver.encode_char;
   gd_font_driver.list = mfont__ft_driver.list;
+  gd_font_driver.check_otf = mfont__ft_driver.check_otf;
+  gd_font_driver.drive_otf = mfont__ft_driver.drive_otf;
 
   return 0;
 }