X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fm17n-gd.c;h=600b0494e394d986152c8d549116f3b19662bf3e;hb=5ebe292a39145a079d6045b334b0bb5692e471b8;hp=981ccf50605a32a180c7dc6815448231d383d7d5;hpb=8f0979d7a8ce0c647ce1ef06067e441be36d7cb1;p=m17n%2Fm17n-lib.git diff --git a/src/m17n-gd.c b/src/m17n-gd.c index 981ccf5..600b049 100644 --- a/src/m17n-gd.c +++ b/src/m17n-gd.c @@ -1,5 +1,5 @@ /* m17n-gd.c -- implementation of the GUI API on GD Library. - Copyright (C) 2004 + Copyright (C) 2004, 2005, 2006 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H15PRO112 @@ -17,7 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with the m17n library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 02111-1307, USA. */ #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE) @@ -67,9 +67,28 @@ static MSymbol M_rgb; static void read_rgb_txt () { - FILE *fp = fopen ("/usr/lib/X11/rgb.txt", "r"); + FILE *fp; int r, g, b; + /* At first, support HTML 4.0 color names. */ + msymbol_put (msymbol ("black"), M_rgb, (void *) 0x000000); + msymbol_put (msymbol ("silver"), M_rgb, (void *) 0xC0C0C0); + msymbol_put (msymbol ("gray"), M_rgb, (void *) 0x808080); + msymbol_put (msymbol ("white"), M_rgb, (void *) 0xFFFFFF); + msymbol_put (msymbol ("maroon"), M_rgb, (void *) 0x800000); + msymbol_put (msymbol ("red"), M_rgb, (void *) 0xFF0000); + msymbol_put (msymbol ("purple"), M_rgb, (void *) 0x800080); + msymbol_put (msymbol ("fuchsia"), M_rgb, (void *) 0xFF00FF); + msymbol_put (msymbol ("green"), M_rgb, (void *) 0x008000); + msymbol_put (msymbol ("lime"), M_rgb, (void *) 0x00FF00); + msymbol_put (msymbol ("olive"), M_rgb, (void *) 0x808000); + msymbol_put (msymbol ("yellow"), M_rgb, (void *) 0xFFFF00); + msymbol_put (msymbol ("navy"), M_rgb, (void *) 0x000080); + msymbol_put (msymbol ("blue"), M_rgb, (void *) 0x0000FF); + msymbol_put (msymbol ("teal"), M_rgb, (void *) 0x008080); + msymbol_put (msymbol ("aqua"), M_rgb, (void *) 0x00FFFF); + + fp = fopen ("/usr/lib/X11/rgb.txt", "r"); if (! fp) fp = fopen ("/usr/X11R6/lib/X11/rgb.txt", "r"); if (! fp) @@ -280,8 +299,6 @@ gd_render (MDrawWindow win, int x, int y, int color, pixel; int r, g, b; - pixel = RESOLVE_COLOR (img, color); - if (from == to) return; @@ -324,10 +341,16 @@ gd_render (MDrawWindow win, int x, int y, { xoff = x + ft_face->glyph->bitmap_left + from->xoff; for (j = 0; j < width; j++, xoff++) - if (bmp[j]) + if (bmp[j] > 0) { - int f = bmp[j] >> 5; int pixel1 = pixel; +#if HAVE_GD > 1 + int alpha = gdAlphaTransparent * (255 - bmp[j]) / 255; + + if (alpha > 0) + pixel1 = gdImageColorResolveAlpha (img, r, g, b, alpha); +#else + int f = bmp[j] >> 5; if (f < 7) { @@ -342,6 +365,7 @@ gd_render (MDrawWindow win, int x, int y, | ((b * f + b1 * (7 - f)) / 7)); pixel1 = RESOLVE_COLOR (img, color1); } +#endif gdImageSetPixel (img, xoff, yoff, pixel1); } } @@ -832,6 +856,8 @@ device_open (MFrame *frame, MPlist *param) frame->realized_face_list = realized_face_list; frame->realized_fontset_list = realized_fontset_list; face = mface_copy (mface__default); + mface_put_prop (face, Mfoundry, Mnil); + mface_put_prop (face, Mfamily, Mnil); mplist_push (param, Mface, face); M17N_OBJECT_UNREF (face); return 0;