1 /* 2 * @(#)help.c 1.2 01/03/85 3 * 4 * Routines to provide help screens for the SUN Gremlin picture editor. 5 * 6 * Mark Opperman (opcode@monet.BERKELEY) 7 * 8 */ 9 10 #include <suntool/tool_hs.h> 11 #include "gremlin.h" 12 #include "icondata.h" 13 14 /* imports from main.c */ 15 16 extern struct pixwin *pix_pw; 17 extern struct rect pix_size; 18 extern struct pixrect *scratch_pr; 19 extern struct pixfont *text_pf; 20 extern pix_fd; 21 extern menu_fd; 22 extern text_fd; 23 extern tool_fd; 24 25 /* imports from sun.c */ 26 27 extern get_any_button(); 28 29 /* locals */ 30 31 static help_x, help_y; /* current position on help screen */ 32 33 #define help_dy (text_pf->pf_defaultsize.y) 34 #define HELP_LEFT 8 35 #define HELP_SKIP 16 36 37 38 /* 39 * Display a help screen consisting of a pixrect, a title and some text. 40 * The current picture is saved in the scratch pixrect before displaying 41 * the help screen. After the user presses a mouse button, the picture 42 * is restored and processing continues. 43 */ 44 static 45 help_screen(icon_pr, title, text) 46 struct pixrect *icon_pr; 47 char *title, *text; 48 { 49 /* save current display */ 50 pw_read(scratch_pr, 0, 0, pix_size.r_width, pix_size.r_height, PIX_SRC, 51 pix_pw, 0, 0); 52 53 /* clear picture subwindow before help screen display */ 54 pw_writebackground(pix_pw, 0, 0, 2000, 2000, PIX_SRC); 55 56 help_x = HELP_LEFT; 57 help_y = 8; 58 59 /* display icon if not a NULL pointer */ 60 if (icon_pr != NULL) { 61 pw_write(pix_pw, help_x, help_y, icon_pr->pr_size.x, icon_pr->pr_size.y, 62 PIX_SRC, icon_pr, 0, 0); 63 help_x += icon_pr->pr_size.x + HELP_SKIP; 64 help_message(title); 65 help_y += icon_pr->pr_size.y + HELP_SKIP; 66 } 67 else { 68 help_message(title); 69 help_y += help_dy + HELP_SKIP; 70 } 71 72 help_x = HELP_LEFT; 73 help_message(text); 74 75 help_y += HELP_SKIP; 76 help_x = HELP_LEFT; 77 help_message("Press a mouse button to continue."); 78 79 /* wait for mouse button in any subwindow or tool border */ 80 get_any_button(); 81 82 /* restore picture subwindow */ 83 pw_write(pix_pw, 0, 0, pix_size.r_width, pix_size.r_height, PIX_SRC, 84 scratch_pr, 0, 0); 85 } 86 87 88 /* 89 * A simple text display tool for help messages. 90 * Text is displayed at the current help location (help_x, help_y). 91 * Newlines within the text string are handled appropriately. 92 * Maximum line length (between newlines) is 80 characters, although 93 * only about 64 can be displayed on the default Gremlin screen. 94 */ 95 static 96 help_message(text) 97 char *text; 98 { 99 char buf[80]; 100 register i; 101 102 while (*text != '\0') { 103 i = 0; 104 105 while ((*text != '\n') && (*text != '\0')) 106 buf[i++] = *text++; 107 buf[i] = '\0'; 108 109 if (*text == '\n') 110 text++; 111 112 pw_text(pix_pw, help_x, help_y + TEXT_BASELINE + 2, PIX_SRC, 113 text_pf, buf); 114 help_y += help_dy; 115 } 116 } 117 118 119 static char help_HELP[] = "\ 120 The three subwindows in Gremlin are used for text entry,\n\ 121 menu display and command selection, and picture display.\n\ 122 In addition, the normal tool manager pop-up menu is available\n\ 123 from the tool borders.\n\ 124 \n\ 125 In the menu subwindow, the left mouse button is used to\n\ 126 invoke commands after selecting the appropriate icon, the\n\ 127 middle mouse button is used to effect the same command on\n\ 128 only the current set (where appropriate), and the right mouse\n\ 129 button provides a help screen for the icon.\n\ 130 \n\ 131 In the picture subwindow, the left mouse button is used to\n\ 132 lay down points, the middle mouse button erases points in the\n\ 133 opposite order from which they were layed down, and the right\n\ 134 mouse button provides a help screen.\n\ 135 \n\ 136 In the text subwindow, command arguments (when required)\n\ 137 are entered from the keyboard. Arguments must be entered\n\ 138 before the command is selected. Simple editing commands\n\ 139 (backspace, line and word delete) can be used to modify the\n\ 140 argument. Again, the right mouse button provides a help\n\ 141 screen display."; 142 143 help() 144 { 145 help_screen(&question_pr, "Help ('?')", help_HELP); 146 } 147 148 149 static char justify_HELP[] = "\ 150 Select text justification by moving marker to one of nine\n\ 151 positioning points within the JUSTIFY icon and pressing the\n\ 152 left mouse button.\n\ 153 \n\ 154 Modify justification of text in the current set by moving the\n\ 155 marker as above and then pressing the middle mouse button.\n\ 156 \n\ 157 When text is displayed in the current set, its justification\n\ 158 mode is indicated by a small dot."; 159 160 justify_help() 161 { 162 help_screen(&justify_pr, "Text Justification", justify_HELP); 163 } 164 165 166 static char size1_HELP[] = "\n\ 167 Set the default font size to one with the left mouse button.\n\ 168 \n\ 169 Modify text in the current set to size one with the middle\n\ 170 mouse button."; 171 172 size1_help() 173 { 174 help_screen(&size1_pr, "Set Text Size One", size1_HELP); 175 } 176 177 178 static char roman_HELP[] = "\ 179 Set the default font to Roman with the left mouse button.\n\ 180 \n\ 181 Modify text in the current set to Roman font with the middle\n\ 182 mouse button."; 183 184 roman_help() 185 { 186 help_screen(&roman_pr, "Set Roman Text Font", roman_HELP); 187 } 188 189 190 static char scale_HELP[] = "\ 191 Scaling uses three points to define a transformation.\n\ 192 The current set is scaled by the ratio of the distances\n\ 193 between the first and second and the first and third points."; 194 195 scale_help() 196 { 197 help_screen(&scale_pr, "Scale Current Set ('s')", scale_HELP); 198 } 199 200 201 static char move_HELP[] = "\ 202 Translation uses two points to define a transformation.\n\ 203 The current set is translated through the relative distance\n\ 204 between the two points."; 205 206 move_help() 207 { 208 help_screen(&move_pr, "Translate Current Set ('t')", move_HELP); 209 } 210 211 212 static char hmirror_HELP[] = "\ 213 Mirroring uses one point to define a transformation.\n\ 214 The current set is reflected about the horizontal line\n\ 215 containing the point."; 216 217 hmirror_help() 218 { 219 help_screen(&hmirror_pr, "Horizontal Mirror", hmirror_HELP); 220 } 221 222 223 static char vmirror_HELP[] = "\ 224 Mirroring uses one point to define a transformation.\n\ 225 The current set is reflected about the vertical line\n\ 226 containing the point."; 227 228 vmirror_help() 229 { 230 help_screen(&vmirror_pr, "Vertical Mirror", vmirror_HELP); 231 } 232 233 234 static char include_HELP[] = "\ 235 The current set is selected by points. Using the left mouse\n\ 236 button, the current set will include ONLY those elements near\n\ 237 the points. With the middle mouse button, those elements near\n\ 238 the points will be ADDED to the current set."; 239 240 include_help() 241 { 242 help_screen(&include_pr, "Define Current Set ('d')", include_HELP); 243 } 244 245 246 static char put_HELP[] = "\ 247 The current set is copied into the specified set buffer for\n\ 248 possible later retrieval. An optional positioning point may\n\ 249 be specified for use in positioning the set when it is later\n\ 250 copied into a picture. With no positioning point specified,\n\ 251 a point is selected from among the reference points of the\n\ 252 current set."; 253 254 put1_help() 255 { 256 help_screen(&put1_pr, "Save Current Set in Buffer One ('1')", put_HELP); 257 } 258 259 260 put2_help() 261 { 262 help_screen(&put2_pr, "Save Current Set in Buffer Two ('2')", put_HELP); 263 } 264 265 266 put3_help() 267 { 268 help_screen(&put3_pr, "Save Current Set in Buffer Three ('3')", put_HELP); 269 } 270 271 272 put4_help() 273 { 274 help_screen(&put4_pr, "Save Current Set in Buffer Four ('4')", put_HELP); 275 } 276 277 278 static char horizontal_HELP[] = "\ 279 Horizontal adjustment forces each point laid down to lie on\n\ 280 a horizontal line from the previous point. The left mouse\n\ 281 button toggles this drawing mode."; 282 283 horizontal_help() 284 { 285 help_screen(&horizontal_pr, "Horizontal Adjustment", horizontal_HELP); 286 } 287 288 289 static char vertical_HELP[] = "\ 290 Vertical adjustment forces each point laid down to lie on a\n\ 291 vertical line from the previous point. The left mouse button\n\ 292 toggles this drawing mode."; 293 294 vertical_help() 295 { 296 help_screen(&vertical_pr, "Vertical Adjustment", vertical_HELP); 297 } 298 299 300 static char stipple_HELP[] = "\ 301 Select the stipple pattern used for drawing polygons with\n\ 302 the left mouse button.\n\ 303 \n\ 304 Modify polygons in the current set to the specified stipple\n\ 305 pattern with the middle mouse button."; 306 307 stipple1_help() 308 { 309 help_screen(&white_pr, "Set Stipple Pattern One", stipple_HELP); 310 } 311 312 313 stipple2_help() 314 { 315 help_screen(&gray_pr, "Set Stipple Pattern Two", stipple_HELP); 316 } 317 318 319 stipple3_help() 320 { 321 help_screen(&_50_pr, "Set Stipple Pattern Three", stipple_HELP); 322 } 323 324 325 stipple4_help() 326 { 327 help_screen(&black_pr, "Set Stipple Pattern Four", stipple_HELP); 328 } 329 330 331 stipple5_help() 332 { 333 help_screen(&stipple5_pr, "Set Stipple Pattern Five", stipple_HELP); 334 } 335 336 337 stipple6_help() 338 { 339 help_screen(&stipple6_pr, "Set Stipple Pattern Six", stipple_HELP); 340 } 341 342 343 stipple7_help() 344 { 345 help_screen(&stipple7_pr, "Set Stipple Pattern Seven", stipple_HELP); 346 } 347 348 349 stipple8_help() 350 { 351 help_screen(&stipple8_pr, "Set Stipple Pattern Eight", stipple_HELP); 352 } 353 354 355 static char size2_HELP[] = "\n\ 356 Set the default font size to two with the left mouse button.\n\ 357 \n\ 358 Modify text in the current set to size two with the middle\n\ 359 mouse button."; 360 361 size2_help() 362 { 363 help_screen(&size2_pr, "Set Text Size Two", size2_HELP); 364 } 365 366 367 static char italics_HELP[] = "\ 368 Set the default font to Italics with the left mouse button.\n\ 369 \n\ 370 Modify text in the current set to Italics font with the middle\n\ 371 mouse button."; 372 373 italics_help() 374 { 375 help_screen(&italics_pr, "Set Italics Text Font", italics_HELP); 376 } 377 378 379 static char copy_HELP[] = "\ 380 Copying uses two or more points. A copy of the current set\n\ 381 is made and translated by a relative distance between the\n\ 382 first and each additional point. The last copy becomes\n\ 383 the new current set."; 384 385 copy_help() 386 { 387 help_screen(©_pr, "Copy Current Set ('c')", copy_HELP); 388 } 389 390 391 static char erase_HELP[] = "\ 392 The current set is erased. See also the undo command."; 393 394 erase_help() 395 { 396 help_screen(&erase_pr, "Erase Current Set ('e')", erase_HELP); 397 } 398 399 400 static char movepoint_HELP[] = "\ 401 This command uses one or more points. The element of the\n\ 402 current set which contains the point closest to the first of\n\ 403 these points is redrawn with that point replaced by the\n\ 404 remaining points, or deleted if there is only one point."; 405 406 movepoint_help() 407 { 408 help_screen(&movepoint_pr, "Move Point", movepoint_HELP); 409 } 410 411 412 static char rotate_HELP[] = "\ 413 Three points are used to define a rotation. The rotation is\n\ 414 performed relative to the first point, through an angle formed\n\ 415 by the lines between points one and two and points one and\n\ 416 three, respectively."; 417 418 rotate_help() 419 { 420 help_screen(&rotate_pr, "Rotate Current Set ('r')", rotate_HELP); 421 } 422 423 424 static char filecabinet_HELP[] = "\ 425 This icon produces a pop-up menu to select commands for\n\ 426 manipulating files: Edit, Path, Read, Write and Save Set.\n\ 427 With each command, parameters should be specified in the\n\ 428 text subwindow before invocation.\n\ 429 \n\ 430 The Edit command causes a new file to be opened for editing.\n\ 431 Picture sets saved in the buffers are preserved across edits.\n\ 432 The file name will be displayed in the Gremlin tool border.\n\ 433 \n\ 434 The Path command is used to set the directory search path\n\ 435 for the Edit and Read commands. Directory names should be\n\ 436 separated by colons and may include the ~ notation. If a file\n\ 437 cannot be found using any of the paths, a final check will be\n\ 438 made in the Gremlin library, /usr/local/lib/gremlin.\n\ 439 \n\ 440 The Read command is used to add elements from the specified\n\ 441 file into the current picture. The new elements become the\n\ 442 current set. A point may be specified to position the file\n\ 443 in the picture.\n\ 444 \n\ 445 The Write command saves the entire picture in a file. If no\n\ 446 file name is specified in the text subwindow, the current Edit\n\ 447 file name is used. An optional point may be specified to aid\n\ 448 in Reading the picture later.\n\ 449 \n\ 450 The Save Set command is similar to the Write command with two\n\ 451 exceptions: only the current set is written, and a file name\n\ 452 must be specified."; 453 454 filecabinet_help() 455 { 456 help_screen(&filecabinet_pr, "File Commands", filecabinet_HELP); 457 } 458 459 460 static char boxinc_HELP[] = "\ 461 Two points must be placed that define a rectangular area\n\ 462 (the endpoints of the diagonal of the rectangle).\n\ 463 \n\ 464 With the left mouse button, all elements contained within the\n\ 465 the rectangle become the current set.\n\ 466 \n\ 467 With the middle mouse button, those same elements are ADDED\n\ 468 to the current set."; 469 470 boxinc_help() 471 { 472 help_screen(&boxinc_pr, "Select Area for Current Set ('f')", boxinc_HELP); 473 } 474 475 476 static char manhattan_HELP[] = "\ 477 Manhattan adjustment forces each point laid down to be either\n\ 478 directly horizontal or vertical with respect to the previous\n\ 479 point, whichever it is closer to. The left mouse button\n\ 480 toggles this drawing mode."; 481 482 manhattan_help() 483 { 484 help_screen(&horvert_pr, "Manhattan Adjustment ('z')", manhattan_HELP); 485 } 486 487 488 static char gravity_HELP[] = "\ 489 This command toggles each time it is selected. When on,\n\ 490 gravity forces a point to coincide with the nearest existing\n\ 491 point or reference point. It will only take affect, however,\n\ 492 if the point is near enough to an element to be gravitiated\n\ 493 to it."; 494 495 gravity_help() 496 { 497 help_screen(&gravity_pr, "Set Gravity ('g')", gravity_HELP); 498 } 499 500 501 static char size3_HELP[] = "\n\ 502 Set the default font size to three with the left mouse button.\n\ 503 \n\ 504 Modify text in the current set to size three with the middle\n\ 505 mouse button."; 506 507 size3_help() 508 { 509 help_screen(&size3_pr, "Set Text Size Three", size3_HELP); 510 } 511 512 513 static char bold_HELP[] = "\ 514 Set the default font to Bold with the left mouse button.\n\ 515 \n\ 516 Modify text in the current set to Bold font with the middle\n\ 517 mouse button."; 518 519 bold_help() 520 { 521 help_screen(&bold_pr, "Set Bold Text Font", bold_HELP); 522 } 523 524 525 static char brush_HELP[] = "\ 526 The left mouse button sets the current brush style.\n\ 527 \n\ 528 The middle mouse button modifies all elements in the current\n\ 529 set (except text) to the selected brush style."; 530 531 brush1_help() 532 { 533 help_screen(&dotted_pr, "Set Dotted Line Style", brush_HELP); 534 } 535 536 537 brush2_help() 538 { 539 help_screen(&broken_pr, "Set Broken Line Style", brush_HELP); 540 } 541 542 543 brush3_help() 544 { 545 help_screen(&thick_pr, "Set Thick Line Style", brush_HELP); 546 } 547 548 549 brush4_help() 550 { 551 help_screen(&dashed_pr, "Set Dashed Line Style", brush_HELP); 552 } 553 554 555 brush5_help() 556 { 557 help_screen(&narrow_pr, "Set Narrow Line Style", brush_HELP); 558 } 559 560 561 brush6_help() 562 { 563 help_screen(&medium_pr, "Set Medium Line Style", brush_HELP); 564 } 565 566 567 static char arrow_HELP[] = "\ 568 This command requires two points. The first point indicates\n\ 569 the tip of the arrow. The second point indicates the\n\ 570 direction from which the arrow points."; 571 572 arrow_help() 573 { 574 help_screen(&arrow_pr, "Draw Arrowhead ('w')", arrow_HELP); 575 } 576 577 578 static char text_HELP[] = "\ 579 Text is positioned using one or two points. If two points\n\ 580 are used, the text is positioned relative to their locus.\n\ 581 The text specified in the text subwindow is displayed using\n\ 582 the current font, size and justification.\n\ 583 \n\ 584 See the text subwindow help display for an explanation of\n\ 585 quick text entry."; 586 587 text_help() 588 { 589 help_screen(&text_pr, "Display Text", text_HELP); 590 } 591 592 593 static char misc_HELP[] = "\ 594 This command invokes a pop-up menu of infrequently used\n\ 595 commands: Clear Points, Show Points, Gripe (rarely used)\n\ 596 and Point.\n\ 597 \n\ 598 Clear Points will clear all positioning points and reference\n\ 599 points from the display.\n\ 600 \n\ 601 Show Points will display the reference points of those\n\ 602 elements in the current set.\n\ 603 \n\ 604 Gripe displays a message indicating the mail address of\n\ 605 the current Gremlin maintainer.\n\ 606 \n\ 607 Point can be used to lay down a point at a specific location.\n\ 608 The coordinates of the point must first be entered in the\n\ 609 text subwindow."; 610 611 misc_help() 612 { 613 help_screen(&misc_pr, "Miscellaneous Commands", misc_HELP); 614 } 615 616 617 static char get_HELP[] = "\ 618 This command retrieves a set from the specified buffer and\n\ 619 copies it into the picture. At least one point must be\n\ 620 specified, indicating the position(s) in the picture where\n\ 621 the set is to be copied."; 622 623 get1_help() 624 { 625 help_screen(&get1_pr, "Add Buffer One To Picture", get_HELP); 626 } 627 628 629 get3_help() 630 { 631 help_screen(&get3_pr, "Add Buffer Three To Picture", get_HELP); 632 } 633 634 635 get2_help() 636 { 637 help_screen(&get2_pr, "Add Buffer Two To Picture", get_HELP); 638 } 639 640 641 get4_help() 642 { 643 help_screen(&get4_pr, "Add Buffer Four To Picture", get_HELP); 644 } 645 646 647 static char linestyle_HELP[] = "\ 648 This command toggles symbolic line display. When highlighted,\n\ 649 this icon indicates that elements will be drawn using their\n\ 650 true line style (or brush). When not highlighted, all\n\ 651 elements are drawn using the narrow brush, decreasing display\n\ 652 times."; 653 654 linestyle_help() 655 { 656 help_screen(&linestyle_pr, "Toggle Line Style Mode", linestyle_HELP); 657 } 658 659 660 static char align_HELP[] = "\ 661 This command forces points to be aligned on pixel boundaries\n\ 662 as specified in the icon. Alignment occurs in powers of two.\n\ 663 To select the next alignment value use the left mouse button,\n\ 664 and to select the previous value use the middle mouse button.\n\ 665 \n\ 666 The precedence of point positioning modifiers is as follows:\n\ 667 gravity will override alignment, and adjustment (vertical,\n\ 668 horizontal or manhattan) will be applied to the point to which\n\ 669 the point has been gravitated."; 670 671 align_help() 672 { 673 help_screen(&align_pr, "Set Point Alignment", align_HELP); 674 } 675 676 677 static char size4_HELP[] = "\n\ 678 Set the default font size to four with the left mouse button.\n\ 679 \n\ 680 Modify text in the current set to size four with the middle\n\ 681 mouse button."; 682 683 size4_help() 684 { 685 help_screen(&size4_pr, "Set Text Size Four", size4_HELP); 686 } 687 688 689 static char special_HELP[] = "\ 690 Set the default font to Special with the left mouse button.\n\ 691 \n\ 692 Modify text in the current set to Special font with the middle\n\ 693 mouse button."; 694 695 special_help() 696 { 697 help_screen(&special_pr, "Set Special Text Font", special_HELP); 698 } 699 700 701 static char arc_HELP[] = "\ 702 This command requires two points to draw a full circle or\n\ 703 three points to draw an arc. The first point determines the\n\ 704 center of a circle. The second is a point on the circle,\n\ 705 thus defining the radius. An optional third point determines\n\ 706 a counter-clockwise angle from the second point which is the\n\ 707 extent of the arc."; 708 709 arc_help() 710 { 711 help_screen(&arc_pr, "Draw Circle or Arc ('a')", arc_HELP); 712 } 713 714 715 static char curve_HELP[] = "\ 716 A curve is determined by a number of points distributed along\n\ 717 its trajectory. Two points yield a straight line. If the\n\ 718 first and last points of a spline are the same, a smooth\n\ 719 closed figure will be drawn. Curves are drawn with the left\n\ 720 mouse button using the current brush style.\n\ 721 \n\ 722 With the middle mouse button, vectors and polygons in the\n\ 723 current set are modified to become curves."; 724 725 curve_help() 726 { 727 help_screen(&curve_pr, "Draw Curve ('b')", curve_HELP); 728 } 729 730 731 static char vector_HELP[] = "\ 732 With the left mouse button, a line is drawn connecting each\n\ 733 of the points layed down in order. The current brush (narrow,\n\ 734 dotted, etc) is used.\n\ 735 \n\ 736 With the middle mouse button, curves and polygons in the\n\ 737 current set are modified to become vectors."; 738 739 vector_help() 740 { 741 help_screen(&vector_pr, "Draw Vector ('v')", vector_HELP); 742 } 743 744 745 static char box_HELP[] = "\ 746 Two points are used to define the endpoints of the diagonal\n\ 747 of a rectangle. A box is drawn in the current brush which\n\ 748 forms the rectangle."; 749 750 box_help() 751 { 752 help_screen(&box_pr, "Draw Box ('x')", box_HELP); 753 } 754 755 756 static char grid_HELP[] = "\ 757 This command toggles the display of a grid used to aid in\n\ 758 laying down points. The grid is displayed on 32 pixel\n\ 759 boundaries."; 760 761 grid_help() 762 { 763 help_screen(&grid_pr, "Toggle Grid Display ('q')", grid_HELP); 764 } 765 766 767 static char littlepoint_HELP[] = "\ 768 This command toggles the style of points displayed. When the\n\ 769 icon is highlighted, points are indicated by a small circle\n\ 770 and are numbered from zero. When the icon is unhighlighted,\n\ 771 points are displayed as a small diamond."; 772 773 littlepoint_help() 774 { 775 help_screen(&littlepoint_pr, "Toggle Point Style", littlepoint_HELP); 776 } 777 778 779 static char undo_HELP[] = "\ 780 This command undoes the last command which modified the\n\ 781 picture contents."; 782 783 undo_help() 784 { 785 help_screen(&undo_pr, "Undo Last Command", undo_HELP); 786 } 787 788 789 static char pan_HELP[] = "\ 790 With the left mouse button this command requires one point.\n\ 791 The entire picture and current set are translated such that\n\ 792 the specified point is located at the center of the display.\n\ 793 \n\ 794 With the middle mouse button no point is required. The\n\ 795 picture is translated such that its absolute center is\n\ 796 brought to the center of the display."; 797 798 pan_help() 799 { 800 help_screen(&pan_pr, "Panning", pan_HELP); 801 } 802 803 804 static char polygon_HELP[] = "\ 805 Polygons can be drawn either bordered or unbordered. At\n\ 806 least three points are required to draw a polygon. If the\n\ 807 first and the last points are not the same, that line\n\ 808 segment will be added automatically. With the left mouse\n\ 809 button, a filled polygon will be added to the display in the\n\ 810 current stipple style. If a border is to be drawn, this\n\ 811 will be added in the current line style.\n\ 812 \n\ 813 The middle mouse button is used to modify curves, vectors and\n\ 814 other polygons in the current set to be polygons of the\n\ 815 selected type (bordered or unbordered)."; 816 817 bpolygon_help() 818 { 819 help_screen(&bpolygon_pr, "Fill Bordered Polygon", polygon_HELP); 820 } 821 822 823 polygon_help() 824 { 825 help_screen(&polygon_pr, "Fill Polygon", polygon_HELP); 826 } 827 828 829 static char textsw_HELP[] = "\ 830 Command arguments (when required) are entered here from the\n\ 831 keyboard. Arguments must be entered before the command is\n\ 832 selected. Simple editing commands (backspace, line and word\n\ 833 delete) can be used to modify the argument. The middle mouse\n\ 834 button is used to display the previous text string.\n\ 835 \n\ 836 The quick form of the TEXT command is invoked by pressing\n\ 837 RETURN after entering a string to be displayed in the picture.\n\ 838 The string is displayed at the LAST point layed down (using\n\ 839 the current justification mode), and this point is removed\n\ 840 from the display."; 841 842 textsw_help() 843 { 844 help_screen(NULL, "Text Subwindow Help", textsw_HELP); 845 } 846 847 848 static char pixsw_HELP[] = "\ 849 The left mouse button is used to lay down points. The middle\n\ 850 mouse button erases points in the opposite order from which\n\ 851 they were layed down."; 852 853 pixsw_help() 854 { 855 help_screen(NULL, "Picture Subwindow Help", pixsw_HELP); 856 } 857 858 859 menusw_help() 860 { 861 /* keeps getting invoked by mistake - not useful anyway */ 862 } 863