Mercurial > hg > xemacs-beta
comparison src/glyphs-msw.c @ 4982:3c3c1d139863
Automatic merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Fri, 05 Feb 2010 11:25:00 -0600 |
parents | 4aebb0131297 16112448d484 |
children | ae48681c47fa |
comparison
equal
deleted
inserted
replaced
4981:4aebb0131297 | 4982:3c3c1d139863 |
---|---|
200 *bmp_data = xnew_array_and_zero (Binbyte, bpline * height); | 200 *bmp_data = xnew_array_and_zero (Binbyte, bpline * height); |
201 *bit_count = bpline * height; | 201 *bit_count = bpline * height; |
202 | 202 |
203 if (!bmp_data) | 203 if (!bmp_data) |
204 { | 204 { |
205 xfree (bmp_info, BITMAPINFO *); | 205 xfree (bmp_info); |
206 return NULL; | 206 return NULL; |
207 } | 207 } |
208 | 208 |
209 ip = pic; | 209 ip = pic; |
210 for (i = height-1; i >= 0; i--) { | 210 for (i = height-1; i >= 0; i--) { |
231 ncolors = qtable->num_active_colors; | 231 ncolors = qtable->num_active_colors; |
232 bmp_info = (BITMAPINFO *)xmalloc_and_zero (sizeof(BITMAPINFOHEADER) + | 232 bmp_info = (BITMAPINFO *)xmalloc_and_zero (sizeof(BITMAPINFOHEADER) + |
233 sizeof(RGBQUAD) * ncolors); | 233 sizeof(RGBQUAD) * ncolors); |
234 if (!bmp_info) | 234 if (!bmp_info) |
235 { | 235 { |
236 xfree (qtable, quant_table *); | 236 xfree (qtable); |
237 return NULL; | 237 return NULL; |
238 } | 238 } |
239 | 239 |
240 colortbl = (RGBQUAD *) (((Binbyte *) bmp_info) + | 240 colortbl = (RGBQUAD *) (((Binbyte *) bmp_info) + |
241 sizeof (BITMAPINFOHEADER)); | 241 sizeof (BITMAPINFOHEADER)); |
249 *bmp_data = xnew_array_and_zero (Binbyte, bpline * height); | 249 *bmp_data = xnew_array_and_zero (Binbyte, bpline * height); |
250 *bit_count = bpline * height; | 250 *bit_count = bpline * height; |
251 | 251 |
252 if (!*bmp_data) | 252 if (!*bmp_data) |
253 { | 253 { |
254 xfree (qtable, quant_table *); | 254 xfree (qtable); |
255 xfree (bmp_info, BITMAPINFO *); | 255 xfree (bmp_info); |
256 return NULL; | 256 return NULL; |
257 } | 257 } |
258 | 258 |
259 /* build up an RGBQUAD colortable */ | 259 /* build up an RGBQUAD colortable */ |
260 for (i = 0; i < qtable->num_active_colors; i++) | 260 for (i = 0; i < qtable->num_active_colors; i++) |
277 gr = *ip++; | 277 gr = *ip++; |
278 bl = *ip++; | 278 bl = *ip++; |
279 *dp++ = QUANT_GET_COLOR (qtable,rd,gr,bl); | 279 *dp++ = QUANT_GET_COLOR (qtable,rd,gr,bl); |
280 } | 280 } |
281 } | 281 } |
282 xfree (qtable, quant_table *); | 282 xfree (qtable); |
283 } | 283 } |
284 /* fix up the standard stuff */ | 284 /* fix up the standard stuff */ |
285 bmp_info->bmiHeader.biWidth = width; | 285 bmp_info->bmiHeader.biWidth = width; |
286 bmp_info->bmiHeader.biHeight = height; | 286 bmp_info->bmiHeader.biHeight = height; |
287 bmp_info->bmiHeader.biPlanes = 1; | 287 bmp_info->bmiHeader.biPlanes = 1; |
472 0, 0, 0); | 472 0, 0, 0); |
473 else | 473 else |
474 image_instance_add_dibitmap (ii, bmp_info, bmp_data, bmp_bits, slice, | 474 image_instance_add_dibitmap (ii, bmp_info, bmp_data, bmp_bits, slice, |
475 instantiator); | 475 instantiator); |
476 | 476 |
477 xfree (bmp_info, BITMAPINFO *); | 477 xfree (bmp_info); |
478 xfree (bmp_data, Binbyte *); | 478 xfree (bmp_data); |
479 } | 479 } |
480 } | 480 } |
481 | 481 |
482 inline static void | 482 inline static void |
483 set_mono_pixel (Binbyte *bits, | 483 set_mono_pixel (Binbyte *bits, |
541 not outputting strict-aliasing | 541 not outputting strict-aliasing |
542 complaints */ | 542 complaints */ |
543 (void **) (void *) &and_bits, | 543 (void **) (void *) &and_bits, |
544 0,0))) | 544 0,0))) |
545 { | 545 { |
546 xfree (bmp_info, BITMAPINFO *); | 546 xfree (bmp_info); |
547 return; | 547 return; |
548 } | 548 } |
549 | 549 |
550 old = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_BITMAP (image)); | 550 old = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_BITMAP (image)); |
551 /* build up an in-memory set of bits to mess with */ | 551 /* build up an in-memory set of bits to mess with */ |
568 height, | 568 height, |
569 dibits, | 569 dibits, |
570 bmp_info, | 570 bmp_info, |
571 DIB_RGB_COLORS) <= 0) | 571 DIB_RGB_COLORS) <= 0) |
572 { | 572 { |
573 xfree (bmp_info, BITMAPINFO *); | 573 xfree (bmp_info); |
574 return; | 574 return; |
575 } | 575 } |
576 | 576 |
577 /* now set the colored bits in the mask and transparent ones to | 577 /* now set the colored bits in the mask and transparent ones to |
578 black in the original */ | 578 black in the original */ |
600 height, | 600 height, |
601 dibits, | 601 dibits, |
602 bmp_info, | 602 bmp_info, |
603 DIB_RGB_COLORS); | 603 DIB_RGB_COLORS); |
604 | 604 |
605 xfree (bmp_info, BITMAPINFO *); | 605 xfree (bmp_info); |
606 xfree (dibits, Binbyte *); | 606 xfree (dibits); |
607 | 607 |
608 SelectObject(hcdc, old); | 608 SelectObject(hcdc, old); |
609 | 609 |
610 IMAGE_INSTANCE_MSWINDOWS_MASK (image) = mask; | 610 IMAGE_INSTANCE_MSWINDOWS_MASK (image) = mask; |
611 } | 611 } |
852 | 852 |
853 /* build a color table to speed things up */ | 853 /* build a color table to speed things up */ |
854 colortbl = xnew_array_and_zero (COLORREF, xpmimage.ncolors); | 854 colortbl = xnew_array_and_zero (COLORREF, xpmimage.ncolors); |
855 if (!colortbl) | 855 if (!colortbl) |
856 { | 856 { |
857 xfree (*data, Binbyte *); | 857 xfree (*data); |
858 XpmFreeXpmImage (&xpmimage); | 858 XpmFreeXpmImage (&xpmimage); |
859 XpmFreeXpmInfo (&xpminfo); | 859 XpmFreeXpmInfo (&xpminfo); |
860 return 0; | 860 return 0; |
861 } | 861 } |
862 | 862 |
908 xpmimage.colorTable[i].c_color); | 908 xpmimage.colorTable[i].c_color); |
909 goto label_found_color; | 909 goto label_found_color; |
910 } | 910 } |
911 | 911 |
912 label_no_color: | 912 label_no_color: |
913 xfree (*data, Binbyte *); | 913 xfree (*data); |
914 xfree (colortbl, COLORREF *); | 914 xfree (colortbl); |
915 XpmFreeXpmImage (&xpmimage); | 915 XpmFreeXpmImage (&xpmimage); |
916 XpmFreeXpmInfo (&xpminfo); | 916 XpmFreeXpmInfo (&xpminfo); |
917 return 0; | 917 return 0; |
918 | 918 |
919 label_found_color:; | 919 label_found_color:; |
935 *x_hot = xpminfo.x_hotspot; | 935 *x_hot = xpminfo.x_hotspot; |
936 *y_hot = xpminfo.y_hotspot; | 936 *y_hot = xpminfo.y_hotspot; |
937 | 937 |
938 XpmFreeXpmImage (&xpmimage); | 938 XpmFreeXpmImage (&xpmimage); |
939 XpmFreeXpmInfo (&xpminfo); | 939 XpmFreeXpmInfo (&xpminfo); |
940 xfree (colortbl, COLORREF *); | 940 xfree (colortbl); |
941 return TRUE; | 941 return TRUE; |
942 } | 942 } |
943 | 943 |
944 static void | 944 static void |
945 mswindows_xpm_instantiate (Lisp_Object image_instance, | 945 mswindows_xpm_instantiate (Lisp_Object image_instance, |
984 | 984 |
985 if (color_symbols) | 985 if (color_symbols) |
986 { | 986 { |
987 while (nsymbols--) | 987 while (nsymbols--) |
988 { | 988 { |
989 xfree (color_symbols[nsymbols].name, Ibyte *); | 989 xfree (color_symbols[nsymbols].name); |
990 } | 990 } |
991 xfree(color_symbols, struct color_symbol *); | 991 xfree (color_symbols); |
992 } | 992 } |
993 | 993 |
994 /* build a bitmap from the eimage */ | 994 /* build a bitmap from the eimage */ |
995 if (!(bmp_info = convert_EImage_to_DIBitmap (device, width, height, eimage, | 995 if (!(bmp_info = convert_EImage_to_DIBitmap (device, width, height, eimage, |
996 &bmp_bits, &bmp_data))) | 996 &bmp_bits, &bmp_data))) |
997 { | 997 { |
998 signal_image_error ("XPM to EImage conversion failed", | 998 signal_image_error ("XPM to EImage conversion failed", |
999 image_instance); | 999 image_instance); |
1000 } | 1000 } |
1001 xfree (eimage, Binbyte *); | 1001 xfree (eimage); |
1002 | 1002 |
1003 /* Now create the pixmap and set up the image instance */ | 1003 /* Now create the pixmap and set up the image instance */ |
1004 init_image_instance_from_dibitmap (ii, bmp_info, dest_mask, | 1004 init_image_instance_from_dibitmap (ii, bmp_info, dest_mask, |
1005 bmp_data, bmp_bits, 1, instantiator, | 1005 bmp_data, bmp_bits, 1, instantiator, |
1006 x_hot, y_hot, transp); | 1006 x_hot, y_hot, transp); |
1007 | 1007 |
1008 xfree (bmp_info, BITMAPINFO *); | 1008 xfree (bmp_info); |
1009 xfree (bmp_data, Binbyte *); | 1009 xfree (bmp_data); |
1010 } | 1010 } |
1011 #endif /* HAVE_XPM */ | 1011 #endif /* HAVE_XPM */ |
1012 | 1012 |
1013 /********************************************************************** | 1013 /********************************************************************** |
1014 * BMP * | 1014 * BMP * |
1355 | 1355 |
1356 new_data = xnew_array_and_zero (Binbyte, height * new_width); | 1356 new_data = xnew_array_and_zero (Binbyte, height * new_width); |
1357 | 1357 |
1358 if (!new_data) | 1358 if (!new_data) |
1359 { | 1359 { |
1360 xfree (bmp_info, BITMAPINFO *); | 1360 xfree (bmp_info); |
1361 return NULL; | 1361 return NULL; |
1362 } | 1362 } |
1363 | 1363 |
1364 for (i = 0; i < height; i++) | 1364 for (i = 0; i < height; i++) |
1365 { | 1365 { |
1406 bmp_info, | 1406 bmp_info, |
1407 DIB_RGB_COLORS, | 1407 DIB_RGB_COLORS, |
1408 &bmp_buf, | 1408 &bmp_buf, |
1409 0,0); | 1409 0,0); |
1410 | 1410 |
1411 xfree (bmp_info, BITMAPINFO *); | 1411 xfree (bmp_info); |
1412 | 1412 |
1413 if (!bitmap || !bmp_buf) | 1413 if (!bitmap || !bmp_buf) |
1414 { | 1414 { |
1415 xfree (new_data, Binbyte *); | 1415 xfree (new_data); |
1416 return NULL; | 1416 return NULL; |
1417 } | 1417 } |
1418 | 1418 |
1419 /* copy in the actual bitmap */ | 1419 /* copy in the actual bitmap */ |
1420 memcpy (bmp_buf, new_data, height * new_width); | 1420 memcpy (bmp_buf, new_data, height * new_width); |
1421 xfree (new_data, Binbyte *); | 1421 xfree (new_data); |
1422 | 1422 |
1423 return bitmap; | 1423 return bitmap; |
1424 } | 1424 } |
1425 | 1425 |
1426 /* Given inline data for a mono pixmap, initialize the given | 1426 /* Given inline data for a mono pixmap, initialize the given |
1776 { | 1776 { |
1777 if (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i)) | 1777 if (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i)) |
1778 DeleteObject (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i)); | 1778 DeleteObject (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i)); |
1779 IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i) = 0; | 1779 IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (p, i) = 0; |
1780 } | 1780 } |
1781 xfree (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (p), HBITMAP *); | 1781 xfree (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (p)); |
1782 IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (p) = 0; | 1782 IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (p) = 0; |
1783 } | 1783 } |
1784 if (IMAGE_INSTANCE_MSWINDOWS_MASK (p)) | 1784 if (IMAGE_INSTANCE_MSWINDOWS_MASK (p)) |
1785 DeleteObject (IMAGE_INSTANCE_MSWINDOWS_MASK (p)); | 1785 DeleteObject (IMAGE_INSTANCE_MSWINDOWS_MASK (p)); |
1786 IMAGE_INSTANCE_MSWINDOWS_MASK (p) = 0; | 1786 IMAGE_INSTANCE_MSWINDOWS_MASK (p) = 0; |
1790 } | 1790 } |
1791 } | 1791 } |
1792 | 1792 |
1793 if (p->data) | 1793 if (p->data) |
1794 { | 1794 { |
1795 xfree (p->data, void *); | 1795 xfree (p->data); |
1796 p->data = 0; | 1796 p->data = 0; |
1797 } | 1797 } |
1798 } | 1798 } |
1799 | 1799 |
1800 /************************************************************************/ | 1800 /************************************************************************/ |