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 /************************************************************************/