home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume15 / olvwm-3.0 / part05 < prev    next >
Text File  |  1992-02-03  |  56KB  |  1,906 lines

  1. Path: uunet!sun-barr!ames!pasteur!nntp
  2. From: scott.oaks@East.Sun.COM (Scott Oaks)
  3. Newsgroups: comp.sources.x
  4. Subject: v15i151: OpenLook Virtual Window Mgr (3.0), Part05/21
  5. Message-ID: <1992Feb4.135535.7048@pasteur.Berkeley.EDU>
  6. Date: 4 Feb 92 13:55:35 GMT
  7. References: <csx-15i147-olvwm-3.0@uunet.UU.NET>
  8. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  9. Organization: University of California, at Berkeley
  10. Lines: 1892
  11. Approved: dcmartin@msi.com
  12. Nntp-Posting-Host: postgres.berkeley.edu
  13.  
  14. Submitted-by: scott.oaks@East.Sun.COM (Scott Oaks)
  15. Posting-number: Volume 15, Issue 151
  16. Archive-name: olvwm-3.0/part05
  17.  
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  22. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  23. # If this archive is complete, you will see the following message at the end:
  24. #        "End of archive 5 (of 21)."
  25. # Contents:  images.c winipane.c
  26. # Wrapped by dcmartin@fascet on Tue Jan 14 05:54:42 1992
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'images.c' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'images.c'\"
  30. else
  31. echo shar: Extracting \"'images.c'\" \(38892 characters\)
  32. sed "s/^X//" >'images.c' <<'END_OF_FILE'
  33. X/*
  34. X * (c) Copyright 1991 Scott Oaks.  See LEGAL_NOTICE file for terms of the
  35. X * license
  36. X */
  37. X
  38. X#ident "@(#)images.c    1.1 olvwm version 1/3/92"
  39. X
  40. X/* Use small images */
  41. X#define SMALL_IMAGES
  42. X
  43. X#include <X11/X.h>
  44. X#include <X11/Xlib.h>
  45. X#include <X11/Xutil.h>
  46. X#include <olgx/olgx.h>
  47. X#include <stdio.h>
  48. X
  49. X#include "i18n.h"
  50. X#include "olwm.h"
  51. X#include "ollocale.h"
  52. X#include "globals.h"
  53. X#include "win.h"
  54. X#include "menu.h"
  55. X
  56. X/*
  57. X *      Frame/icon menu action procs
  58. X */
  59. Xextern int  WindowOpenCloseAction(), WindowFullRestoreSizeAction();
  60. Xextern int  WindowMoveAction(), WindowResizeAction();
  61. Xextern int  WindowPropsAction(), WindowBackAction(), WindowRefreshAction();
  62. Xextern int  WindowQuitAction(), WindowDismissThisAction();
  63. Xextern int  WindowDismissAllAction(), WindowFlashOwnerAction();
  64. Xextern int  WindowStickAction();
  65. X
  66. X/*
  67. X *      Buttons used to build the frame and icon menus
  68. X *      REMIND: right now, toggles always use the same actions!
  69. X *
  70. X *  These buttons are more or less "prototype" buttons; if the UseImages
  71. X *  resource is set, their pixlabels may be adjusted
  72. X */
  73. X
  74. Xstatic Button
  75. XopenButton = {
  76. X    { { StringLabel, "Open", NULL },
  77. X      { StringLabel, "Close", NULL } },
  78. X    {"window:Open", "window:Close"},
  79. X    0,
  80. X    False,
  81. X    True,
  82. X    True,
  83. X    {
  84. X        WindowOpenCloseAction,
  85. X        NULL
  86. X    },
  87. X    NULL,
  88. X};
  89. X
  90. Xstatic Button
  91. XfullSizeButton = {
  92. X    { { StringLabel, "Full Size", NULL },
  93. X      { StringLabel, "Restore Size", NULL } },
  94. X    {"window:FullSize", "window:RestoreSize"},
  95. X    0,
  96. X    False,
  97. X    True,
  98. X    True,
  99. X    {
  100. X        WindowFullRestoreSizeAction,
  101. X        NULL
  102. X    },
  103. X    NULL,
  104. X};
  105. X
  106. Xstatic Button
  107. XmoveButton = {
  108. X    { { StringLabel, "Move", NULL },
  109. X      { NoType, NULL, NULL } },
  110. X    {"window:Move", NULL},
  111. X    0,
  112. X    False,
  113. X    True,
  114. X    True,
  115. X    {    
  116. X        WindowMoveAction,
  117. X        NULL
  118. X    },
  119. X    NULL,
  120. X};
  121. X
  122. Xstatic Button
  123. XresizeButton = {
  124. X    { { StringLabel, "Resize", NULL },
  125. X      { NoType, NULL, NULL } },
  126. X    {"window:Resize", NULL},
  127. X    0,
  128. X    False,
  129. X    True,
  130. X    True,
  131. X    {    
  132. X        WindowResizeAction,
  133. X        NULL
  134. X    },
  135. X    NULL,
  136. X};
  137. X
  138. Xstatic Button
  139. XstickyButton = {
  140. X    { { StringLabel, "Stick", NULL },
  141. X      { StringLabel, "Unstick", NULL } },
  142. X    {"window:Stick", "window:Unstick"},
  143. X    0,
  144. X    False,
  145. X    True,
  146. X    True,
  147. X    {    
  148. X        WindowStickAction,
  149. X        NULL
  150. X    },
  151. X    NULL,
  152. X};
  153. X
  154. Xstatic Button
  155. XpropertiesButton = {
  156. X    { { StringLabel, "Properties", NULL },
  157. X      { NoType, NULL, NULL } },
  158. X    {"window:Properties", NULL},
  159. X    0,
  160. X    False,
  161. X    False,
  162. X    True,
  163. X    {    
  164. X        WindowPropsAction,
  165. X        NULL
  166. X    },
  167. X    NULL,
  168. X};
  169. X
  170. Xstatic Button
  171. XbackButton = {
  172. X    { { StringLabel, "Back", NULL },    /****WINDOW FRONT?*/
  173. X      { NoType, NULL, NULL } },
  174. X    {"window:Back", NULL},
  175. X    0,
  176. X    False,
  177. X    True,
  178. X    True,
  179. X    {    
  180. X        WindowBackAction,
  181. X        NULL
  182. X    },
  183. X    NULL,
  184. X};
  185. X
  186. Xstatic Button
  187. XrefreshButton = {
  188. X    { { StringLabel, "Refresh", NULL },
  189. X      { NoType, NULL, NULL } },
  190. X    {"window:Refresh", NULL},
  191. X    0,
  192. X    False,
  193. X    True,
  194. X    True,
  195. X    {    
  196. X        WindowRefreshAction,
  197. X        NULL
  198. X    },
  199. X    NULL,
  200. X};
  201. X
  202. Xstatic Button
  203. XquitButton = {
  204. X    { { StringLabel, "Quit", NULL },
  205. X      { NoType, NULL, NULL } },
  206. X    {"window:Quit", NULL},
  207. X    0,
  208. X    False,
  209. X    True,
  210. X    True,
  211. X    {    
  212. X        WindowQuitAction,
  213. X        NULL
  214. X    },
  215. X    NULL,
  216. X};
  217. X
  218. Xstatic Button
  219. XdismissButton = {
  220. X    { { StringLabel, "Dismiss", NULL },
  221. X      { NoType, NULL, NULL } },
  222. X    {"window:Dismiss", NULL},
  223. X    0,
  224. X    False,
  225. X    True,
  226. X    True,
  227. X    {    
  228. X        NULL,
  229. X        NULL,
  230. X    },
  231. X    NULL,
  232. X};
  233. X
  234. Xstatic Button
  235. XdismissThisButton = {
  236. X    { { StringLabel, "This Window", NULL},
  237. X      { NoType, NULL, NULL } },
  238. X    {"window:DismissThis", NULL},
  239. X    0,
  240. X    False,
  241. X    True,
  242. X    True,
  243. X    {    
  244. X        WindowDismissThisAction,
  245. X        NULL
  246. X    },
  247. X    NULL,
  248. X};
  249. X
  250. Xstatic Button
  251. XdismissAllButton = {
  252. X    { { StringLabel, "All Pop-ups", NULL},
  253. X      { NoType, NULL, NULL } },
  254. X    {"window:DismissAll", NULL},
  255. X    0,
  256. X    False,
  257. X    True,
  258. X    True,
  259. X    {    
  260. X        WindowDismissAllAction,
  261. X        NULL
  262. X    },
  263. X    NULL,
  264. X};
  265. X
  266. Xstatic Button
  267. XownerButton = {
  268. X    { { StringLabel, "Owner?", NULL},
  269. X      { NoType, NULL, NULL } },
  270. X    {"window:Owner", NULL},
  271. X    0,
  272. X    False,
  273. X    True,
  274. X    True,
  275. X    {    
  276. X        WindowFlashOwnerAction,
  277. X        NULL
  278. X    },
  279. X    NULL,
  280. X};
  281. X
  282. Xextern int    VDMMenuAction();
  283. X/*
  284. X * Menu buttons for VDM motion menu
  285. X */
  286. XButton moveRightButton = {
  287. X    { { StringLabel, "Move East", NULL },
  288. X      { NoType, NULL, NULL } },
  289. X    { "virtual:Move", NULL },
  290. X    0,
  291. X    False,
  292. X    True,
  293. X    True,
  294. X    { VDMMenuAction, NULL },
  295. X    NULL,
  296. X};
  297. XButton moveLeftButton = {
  298. X    { { StringLabel, "Move West", NULL },
  299. X      { NoType, NULL, NULL } },
  300. X    { "virtual:Move", NULL },
  301. X    0,
  302. X    False,
  303. X    True,
  304. X    True,
  305. X    { VDMMenuAction, NULL },
  306. X    NULL,
  307. X};
  308. XButton moveUpButton = {
  309. X    { { StringLabel, "Move North", NULL },
  310. X      { NoType, NULL, NULL } },
  311. X    { "virtual:Move", NULL },
  312. X    0,
  313. X    False,
  314. X    True,
  315. X    True,
  316. X    { VDMMenuAction, NULL },
  317. X    NULL,
  318. X};
  319. X
  320. XButton moveDownButton = {
  321. X    { { StringLabel, "Move South", NULL },
  322. X      { NoType, NULL, NULL } },
  323. X    { "virtual:Move", NULL },
  324. X    0,
  325. X    False,
  326. X    True,
  327. X    True,
  328. X    { VDMMenuAction, NULL },
  329. X    NULL,
  330. X};
  331. X
  332. XButton moveUpRightButton = {
  333. X    { { StringLabel, "Move NorthEast", NULL },
  334. X      { NoType, NULL, NULL } },
  335. X    { "virtual:Move", NULL },
  336. X    0,
  337. X    False,
  338. X    True,
  339. X    True,
  340. X    { VDMMenuAction, NULL },
  341. X    NULL,
  342. X};
  343. X
  344. XButton moveDownRightButton = {
  345. X    { { StringLabel, "Move SouthEast", NULL },
  346. X      { NoType, NULL, NULL } },
  347. X    { "virtual:Move", NULL },
  348. X    0,
  349. X    False,
  350. X    True,
  351. X    True,
  352. X    { VDMMenuAction, NULL },
  353. X    NULL,
  354. X};
  355. X
  356. XButton moveUpLeftButton = {
  357. X    { { StringLabel, "Move NorthWest", NULL },
  358. X      { NoType, NULL, NULL } },
  359. X    { "virtual:Move", NULL },
  360. X    0,
  361. X    False,
  362. X    True,
  363. X    True,
  364. X    { VDMMenuAction, NULL },
  365. X    NULL,
  366. X};
  367. X
  368. XButton moveDownLeftButton = {
  369. X    { { StringLabel, "Move SouthWest", NULL },
  370. X      { NoType, NULL, NULL } },
  371. X    { "virtual:Move", NULL },
  372. X    0,
  373. X    False,
  374. X    True,
  375. X    True,
  376. X    { VDMMenuAction, NULL },
  377. X    NULL,
  378. X};
  379. X
  380. XButton moveHomeButton = {
  381. X    { { StringLabel, "Move Home", NULL },
  382. X      { NoType, NULL, NULL } },
  383. X    { "virtual:Move", NULL },
  384. X    0,
  385. X    False,
  386. X    True,
  387. X    True,
  388. X    { VDMMenuAction, NULL },
  389. X    NULL,
  390. X};
  391. X
  392. X#ifdef SMALL_IMAGES 
  393. X/*
  394. X * Images for Frame Menus and VDM Menus
  395. X */
  396. X
  397. X#define Close_width 16
  398. X#define Close_height 14
  399. Xstatic char     Close_bits[] = {
  400. X    0xc0, 0x3f, 0x40, 0x20, 0x40, 0x20, 0x40, 0xa1, 0xc0, 0x60, 0x64, 0xa0,
  401. X    0x5c, 0x60, 0x5c, 0xa0, 0xff, 0x7f, 0x05, 0xaa, 0x07, 0x55, 0x14, 0xaa,
  402. X    0x08, 0x00, 0x14, 0x00,
  403. X};
  404. X
  405. X#define Open_width 16
  406. X#define Open_height 14
  407. Xstatic char     Open_bits[] = {
  408. X    0xc0, 0x3f, 0x40, 0x20, 0xc0, 0x27, 0x40, 0xa7, 0x40, 0x67, 0xc0, 0xa4,
  409. X    0x60, 0x60, 0x50, 0xa0, 0xcf, 0x7f, 0x05, 0xaa, 0x07, 0x55, 0x14, 0xaa,
  410. X    0x08, 0x00, 0x14, 0x00,
  411. X};
  412. X
  413. X#define FullSize_width 16
  414. X#define FullSize_height 14
  415. Xstatic char     FullSize_bits[] = {
  416. X    0xf8, 0x7, 0x8, 0x4, 0x8, 0x4, 0x8, 0x14, 0x8, 0xc, 0x8, 0x14, 0xc8, 0xc,
  417. X    0xc8, 0x14, 0xc8, 0xc, 0xf8, 0x17, 0xe8, 0xd, 0xc8, 0x14, 0xf8, 0xf, 0x40,
  418. X    0x15,
  419. X};
  420. X
  421. X#define NormalSize_width 16
  422. X#define NormalSize_height 14
  423. Xstatic char     NormalSize_bits[] = {
  424. X    0xf8, 0x7, 0x8, 0x4, 0x8, 0x4, 0x8, 0x14, 0x8, 0xc, 0x8, 0x14, 0x8, 0xc,
  425. X    0x8, 0x14, 0xf8, 0xf, 0xc0, 0x14, 0xe0, 0xb, 0xf0, 0x17, 0xc0, 0x0, 0xc0, 0x0,
  426. X};
  427. X
  428. X#define Props_width 16
  429. X#define Props_height 14
  430. Xstatic char     Props_bits[] = {
  431. X    0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x02, 0x10, 0xfa, 0x57, 0x02, 0x30,
  432. X    0xda, 0x56, 0x02, 0x30, 0x02, 0x50, 0xfe, 0x3f, 0x50, 0x55, 0xa8, 0x2a,
  433. X    0x50, 0x55, 0x00, 0x00,
  434. X};
  435. X
  436. X#define Back_width 16
  437. X#define Back_height 14
  438. Xstatic char     Back_bits[] = {
  439. X    0xff, 0x00, 0x81, 0x0f, 0x81, 0x3f, 0x81, 0x72, 0x81, 0xc2, 0x81, 0xaa,
  440. X    0x81, 0xb6, 0x81, 0xfa, 0xff, 0x7e, 0x04, 0x3a, 0xfc, 0x37, 0xa0, 0x2a,
  441. X    0x40, 0x05, 0xa0, 0x0a,
  442. X};
  443. X
  444. X#define Refresh_width 16
  445. X#define Refresh_height 14
  446. Xstatic char     Refresh_bits[] = {
  447. X    0x00, 0x00, 0xf8, 0x07, 0x48, 0x05, 0xc8, 0x07, 0x08, 0x14, 0x08, 0x0c,
  448. X    0x48, 0x14, 0x28, 0x0d, 0x08, 0x14, 0xf8, 0x0f, 0x40, 0x15, 0xa0, 0x0a,
  449. X    0x40, 0x15, 0x00, 0x00,
  450. X};
  451. X
  452. X#define Stick_width 16
  453. X#define Stick_height 14
  454. Xstatic char     Stick_bits[] = {
  455. X    0xb0, 0x0f, 0xf0, 0x1f, 0xb0, 0x23, 0x40, 0x29, 0x80, 0x57, 0x87, 0x8b,
  456. X    0x82, 0x07, 0x82, 0x0b, 0x96, 0x07, 0x8a, 0x0b, 0x82, 0x07, 0x8a, 0x0b,
  457. X    0x00, 0x04, 0x08, 0x0a,
  458. X};
  459. X
  460. X#define UnStick_width 16
  461. X#define UnStick_height 14
  462. Xstatic char     UnStick_bits[] = {
  463. X    0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x13, 0x00, 0xff, 0x1f, 0xff, 0x1f,
  464. X    0xff, 0x1f, 0x56, 0x55, 0xaf, 0x2a, 0x57, 0x55, 0x08, 0x00, 0x17, 0x00,
  465. X    0x0a, 0x00, 0x02, 0x00,
  466. X};
  467. X
  468. X#define Quit_width 16
  469. X#define Quit_height 14
  470. Xstatic char     Quit_bits[] = {
  471. X    0x10, 0x04, 0x38, 0x0e, 0x7c, 0x1f, 0xf8, 0x0f, 0xf0, 0x17, 0xe8, 0x2b,
  472. X    0xf0, 0x17, 0xf8, 0x0f, 0x7c, 0x1f, 0xb8, 0x0e, 0x50, 0x15, 0xa8, 0x2a,
  473. X    0x50, 0x14, 0x20, 0x08,
  474. X};
  475. X
  476. X#define Resize_width 16
  477. X#define Resize_height 14
  478. Xstatic char Resize_bits[] = {
  479. X   0x2e, 0x00, 0x4a, 0x01, 0x8e, 0x01, 0xc0, 0x01, 0x02, 0x00, 0x94, 0xff,
  480. X   0x98, 0x80, 0x9c, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
  481. X   0x80, 0x80, 0x80, 0xff};
  482. X
  483. X#define Move_width 16
  484. X#define Move_height 14
  485. Xstatic char Move_bits[] = {
  486. X   0xfe, 0x00, 0x82, 0x00, 0x82, 0x02, 0x82, 0x24, 0x82, 0x28, 0xfe, 0x30,
  487. X   0x00, 0x3c, 0x04, 0x00, 0x48, 0x7f, 0x50, 0x41, 0x60, 0x41, 0x78, 0x41,
  488. X   0x00, 0x41, 0x00, 0x7f};
  489. X
  490. X#else SMALL_IMAGES
  491. X
  492. X#define Back_width 32
  493. X#define Back_height 32
  494. Xstatic char Back_bits[] = {
  495. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  496. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00,
  497. X   0x14, 0x80, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x80, 0xff, 0x01,
  498. X   0x04, 0x80, 0xff, 0x07, 0x04, 0x80, 0xff, 0x0f, 0x04, 0x80, 0xff, 0x0f,
  499. X   0x04, 0x80, 0x58, 0x1f, 0x04, 0x80, 0xa9, 0x1e, 0x04, 0x80, 0x58, 0x1c,
  500. X   0x04, 0x80, 0xa9, 0x18, 0x04, 0x80, 0x58, 0x19, 0x04, 0x80, 0xa9, 0x19,
  501. X   0x04, 0x80, 0xd8, 0x0d, 0x04, 0x80, 0xe9, 0x0f, 0xfc, 0xff, 0xf8, 0x07,
  502. X   0x40, 0x55, 0xe9, 0x03, 0x40, 0x00, 0xd8, 0x01, 0xc0, 0xff, 0xaf, 0x01,
  503. X   0x00, 0x54, 0x55, 0x01, 0x00, 0xa8, 0xaa, 0x00, 0x00, 0x54, 0x55, 0x00,
  504. X   0x00, 0xa8, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  505. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  506. X};
  507. X
  508. X#define Close_width 32
  509. X#define Close_height 32
  510. Xstatic char Close_bits[] = {
  511. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  512. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x40, 0x01, 0x08,
  513. X   0x00, 0xc0, 0xff, 0x0f, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x04, 0x58,
  514. X   0x00, 0x40, 0x0e, 0xa8, 0x00, 0x40, 0x07, 0x58, 0x00, 0xc0, 0x03, 0xa8,
  515. X   0x00, 0xc0, 0x01, 0x58, 0x00, 0xe0, 0x00, 0xa8, 0x00, 0x70, 0x00, 0x58,
  516. X   0x40, 0x78, 0x00, 0xa8, 0xc0, 0x5c, 0x00, 0x58, 0xc0, 0x4f, 0x00, 0xa8,
  517. X   0xc0, 0x47, 0x00, 0x58, 0xc0, 0xc7, 0xff, 0xaf, 0xc0, 0x0f, 0x54, 0x55,
  518. X   0xc0, 0x1f, 0xa8, 0xaa, 0x3f, 0x00, 0x54, 0x55, 0x21, 0x00, 0xa8, 0xaa,
  519. X   0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00,
  520. X   0xbf, 0x02, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00,
  521. X   0x50, 0x01, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00
  522. X};
  523. X
  524. X#define FullSize_width 32
  525. X#define FullSize_height 32
  526. Xstatic char FullSize_bits[] = {
  527. X   0x00, 0xfc, 0xff, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0xfc, 0xff, 0x00,
  528. X   0x00, 0x04, 0x80, 0x00, 0x00, 0x04, 0x80, 0x05, 0xc0, 0xff, 0x8f, 0x0a,
  529. X   0x40, 0x01, 0x88, 0x05, 0xc0, 0xff, 0x9f, 0x0a, 0x40, 0x00, 0x88, 0x05,
  530. X   0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a,
  531. X   0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05,
  532. X   0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a,
  533. X   0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a, 0xc0, 0xff, 0x8f, 0x05,
  534. X   0x00, 0x54, 0x95, 0x0a, 0x00, 0xc4, 0x81, 0x05, 0x00, 0xc4, 0x81, 0x0a,
  535. X   0x00, 0xc4, 0x81, 0x05, 0x00, 0xc4, 0x81, 0x0a, 0x00, 0xc4, 0x81, 0x05,
  536. X   0x00, 0xf4, 0x87, 0x0a, 0x00, 0xe4, 0x83, 0x05, 0x00, 0xc4, 0x81, 0x0a,
  537. X   0x00, 0x84, 0x80, 0x05, 0x00, 0xfc, 0xff, 0x0a
  538. X};
  539. X
  540. X#define Move_width 32
  541. X#define Move_height 32
  542. Xstatic char Move_bits[] = {
  543. X   0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0xfc, 0xff,
  544. X   0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xfe, 0x80,
  545. X   0x00, 0x00, 0xfc, 0x80, 0x00, 0x00, 0xf4, 0x80, 0x00, 0x00, 0xfc, 0x80,
  546. X   0x00, 0x00, 0xfc, 0x80, 0x00, 0x00, 0xce, 0x80, 0x00, 0x00, 0x87, 0x80,
  547. X   0x00, 0x80, 0x07, 0x80, 0x00, 0xc0, 0x05, 0x80, 0x00, 0xe0, 0x04, 0x80,
  548. X   0x00, 0x70, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x05, 0x3c, 0x00, 0x00,
  549. X   0xff, 0x3f, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00,
  550. X   0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00,
  551. X   0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00,
  552. X   0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00,
  553. X   0x01, 0x20, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00
  554. X};
  555. X
  556. X#define NormalSize_width 32
  557. X#define NormalSize_height 32
  558. Xstatic char NormalSize_bits[] = {
  559. X   0x00, 0xfc, 0xff, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0xfc, 0xff, 0x00,
  560. X   0x00, 0x04, 0x80, 0x00, 0x00, 0x04, 0x80, 0x05, 0xc0, 0xff, 0x8f, 0x0a,
  561. X   0x40, 0x01, 0x88, 0x05, 0xc0, 0xff, 0x9f, 0x0a, 0x40, 0x00, 0x88, 0x05,
  562. X   0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a,
  563. X   0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05,
  564. X   0x40, 0x00, 0x98, 0x0a, 0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a,
  565. X   0x40, 0x00, 0x88, 0x05, 0x40, 0x00, 0x98, 0x0a, 0xc0, 0xff, 0x8f, 0x05,
  566. X   0x00, 0x54, 0x95, 0x0a, 0x00, 0x84, 0x80, 0x05, 0x00, 0xc4, 0x81, 0x0a,
  567. X   0x00, 0xe4, 0x83, 0x05, 0x00, 0xf4, 0x87, 0x0a, 0x00, 0xc4, 0x81, 0x05,
  568. X   0x00, 0xc4, 0x81, 0x0a, 0x00, 0xc4, 0x81, 0x05, 0x00, 0xc4, 0x81, 0x0a,
  569. X   0x00, 0xc4, 0x81, 0x05, 0x00, 0xfc, 0xff, 0x0a
  570. X};
  571. X
  572. X#define Open_width 32
  573. X#define Open_height 32
  574. Xstatic char Open_bits[] = {
  575. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  576. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x40, 0x01, 0x08,
  577. X   0x00, 0xc0, 0xff, 0x0f, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, 0x58,
  578. X   0x00, 0xe0, 0x0f, 0xa8, 0x00, 0xc0, 0x0f, 0x58, 0x00, 0x40, 0x0f, 0xa8,
  579. X   0x00, 0xc0, 0x0f, 0x58, 0x00, 0xc0, 0x0f, 0xa8, 0x00, 0xe0, 0x0c, 0x58,
  580. X   0x00, 0x70, 0x08, 0xa8, 0x00, 0x78, 0x00, 0x58, 0x00, 0x5c, 0x00, 0xa8,
  581. X   0x00, 0x4e, 0x00, 0x58, 0x00, 0xc7, 0xff, 0xaf, 0x80, 0x03, 0x54, 0x55,
  582. X   0xc0, 0x01, 0xa8, 0xaa, 0xbf, 0x00, 0x54, 0x55, 0x21, 0x00, 0xa8, 0xaa,
  583. X   0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00,
  584. X   0xbf, 0x02, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00,
  585. X   0x50, 0x01, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00
  586. X};
  587. X
  588. X#define Props_width 32
  589. X#define Props_height 32
  590. Xstatic char Props_bits[] = {
  591. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  592. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  593. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  594. X   0xc0, 0xff, 0x3f, 0x00, 0x40, 0x02, 0x20, 0x00, 0x40, 0x53, 0x25, 0x00,
  595. X   0x40, 0x00, 0x20, 0x00, 0x40, 0x00, 0x20, 0x00, 0x40, 0x00, 0xa0, 0x02,
  596. X   0x40, 0x04, 0x25, 0x00, 0x40, 0x0a, 0xa2, 0x02, 0x40, 0x00, 0x20, 0x00,
  597. X   0xc0, 0xff, 0xbf, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
  598. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00,
  599. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  600. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  601. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  602. X};
  603. X
  604. X#define Quit_width 32
  605. X#define Quit_height 32
  606. Xstatic char Quit_bits[] = {
  607. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xff, 0x07, 0x00,
  608. X   0xc0, 0x03, 0x1e, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00,
  609. X   0xb8, 0xff, 0xff, 0x00, 0x98, 0x02, 0xdc, 0x00, 0x8c, 0xff, 0x9f, 0x01,
  610. X   0x8c, 0x00, 0x97, 0x01, 0x86, 0x80, 0xb3, 0x03, 0x86, 0xc0, 0x51, 0x03,
  611. X   0x86, 0xe0, 0xb0, 0x03, 0x86, 0x70, 0x50, 0x03, 0x86, 0x38, 0xb0, 0x03,
  612. X   0x86, 0x1c, 0x50, 0x03, 0x86, 0x0e, 0xb0, 0x03, 0x8c, 0x07, 0xd0, 0x01,
  613. X   0x8c, 0x03, 0xb0, 0x01, 0xd8, 0x01, 0xd0, 0x01, 0xf8, 0x00, 0xf0, 0x00,
  614. X   0xf0, 0xff, 0x7f, 0x01, 0xe0, 0xa8, 0xba, 0x00, 0xc0, 0x53, 0x5f, 0x01,
  615. X   0x00, 0xff, 0xaf, 0x00, 0x00, 0xfc, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00,
  616. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  617. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  618. X};
  619. X
  620. X#define Refresh_width 32
  621. X#define Refresh_height 32
  622. Xstatic char Refresh_bits[] = {
  623. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  624. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  625. X   0x80, 0xff, 0x1f, 0x00, 0x80, 0x02, 0x10, 0x00, 0x80, 0xff, 0x18, 0x00,
  626. X   0x80, 0x00, 0x10, 0x00, 0x80, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x50, 0x01,
  627. X   0x80, 0xa0, 0xb6, 0x00, 0x80, 0xc8, 0x50, 0x01, 0x80, 0x00, 0xb2, 0x00,
  628. X   0x80, 0x00, 0x50, 0x01, 0x80, 0x00, 0xb0, 0x00, 0x80, 0x7f, 0x50, 0x01,
  629. X   0x80, 0x55, 0xb0, 0x00, 0x80, 0x7f, 0x56, 0x01, 0x80, 0x55, 0xb0, 0x00,
  630. X   0x80, 0xff, 0x5f, 0x01, 0x00, 0xa8, 0xaa, 0x00, 0x00, 0x50, 0x55, 0x01,
  631. X   0x00, 0xa8, 0xaa, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00,
  632. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  633. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  634. X};
  635. X
  636. X#define Resize_width 32
  637. X#define Resize_height 32
  638. Xstatic char Resize_bits[] = {
  639. X   0xff, 0x03, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00,
  640. X   0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
  641. X   0x41, 0x02, 0x00, 0x00, 0xe1, 0x02, 0x00, 0x00, 0xc1, 0x03, 0x00, 0x00,
  642. X   0xff, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
  643. X   0x00, 0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
  644. X   0x00, 0xe0, 0x01, 0x80, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0x33, 0x80,
  645. X   0x00, 0x40, 0x3f, 0x80, 0x00, 0x40, 0x3e, 0x80, 0x00, 0x40, 0x3e, 0x80,
  646. X   0x00, 0x40, 0x3f, 0x80, 0x00, 0xc0, 0x3f, 0x80, 0x00, 0x40, 0x00, 0x80,
  647. X   0x00, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80,
  648. X   0x00, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80,
  649. X   0x00, 0x40, 0x00, 0x80, 0x00, 0xc0, 0xff, 0xff
  650. X};
  651. X
  652. X#define Stick_width 32
  653. X#define Stick_height 32
  654. Xstatic char Stick_bits[] = {
  655. X   0x00, 0x0e, 0xff, 0x00, 0x00, 0x9e, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x07,
  656. X   0x00, 0xfe, 0xff, 0x0f, 0x00, 0x9e, 0x5f, 0x0d, 0x00, 0x6e, 0xaf, 0x3a,
  657. X   0x00, 0xd0, 0x56, 0x51, 0x00, 0xa0, 0xae, 0x20, 0x00, 0x50, 0x5f, 0x40,
  658. X   0x00, 0x00, 0x2f, 0x80, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00,
  659. X   0x00, 0x80, 0x5f, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x5f, 0x00,
  660. X   0x00, 0x80, 0xbf, 0x00, 0x7e, 0x80, 0x5f, 0x00, 0x7e, 0x80, 0xbf, 0x00,
  661. X   0x18, 0x80, 0x5f, 0x00, 0xb8, 0x82, 0xbf, 0x00, 0x58, 0x81, 0x5f, 0x00,
  662. X   0x98, 0x80, 0xbf, 0x00, 0x58, 0x80, 0x5f, 0x00, 0x98, 0x80, 0xbf, 0x00,
  663. X   0x58, 0x80, 0x5f, 0x00, 0x98, 0x80, 0xbf, 0x00, 0x58, 0x80, 0x5f, 0x00,
  664. X   0x98, 0x00, 0xaf, 0x00, 0x40, 0x00, 0x54, 0x00, 0x80, 0x00, 0xa8, 0x00,
  665. X   0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00
  666. X};
  667. X
  668. X#define UnStick_width 32
  669. X#define UnStick_height 32
  670. Xstatic char UnStick_bits[] = {
  671. X   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
  672. X   0x38, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00,
  673. X   0x5e, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
  674. X   0xbe, 0xf8, 0xff, 0x0f, 0x7e, 0xfe, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0x1f,
  675. X   0xfe, 0xff, 0xff, 0x5f, 0x7e, 0xfe, 0xff, 0xbf, 0xbc, 0xfd, 0xff, 0x5f,
  676. X   0xd8, 0xaa, 0xaa, 0xaa, 0x58, 0x51, 0x55, 0x55, 0xbc, 0x80, 0xaa, 0x2a,
  677. X   0x7e, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00,
  678. X   0xa0, 0x02, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00,
  679. X   0x18, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00,
  680. X   0x98, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
  681. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  682. X};
  683. X#endif SMALL_IMAGES
  684. X
  685. X/*
  686. X *    Images for Virtual Window Menu
  687. X */
  688. X#define ArwUpLeft_width 16
  689. X#define ArwUpLeft_height 14
  690. Xstatic char ArwUpLeft_bits[] = {
  691. X0xfe,0x07, 0x02,0x02, 0x02,0x01, 0x82,0x00, 0x02,0x01, 0x02,0x02, 0x12,0x04,
  692. X0x2a,0x08, 0x46,0x10, 0x82,0x20, 0x00,0x11, 0x00,0x0a, 0x00,0x04, 0x00,0x00,
  693. X};
  694. X
  695. X#define ArwLeft_width 16
  696. X#define ArwLeft_height 14
  697. Xstatic char ArwLeft_bits[] = {
  698. X0x80,0x00, 0xc0,0x00, 0xa0,0x00, 0x90,0x00, 0x88,0x7f, 0x04,0x40, 0x02,0x40,
  699. X0x04,0x40, 0x88,0x7f, 0x90,0x00, 0xa0,0x00, 0xc0,0x00, 0x80,0x00, 0x00,0x00,
  700. X};
  701. X
  702. X#define ArwDownLeft_width 16
  703. X#define ArwDownLeft_height 14
  704. Xstatic char ArwDownLeft_bits[] = {
  705. X0x00,0x00, 0x00,0x04, 0x00,0x0a, 0x00,0x11, 0x82,0x20, 0x46,0x10, 0x2a,0x08,
  706. X0x12,0x04, 0x02,0x02, 0x02,0x01, 0x82,0x00, 0x02,0x01, 0x02,0x02, 0xfe,0x07,
  707. X};
  708. X
  709. X#define ArwUp_width 16
  710. X#define ArwUp_height 14
  711. Xstatic char ArwUp_bits[] = {
  712. X0x80,0x00, 0x40,0x01, 0x20,0x02, 0x10,0x04, 0x08,0x08, 0x04,0x10, 0x3e,0x3e,
  713. X0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0xe0,0x03,
  714. X};
  715. X
  716. X#define ArwHome_width 16
  717. X#define ArwHome_height 14
  718. Xstatic char ArwHome_bits[] = {
  719. X0x80,0x00, 0x40,0x0d, 0x20,0x0e, 0x10,0x0c, 0x08,0x08, 0x04,0x10, 0xfe,0x3f,
  720. X0x04,0x10, 0x74,0x17, 0x54,0x15, 0x54,0x17, 0x54,0x10, 0xfc,0x1f, 0x00,0x00,
  721. X};
  722. X
  723. X#define ArwDown_width 16
  724. X#define ArwDown_height 14
  725. Xstatic char ArwDown_bits[] = {
  726. X0xe0,0x03, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02, 0x20,0x02,
  727. X0x3e,0x3e, 0x04,0x10, 0x08,0x08, 0x10,0x04, 0x20,0x02, 0x40,0x01, 0x80,0x00,
  728. X};
  729. X
  730. X#define ArwUpRight_width 16
  731. X#define ArwUpRight_height 14
  732. Xstatic char ArwUpRight_bits[] = {
  733. X0xe0,0x7f, 0x40,0x40, 0x80,0x40, 0x00,0x41, 0x80,0x40, 0x40,0x40, 0x20,0x48,
  734. X0x10,0x54, 0x08,0x62, 0x04,0x41, 0x88,0x00, 0x50,0x00, 0x20,0x00, 0x00,0x00,
  735. X};
  736. X
  737. X#define ArwRight_width 16
  738. X#define ArwRight_height 14
  739. Xstatic char ArwRight_bits[] = {
  740. X0x00,0x01, 0x00,0x03, 0x00,0x05, 0x00,0x09, 0xfe,0x11, 0x02,0x20, 0x02,0x40,
  741. X0x02,0x20, 0xfe,0x11, 0x00,0x09, 0x00,0x05, 0x00,0x03, 0x00,0x01, 0x00,0x00,
  742. X};
  743. X
  744. X#define ArwDownRight_width 16
  745. X#define ArwDownRight_height 14
  746. Xstatic char ArwDownRight_bits[] = {
  747. X0x00,0x00, 0x20,0x00, 0x50,0x00, 0x88,0x00, 0x04,0x41, 0x08,0x62, 0x10,0x54,
  748. X0x20,0x48, 0x40,0x40, 0x80,0x40, 0x00,0x41, 0x80,0x40, 0x40,0x40, 0xe0,0x7f,
  749. X};
  750. X
  751. Xextern Button    openButton;
  752. X
  753. XButton *
  754. XMakeOpenButton(dpy, scrInfo)
  755. X    Display    *dpy;
  756. X    ScreenInfo    *scrInfo;
  757. X{
  758. XButton    *b;
  759. Xstatic int openbuttoninit = 0;
  760. X
  761. X    openbuttoninit++;
  762. X    b = (Button *) MemAlloc(sizeof(Button));
  763. X    *b = openButton;
  764. X    if (GRV.UseImageMenu == UseAll) {
  765. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  766. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  767. X                scrInfo->rootid,
  768. X                Open_bits, Open_width, Open_height,
  769. X                scrInfo->colorInfo.fgColor,
  770. X                scrInfo->colorInfo.bg1Color,
  771. X                scrInfo->depth);
  772. X    b->label[0].pixlabel->width = Open_width;
  773. X    b->label[0].pixlabel->height = Open_height;
  774. X    b->label[0].kind = ComboLabel;
  775. X    b->label[1].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  776. X    b->label[1].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  777. X                scrInfo->rootid,
  778. X                Close_bits, Close_width, Close_height,
  779. X                scrInfo->colorInfo.fgColor,
  780. X                scrInfo->colorInfo.bg1Color,
  781. X                scrInfo->depth);
  782. X    b->label[1].pixlabel->width = Close_width;
  783. X    b->label[1].pixlabel->height = Close_height;
  784. X    b->label[1].kind = ComboLabel;
  785. X    }
  786. X#ifdef OW_I18N_L3
  787. X    b->label[0].string = gettext(b->label[0].string);
  788. X    b->label[1].string = gettext(b->label[1].string);
  789. X#endif
  790. X    return b;
  791. X}
  792. X
  793. XButton *
  794. XMakeFullSizeButton(dpy, scrInfo)
  795. X    Display    *dpy;
  796. X    ScreenInfo    *scrInfo;
  797. X{
  798. XButton    *b;
  799. X
  800. X    b = (Button *) MemAlloc(sizeof(Button));
  801. X    *b = fullSizeButton;
  802. X    if (GRV.UseImageMenu == UseAll) {
  803. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  804. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  805. X                scrInfo->rootid,
  806. X                FullSize_bits, FullSize_width, FullSize_height,
  807. X                scrInfo->colorInfo.fgColor,
  808. X                scrInfo->colorInfo.bg1Color,
  809. X                scrInfo->depth);
  810. X    b->label[0].pixlabel->width = FullSize_width;
  811. X    b->label[0].pixlabel->height = FullSize_height;
  812. X    b->label[0].kind = ComboLabel;
  813. X    b->label[1].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  814. X    b->label[1].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  815. X                scrInfo->rootid, NormalSize_bits,
  816. X                NormalSize_width, NormalSize_height,
  817. X                scrInfo->colorInfo.fgColor,
  818. X                scrInfo->colorInfo.bg1Color,
  819. X                scrInfo->depth);
  820. X    b->label[1].pixlabel->width = NormalSize_width;
  821. X    b->label[1].pixlabel->height = NormalSize_height;
  822. X    b->label[1].kind = ComboLabel;
  823. X    }
  824. X#ifdef OW_I18N_L3
  825. X    b->label[0].string = gettext(b->label[0].string);
  826. X    b->label[1].string = gettext(b->label[1].string);
  827. X#endif
  828. X    return b;
  829. X}
  830. X
  831. XButton *
  832. XMakeStickyButton(dpy, scrInfo)
  833. X    Display    *dpy;
  834. X    ScreenInfo    *scrInfo;
  835. X{
  836. XButton    *b;
  837. X
  838. X    b = (Button *) MemAlloc(sizeof(Button));
  839. X    *b = stickyButton;
  840. X    if (GRV.UseImageMenu == UseAll) {
  841. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  842. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  843. X                scrInfo->rootid,
  844. X                Stick_bits, Stick_width, Stick_height,
  845. X                scrInfo->colorInfo.fgColor,
  846. X                scrInfo->colorInfo.bg1Color,
  847. X                scrInfo->depth);
  848. X    b->label[0].pixlabel->width = Stick_width;
  849. X    b->label[0].pixlabel->height = Stick_height;
  850. X    b->label[0].kind = ComboLabel;
  851. X    b->label[1].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  852. X    b->label[1].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  853. X                scrInfo->rootid, UnStick_bits,
  854. X                UnStick_width, UnStick_height,
  855. X                scrInfo->colorInfo.fgColor,
  856. X                scrInfo->colorInfo.bg1Color,
  857. X                scrInfo->depth);
  858. X    b->label[1].pixlabel->width = UnStick_width;
  859. X    b->label[1].pixlabel->height = UnStick_height;
  860. X    b->label[1].kind = ComboLabel;
  861. X    }
  862. X#ifdef OW_I18N_L3
  863. X    b->label[0].string = gettext(b->label[0].string);
  864. X    b->label[1].string = gettext(b->label[1].string);
  865. X#endif
  866. X    return b;
  867. X}
  868. X
  869. XButton *
  870. XMakePropertiesButton(dpy, scrInfo)
  871. X    Display    *dpy;
  872. X    ScreenInfo    *scrInfo;
  873. X{
  874. XButton    *b;
  875. X
  876. X    b = (Button *) MemAlloc(sizeof(Button));
  877. X    *b = propertiesButton;
  878. X    if (GRV.UseImageMenu == UseAll) {
  879. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  880. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  881. X                scrInfo->rootid,
  882. X                Props_bits, Props_width, Props_height,
  883. X                scrInfo->colorInfo.fgColor,
  884. X                scrInfo->colorInfo.bg1Color,
  885. X                scrInfo->depth);
  886. X    b->label[0].pixlabel->width = Props_width;
  887. X    b->label[0].pixlabel->height = Props_height;
  888. X    b->label[0].kind = ComboLabel;
  889. X    }
  890. X#ifdef OW_I18N_L3
  891. X    b->label[0].string = gettext(b->label[0].string);
  892. X    b->label[1].string = gettext(b->label[1].string);
  893. X#endif
  894. X    return b;
  895. X}
  896. X
  897. XButton *
  898. XMakeBackButton(dpy, scrInfo)
  899. X    Display    *dpy;
  900. X    ScreenInfo    *scrInfo;
  901. X{
  902. XButton    *b;
  903. X
  904. X    b = (Button *) MemAlloc(sizeof(Button));
  905. X    *b = backButton;
  906. X    if (GRV.UseImageMenu == UseAll) {
  907. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  908. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  909. X                scrInfo->rootid,
  910. X                Back_bits, Back_width, Back_height,
  911. X                scrInfo->colorInfo.fgColor,
  912. X                scrInfo->colorInfo.bg1Color,
  913. X                scrInfo->depth);
  914. X    b->label[0].pixlabel->width = Back_width;
  915. X    b->label[0].pixlabel->height = Back_height;
  916. X    b->label[0].kind = ComboLabel;
  917. X    }
  918. X#ifdef OW_I18N_L3
  919. X    b->label[0].string = gettext(b->label[0].string);
  920. X    b->label[1].string = gettext(b->label[1].string);
  921. X#endif
  922. X    return b;
  923. X}
  924. X
  925. XButton *
  926. XMakeResizeButton(dpy, scrInfo)
  927. X    Display    *dpy;
  928. X    ScreenInfo    *scrInfo;
  929. X{
  930. XButton    *b;
  931. X
  932. X    b = (Button *) MemAlloc(sizeof(Button));
  933. X    *b = resizeButton;
  934. X    if (GRV.UseImageMenu == UseAll) {
  935. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  936. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  937. X                scrInfo->rootid,
  938. X                Resize_bits, Resize_width, Resize_height,
  939. X                scrInfo->colorInfo.fgColor,
  940. X                scrInfo->colorInfo.bg1Color,
  941. X                scrInfo->depth);
  942. X    b->label[0].pixlabel->width = Resize_width;
  943. X    b->label[0].pixlabel->height = Resize_height;
  944. X    b->label[0].kind = ComboLabel;
  945. X    }
  946. X#ifdef OW_I18N_L3
  947. X    b->label[0].string = gettext(b->label[0].string);
  948. X    b->label[1].string = gettext(b->label[1].string);
  949. X#endif
  950. X    return b;
  951. X}
  952. X
  953. XButton *
  954. XMakeMoveButton(dpy, scrInfo)
  955. X    Display    *dpy;
  956. X    ScreenInfo    *scrInfo;
  957. X{
  958. XButton    *b;
  959. X
  960. X    b = (Button *) MemAlloc(sizeof(Button));
  961. X    *b = moveButton;
  962. X    if (GRV.UseImageMenu == UseAll) {
  963. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  964. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  965. X                scrInfo->rootid,
  966. X                Move_bits, Move_width, Move_height,
  967. X                scrInfo->colorInfo.fgColor,
  968. X                scrInfo->colorInfo.bg1Color,
  969. X                scrInfo->depth);
  970. X    b->label[0].pixlabel->width = Move_width;
  971. X    b->label[0].pixlabel->height = Move_height;
  972. X    b->label[0].kind = ComboLabel;
  973. X    }
  974. X#ifdef OW_I18N_L3
  975. X    b->label[0].string = gettext(b->label[0].string);
  976. X    b->label[1].string = gettext(b->label[1].string);
  977. X#endif
  978. X    return b;
  979. X}
  980. X
  981. XButton *
  982. XMakeQuitButton(dpy, scrInfo)
  983. X    Display    *dpy;
  984. X    ScreenInfo    *scrInfo;
  985. X{
  986. XButton    *b;
  987. X
  988. X    b = (Button *) MemAlloc(sizeof(Button));
  989. X    *b = quitButton;
  990. X    if (GRV.UseImageMenu == UseAll) {
  991. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  992. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  993. X                scrInfo->rootid,
  994. X                Quit_bits, Quit_width, Quit_height,
  995. X                scrInfo->colorInfo.fgColor,
  996. X                scrInfo->colorInfo.bg1Color,
  997. X                scrInfo->depth);
  998. X    b->label[0].pixlabel->width = Quit_width;
  999. X    b->label[0].pixlabel->height = Quit_height;
  1000. X    b->label[0].kind = ComboLabel;
  1001. X    }
  1002. X#ifdef OW_I18N_L3
  1003. X    b->label[0].string = gettext(b->label[0].string);
  1004. X    b->label[1].string = gettext(b->label[1].string);
  1005. X#endif
  1006. X    return b;
  1007. X}
  1008. X
  1009. XButton *
  1010. XMakeRefreshButton(dpy, scrInfo)
  1011. X    Display    *dpy;
  1012. X    ScreenInfo    *scrInfo;
  1013. X{
  1014. XButton    *b;
  1015. X
  1016. X    b = (Button *) MemAlloc(sizeof(Button));
  1017. X    *b = refreshButton;
  1018. X    if (GRV.UseImageMenu == UseAll) {
  1019. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1020. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1021. X                scrInfo->rootid,
  1022. X                Refresh_bits, Refresh_width, Refresh_height,
  1023. X                scrInfo->colorInfo.fgColor,
  1024. X                scrInfo->colorInfo.bg1Color,
  1025. X                scrInfo->depth);
  1026. X    b->label[0].pixlabel->width = Refresh_width;
  1027. X    b->label[0].pixlabel->height = Refresh_height;
  1028. X    b->label[0].kind = ComboLabel;
  1029. X    }
  1030. X#ifdef OW_I18N_L3
  1031. X    b->label[0].string = gettext(b->label[0].string);
  1032. X    b->label[1].string = gettext(b->label[1].string);
  1033. X#endif
  1034. X    return b;
  1035. X}
  1036. X
  1037. XButton *
  1038. XMakeDismissButton(dpy, scrInfo)
  1039. X    Display    *dpy;
  1040. X    ScreenInfo    *scrInfo;
  1041. X{
  1042. XButton    *b;
  1043. X
  1044. X    b = (Button *) MemAlloc(sizeof(Button));
  1045. X    *b = dismissButton;
  1046. X#ifdef OW_I18N_L3
  1047. X    b->label[0].string = gettext(b->label[0].string);
  1048. X    b->label[1].string = gettext(b->label[1].string);
  1049. X#endif
  1050. X    return b;
  1051. X}
  1052. X
  1053. XButton *
  1054. XMakeDismissAllButton(dpy, scrInfo)
  1055. X    Display    *dpy;
  1056. X    ScreenInfo    *scrInfo;
  1057. X{
  1058. XButton    *b;
  1059. X
  1060. X    b = (Button *) MemAlloc(sizeof(Button));
  1061. X    *b = dismissAllButton;
  1062. X#ifdef OW_I18N_L3
  1063. X    b->label[0].string = gettext(b->label[0].string);
  1064. X    b->label[1].string = gettext(b->label[1].string);
  1065. X#endif
  1066. X    return b;
  1067. X}
  1068. X
  1069. XButton *
  1070. XMakeDismissThisButton(dpy, scrInfo)
  1071. X    Display    *dpy;
  1072. X    ScreenInfo    *scrInfo;
  1073. X{
  1074. XButton    *b;
  1075. X
  1076. X    b = (Button *) MemAlloc(sizeof(Button));
  1077. X    *b = dismissThisButton;
  1078. X#ifdef OW_I18N_L3
  1079. X    b->label[0].string = gettext(b->label[0].string);
  1080. X    b->label[1].string = gettext(b->label[1].string);
  1081. X#endif
  1082. X    return b;
  1083. X}
  1084. X
  1085. XButton *
  1086. XMakeOwnerButton(dpy, scrInfo)
  1087. X    Display    *dpy;
  1088. X    ScreenInfo    *scrInfo;
  1089. X{
  1090. XButton    *b;
  1091. X
  1092. X    b = (Button *) MemAlloc(sizeof(Button));
  1093. X    *b = ownerButton;
  1094. X#ifdef OW_I18N_L3
  1095. X    b->label[0].string = gettext(b->label[0].string);
  1096. X    b->label[1].string = gettext(b->label[1].string);
  1097. X#endif
  1098. X    return b;
  1099. X}
  1100. X
  1101. XButton *
  1102. XMakeUpLeftButton(dpy, scrInfo)
  1103. X    Display    *dpy;
  1104. X    ScreenInfo    *scrInfo;
  1105. X{
  1106. XButton    *b;
  1107. X
  1108. X    b = (Button *) MemAlloc(sizeof(Button));
  1109. X    *b = moveUpLeftButton;
  1110. X    if (GRV.UseImageMenu != UseNone) {
  1111. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1112. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1113. X                scrInfo->rootid, ArwUpLeft_bits,
  1114. X                ArwUpLeft_width, ArwUpLeft_height,
  1115. X                scrInfo->colorInfo.fgColor,
  1116. X                scrInfo->colorInfo.bg1Color,
  1117. X                scrInfo->depth);
  1118. X    b->label[0].pixlabel->width = ArwUpLeft_width;
  1119. X    b->label[0].pixlabel->height = ArwUpLeft_height;
  1120. X    b->label[0].kind = ImageLabel;
  1121. X    }
  1122. X#ifdef OW_I18N_L3
  1123. X    b->label[0].string = gettext(b->label[0].string);
  1124. X    b->label[1].string = gettext(b->label[1].string);
  1125. X#endif
  1126. X    return b;
  1127. X}
  1128. X
  1129. XButton *
  1130. XMakeLeftButton(dpy, scrInfo)
  1131. X    Display    *dpy;
  1132. X    ScreenInfo    *scrInfo;
  1133. X{
  1134. XButton    *b;
  1135. X
  1136. X    b = (Button *) MemAlloc(sizeof(Button));
  1137. X    *b = moveLeftButton;
  1138. X    if (GRV.UseImageMenu != UseNone) {
  1139. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1140. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1141. X                scrInfo->rootid,
  1142. X                ArwLeft_bits, ArwLeft_width, ArwLeft_height,
  1143. X                scrInfo->colorInfo.fgColor,
  1144. X                scrInfo->colorInfo.bg1Color,
  1145. X                scrInfo->depth);
  1146. X    b->label[0].pixlabel->width = ArwLeft_width;
  1147. X    b->label[0].pixlabel->height = ArwLeft_height;
  1148. X    b->label[0].kind = ImageLabel;
  1149. X    }
  1150. X#ifdef OW_I18N_L3
  1151. X    b->label[0].string = gettext(b->label[0].string);
  1152. X    b->label[1].string = gettext(b->label[1].string);
  1153. X#endif
  1154. X    return b;
  1155. X}
  1156. X
  1157. XButton *
  1158. XMakeDownLeftButton(dpy, scrInfo)
  1159. X    Display    *dpy;
  1160. X    ScreenInfo    *scrInfo;
  1161. X{
  1162. XButton    *b;
  1163. X
  1164. X    b = (Button *) MemAlloc(sizeof(Button));
  1165. X    *b = moveDownLeftButton;
  1166. X    if (GRV.UseImageMenu != UseNone) {
  1167. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1168. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1169. X                scrInfo->rootid, ArwDownLeft_bits,
  1170. X                ArwDownLeft_width, ArwDownLeft_height,
  1171. X                scrInfo->colorInfo.fgColor,
  1172. X                scrInfo->colorInfo.bg1Color,
  1173. X                scrInfo->depth);
  1174. X    b->label[0].pixlabel->width = ArwDownLeft_width;
  1175. X    b->label[0].pixlabel->height = ArwDownLeft_height;
  1176. X    b->label[0].kind = ImageLabel;
  1177. X    }
  1178. X#ifdef OW_I18N_L3
  1179. X    b->label[0].string = gettext(b->label[0].string);
  1180. X    b->label[1].string = gettext(b->label[1].string);
  1181. X#endif
  1182. X    return b;
  1183. X}
  1184. X
  1185. XButton *
  1186. XMakeUpButton(dpy, scrInfo)
  1187. X    Display    *dpy;
  1188. X    ScreenInfo    *scrInfo;
  1189. X{
  1190. XButton    *b;
  1191. X
  1192. X    b = (Button *) MemAlloc(sizeof(Button));
  1193. X    *b = moveUpButton;
  1194. X    if (GRV.UseImageMenu != UseNone) {
  1195. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1196. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1197. X                scrInfo->rootid,
  1198. X                ArwUp_bits, ArwUp_width, ArwUp_height,
  1199. X                scrInfo->colorInfo.fgColor,
  1200. X                scrInfo->colorInfo.bg1Color,
  1201. X                scrInfo->depth);
  1202. X    b->label[0].pixlabel->width = ArwUp_width;
  1203. X    b->label[0].pixlabel->height = ArwUp_height;
  1204. X    b->label[0].kind = ImageLabel;
  1205. X    }
  1206. X#ifdef OW_I18N_L3
  1207. X    b->label[0].string = gettext(b->label[0].string);
  1208. X    b->label[1].string = gettext(b->label[1].string);
  1209. X#endif
  1210. X    return b;
  1211. X}
  1212. X
  1213. XButton *
  1214. XMakeHomeButton(dpy, scrInfo)
  1215. X    Display    *dpy;
  1216. X    ScreenInfo    *scrInfo;
  1217. X{
  1218. XButton    *b;
  1219. X
  1220. X    b = (Button *) MemAlloc(sizeof(Button));
  1221. X    *b = moveHomeButton;
  1222. X    if (GRV.UseImageMenu != UseNone) {
  1223. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1224. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1225. X                scrInfo->rootid,
  1226. X                ArwHome_bits, ArwHome_width, ArwHome_height,
  1227. X                scrInfo->colorInfo.fgColor,
  1228. X                scrInfo->colorInfo.bg1Color,
  1229. X                scrInfo->depth);
  1230. X    b->label[0].pixlabel->width = ArwHome_width;
  1231. X    b->label[0].pixlabel->height = ArwHome_height;
  1232. X    b->label[0].kind = ImageLabel;
  1233. X    }
  1234. X#ifdef OW_I18N_L3
  1235. X    b->label[0].string = gettext(b->label[0].string);
  1236. X    b->label[1].string = gettext(b->label[1].string);
  1237. X#endif
  1238. X    return b;
  1239. X}
  1240. X
  1241. XButton *
  1242. XMakeDownButton(dpy, scrInfo)
  1243. X    Display    *dpy;
  1244. X    ScreenInfo    *scrInfo;
  1245. X{
  1246. XButton    *b;
  1247. X
  1248. X    b = (Button *) MemAlloc(sizeof(Button));
  1249. X    *b = moveDownButton;
  1250. X    if (GRV.UseImageMenu != UseNone) {
  1251. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1252. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1253. X                scrInfo->rootid,
  1254. X                ArwDown_bits, ArwDown_width, ArwDown_height,
  1255. X                scrInfo->colorInfo.fgColor,
  1256. X                scrInfo->colorInfo.bg1Color,
  1257. X                scrInfo->depth);
  1258. X    b->label[0].pixlabel->width = ArwDown_width;
  1259. X    b->label[0].pixlabel->height = ArwDown_height;
  1260. X    b->label[0].kind = ImageLabel;
  1261. X    }
  1262. X#ifdef OW_I18N_L3
  1263. X    b->label[0].string = gettext(b->label[0].string);
  1264. X    b->label[1].string = gettext(b->label[1].string);
  1265. X#endif
  1266. X    return b;
  1267. X}
  1268. X
  1269. XButton *
  1270. XMakeUpRightButton(dpy, scrInfo)
  1271. X    Display    *dpy;
  1272. X    ScreenInfo    *scrInfo;
  1273. X{
  1274. XButton    *b;
  1275. X
  1276. X    b = (Button *) MemAlloc(sizeof(Button));
  1277. X    *b = moveUpRightButton;
  1278. X    if (GRV.UseImageMenu != UseNone) {
  1279. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1280. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1281. X                scrInfo->rootid, ArwUpRight_bits,
  1282. X                ArwUpRight_width, ArwUpRight_height,
  1283. X                scrInfo->colorInfo.fgColor,
  1284. X                scrInfo->colorInfo.bg1Color,
  1285. X                scrInfo->depth);
  1286. X    b->label[0].pixlabel->width = ArwUpRight_width;
  1287. X    b->label[0].pixlabel->height = ArwUpRight_height;
  1288. X    b->label[0].kind = ImageLabel;
  1289. X    }
  1290. X#ifdef OW_I18N_L3
  1291. X    b->label[0].string = gettext(b->label[0].string);
  1292. X    b->label[1].string = gettext(b->label[1].string);
  1293. X#endif
  1294. X    return b;
  1295. X}
  1296. X
  1297. XButton *
  1298. XMakeRightButton(dpy, scrInfo)
  1299. X    Display    *dpy;
  1300. X    ScreenInfo    *scrInfo;
  1301. X{
  1302. XButton    *b;
  1303. X
  1304. X    b = (Button *) MemAlloc(sizeof(Button));
  1305. X    *b = moveRightButton;
  1306. X    if (GRV.UseImageMenu != UseNone) {
  1307. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1308. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1309. X                scrInfo->rootid,
  1310. X                ArwRight_bits, ArwRight_width, ArwRight_height,
  1311. X                scrInfo->colorInfo.fgColor,
  1312. X                scrInfo->colorInfo.bg1Color,
  1313. X                scrInfo->depth);
  1314. X    b->label[0].pixlabel->width = ArwRight_width;
  1315. X    b->label[0].pixlabel->height = ArwRight_height;
  1316. X    b->label[0].kind = ImageLabel;
  1317. X    }
  1318. X#ifdef OW_I18N_L3
  1319. X    b->label[0].string = gettext(b->label[0].string);
  1320. X    b->label[1].string = gettext(b->label[1].string);
  1321. X#endif
  1322. X    return b;
  1323. X}
  1324. X
  1325. XButton *
  1326. XMakeDownRightButton(dpy, scrInfo)
  1327. X    Display    *dpy;
  1328. X    ScreenInfo    *scrInfo;
  1329. X{
  1330. XButton    *b;
  1331. X
  1332. X    b = (Button *) MemAlloc(sizeof(Button));
  1333. X    *b = moveDownRightButton;
  1334. X    if (GRV.UseImageMenu != UseNone) {
  1335. X    b->label[0].pixlabel = (Pixlabel *) MemAlloc(sizeof(Pixlabel));
  1336. X    b->label[0].pixlabel->pixmap = XCreatePixmapFromBitmapData(dpy,
  1337. X                scrInfo->rootid, ArwDownRight_bits,
  1338. X                ArwDownRight_width, ArwDownRight_height,
  1339. X                scrInfo->colorInfo.fgColor,
  1340. X                scrInfo->colorInfo.bg1Color,
  1341. X                scrInfo->depth);
  1342. X    b->label[0].pixlabel->width = ArwDownRight_width;
  1343. X    b->label[0].pixlabel->height = ArwDownRight_height;
  1344. X    b->label[0].kind = ImageLabel;
  1345. X    }
  1346. X#ifdef OW_I18N_L3
  1347. X    b->label[0].string = gettext(b->label[0].string);
  1348. X    b->label[1].string = gettext(b->label[1].string);
  1349. X#endif
  1350. X    return b;
  1351. X}
  1352. END_OF_FILE
  1353. if test 38892 -ne `wc -c <'images.c'`; then
  1354.     echo shar: \"'images.c'\" unpacked with wrong size!
  1355. fi
  1356. # end of 'images.c'
  1357. fi
  1358. if test -f 'winipane.c' -a "${1}" != "-c" ; then 
  1359.   echo shar: Will not clobber existing file \"'winipane.c'\"
  1360. else
  1361. echo shar: Extracting \"'winipane.c'\" \(12968 characters\)
  1362. sed "s/^X//" >'winipane.c' <<'END_OF_FILE'
  1363. X/*
  1364. X *      (c) Copyright 1989, 1990 Sun Microsystems, Inc. Sun design patents
  1365. X *      pending in the U.S. and foreign countries. See LEGAL_NOTICE
  1366. X *      file for terms of the license.
  1367. X */
  1368. X
  1369. X#ident    "@(#)winipane.c    1.1 olvwm version 1/3/92"
  1370. X
  1371. X/*
  1372. X * Based on
  1373. X#ident    "@(#)winipane.c    26.22    91/09/14 SMI"
  1374. X *
  1375. X */
  1376. X
  1377. X#include <errno.h>
  1378. X#include <stdio.h>
  1379. X#include <X11/Xos.h>
  1380. X#include <X11/Xlib.h>
  1381. X#include <X11/Xutil.h>
  1382. X#include <X11/Xatom.h>
  1383. X#include <olgx/olgx.h>
  1384. X
  1385. X#include "i18n.h"
  1386. X#include "ollocale.h"
  1387. X#include "mem.h"
  1388. X#include "olwm.h"
  1389. X#include "win.h"
  1390. X#include "menu.h"
  1391. X#include "globals.h"
  1392. X#include "events.h"
  1393. X
  1394. X/***************************************************************************
  1395. X* global data
  1396. X***************************************************************************/
  1397. X
  1398. Xextern Atom AtomChangeState;
  1399. Xextern Atom AtomColorMapWindows;
  1400. Xextern Atom AtomOlwmTimestamp;
  1401. Xextern Window NoFocusWin;
  1402. X
  1403. X/***************************************************************************
  1404. X* private data
  1405. X***************************************************************************/
  1406. X
  1407. X/* border width for reparented windows */
  1408. X#define NORMAL_BORDERWIDTH      0
  1409. X
  1410. X/* This event maks if for wm-created icon panes. */
  1411. X#define ICON_EVENT_MASK        (ButtonPressMask | ButtonReleaseMask | \
  1412. X                 ButtonMotionMask | ExposureMask | \
  1413. X                 EnterWindowMask)
  1414. X
  1415. X/* This event mask is for clients who handle their own icons. */
  1416. X#define ICON_EVENT_MASK_2        (ButtonPressMask | ButtonReleaseMask | \
  1417. X                  ButtonMotionMask | EnterWindowMask)
  1418. X
  1419. Xstatic ClassPane classIconPane;
  1420. X
  1421. X#define IPANE_DEFAULT_PIXMAP(w) (w)->core.client->scrInfo->pixmap[ICON_BITMAP]
  1422. X#define IPANE_DEFAULT_MASK(w)     (w)->core.client->scrInfo->pixmap[ICON_MASK]
  1423. X
  1424. X/***************************************************************************
  1425. X* private functions
  1426. X***************************************************************************/
  1427. X
  1428. X/*
  1429. X * drawIPane -- draw the pane window
  1430. X */
  1431. X/*ARGSUSED*/    /* dpy arg will be used when multiple Displays supported */
  1432. Xstatic int
  1433. XdrawIPane(dpy, winInfo)
  1434. XDisplay    *dpy;
  1435. XWinIconPane *winInfo;
  1436. X{
  1437. X    Window     pane = winInfo->core.self;
  1438. X    Client     *cli = winInfo->core.client;
  1439. X    GC         gc;
  1440. X    XGCValues gcv;
  1441. X
  1442. X    if (winInfo->iconClientWindow) {
  1443. X    if (winInfo->core.client->flags & CLOlwmOwned) {
  1444. X        XFillRectangle(dpy, pane, WinGC(winInfo, WORKSPACE_GC),
  1445. X               0, 0, winInfo->core.width, winInfo->core.height);
  1446. X        gc = WinGC(winInfo, ICON_MASK_GC);
  1447. X        XSetClipMask(dpy, gc, winInfo->iconMask);
  1448. X        XSetBackground(dpy, gc,
  1449. X               winInfo->core.client->scrInfo->colorInfo.vIconColor);
  1450. X            XCopyPlane(dpy, winInfo->iconPixmap, pane, gc,
  1451. X            0, 0, winInfo->core.width, winInfo->core.height,
  1452. X            0, 0, (unsigned long)1L);
  1453. X        XSetClipMask(dpy, gc, None);
  1454. X        XSetBackground(dpy, gc,
  1455. X               winInfo->core.client->scrInfo->colorInfo.bgColor);
  1456. X    }
  1457. X    return;
  1458. X    }
  1459. X
  1460. X    XFillRectangle(dpy, pane, WinGC(winInfo,WORKSPACE_GC),
  1461. X        0, 0, winInfo->core.width, winInfo->core.height);
  1462. X
  1463. X    /*
  1464. X     * REMIND: (1) Need to error-check icon pixmap and mask for being the 
  1465. X     * proper depth.  (2) Need to handle color changes better.  Should we use 
  1466. X     * a different GC?
  1467. X     */
  1468. X    gc = WinGC(winInfo,ICON_NORMAL_GC);
  1469. X
  1470. X    if (winInfo->iconMask != None) {
  1471. X    gc = WinGC(winInfo,ICON_MASK_GC);
  1472. X    XSetClipMask(dpy, gc, winInfo->iconMask);
  1473. X    }
  1474. X
  1475. X    XCopyPlane(dpy, winInfo->iconPixmap, pane, gc,
  1476. X        0, 0, winInfo->core.width, winInfo->core.height,
  1477. X        0, 0, (unsigned long)1L);
  1478. X
  1479. X    if (winInfo->iconMask != None) {
  1480. X    XSetClipMask(dpy, gc, None);
  1481. X    }
  1482. X}
  1483. X
  1484. X
  1485. X/*
  1486. X * focusIPane -- handle focus change
  1487. X */
  1488. Xstatic int
  1489. XfocusIPane(dpy, winInfo, focus)
  1490. XDisplay    *dpy;
  1491. XWinGeneric *winInfo;
  1492. XBool focus;
  1493. X{
  1494. X    /* REMIND: change background pixel of pane window */
  1495. X}
  1496. X
  1497. X/*
  1498. X * destroyIPane -- destroy the pane window resources and free any allocated
  1499. X *    data.
  1500. X */
  1501. Xstatic int
  1502. XdestroyIPane(dpy, winInfo)
  1503. XDisplay    *dpy;
  1504. XWinIconPane *winInfo;
  1505. X{
  1506. X    /* free our data and throw away window */
  1507. X        if (!winInfo->iconClientWindow)
  1508. X    {
  1509. X          /* REMIND there may be other resources to be freed */
  1510. X              DestroyWindow(winInfo);
  1511. X    }
  1512. X    else WIUninstallInfo(winInfo->core.self);
  1513. X    MemFree(winInfo);
  1514. X}
  1515. X
  1516. X/*
  1517. X * setconfigIPane -- change configuration of pane window
  1518. X */
  1519. X/*ARGSUSED*/    /* dpy arg will be used when multiple Displays supported */
  1520. Xstatic int
  1521. XsetconfigIPane(dpy, winInfo)
  1522. XDisplay    *dpy;
  1523. XWinIconPane *winInfo;
  1524. X{
  1525. X        XWindowChanges xwc;
  1526. X
  1527. X        if (winInfo->core.dirtyconfig)
  1528. X        {
  1529. X                xwc.x = winInfo->core.x;
  1530. X                xwc.y = winInfo->core.y;
  1531. X                xwc.width = winInfo->core.width;
  1532. X                xwc.height = winInfo->core.height;
  1533. X                ConfigureWindow(dpy, winInfo,
  1534. X                        winInfo->core.dirtyconfig&(CWX|CWY|CWWidth|CWHeight), &xwc);
  1535. X                winInfo->core.dirtyconfig &= ~(CWX|CWY|CWWidth|CWHeight);
  1536. X        }
  1537. X}
  1538. X
  1539. X
  1540. X/* 
  1541. X * newconfigIPane - compute a new configuration given an event
  1542. X * Note:  this function must *always* be called with a configure request
  1543. X * event.
  1544. X */
  1545. Xstatic int
  1546. XnewconfigIPane(win, pxcre)
  1547. XWinIconPane *win;
  1548. XXConfigureRequestEvent *pxcre;
  1549. X{
  1550. X    int     oldWidth, oldHeight;
  1551. X    int     oldX, oldY;
  1552. X    WinIconFrame *winFrame = (WinIconFrame *)(win->core.parent);
  1553. X
  1554. X    if (pxcre == NULL)
  1555. X    return win->core.dirtyconfig;
  1556. X
  1557. X    oldX = win->core.x;
  1558. X    oldY = win->core.y;
  1559. X    oldWidth = win->core.width;
  1560. X    oldHeight = win->core.height;
  1561. X
  1562. X    if ((pxcre->value_mask & CWHeight) && (pxcre->height != oldHeight))
  1563. X    {
  1564. X    win->core.height = pxcre->height;
  1565. X    win->core.dirtyconfig |= CWHeight;
  1566. X    }
  1567. X
  1568. X    if ((pxcre->value_mask & CWWidth) && (pxcre->width != oldWidth))
  1569. X    {
  1570. X    win->core.width = pxcre->width;
  1571. X    win->core.dirtyconfig |= CWWidth;
  1572. X    }
  1573. X
  1574. X    if (pxcre->value_mask & CWBorderWidth)
  1575. X    {
  1576. X    win->pcore.oldBorderWidth = pxcre->border_width;
  1577. X    }
  1578. X
  1579. X    if (pxcre->value_mask & (CWX | CWY)) 
  1580. X    {
  1581. X    FrameSetPosFromPane(winFrame, (pxcre->value_mask & CWX)?(pxcre->x):oldX,
  1582. X        (pxcre->value_mask & CWY)?(pxcre->y):oldY);
  1583. X    }
  1584. X
  1585. X    if (pxcre->value_mask & (CWStackMode | CWSibling))
  1586. X    {
  1587. X    GFrameSetStack(winFrame, pxcre->value_mask, pxcre->detail, pxcre->above);
  1588. X    }
  1589. X
  1590. X    return win->core.dirtyconfig;
  1591. X}
  1592. X
  1593. X/* 
  1594. X * newposIPane - move to a given position (relative to parent)
  1595. X */
  1596. Xstatic int
  1597. XnewposIPane(win,x,y)
  1598. XWinIconPane *win;
  1599. Xint x, y;
  1600. X{
  1601. X    if (win->core.x != x)
  1602. X    {
  1603. X        win->core.x = x;
  1604. X        win->core.dirtyconfig |= CWX;
  1605. X    }
  1606. X
  1607. X    if (win->core.y != y)
  1608. X    {
  1609. X        win->core.y = y;
  1610. X        win->core.dirtyconfig |= CWY;
  1611. X    }
  1612. X
  1613. X    return win->core.dirtyconfig;
  1614. X}
  1615. X
  1616. X/* 
  1617. X * setsizeIPane - set the pane to a particular size, and initiate a reconfigure
  1618. X */
  1619. Xstatic int
  1620. XsetsizeIPane(win,w,h)
  1621. XWinIconPane *win;
  1622. Xint w, h;
  1623. X{
  1624. X    if (win->core.width != w)
  1625. X    {
  1626. X        win->core.width = w;
  1627. X        win->core.dirtyconfig |= CWWidth;
  1628. X    }
  1629. X
  1630. X    if (win->core.height != h)
  1631. X    {
  1632. X        win->core.height = h;
  1633. X        win->core.dirtyconfig |= CWHeight;
  1634. X    }
  1635. X}
  1636. X
  1637. Xstatic int
  1638. XeventEnterNotify(dpy, event, winInfo)
  1639. XDisplay        *dpy;
  1640. XXEvent        *event;
  1641. XWinIconPane    *winInfo;
  1642. X{
  1643. X    if (event->xany.type == EnterNotify)
  1644. X        ColorWindowCrossing(dpy, event, winInfo);
  1645. X}
  1646. X
  1647. X
  1648. X/***************************************************************************
  1649. X* global functions
  1650. X***************************************************************************/
  1651. X
  1652. X/*
  1653. X * MakeIconPane  -- create the pane window. Return a WinGeneric structure.
  1654. X */
  1655. XWinIconPane *
  1656. XMakeIconPane(cli,par,wmHints,fexisting)
  1657. XClient *cli;
  1658. XWinGeneric *par;
  1659. XXWMHints *wmHints;
  1660. XBool fexisting;
  1661. X{
  1662. X    WinIconPane *w;
  1663. X    WinIconFrame    *frame = (WinIconFrame *)par;
  1664. X    XSetWindowAttributes xswa;
  1665. X    XWindowAttributes attr;
  1666. X    long valuemask;
  1667. X    Window iconPane;
  1668. X    Window winRoot;
  1669. X    unsigned int borderWidth, depthReturn;
  1670. X    Display *dpy = cli->dpy;
  1671. X    int screen = cli->screen;
  1672. X    Status status;
  1673. X    WinGeneric *info;
  1674. X
  1675. X    /* create the associated structure */
  1676. X    w = MemNew(WinIconPane);
  1677. X    w->class = &classIconPane;
  1678. X    w->core.kind = WIN_ICONPANE;
  1679. X    WinAddChild(par,w);
  1680. X    w->core.children = NULL;
  1681. X    w->core.client = cli;
  1682. X    w->core.x = 0;
  1683. X    w->core.y = 0;
  1684. X    w->core.colormap = cli->scrInfo->colormap;
  1685. X    w->core.dirtyconfig = CWX|CWY|CWWidth|CWHeight;
  1686. X    w->core.exposures = NULL;
  1687. X    w->core.helpstring = "olwm:Icon";
  1688. X    w->iconClientWindow = False;
  1689. X    w->iconPixmap = None;
  1690. X    w->iconMask = None;
  1691. X
  1692. X    frame->fcore.panewin = (WinGenericPane *)w;
  1693. X
  1694. X    /* first try the client's icon window hint */
  1695. X
  1696. X    if (wmHints && (wmHints->flags & IconWindowHint)) {
  1697. X        iconPane = wmHints->icon_window;
  1698. X        info = WIGetInfo(iconPane);
  1699. X        if (info != NULL && info->core.kind != WIN_PANE) {
  1700. X        ErrorWarning(gettext(
  1701. X            "An existing window was named as an icon window."));
  1702. X        } else {
  1703. X        if (info != NULL)
  1704. X            StateWithdrawn(info->core.client);
  1705. X
  1706. X        status = XGetWindowAttributes(dpy, iconPane, &attr);
  1707. X        
  1708. X        if (status) {
  1709. X            w->core.x = attr.x;
  1710. X            w->core.y = attr.y;
  1711. X            w->core.width = attr.width;
  1712. X            w->core.height = attr.height;
  1713. X            w->core.colormap = attr.colormap;
  1714. X
  1715. X            w->iconClientWindow = True;
  1716. X            if (cli->flags & CLOlwmOwned)
  1717. X                XSelectInput(dpy, iconPane, ICON_EVENT_MASK);
  1718. X            else XSelectInput(dpy, iconPane, ICON_EVENT_MASK_2);
  1719. X            if (attr.border_width != NORMAL_BORDERWIDTH)
  1720. X            XSetWindowBorderWidth(dpy, iconPane,
  1721. X                          NORMAL_BORDERWIDTH);
  1722. X            goto goodicon;
  1723. X        }
  1724. X        ErrorWarning(gettext(
  1725. X            "An invalid window was named as an icon window."));
  1726. X        }
  1727. X    }
  1728. X
  1729. X    /* try the client's icon pixmap hint */
  1730. X
  1731. X    if (wmHints && (wmHints->flags & IconPixmapHint)) {
  1732. X        status = XGetGeometry(dpy, wmHints->icon_pixmap, &winRoot,
  1733. X        &(w->core.x), &(w->core.y),
  1734. X        &(w->core.width), &(w->core.height),
  1735. X        &borderWidth, &depthReturn);
  1736. X
  1737. X        if (status && depthReturn <= 1) {
  1738. X        /* build icon pixmap window */
  1739. X        xswa.border_pixel = 0;
  1740. X        xswa.colormap = cli->scrInfo->colormap;
  1741. X        xswa.event_mask = ICON_EVENT_MASK;
  1742. X        valuemask = CWBorderPixel | CWColormap | CWEventMask;
  1743. X
  1744. X        iconPane = XCreateWindow(dpy,WinRootID(par),
  1745. X            0, 0, w->core.width, w->core.height, 0, 
  1746. X            cli->scrInfo->depth, InputOutput, cli->scrInfo->visual,
  1747. X            valuemask, &xswa);
  1748. X
  1749. X        w->iconPixmap = wmHints->icon_pixmap;
  1750. X
  1751. X        /* check for the icon mask */
  1752. X
  1753. X        if (wmHints->flags & IconMaskHint) {
  1754. X            int junkx, junky;
  1755. X            unsigned int junkw, junkh;
  1756. X
  1757. X            status = XGetGeometry(dpy, wmHints->icon_mask, &winRoot,
  1758. X            &junkx, &junky, &junkw, &junkh,
  1759. X            &borderWidth, &depthReturn);
  1760. X
  1761. X            if (status && depthReturn == 1)
  1762. X            w->iconMask = wmHints->icon_mask;
  1763. X            else
  1764. X            ErrorWarning(gettext(
  1765. X                "An invalid pixmap was named as an icon mask"));
  1766. X        }
  1767. X        goto goodicon;
  1768. X
  1769. X        } else {
  1770. X        ErrorWarning(gettext(
  1771. X            "An invalid pixmap was named as an icon pixmap"));
  1772. X        }
  1773. X    }
  1774. X
  1775. X    /* use the default icon */
  1776. X
  1777. X    w->iconClientWindow = False;
  1778. X    w->iconPixmap = IPANE_DEFAULT_PIXMAP(w);
  1779. X    w->iconMask   = IPANE_DEFAULT_MASK(w);
  1780. X
  1781. X    w->core.x = w->core.y = 0;
  1782. X    w->core.width = cli->scrInfo->dfltIconWidth;
  1783. X    w->core.height = cli->scrInfo->dfltIconHeight;
  1784. X
  1785. X    xswa.border_pixel = 0;
  1786. X    xswa.colormap = cli->scrInfo->colormap;
  1787. X    xswa.event_mask = ICON_EVENT_MASK;
  1788. X    valuemask = CWBorderPixel | CWColormap | CWEventMask;
  1789. X    
  1790. X    iconPane = XCreateWindow(dpy, WinRootID(par),
  1791. X        0, 0, w->core.width, w->core.height, 0,
  1792. X        cli->scrInfo->depth, InputOutput, cli->scrInfo->visual,
  1793. X        valuemask, &xswa);
  1794. X
  1795. Xgoodicon:
  1796. X
  1797. X    w->core.self = iconPane;
  1798. X
  1799. X    /* set up icon cursor */
  1800. X    XDefineCursor(dpy, w->core.self, GRV.IconPointer);
  1801. X
  1802. X    /* register the window */
  1803. X    WIInstallInfo(w);
  1804. X
  1805. X    return w;
  1806. X}
  1807. X
  1808. X/*
  1809. X * IconPaneInit -- initialise the IconPane class function vector
  1810. X */
  1811. Xvoid
  1812. XIconPaneInit(dpy)
  1813. XDisplay *dpy;
  1814. X{
  1815. X    classIconPane.core.kind = WIN_ICONPANE;
  1816. X    classIconPane.core.xevents[Expose] = WinEventExpose;
  1817. X    classIconPane.core.xevents[ButtonRelease] = PropagateEventToParent;
  1818. X    classIconPane.core.xevents[MotionNotify] = PropagateEventToParent;
  1819. X    classIconPane.core.xevents[ButtonPress] = PropagateEventToParent;
  1820. X    classIconPane.core.xevents[EnterNotify] = eventEnterNotify;
  1821. X    classIconPane.core.focusfunc = focusIPane;
  1822. X    classIconPane.core.drawfunc = drawIPane;    /* NULL */
  1823. X    classIconPane.core.destroyfunc = destroyIPane;
  1824. X    classIconPane.core.selectfunc = drawIPane;    /* NULL */
  1825. X    classIconPane.core.newconfigfunc = newconfigIPane;
  1826. X    classIconPane.core.newposfunc = newposIPane;
  1827. X    classIconPane.core.setconfigfunc = setconfigIPane;
  1828. X    classIconPane.core.createcallback = NULL;
  1829. X    classIconPane.core.heightfunc = NULL;
  1830. X    classIconPane.core.widthfunc = NULL;
  1831. X    classIconPane.pcore.setsizefunc = setsizeIPane;
  1832. X}
  1833. X
  1834. X/*
  1835. X * Set the icon pane's pixmap.
  1836. X */
  1837. Xvoid
  1838. XIconPaneSetPixmap(dpy,winInfo,pixmap)
  1839. X    Display        *dpy;
  1840. X    WinIconPane    *winInfo;
  1841. X    Pixmap        pixmap;
  1842. X{
  1843. X    if (winInfo->iconClientWindow)
  1844. X        return;
  1845. X
  1846. X    if (pixmap == None || pixmap == winInfo->iconPixmap)
  1847. X        return;
  1848. X
  1849. X    if (winInfo->iconMask == IPANE_DEFAULT_MASK(winInfo))
  1850. X        winInfo->iconMask = None;
  1851. X
  1852. X    winInfo->iconPixmap = pixmap;
  1853. X}
  1854. X
  1855. X/*
  1856. X * Set the icon pane's mask.
  1857. X */
  1858. Xvoid
  1859. XIconPaneSetMask(dpy,winInfo,mask)
  1860. X    Display        *dpy;
  1861. X    WinIconPane    *winInfo;
  1862. X    Pixmap        mask;
  1863. X{
  1864. X    if (winInfo->iconClientWindow)
  1865. X        return;
  1866. X
  1867. X    if (mask == None || mask == winInfo->iconMask)
  1868. X        return;
  1869. X
  1870. X    if (winInfo->iconPixmap == IPANE_DEFAULT_PIXMAP(winInfo))
  1871. X        winInfo->iconPixmap = None;
  1872. X
  1873. X    winInfo->iconMask = mask;
  1874. X}
  1875. X
  1876. X
  1877. END_OF_FILE
  1878. if test 12968 -ne `wc -c <'winipane.c'`; then
  1879.     echo shar: \"'winipane.c'\" unpacked with wrong size!
  1880. fi
  1881. # end of 'winipane.c'
  1882. fi
  1883. echo shar: End of archive 5 \(of 21\).
  1884. cp /dev/null ark5isdone
  1885. MISSING=""
  1886. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
  1887.     if test ! -f ark${I}isdone ; then
  1888.     MISSING="${MISSING} ${I}"
  1889.     fi
  1890. done
  1891. if test "${MISSING}" = "" ; then
  1892.     echo You have unpacked all 21 archives.
  1893.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1894. else
  1895.     echo You still need to unpack the following archives:
  1896.     echo "        " ${MISSING}
  1897. fi
  1898. ##  End of shell archive.
  1899. exit 0
  1900. --
  1901. Molecular Simulations, Inc.             mail: dcmartin@postgres.berkeley.edu
  1902. 796 N. Pastoria Avenue                  uucp: uwvax!ucbvax!dcmartin
  1903. Sunnyvale, California 94086             at&t: 408/522-9236
  1904.