comparison src/glyphs-msw.c @ 388:aabb7f5b1c81 r21-2-9

Import from CVS: tag r21-2-9
author cvs
date Mon, 13 Aug 2007 11:09:42 +0200
parents bbff43aa5eb7
children 6719134a07c2
comparison
equal deleted inserted replaced
387:f892a9d0bb8d 388:aabb7f5b1c81
45 #ifdef FILE_CODING 45 #ifdef FILE_CODING
46 #include "file-coding.h" 46 #include "file-coding.h"
47 #endif 47 #endif
48 #include <stdio.h> 48 #include <stdio.h>
49 #include <ctype.h> 49 #include <ctype.h>
50 #ifdef HAVE_XFACE
51 #include <setjmp.h>
52 #endif
50 53
51 #define WIDGET_GLYPH_SLOT 0 54 #define WIDGET_GLYPH_SLOT 0
52 55
53 #ifdef HAVE_XPM 56 #ifdef HAVE_XPM
54 DEFINE_DEVICE_IIFORMAT (mswindows, xpm); 57 DEFINE_DEVICE_IIFORMAT (mswindows, xpm);
55 #endif 58 #endif
56 DEFINE_DEVICE_IIFORMAT (mswindows, xbm); 59 DEFINE_DEVICE_IIFORMAT (mswindows, xbm);
60 #ifdef HAVE_XFACE
61 DEFINE_DEVICE_IIFORMAT (mswindows, xface);
62 #endif
57 DEFINE_DEVICE_IIFORMAT (mswindows, button); 63 DEFINE_DEVICE_IIFORMAT (mswindows, button);
58 DEFINE_DEVICE_IIFORMAT (mswindows, edit); 64 DEFINE_DEVICE_IIFORMAT (mswindows, edit);
59 #if 0 65 #if 0
60 DEFINE_DEVICE_IIFORMAT (mswindows, group); 66 DEFINE_DEVICE_IIFORMAT (mswindows, group);
61 #endif 67 #endif
62 DEFINE_DEVICE_IIFORMAT (mswindows, subwindow); 68 DEFINE_DEVICE_IIFORMAT (mswindows, subwindow);
63 DEFINE_DEVICE_IIFORMAT (mswindows, widget); 69 DEFINE_DEVICE_IIFORMAT (mswindows, widget);
64 DEFINE_DEVICE_IIFORMAT (mswindows, label); 70 DEFINE_DEVICE_IIFORMAT (mswindows, label);
65 DEFINE_DEVICE_IIFORMAT (mswindows, scrollbar); 71 DEFINE_DEVICE_IIFORMAT (mswindows, scrollbar);
66 DEFINE_DEVICE_IIFORMAT (mswindows, combo); 72 DEFINE_DEVICE_IIFORMAT (mswindows, combo);
73 DEFINE_DEVICE_IIFORMAT (mswindows, progress);
67 74
68 DEFINE_IMAGE_INSTANTIATOR_FORMAT (bmp); 75 DEFINE_IMAGE_INSTANTIATOR_FORMAT (bmp);
69 Lisp_Object Qbmp; 76 Lisp_Object Qbmp;
70 Lisp_Object Vmswindows_bitmap_file_path; 77 Lisp_Object Vmswindows_bitmap_file_path;
71 static COLORREF transparent_color = RGB (1,1,1); 78 static COLORREF transparent_color = RGB (1,1,1);
1174 Extbyte* f=0; 1181 Extbyte* f=0;
1175 GET_C_STRING_FILENAME_DATA_ALLOCA (file, f); 1182 GET_C_STRING_FILENAME_DATA_ALLOCA (file, f);
1176 #ifdef __CYGWIN32__ 1183 #ifdef __CYGWIN32__
1177 CYGWIN_WIN32_PATH (f, fname); 1184 CYGWIN_WIN32_PATH (f, fname);
1178 #else 1185 #else
1179 /* #### FIXME someone who knows ... */ 1186 fname = f;
1180 fname = f
1181 #endif 1187 #endif
1182 1188
1183 if (NILP (resource_id)) 1189 if (NILP (resource_id))
1184 resid = (LPCTSTR)fname; 1190 resid = (LPCTSTR)fname;
1185 else 1191 else
1560 xbm_create_bitmap_from_data (HDC hdc, char *data, 1566 xbm_create_bitmap_from_data (HDC hdc, char *data,
1561 unsigned int width, unsigned int height, 1567 unsigned int width, unsigned int height,
1562 int mask, COLORREF fg, COLORREF bg) 1568 int mask, COLORREF fg, COLORREF bg)
1563 { 1569 {
1564 int old_width = (width + 7)/8; 1570 int old_width = (width + 7)/8;
1565 int new_width = 2*((width + 15)/16); 1571 int new_width = BPLINE (2*((width + 15)/16));
1566 unsigned char *offset; 1572 unsigned char *offset;
1567 void *bmp_buf = 0; 1573 void *bmp_buf = 0;
1568 unsigned char *new_data, *new_offset; 1574 unsigned char *new_data, *new_offset;
1569 int i, j; 1575 int i, j;
1570 BITMAPINFO* bmp_info = 1576 BITMAPINFO* bmp_info =
1572 HBITMAP bitmap; 1578 HBITMAP bitmap;
1573 1579
1574 if (!bmp_info) 1580 if (!bmp_info)
1575 return NULL; 1581 return NULL;
1576 1582
1577 new_data = (unsigned char *) xmalloc (height * new_width); 1583 new_data = (unsigned char *) xmalloc_and_zero (height * new_width);
1578 1584
1579 if (!new_data) 1585 if (!new_data)
1580 { 1586 {
1581 xfree (bmp_info); 1587 xfree (bmp_info);
1582 return NULL; 1588 return NULL;
1585 for (i=0; i<height; i++) 1591 for (i=0; i<height; i++)
1586 { 1592 {
1587 offset = data + i*old_width; 1593 offset = data + i*old_width;
1588 new_offset = new_data + i*new_width; 1594 new_offset = new_data + i*new_width;
1589 1595
1590 new_offset[new_width - 1] = 0; /* there may be an extra byte
1591 that needs to be padded */
1592 for (j=0; j<old_width; j++) 1596 for (j=0; j<old_width; j++)
1593 { 1597 {
1594 int byte = offset[j]; 1598 int byte = offset[j];
1595 new_offset[j] = ~ (unsigned char) 1599 new_offset[j] = ~ (unsigned char)
1596 ((flip_table[byte & 0xf] << 4) + flip_table[byte >> 4]); 1600 ((flip_table[byte & 0xf] << 4) + flip_table[byte >> 4]);
1606 *new_offset ^= 0xff; 1610 *new_offset ^= 0xff;
1607 } 1611 }
1608 } 1612 }
1609 1613
1610 bmp_info->bmiHeader.biWidth=width; 1614 bmp_info->bmiHeader.biWidth=width;
1611 bmp_info->bmiHeader.biHeight=-height; 1615 bmp_info->bmiHeader.biHeight=-(LONG)height;
1612 bmp_info->bmiHeader.biPlanes=1; 1616 bmp_info->bmiHeader.biPlanes=1;
1613 bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER); 1617 bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
1614 bmp_info->bmiHeader.biBitCount=1; 1618 bmp_info->bmiHeader.biBitCount=1;
1615 bmp_info->bmiHeader.biCompression=BI_RGB; 1619 bmp_info->bmiHeader.biCompression=BI_RGB;
1616 bmp_info->bmiHeader.biClrUsed = 2; 1620 bmp_info->bmiHeader.biClrUsed = 2;
1831 xbm_instantiate_1 (image_instance, instantiator, pointer_fg, 1835 xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
1832 pointer_bg, dest_mask, XINT (XCAR (data)), 1836 pointer_bg, dest_mask, XINT (XCAR (data)),
1833 XINT (XCAR (XCDR (data))), gcc_go_home); 1837 XINT (XCAR (XCDR (data))), gcc_go_home);
1834 } 1838 }
1835 1839
1840 #ifdef HAVE_XFACE
1841 /**********************************************************************
1842 * X-Face *
1843 **********************************************************************/
1844 #if defined(EXTERN)
1845 /* This is about to get redefined! */
1846 #undef EXTERN
1847 #endif
1848 /* We have to define SYSV32 so that compface.h includes string.h
1849 instead of strings.h. */
1850 #define SYSV32
1851 #ifdef __cplusplus
1852 extern "C" {
1853 #endif
1854 #include <compface.h>
1855 #ifdef __cplusplus
1856 }
1857 #endif
1858 /* JMP_BUF cannot be used here because if it doesn't get defined
1859 to jmp_buf we end up with a conflicting type error with the
1860 definition in compface.h */
1861 extern jmp_buf comp_env;
1862 #undef SYSV32
1863
1864 static void
1865 mswindows_xface_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
1866 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
1867 int dest_mask, Lisp_Object domain)
1868 {
1869 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
1870 int i, stattis;
1871 char *p, *bits, *bp;
1872 CONST char * volatile emsg = 0;
1873 CONST char * volatile dstring;
1874
1875 assert (!NILP (data));
1876
1877 GET_C_STRING_BINARY_DATA_ALLOCA (data, dstring);
1878
1879 if ((p = strchr (dstring, ':')))
1880 {
1881 dstring = p + 1;
1882 }
1883
1884 /* Must use setjmp not SETJMP because we used jmp_buf above not JMP_BUF */
1885 if (!(stattis = setjmp (comp_env)))
1886 {
1887 UnCompAll ((char *) dstring);
1888 UnGenFace ();
1889 }
1890
1891 switch (stattis)
1892 {
1893 case -2:
1894 emsg = "uncompface: internal error";
1895 break;
1896 case -1:
1897 emsg = "uncompface: insufficient or invalid data";
1898 break;
1899 case 1:
1900 emsg = "uncompface: excess data ignored";
1901 break;
1902 }
1903
1904 if (emsg)
1905 signal_simple_error_2 (emsg, data, Qimage);
1906
1907 bp = bits = (char *) alloca (PIXELS / 8);
1908
1909 /* the compface library exports char F[], which uses a single byte per
1910 pixel to represent a 48x48 bitmap. Yuck. */
1911 for (i = 0, p = F; i < (PIXELS / 8); ++i)
1912 {
1913 int n, b;
1914 /* reverse the bit order of each byte... */
1915 for (b = n = 0; b < 8; ++b)
1916 {
1917 n |= ((*p++) << b);
1918 }
1919 *bp++ = (char) n;
1920 }
1921
1922 xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
1923 pointer_bg, dest_mask, 48, 48, bits);
1924 }
1925 #endif /* HAVE_XFACE */
1926
1836 1927
1837 /************************************************************************/ 1928 /************************************************************************/
1838 /* image instance methods */ 1929 /* image instance methods */
1839 /************************************************************************/ 1930 /************************************************************************/
1840 1931
2157 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2248 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2158 HWND wnd; 2249 HWND wnd;
2159 int flags = BS_NOTIFY; 2250 int flags = BS_NOTIFY;
2160 Lisp_Object style; 2251 Lisp_Object style;
2161 struct gui_item* pgui = &IMAGE_INSTANCE_WIDGET_ITEM (ii); 2252 struct gui_item* pgui = &IMAGE_INSTANCE_WIDGET_ITEM (ii);
2162 2253 Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
2254
2163 if (!gui_item_active_p (pgui)) 2255 if (!gui_item_active_p (pgui))
2164 flags |= WS_DISABLED; 2256 flags |= WS_DISABLED;
2257
2258 if (!NILP (glyph))
2259 {
2260 if (!IMAGE_INSTANCEP (glyph))
2261 glyph = glyph_image_instance (glyph, domain, ERROR_ME, 1);
2262
2263 if (IMAGE_INSTANCEP (glyph))
2264 flags |= XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
2265 BS_BITMAP : BS_ICON;
2266 }
2165 2267
2166 style = pgui->style; 2268 style = pgui->style;
2167 2269
2168 if (EQ (style, Qradio)) 2270 if (EQ (style, Qradio))
2169 { 2271 {
2184 /* set the checked state */ 2286 /* set the checked state */
2185 if (gui_item_selected_p (pgui)) 2287 if (gui_item_selected_p (pgui))
2186 SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); 2288 SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
2187 else 2289 else
2188 SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); 2290 SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
2291 /* add the image if one was given */
2292 if (!NILP (glyph) && IMAGE_INSTANCEP (glyph))
2293 {
2294 SendMessage (wnd, BM_SETIMAGE,
2295 (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
2296 IMAGE_BITMAP : IMAGE_ICON),
2297 (LPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
2298 XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) :
2299 XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph)));
2300 }
2189 } 2301 }
2190 2302
2191 /* instantiate an edit control */ 2303 /* instantiate an edit control */
2192 static void 2304 static void
2193 mswindows_edit_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 2305 mswindows_edit_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2197 mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, 2309 mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
2198 pointer_bg, dest_mask, domain, "EDIT", 2310 pointer_bg, dest_mask, domain, "EDIT",
2199 ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP 2311 ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP
2200 | WS_BORDER, 2312 | WS_BORDER,
2201 WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT); 2313 WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
2314 }
2315
2316 /* instantiate an edit control */
2317 static void
2318 mswindows_progress_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2319 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
2320 int dest_mask, Lisp_Object domain)
2321 {
2322 HWND wnd;
2323 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2324 mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
2325 pointer_bg, dest_mask, domain, PROGRESS_CLASS,
2326 WS_TABSTOP | WS_BORDER | PBS_SMOOTH,
2327 WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
2328 wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
2329 /* set the colors */
2330 #ifdef PBS_SETBKCOLOR
2331 SendMessage (wnd, PBS_SETBKCOLOR, 0,
2332 (LPARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
2333 (XCOLOR_INSTANCE
2334 (FACE_BACKGROUND
2335 (XIMAGE_INSTANCE_WIDGET_FACE (ii),
2336 XIMAGE_INSTANCE_SUBWINDOW_FRAME (ii))))));
2337 #endif
2338 #ifdef PBS_SETBARCOLOR
2339 SendMessage (wnd, PBS_SETBARCOLOR, 0,
2340 (L:PARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
2341 (XCOLOR_INSTANCE
2342 (FACE_FOREGROUND
2343 (XIMAGE_INSTANCE_WIDGET_FACE (ii),
2344 XIMAGE_INSTANCE_SUBWINDOW_FRAME (ii))))));
2345 #endif
2202 } 2346 }
2203 2347
2204 /* instantiate a static control possible for putting other things in */ 2348 /* instantiate a static control possible for putting other things in */
2205 static void 2349 static void
2206 mswindows_label_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 2350 mswindows_label_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2281 mswindows_widget_property (Lisp_Object image_instance, Lisp_Object prop) 2425 mswindows_widget_property (Lisp_Object image_instance, Lisp_Object prop)
2282 { 2426 {
2283 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2427 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2284 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); 2428 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
2285 /* get the text from a control */ 2429 /* get the text from a control */
2286 if (EQ (prop, Qtext)) 2430 if (EQ (prop, Q_text))
2287 { 2431 {
2288 Extcount len = SendMessage (wnd, WM_GETTEXTLENGTH, 0, 0); 2432 Extcount len = SendMessage (wnd, WM_GETTEXTLENGTH, 0, 0);
2289 Extbyte* buf =alloca (len+1); 2433 Extbyte* buf =alloca (len+1);
2290 2434
2291 SendMessage (wnd, WM_GETTEXT, (WPARAM)len+1, (LPARAM) buf); 2435 SendMessage (wnd, WM_GETTEXT, (WPARAM)len+1, (LPARAM) buf);
2299 mswindows_button_property (Lisp_Object image_instance, Lisp_Object prop) 2443 mswindows_button_property (Lisp_Object image_instance, Lisp_Object prop)
2300 { 2444 {
2301 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2445 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2302 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); 2446 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
2303 /* check the state of a button */ 2447 /* check the state of a button */
2304 if (EQ (prop, Qselected)) 2448 if (EQ (prop, Q_selected))
2305 { 2449 {
2306 if (SendMessage (wnd, BM_GETSTATE, 0, 0) & BST_CHECKED) 2450 if (SendMessage (wnd, BM_GETSTATE, 0, 0) & BST_CHECKED)
2307 return Qt; 2451 return Qt;
2308 else 2452 else
2309 return Qnil; 2453 return Qnil;
2316 mswindows_combo_property (Lisp_Object image_instance, Lisp_Object prop) 2460 mswindows_combo_property (Lisp_Object image_instance, Lisp_Object prop)
2317 { 2461 {
2318 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2462 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2319 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); 2463 HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
2320 /* get the text from a control */ 2464 /* get the text from a control */
2321 if (EQ (prop, Qtext)) 2465 if (EQ (prop, Q_text))
2322 { 2466 {
2323 long item = SendMessage (wnd, CB_GETCURSEL, 0, 0); 2467 long item = SendMessage (wnd, CB_GETCURSEL, 0, 0);
2324 Extcount len = SendMessage (wnd, CB_GETLBTEXTLEN, (WPARAM)item, 0); 2468 Extcount len = SendMessage (wnd, CB_GETLBTEXTLEN, (WPARAM)item, 0);
2325 Extbyte* buf = alloca (len+1); 2469 Extbyte* buf = alloca (len+1);
2326 SendMessage (wnd, CB_GETLBTEXT, (WPARAM)item, (LPARAM)buf); 2470 SendMessage (wnd, CB_GETLBTEXT, (WPARAM)item, (LPARAM)buf);
2334 mswindows_widget_set_property (Lisp_Object image_instance, Lisp_Object prop, 2478 mswindows_widget_set_property (Lisp_Object image_instance, Lisp_Object prop,
2335 Lisp_Object val) 2479 Lisp_Object val)
2336 { 2480 {
2337 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2481 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2338 2482
2339 if (EQ (prop, Qtext)) 2483 if (EQ (prop, Q_text))
2340 { 2484 {
2341 Extbyte* lparam=0; 2485 Extbyte* lparam=0;
2342 CHECK_STRING (val); 2486 CHECK_STRING (val);
2343 GET_C_STRING_OS_DATA_ALLOCA (val, lparam); 2487 GET_C_STRING_OS_DATA_ALLOCA (val, lparam);
2344 SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii), 2488 SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
2345 WM_SETTEXT, 0, (LPARAM)lparam); 2489 WM_SETTEXT, 0, (LPARAM)lparam);
2490 return Qt;
2491 }
2492 return Qunbound;
2493 }
2494
2495 /* set the properties of a progres guage */
2496 static Lisp_Object
2497 mswindows_progress_set_property (Lisp_Object image_instance, Lisp_Object prop,
2498 Lisp_Object val)
2499 {
2500 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2501
2502 if (EQ (prop, Q_percent))
2503 {
2504 CHECK_INT (val);
2505 SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
2506 PBM_SETPOS, (WPARAM)XINT (val), 0);
2346 return Qt; 2507 return Qt;
2347 } 2508 }
2348 return Qunbound; 2509 return Qunbound;
2349 } 2510 }
2350 2511
2384 INITIALIZE_DEVICE_IIFORMAT (mswindows, xpm); 2545 INITIALIZE_DEVICE_IIFORMAT (mswindows, xpm);
2385 IIFORMAT_HAS_DEVMETHOD (mswindows, xpm, instantiate); 2546 IIFORMAT_HAS_DEVMETHOD (mswindows, xpm, instantiate);
2386 #endif 2547 #endif
2387 INITIALIZE_DEVICE_IIFORMAT (mswindows, xbm); 2548 INITIALIZE_DEVICE_IIFORMAT (mswindows, xbm);
2388 IIFORMAT_HAS_DEVMETHOD (mswindows, xbm, instantiate); 2549 IIFORMAT_HAS_DEVMETHOD (mswindows, xbm, instantiate);
2389 2550 #ifdef HAVE_XFACE
2551 INITIALIZE_DEVICE_IIFORMAT (mswindows, xface);
2552 IIFORMAT_HAS_DEVMETHOD (mswindows, xface, instantiate);
2553 #endif
2390 INITIALIZE_DEVICE_IIFORMAT (mswindows, button); 2554 INITIALIZE_DEVICE_IIFORMAT (mswindows, button);
2391 IIFORMAT_HAS_DEVMETHOD (mswindows, button, property); 2555 IIFORMAT_HAS_DEVMETHOD (mswindows, button, property);
2392 IIFORMAT_HAS_DEVMETHOD (mswindows, button, instantiate); 2556 IIFORMAT_HAS_DEVMETHOD (mswindows, button, instantiate);
2393 2557
2394 INITIALIZE_DEVICE_IIFORMAT (mswindows, edit); 2558 INITIALIZE_DEVICE_IIFORMAT (mswindows, edit);
2412 IIFORMAT_HAS_DEVMETHOD (mswindows, combo, instantiate); 2576 IIFORMAT_HAS_DEVMETHOD (mswindows, combo, instantiate);
2413 2577
2414 INITIALIZE_DEVICE_IIFORMAT (mswindows, scrollbar); 2578 INITIALIZE_DEVICE_IIFORMAT (mswindows, scrollbar);
2415 IIFORMAT_HAS_DEVMETHOD (mswindows, scrollbar, instantiate); 2579 IIFORMAT_HAS_DEVMETHOD (mswindows, scrollbar, instantiate);
2416 2580
2581 INITIALIZE_DEVICE_IIFORMAT (mswindows, progress);
2582 IIFORMAT_HAS_DEVMETHOD (mswindows, progress, set_property);
2583 IIFORMAT_HAS_DEVMETHOD (mswindows, progress, instantiate);
2584
2417 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (bmp, "bmp"); 2585 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (bmp, "bmp");
2418 2586
2419 IIFORMAT_HAS_METHOD (bmp, validate); 2587 IIFORMAT_HAS_METHOD (bmp, validate);
2420 IIFORMAT_HAS_METHOD (bmp, normalize); 2588 IIFORMAT_HAS_METHOD (bmp, normalize);
2421 IIFORMAT_HAS_METHOD (bmp, possible_dest_types); 2589 IIFORMAT_HAS_METHOD (bmp, possible_dest_types);
2452 Fprovide (Qbutton); 2620 Fprovide (Qbutton);
2453 Fprovide (Qedit); 2621 Fprovide (Qedit);
2454 Fprovide (Qcombo); 2622 Fprovide (Qcombo);
2455 Fprovide (Qscrollbar); 2623 Fprovide (Qscrollbar);
2456 Fprovide (Qlabel); 2624 Fprovide (Qlabel);
2625 Fprovide (Qprogress);
2457 } 2626 }
2458 2627
2459 void 2628 void
2460 complex_vars_of_glyphs_mswindows (void) 2629 complex_vars_of_glyphs_mswindows (void)
2461 { 2630 {