|
|
1.1 ! root 1: ! 2: ! 3: ! 4: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 5: ! 6: ! 7: ! 8: NAME ! 9: bitmap - bitmap editor for X window system ! 10: ! 11: ! 12: SYNOPSIS ! 13: bitmap filename [_d_i_m_e_n_s_i_o_n_s] [_h_o_s_t:_d_i_s_p_l_a_y] [=_g_e_o_m_e_t_r_y] ! 14: ! 15: ! 16: DESCRIPTION ! 17: _b_i_t_m_a_p lets you interactively create small bitmaps, or edit ! 18: previously created bitmaps. A bitmap is a small picture, ! 19: represented as a rectangular array of 0 and 1 bits. The X ! 20: window system uses bitmaps to represent cursors and icons, ! 21: among other things. ! 22: ! 23: When you run _b_i_t_m_a_p, you are given a magnified version of ! 24: the bitmap, with each pixel blown up into a large square, ! 25: like a piece of graph paper. You can then use the mouse to ! 26: set, clear, or invert individual pixels, and can invoke com- ! 27: mands to set, clear or invert larger rectangular areas of ! 28: the bitmap. Other commands allow you to move or copy rec- ! 29: tangular areas from one part of the bitmap to another, and ! 30: to define a `hot spot'--a special single point on the bit- ! 31: map, which is useful when the bitmap is used as an X cursor. ! 32: ! 33: The output of the _b_i_t_m_a_p program is a small program frag- ! 34: ment. By #include'ing such a program fragment in your C ! 35: program, you can easily declare the size and contents of ! 36: cursors, icons, and other bitmaps that your program creates ! 37: to deal with the X window system. ! 38: ! 39: When _b_i_t_m_a_p starts, it first tries to read the specified ! 40: file (see FILE FORMAT). If the file already exists, it ! 41: creates a window containing a grid of the appropriate dimen- ! 42: sions. ! 43: ! 44: If the file does not exist, _b_i_t_m_a_p will create a window for ! 45: a bitmap of the size specified by _d_i_m_e_n_s_i_o_n_s , which should ! 46: be two numbers separated by the letter `x' (e.g. 7x9, ! 47: 13x21). The first number is the bitmap's width; the second ! 48: is its height. The bitmap will start out empty. If no ! 49: dimensions are specified on the command line, a 16x16 bitmap ! 50: will be created. The absolute limit is 99x99; the practical ! 51: limit is somewhat lower, and depends on the size and resolu- ! 52: tion of your display. ! 53: ! 54: _b_i_t_m_a_p accepts two other optional command line arguments. ! 55: You may specify a display name in the form _h_o_s_t:_d_i_s_p_l_a_y (see ! 56: _X(_1)). And you may provide a geometry specification. If ! 57: you don't give a geometry specification, _b_i_t_m_a_p will ask you ! 58: where you want to put the window when it starts up. See ! 59: _X(_1) for a full explanation. ! 60: ! 61: ! 62: ! 63: Printed 9/15/87 29 January 1986 1 ! 64: ! 65: ! 66: ! 67: ! 68: ! 69: ! 70: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 71: ! 72: ! 73: ! 74: The window that _b_i_t_m_a_p creates has four parts. The largest ! 75: section is the checkerboard grid, which is a magnified ver- ! 76: sion of the bitmap you are editing. At the upper left is a ! 77: set of commands that you can invoke with any mouse button. ! 78: Below the commands is an "actual size" picture of the bitmap ! 79: you are editing; below that is an inverted version of the ! 80: same bitmap. Each time you change the grid, the same change ! 81: will occur in the actual-size bitmap and its inverse. ! 82: ! 83: If you use a window manager to make the _b_i_t_m_a_p window larger ! 84: or smaller, the grid squares will automatically get larger ! 85: or smaller as well. ! 86: ! 87: ! 88: COMMANDS ! 89: (Note for users of color displays: In all of the following, ! 90: ``white'' means the background color, and ``black'' means ! 91: the foreground color. You may specify a foreground and ! 92: background color in your ._X_d_e_f_a_u_l_t_s file; see the X ! 93: DEFAULTS section below.) ! 94: ! 95: When the cursor is in the checkerboard region, each mouse ! 96: button has a different effect upon the single square that ! 97: the cursor is over. ! 98: ! 99: The _l_e_f_t _m_o_u_s_e _b_u_t_t_o_n turns a grid square black and sets the ! 100: corresponding bitmap bit to 1. ! 101: ! 102: The _r_i_g_h_t _m_o_u_s_e _b_u_t_t_o_n turns a grid square white and sets ! 103: the corresponding bitmap bit to 0. ! 104: ! 105: The _m_i_d_d_l_e _m_o_u_s_e _b_u_t_t_o_n inverts a grid square, turning it ! 106: white if it was black, or black if it was white. It also ! 107: inverts the corresponding bitmap bit, setting it to 0 if it ! 108: was 1, and to 1 if it was 0. ! 109: ! 110: You can also invoke more sophisticated commands by moving ! 111: the mouse over one of the command boxes at the upper right ! 112: corner, and pressing any mouse button. ! 113: ! 114: ! 115: _C_l_e_a_r _A_l_l ! 116: turns all the grid squares white and sets all bitmap ! 117: bits to 0. This is irreversible, so invoke it with ! 118: care. ! 119: ! 120: ! 121: _S_e_t _A_l_l turns all the grid squares black and sets all bitmap ! 122: bits to 1. This is also irreversible. ! 123: ! 124: ! 125: ! 126: ! 127: ! 128: ! 129: Printed 9/15/87 29 January 1986 2 ! 130: ! 131: ! 132: ! 133: ! 134: ! 135: ! 136: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 137: ! 138: ! 139: ! 140: _I_n_v_e_r_t _A_l_l ! 141: inverts all the grid squares and bitmap bits, as if ! 142: you had pressed the middle mouse button over each ! 143: square. ! 144: ! 145: ! 146: _C_l_e_a_r _A_r_e_a ! 147: clears a rectangular area of the grid, turning it ! 148: white and setting the corresponding bitmap bits to ! 149: 0. After you click over this command, the cursor ! 150: turns into an `upper-left corner'. Press any mouse ! 151: button over the upper-left corner of the area you ! 152: want to invert, and _h_o_l_d _t_h_e _b_u_t_t_o_n _d_o_w_n while mov- ! 153: ing the mouse to the lower-right corner of the area ! 154: you want to invert, then let the button up. ! 155: ! 156: While you are holding down the button, the selected ! 157: area will be covered with X's, and the cursor will ! 158: change to a `lower-right corner'. If you now wish ! 159: to abort the command without clearing an area, ! 160: either press another mouse button, move the cursor ! 161: outside the grid, or move the cursor to the left of ! 162: or above the upper-left corner. ! 163: ! 164: ! 165: _S_e_t _A_r_e_a ! 166: turns a rectangular area of the grid black and sets ! 167: the corresponding bitmap bits to 1. It works the ! 168: same way as the _C_l_e_a_r _A_r_e_a command. ! 169: ! 170: ! 171: _I_n_v_e_r_t _A_r_e_a ! 172: inverts a rectangular area of the grid. It works ! 173: the same way as the _C_l_e_a_r _A_r_e_a command. ! 174: ! 175: ! 176: _C_o_p_y _A_r_e_a ! 177: copies a rectangular area from one part of the grid ! 178: to another. First, you select the rectangle to be ! 179: copied, in the manner described under _C_l_e_a_r _A_r_e_a ! 180: above. Then, the cursor will change to an "upper- ! 181: left corner". When you press a mouse button, a des- ! 182: tination rectangle will overlay the grid; moving ! 183: the mouse while holding down the button will move ! 184: this destination rectangle. The copy will occur ! 185: when you let up the button. To cancel the copy, ! 186: move the mouse outside the grid and then let up the ! 187: button. ! 188: ! 189: _M_o_v_e _A_r_e_a ! 190: works identically to _C_o_p_y _A_r_e_a, _e_x_c_e_p_t that it ! 191: clears the source rectangle after copying to the ! 192: ! 193: ! 194: ! 195: Printed 9/15/87 29 January 1986 3 ! 196: ! 197: ! 198: ! 199: ! 200: ! 201: ! 202: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 203: ! 204: ! 205: ! 206: destination. ! 207: ! 208: ! 209: _L_i_n_e will draw a line between two points. ! 210: ! 211: ! 212: _C_i_r_c_l_e will draw a circle specifying the center and a ! 213: radius ! 214: ! 215: ! 216: _F_i_l_l_e_d _C_i_r_c_l_e ! 217: will draw a filled circle given the center and ! 218: radius of the circle. ! 219: ! 220: _S_e_t _H_o_t_s_p_o_t ! 221: designates a point on the bitmap as the "hot spot". ! 222: If a program is using your bitmap as a cursor, the ! 223: hot spot indicates which point on the bitmap is the ! 224: "actual" location of the cursor. For instance, if ! 225: your cursor is an arrow, the hot spot should be the ! 226: tip of the arrow; if your cursor is a cross, the ! 227: hot spot should be where the perpendicular lines ! 228: intersect. ! 229: ! 230: ! 231: _C_l_e_a_r _H_o_t_s_p_o_t ! 232: removes any hot spot that was defined on this bit- ! 233: map. ! 234: ! 235: ! 236: _W_r_i_t_e _O_u_t_p_u_t ! 237: writes the current bitmap value to the file speci- ! 238: fied in the original command line. If the file ! 239: already exists, the original file is first renamed ! 240: to filename~ (in the manner of _e_m_a_c_s(_1) and other ! 241: text editors). ! 242: ! 243: If either the renaming or the writing cause an error ! 244: (e.g. ``Permission denied'), a Macintosh-style dia- ! 245: log window will appear, asking if you want to write ! 246: the file /_t_m_p/_f_i_l_e_n_a_m_e instead. If you say yes, all ! 247: future ``Write Output'' commands will write to ! 248: /_t_m_p/_f_i_l_e_n_a_m_e as well. See below for the format of ! 249: the output file. ! 250: ! 251: ! 252: _Q_u_i_t exits the _b_i_t_m_a_p program. If you have edited the ! 253: bitmap and have not invoked _W_r_i_t_e _O_u_t_p_u_t, or you ! 254: have edited it since the last time you invoked _W_r_i_t_e ! 255: _O_u_t_p_u_t, a Macintosh-style dialog window will appear, ! 256: asking if you want to save changes before quitting. ! 257: ``Yes'' does a ``Write Output'' before exiting; ! 258: ! 259: ! 260: ! 261: Printed 9/15/87 29 January 1986 4 ! 262: ! 263: ! 264: ! 265: ! 266: ! 267: ! 268: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 269: ! 270: ! 271: ! 272: ``No'' just exits, losing the edits; ``Cancel'' ! 273: means you decided not to quit after all. ! 274: ! 275: ! 276: ! 277: FILE FORMAT ! 278: _B_i_t_m_a_p reads and writes files in the following format, which ! 279: is suitable for #include'ing in a C program: ! 280: #define foo_width 9 ! 281: #define foo_height 13 ! 282: #define foo_x_hot 4 ! 283: #define foo_y_hot 6 ! 284: static short foo_bits[] = { ! 285: 0x0010, 0x0038, 0x007c, 0x0010, ! 286: 0x0010, 0x0010, 0x01ff, 0x0010, ! 287: 0x0010, 0x0010, 0x007c, 0x0038, ! 288: 0x0010}; ! 289: ! 290: The variables ending with __x__h_o_t and __y__h_o_t are optional; ! 291: they will be present only if a hot spot has been defined for ! 292: this bitmap. The other variables must be present. ! 293: ! 294: In place of ``foo'', the five variables will be prefixed ! 295: with a string derived from the name of the file that you ! 296: specified on the original command line by ! 297: (1) deleting the directory path (all characters up to and ! 298: including the last `/', if one is present) ! 299: (2) deleting the extension (the first `.', if one is ! 300: present, and all characters beyond it) ! 301: ! 302: For example, invoking _b_i_t_m_a_p with filename ! 303: /_u_s_r/_i_n_c_l_u_d_e/_b_i_t_m_a_p_s/_c_r_o_s_s._b_i_t_m_a_p will produce a file with ! 304: variable names _c_r_o_s_s__w_i_d_t_h, _c_r_o_s_s__h_e_i_g_h_t, and _c_r_o_s_s__b_i_t_s ! 305: (and _c_r_o_s_s__x__h_o_t and _c_r_o_s_s__y__h_o_t if a hot spot is defined). ! 306: ! 307: It's easy to define a bitmap or cursor in an X program by ! 308: simply #include'ing a bitmap file and referring to its vari- ! 309: ables. For instance, to use a cursor defined in the files ! 310: _t_h_i_s._c_u_r_s_o_r and _t_h_i_s__m_a_s_k._c_u_r_s_o_r, one simply writes ! 311: ! 312: #include "this.cursor" ! 313: #include "this_mask.cursor" ! 314: XCreateCursor (this_width, this_height, this_bits, this_mask_bits, ! 315: this_x_hot, this_y_hot, foreground, background, func); ! 316: ! 317: where _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d are color values, and _f_u_n_c ! 318: is a display function (normally GXcopy). ! 319: ! 320: An X program can also read a bitmap file at runtime by using ! 321: the function _X_R_e_a_d_B_i_t_m_a_p_F_i_l_e. ! 322: ! 323: ! 324: ! 325: ! 326: ! 327: Printed 9/15/87 29 January 1986 5 ! 328: ! 329: ! 330: ! 331: ! 332: ! 333: ! 334: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 335: ! 336: ! 337: ! 338: X DEFAULTS ! 339: Background ! 340: The window's background color. Bits which are 0 in ! 341: the bitmap are displayed in this color. This option ! 342: is useful only on color displays. Default: white. ! 343: ! 344: Border The border color. This option is useful only on ! 345: color displays. Default: black. ! 346: ! 347: BorderWidth ! 348: The border width. Default: 3. ! 349: ! 350: BodyFont ! 351: The text font. Default: vtsingle. ! 352: ! 353: Foreground ! 354: The foreground color. Bits which are 1 in the bit- ! 355: map are displayed in this color. This option is ! 356: useful only on color displays. Default: black. ! 357: ! 358: Highlight ! 359: The highlight color. _b_i_t_m_a_p uses this color to show ! 360: the hot spot and to indicate rectangular areas that ! 361: will be affected by the _M_o_v_e _A_r_e_a, _C_o_p_y _A_r_e_a, _S_e_t ! 362: _A_r_e_a, and _I_n_v_e_r_t _A_r_e_a commands. If a highlight ! 363: color is not given, then _b_i_t_m_a_p will highlight by ! 364: inverting. This option is useful only on color ! 365: displays. ! 366: ! 367: ! 368: Mouse The mouse cursor's color. This option is useful ! 369: only on color displays. Default: black. ! 370: ! 371: ! 372: ENVIRONMENT ! 373: DISPLAY - the default host and display number. ! 374: ! 375: ! 376: SEE ALSO ! 377: X(1), Xlib Documentation. ! 378: ! 379: ! 380: ! 381: DIAGNOSTICS ! 382: The following messages may be displayed in the C-shell that ! 383: you invoked _b_i_t_m_a_p with. Any of these conditions aborts ! 384: _b_i_t_m_a_p before it can create its window. ! 385: ! 386: ! 387: ``bitmap: could not connect to X server on _h_o_s_t:_d_i_s_p_l_a_y'' ! 388: ! 389: Either the display given on the command line or the DISPLAY ! 390: ! 391: ! 392: ! 393: Printed 9/15/87 29 January 1986 6 ! 394: ! 395: ! 396: ! 397: ! 398: ! 399: ! 400: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 401: ! 402: ! 403: ! 404: environment variable has an invalid host name or display ! 405: number, or the host is down, or the host is unreachable, or ! 406: the host is not running an X server, or the host is refusing ! 407: connections. ! 408: ! 409: ``bitmap: no file name specified'' ! 410: ! 411: You invoked _b_i_t_m_a_p with no command line arguments. You must ! 412: give a file name as the first argument. ! 413: ! 414: ! 415: ``bitmap: could not open file _f_i_l_e_n_a_m_e for reading -- _m_e_s_- ! 416: _s_a_g_e'' ! 417: ! 418: The specified file exists but cannot be read, for the reason ! 419: given in <message> (e.g., permission denied). ! 420: ! 421: ! 422: ``bitmap: invalid dimensions _s_t_r_i_n_g'' ! 423: ``bitmap: dimensions must be positive'' ! 424: ! 425: The second command line argument was not a valid dimension ! 426: specification. ! 427: ! 428: ! 429: ``bitmap: file _f_i_l_e_n_a_m_e does not have a valid width dimen- ! 430: sion'' ! 431: ``bitmap: file _f_i_l_e_n_a_m_e does not have a valid height ! 432: dimension'' ! 433: ``bitmap: file _f_i_l_e_n_a_m_e has an invalid _nth array element'' ! 434: ! 435: The input file is not in the correct format; the program ! 436: gave up when trying to read the specified data. ! 437: ! 438: ! 439: The following messages may be displayed in the C-shell after ! 440: _b_i_t_m_a_p creates its window: ! 441: ! 442: ``bitmap: Unrecognized variable _n_a_m_e in file _f_i_l_e_n_a_m_e'' ! 443: ! 444: _b_i_t_m_a_p encountered a variable ending in something other than ! 445: __x__h_o_t, __y__h_o_t, __w_i_d_t_h, or __h_e_i_g_h_t while parsing the input ! 446: file. It will ignore this variable and continue parsing the ! 447: file. ! 448: ! 449: ! 450: ``bitmap: XError: _m_e_s_s_a_g_e'' ! 451: ``bitmap: XIOError'' ! 452: ! 453: A protocol error occurred. Something is wrong with either ! 454: the X server or the X library which the program was compiled ! 455: with. Possibly they are incompatible. If the server is not ! 456: ! 457: ! 458: ! 459: Printed 9/15/87 29 January 1986 7 ! 460: ! 461: ! 462: ! 463: ! 464: ! 465: ! 466: BITMAP(1) UNIX Programmer's Manual BITMAP(1) ! 467: ! 468: ! 469: ! 470: on the local host, maybe the connection broke. ! 471: ! 472: ! 473: ! 474: BUGS ! 475: Doesn't take enough command line options yet. Most ! 476: options can be specified only through ._X_d_e_f_a_u_l_t_s. ! 477: ! 478: If you move the mouse too fast while holding a mouse but- ! 479: ton down, some squares may be `missed'. This is caused by ! 480: limitations in how frequently the X server can sample the ! 481: mouse location. ! 482: ! 483: There is no way to write to a file other than that speci- ! 484: fied on the command line. ! 485: ! 486: There is no way to change the size of the bitmap once the ! 487: program is started. ! 488: ! 489: Edits are unrecoverably lost if you terminate the program ! 490: with a ^C or ^ in the shell which invoked it, or if you kill ! 491: it with the shell's ``kill'' command. ! 492: ! 493: Dimensions greater than 99 are not read properly from the ! 494: command line or input file. Generally such dimensions would ! 495: not be useful anyway, since they would produce a window ! 496: larger than most displays. ! 497: ! 498: ! 499: AUTHOR ! 500: Copyright (c) 1986 by Massachusetts Institute of Technology. ! 501: Ron Newman, MIT Project Athena ! 502: ! 503: ! 504: ! 505: ! 506: ! 507: ! 508: ! 509: ! 510: ! 511: ! 512: ! 513: ! 514: ! 515: ! 516: ! 517: ! 518: ! 519: ! 520: ! 521: ! 522: ! 523: ! 524: ! 525: Printed 9/15/87 29 January 1986 8 ! 526: ! 527: ! 528:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.