]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <mikayla-grace@urban-warrior.org>
Sun, 21 Apr 2019 01:23:54 +0000 (21:23 -0400)
committerCristy <mikayla-grace@urban-warrior.org>
Sun, 21 Apr 2019 01:23:54 +0000 (21:23 -0400)
MagickCore/animate.c
MagickCore/display.c
MagickCore/widget-private.h
MagickCore/widget.c

index 8e6bd70bcc2345b27dce77b65c5304633497186f..c2392a59a2b75d8d17bf7cfb9fae0ddd80f01742 100644 (file)
   Static declarations.
 */
 static const char
-  *const AnimateHelp[] =
+  AnimateHelp[] =
   {
-    "BUTTONS",
-    "",
-    "  Press any button to map or unmap the Command widget.",
-    "",
-    "COMMAND WIDGET",
-    "  The Command widget lists a number of sub-menus and commands.",
-    "  They are",
-    "",
-    "    Animate",
-    "      Open...",
-    "      Save...",
-    "      Play",
-    "      Step",
-    "      Repeat",
-    "      Auto Reverse",
-    "    Speed",
-    "      Slower",
-    "      Faster",
-    "    Direction",
-    "      Forward",
-    "      Reverse",
-    "      Help",
-    "        Overview",
-    "        Browse Documentation",
-    "        About Animate",
-    "    Image Info",
-    "    Quit",
-    "",
-    "  Menu items with a indented triangle have a sub-menu.  They",
-    "  are represented above as the indented items.  To access a",
-    "  sub-menu item, move the pointer to the appropriate menu and",
-    "  press a button and drag.  When you find the desired sub-menu",
-    "  item, release the button and the command is executed.  Move",
-    "  the pointer away from the sub-menu if you decide not to",
-    "  execute a particular command.",
-    "",
-    "KEYBOARD ACCELERATORS",
-    "  Accelerators are one or two key presses that effect a",
-    "  particular command.  The keyboard accelerators that",
-    "  animate(1) understands is:",
-    "",
-    "  Ctl+O  Press to open an image from a file.",
-    "",
-    "  space  Press to display the next image in the sequence.",
-    "",
-    "  <      Press to speed-up the display of the images.  Refer to",
-    "         -delay for more information.",
-    "",
-    "  >      Press to slow the display of the images.  Refer to",
-    "         -delay for more information.",
-    "",
-    "  F1     Press to display helpful information about animate(1).",
-    "",
-    "  Find   Press to browse documentation about ImageMagick.",
-    "",
-    "  ?      Press to display information about the image.  Press",
-    "         any key or button to erase the information.",
-    "",
-    "         This information is printed: image name;  image size;",
-    "         and the total number of unique colors in the image.",
-    "",
-    "  Ctl-q  Press to discard all images and exit program.",
-    (char *) NULL
+    "BUTTONS\n"
+    "\n"
+    "  Press any button to map or unmap the Command widget.\n"
+    "\n"
+    "COMMAND WIDGET\n"
+    "  The Command widget lists a number of sub-menus and commands.\n"
+    "  They are\n"
+    "\n"
+    "    Animate\n"
+    "      Open...\n"
+    "      Save...\n"
+    "      Play\n"
+    "      Step\n"
+    "      Repeat\n"
+    "      Auto Reverse\n"
+    "    Speed\n"
+    "      Slower\n"
+    "      Faster\n"
+    "    Direction\n"
+    "      Forward\n"
+    "      Reverse\n"
+    "      Help\n"
+    "        Overview\n"
+    "        Browse Documentation\n"
+    "        About Animate\n"
+    "    Image Info\n"
+    "    Quit\n"
+    "\n"
+    "  Menu items with a indented triangle have a sub-menu.  They\n"
+    "  are represented above as the indented items.  To access a\n"
+    "  sub-menu item, move the pointer to the appropriate menu and\n"
+    "  press a button and drag.  When you find the desired sub-menu\n"
+    "  item, release the button and the command is executed.  Move\n"
+    "  the pointer away from the sub-menu if you decide not to\n"
+    "  execute a particular command.\n"
+    "\n"
+    "KEYBOARD ACCELERATORS\n"
+    "  Accelerators are one or two key presses that effect a\n"
+    "  particular command.  The keyboard accelerators that\n"
+    "  animate(1) understands is:\n"
+    "\n"
+    "  Ctl+O  Press to open an image from a file.\n"
+    "\n"
+    "  space  Press to display the next image in the sequence.\n"
+    "\n"
+    "  <      Press to speed-up the display of the images.  Refer to\n"
+    "         -delay for more information.\n"
+    "\n"
+    "  >      Press to slow the display of the images.  Refer to\n"
+    "         -delay for more information.\n"
+    "\n"
+    "  F1     Press to display helpful information about animate(1).\n"
+    "\n"
+    "  Find   Press to browse documentation about ImageMagick.\n"
+    "\n"
+    "  ?      Press to display information about the image.  Press\n"
+    "         any key or button to erase the information.\n"
+    "\n"
+    "         This information is printed: image name;  image size;\n"
+    "         and the total number of unique colors in the image.\n"
+    "\n"
+    "  Ctl-q  Press to discard all images and exit program.\n"
   };
 \f
 /*
   Constant declarations.
 */
 static const char
-  *const PageSizes[] =
+  *PageSizes[] =
   {
     "Letter",
     "Tabloid",
@@ -594,7 +593,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       /*
         User requested help.
       */
-      XTextViewWidget(display,resource_info,windows,MagickFalse,
+      XTextViewHelp(display,resource_info,windows,MagickFalse,
         "Help Viewer - Animate",AnimateHelp);
       break;
     }
@@ -1216,7 +1215,7 @@ MagickExport Image *XAnimateImages(Display *display,
 #define MagickTitle  "Commands"
 
   static const char
-    *const CommandMenu[]=
+    *CommandMenu[]=
     {
       "Animate",
       "Speed",
@@ -1226,7 +1225,7 @@ MagickExport Image *XAnimateImages(Display *display,
       "Quit",
       (char *) NULL
     },
-    *const AnimateMenu[]=
+    *AnimateMenu[]=
     {
       "Open...",
       "Play",
@@ -1236,19 +1235,19 @@ MagickExport Image *XAnimateImages(Display *display,
       "Save...",
       (char *) NULL
     },
-    *const SpeedMenu[]=
+    *SpeedMenu[]=
     {
       "Faster",
       "Slower",
       (char *) NULL
     },
-    *const DirectionMenu[]=
+    *DirectionMenu[]=
     {
       "Forward",
       "Reverse",
       (char *) NULL
     },
-    *const HelpMenu[]=
+    *HelpMenu[]=
     {
       "Overview",
       "Browse Documentation",
@@ -1257,7 +1256,7 @@ MagickExport Image *XAnimateImages(Display *display,
     };
 
   static const char
-    *const *Menus[MagickMenus]=
+    **Menus[MagickMenus]=
     {
       AnimateMenu,
       SpeedMenu,
index 0ceae38805bd804c6900dcec2ba8f57ba71acd93..4c15aa348dc70a78ac34525b42e3aaf4267b5d55 100644 (file)
@@ -123,7 +123,7 @@ static const unsigned char
   };
 
 static const char
-  *const PageSizes[] =
+  *PageSizes[] =
   {
     "Letter",
     "Tabloid",
@@ -146,1194 +146,1180 @@ static const char
   Help widget declarations.
 */
 static const char
-  *const ImageAnnotateHelp[] =
+  ImageAnnotateHelp[] =
   {
-    "In annotate mode, the Command widget has these options:",
-    "",
-    "    Font Name",
-    "      fixed",
-    "      variable",
-    "      5x8",
-    "      6x10",
-    "      7x13bold",
-    "      8x13bold",
-    "      9x15bold",
-    "      10x20",
-    "      12x24",
-    "      Browser...",
-    "    Font Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      transparent",
-    "      Browser...",
-    "    Font Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      transparent",
-    "      Browser...",
-    "    Rotate Text",
-    "      -90",
-    "      -45",
-    "      -30",
-    "      0",
-    "      30",
-    "      45",
-    "      90",
-    "      180",
-    "      Dialog...",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a font name from the Font Name sub-menu.  Additional",
-    "font names can be specified with the font browser.  You can",
-    "change the menu names by setting the X resources font1",
-    "through font9.",
-    "",
-    "Choose a font color from the Font Color sub-menu.",
-    "Additional font colors can be specified with the color",
-    "browser.  You can change the menu colors by setting the X",
-    "resources pen1 through pen9.",
-    "",
-    "If you select the color browser and press Grab, you can",
-    "choose the font color by moving the pointer to the desired",
-    "color on the screen and press any button.",
-    "",
-    "If you choose to rotate the text, choose Rotate Text from the",
-    "menu and select an angle.  Typically you will only want to",
-    "rotate one line of text at a time.  Depending on the angle you",
-    "choose, subsequent lines may end up overwriting each other.",
-    "",
-    "Choosing a font and its color is optional.  The default font",
-    "is fixed and the default color is black.  However, you must",
-    "choose a location to begin entering text and press button 1.",
-    "An underscore character will appear at the location of the",
-    "pointer.  The cursor changes to a pencil to indicate you are",
-    "in text mode.  To exit immediately, press Dismiss.",
-    "",
-    "In text mode, any key presses will display the character at",
-    "the location of the underscore and advance the underscore",
-    "cursor.  Enter your text and once completed press Apply to",
-    "finish your image annotation.  To correct errors press BACK",
-    "SPACE.  To delete an entire line of text, press DELETE.  Any",
-    "text that exceeds the boundaries of the image window is",
-    "automagically continued onto the next line.",
-    "",
-    "The actual color you request for the font is saved in the",
-    "image.  However, the color that appears in your image window",
-    "may be different.  For example, on a monochrome screen the",
-    "text will appear black or white even if you choose the color",
-    "red as the font color.  However, the image saved to a file",
-    "with -write is written with red lettering.  To assure the",
-    "correct color text in the final image, any PseudoClass image",
-    "is promoted to DirectClass (see miff(5)).  To force a",
-    "PseudoClass image to remain PseudoClass, use -colors.",
-    (char *) NULL,
+    "In annotate mode, the Command widget has these options:\n"
+    "\n"
+    "    Font Name\n"
+    "      fixed\n"
+    "      variable\n"
+    "      5x8\n"
+    "      6x10\n"
+    "      7x13bold\n"
+    "      8x13bold\n"
+    "      9x15bold\n"
+    "      10x20\n"
+    "      12x24\n"
+    "      Browser...\n"
+    "    Font Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      transparent\n"
+    "      Browser...\n"
+    "    Font Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      transparent\n"
+    "      Browser...\n"
+    "    Rotate Text\n"
+    "      -90\n"
+    "      -45\n"
+    "      -30\n"
+    "      0\n"
+    "      30\n"
+    "      45\n"
+    "      90\n"
+    "      180\n"
+    "      Dialog...\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a font name from the Font Name sub-menu.  Additional\n"
+    "font names can be specified with the font browser.  You can\n"
+    "change the menu names by setting the X resources font1\n"
+    "through font9.\n"
+    "\n"
+    "Choose a font color from the Font Color sub-menu.\n"
+    "Additional font colors can be specified with the color\n"
+    "browser.  You can change the menu colors by setting the X\n"
+    "resources pen1 through pen9.\n"
+    "\n"
+    "If you select the color browser and press Grab, you can\n"
+    "choose the font color by moving the pointer to the desired\n"
+    "color on the screen and press any button.\n"
+    "\n"
+    "If you choose to rotate the text, choose Rotate Text from the\n"
+    "menu and select an angle.  Typically you will only want to\n"
+    "rotate one line of text at a time.  Depending on the angle you\n"
+    "choose, subsequent lines may end up overwriting each other.\n"
+    "\n"
+    "Choosing a font and its color is optional.  The default font\n"
+    "is fixed and the default color is black.  However, you must\n"
+    "choose a location to begin entering text and press button 1.\n"
+    "An underscore character will appear at the location of the\n"
+    "pointer.  The cursor changes to a pencil to indicate you are\n"
+    "in text mode.  To exit immediately, press Dismiss.\n"
+    "\n"
+    "In text mode, any key presses will display the character at\n"
+    "the location of the underscore and advance the underscore\n"
+    "cursor.  Enter your text and once completed press Apply to\n"
+    "finish your image annotation.  To correct errors press BACK\n"
+    "SPACE.  To delete an entire line of text, press DELETE.  Any\n"
+    "text that exceeds the boundaries of the image window is\n"
+    "automagically continued onto the next line.\n"
+    "\n"
+    "The actual color you request for the font is saved in the\n"
+    "image.  However, the color that appears in your image window\n"
+    "may be different.  For example, on a monochrome screen the\n"
+    "text will appear black or white even if you choose the color\n"
+    "red as the font color.  However, the image saved to a file\n"
+    "with -write is written with red lettering.  To assure the\n"
+    "correct color text in the final image, any PseudoClass image\n"
+    "is promoted to DirectClass (see miff(5)).  To force a\n"
+    "PseudoClass image to remain PseudoClass, use -colors.\n"
   },
-  *const ImageChopHelp[] =
+  ImageChopHelp[] =
   {
-    "In chop mode, the Command widget has these options:",
-    "",
-    "    Direction",
-    "      horizontal",
-    "      vertical",
-    "    Help",
-    "    Dismiss",
-    "",
-    "If the you choose the horizontal direction (this the",
-    "default), the area of the image between the two horizontal",
-    "endpoints of the chop line is removed.  Otherwise, the area",
-    "of the image between the two vertical endpoints of the chop",
-    "line is removed.",
-    "",
-    "Select a location within the image window to begin your chop,",
-    "press and hold any button.  Next, move the pointer to",
-    "another location in the image.  As you move a line will",
-    "connect the initial location and the pointer.  When you",
-    "release the button, the area within the image to chop is",
-    "determined by which direction you choose from the Command",
-    "widget.",
-    "",
-    "To cancel the image chopping, move the pointer back to the",
-    "starting point of the line and release the button.",
-    (char *) NULL,
+    "In chop mode, the Command widget has these options:\n"
+    "\n"
+    "    Direction\n"
+    "      horizontal\n"
+    "      vertical\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "If the you choose the horizontal direction (this the\n"
+    "default), the area of the image between the two horizontal\n"
+    "endpoints of the chop line is removed.  Otherwise, the area\n"
+    "of the image between the two vertical endpoints of the chop\n"
+    "line is removed.\n"
+    "\n"
+    "Select a location within the image window to begin your chop,\n"
+    "press and hold any button.  Next, move the pointer to\n"
+    "another location in the image.  As you move a line will\n"
+    "connect the initial location and the pointer.  When you\n"
+    "release the button, the area within the image to chop is\n"
+    "determined by which direction you choose from the Command\n"
+    "widget.\n"
+    "\n"
+    "To cancel the image chopping, move the pointer back to the\n"
+    "starting point of the line and release the button.\n"
   },
-  *const ImageColorEditHelp[] =
+  ImageColorEditHelp[] =
   {
-    "In color edit mode, the Command widget has these options:",
-    "",
-    "    Method",
-    "      point",
-    "      replace",
-    "      floodfill",
-    "      filltoborder",
-    "      reset",
-    "    Pixel Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      Browser...",
-    "    Border Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      Browser...",
-    "    Fuzz",
-    "      0%",
-    "      2%",
-    "      5%",
-    "      10%",
-    "      15%",
-    "      Dialog...",
-    "    Undo",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a color editing method from the Method sub-menu",
-    "of the Command widget.  The point method recolors any pixel",
-    "selected with the pointer until the button is released.  The",
-    "replace method recolors any pixel that matches the color of",
-    "the pixel you select with a button press.  Floodfill recolors",
-    "any pixel that matches the color of the pixel you select with",
-    "a button press and is a neighbor.  Whereas filltoborder recolors",
-    "any neighbor pixel that is not the border color.  Finally reset",
-    "changes the entire image to the designated color.",
-    "",
-    "Next, choose a pixel color from the Pixel Color sub-menu.",
-    "Additional pixel colors can be specified with the color",
-    "browser.  You can change the menu colors by setting the X",
-    "resources pen1 through pen9.",
-    "",
-    "Now press button 1 to select a pixel within the image window",
-    "to change its color.  Additional pixels may be recolored as",
-    "prescribed by the method you choose.",
-    "",
-    "If the Magnify widget is mapped, it can be helpful in positioning",
-    "your pointer within the image (refer to button 2).",
-    "",
-    "The actual color you request for the pixels is saved in the",
-    "image.  However, the color that appears in your image window",
-    "may be different.  For example, on a monochrome screen the",
-    "pixel will appear black or white even if you choose the",
-    "color red as the pixel color.  However, the image saved to a",
-    "file with -write is written with red pixels.  To assure the",
-    "correct color text in the final image, any PseudoClass image",
-    "is promoted to DirectClass (see miff(5)).  To force a",
-    "PseudoClass image to remain PseudoClass, use -colors.",
-    (char *) NULL,
+    "In color edit mode, the Command widget has these options:\n"
+    "\n"
+    "    Method\n"
+    "      point\n"
+    "      replace\n"
+    "      floodfill\n"
+    "      filltoborder\n"
+    "      reset\n"
+    "    Pixel Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      Browser...\n"
+    "    Border Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      Browser...\n"
+    "    Fuzz\n"
+    "      0%\n"
+    "      2%\n"
+    "      5%\n"
+    "      10%\n"
+    "      15%\n"
+    "      Dialog...\n"
+    "    Undo\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a color editing method from the Method sub-menu\n"
+    "of the Command widget.  The point method recolors any pixel\n"
+    "selected with the pointer until the button is released.  The\n"
+    "replace method recolors any pixel that matches the color of\n"
+    "the pixel you select with a button press.  Floodfill recolors\n"
+    "any pixel that matches the color of the pixel you select with\n"
+    "a button press and is a neighbor.  Whereas filltoborder recolors\n"
+    "any neighbor pixel that is not the border color.  Finally reset\n"
+    "changes the entire image to the designated color.\n"
+    "\n"
+    "Next, choose a pixel color from the Pixel Color sub-menu.\n"
+    "Additional pixel colors can be specified with the color\n"
+    "browser.  You can change the menu colors by setting the X\n"
+    "resources pen1 through pen9.\n"
+    "\n"
+    "Now press button 1 to select a pixel within the image window\n"
+    "to change its color.  Additional pixels may be recolored as\n"
+    "prescribed by the method you choose.\n"
+    "\n"
+    "If the Magnify widget is mapped, it can be helpful in positioning\n"
+    "your pointer within the image (refer to button 2).\n"
+    "\n"
+    "The actual color you request for the pixels is saved in the\n"
+    "image.  However, the color that appears in your image window\n"
+    "may be different.  For example, on a monochrome screen the\n"
+    "pixel will appear black or white even if you choose the\n"
+    "color red as the pixel color.  However, the image saved to a\n"
+    "file with -write is written with red pixels.  To assure the\n"
+    "correct color text in the final image, any PseudoClass image\n"
+    "is promoted to DirectClass (see miff(5)).  To force a\n"
+    "PseudoClass image to remain PseudoClass, use -colors.\n"
   },
-  *const ImageCompositeHelp[] =
+  ImageCompositeHelp[] =
   {
-    "First a widget window is displayed requesting you to enter an",
-    "image name. Press Composite, Grab or type a file name.",
-    "Press Cancel if you choose not to create a composite image.",
-    "When you choose Grab, move the pointer to the desired window",
-    "and press any button.",
-    "",
-    "If the Composite image does not have any matte information,",
-    "you are informed and the file browser is displayed again.",
-    "Enter the name of a mask image.  The image is typically",
-    "grayscale and the same size as the composite image.  If the",
-    "image is not grayscale, it is converted to grayscale and the",
-    "resulting intensities are used as matte information.",
-    "",
-    "A small window appears showing the location of the cursor in",
-    "the image window. You are now in composite mode.  To exit",
-    "immediately, press Dismiss.  In composite mode, the Command",
-    "widget has these options:",
-    "",
-    "    Operators",
-    "      Over",
-    "      In",
-    "      Out",
-    "      Atop",
-    "      Xor",
-    "      Plus",
-    "      Minus",
-    "      Add",
-    "      Subtract",
-    "      Difference",
-    "      Multiply",
-    "      Bumpmap",
-    "      Copy",
-    "      CopyRed",
-    "      CopyGreen",
-    "      CopyBlue",
-    "      CopyOpacity",
-    "      Clear",
-    "    Dissolve",
-    "    Displace",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a composite operation from the Operators sub-menu of",
-    "the Command widget.  How each operator behaves is described",
-    "below.  Image window is the image currently displayed on",
-    "your X server and image is the image obtained with the File",
-    "Browser widget.",
-    "",
-    "Over     The result is the union of the two image shapes,",
-    "         with image obscuring image window in the region of",
-    "         overlap.",
-    "",
-    "In       The result is simply image cut by the shape of",
-    "         image window.  None of the image data of image",
-    "         window is in the result.",
-    "",
-    "Out      The resulting image is image with the shape of",
-    "         image window cut out.",
-    "",
-    "Atop     The result is the same shape as image image window,",
-    "         with image obscuring image window where the image",
-    "         shapes overlap.  Note this differs from over",
-    "         because the portion of image outside image window's",
-    "         shape does not appear in the result.",
-    "",
-    "Xor      The result is the image data from both image and",
-    "         image window that is outside the overlap region.",
-    "         The overlap region is blank.",
-    "",
-    "Plus     The result is just the sum of the image data.",
-    "         Output values are cropped to QuantumRange (no overflow).",
-    "",
-    "Minus    The result of image - image window, with underflow",
-    "         cropped to zero.",
-    "",
-    "Add      The result of image + image window, with overflow",
-    "         wrapping around (mod 256).",
-    "",
-    "Subtract The result of image - image window, with underflow",
-    "         wrapping around (mod 256).  The add and subtract",
-    "         operators can be used to perform reversible",
-    "         transformations.",
-    "",
-    "Difference",
-    "         The result of abs(image - image window).  This",
-    "         useful for comparing two very similar images.",
-    "",
-    "Multiply",
-    "         The result of image * image window.  This",
-    "         useful for the creation of drop-shadows.",
-    "",
-    "Bumpmap  The result of surface normals from image * image",
-    "         window.",
-    "",
-    "Copy     The resulting image is image window replaced with",
-    "         image.  Here the matte information is ignored.",
-    "",
-    "CopyRed  The red layer of the image window is replace with",
-    "         the red layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyGreen",
-    "         The green layer of the image window is replace with",
-    "         the green layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyBlue The blue layer of the image window is replace with",
-    "         the blue layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyOpacity",
-    "         The matte layer of the image window is replace with",
-    "         the matte layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "The image compositor requires a matte, or alpha channel in",
-    "the image for some operations.  This extra channel usually",
-    "defines a mask which represents a sort of a cookie-cutter",
-    "for the image.  This the case when matte is opaque (full",
-    "coverage) for pixels inside the shape, zero outside, and",
-    "between 0 and QuantumRange on the boundary.  If image does not",
-    "have a matte channel, it is initialized with 0 for any pixel",
-    "matching in color to pixel location (0,0), otherwise QuantumRange.",
-    "",
-    "If you choose Dissolve, the composite operator becomes Over.  The",
-    "image matte channel percent transparency is initialized to factor.",
-    "The image window is initialized to (100-factor). Where factor is the",
-    "value you specify in the Dialog widget.",
-    "",
-    "Displace shifts the image pixels as defined by a displacement",
-    "map.  With this option, image is used as a displacement map.",
-    "Black, within the displacement map, is a maximum positive",
-    "displacement.  White is a maximum negative displacement and",
-    "middle gray is neutral.  The displacement is scaled to determine",
-    "the pixel shift.  By default, the displacement applies in both the",
-    "horizontal and vertical directions.  However, if you specify a mask,",
-    "image is the horizontal X displacement and mask the vertical Y",
-    "displacement.",
-    "",
-    "Note that matte information for image window is not retained",
-    "for colormapped X server visuals (e.g. StaticColor,",
-    "StaticColor, GrayScale, PseudoColor).  Correct compositing",
-    "behavior may require a TrueColor or DirectColor visual or a",
-    "Standard Colormap.",
-    "",
-    "Choosing a composite operator is optional.  The default",
-    "operator is replace.  However, you must choose a location to",
-    "composite your image and press button 1.  Press and hold the",
-    "button before releasing and an outline of the image will",
-    "appear to help you identify your location.",
-    "",
-    "The actual colors of the composite image is saved.  However,",
-    "the color that appears in image window may be different.",
-    "For example, on a monochrome screen image window will appear",
-    "black or white even though your composited image may have",
-    "many colors.  If the image is saved to a file it is written",
-    "with the correct colors.  To assure the correct colors are",
-    "saved in the final image, any PseudoClass image is promoted",
-    "to DirectClass (see miff(5)).  To force a PseudoClass image",
-    "to remain PseudoClass, use -colors.",
-    (char *) NULL,
+    "First a widget window is displayed requesting you to enter an\n"
+    "image name. Press Composite, Grab or type a file name.\n"
+    "Press Cancel if you choose not to create a composite image.\n"
+    "When you choose Grab, move the pointer to the desired window\n"
+    "and press any button.\n"
+    "\n"
+    "If the Composite image does not have any matte information,\n"
+    "you are informed and the file browser is displayed again.\n"
+    "Enter the name of a mask image.  The image is typically\n"
+    "grayscale and the same size as the composite image.  If the\n"
+    "image is not grayscale, it is converted to grayscale and the\n"
+    "resulting intensities are used as matte information.\n"
+    "\n"
+    "A small window appears showing the location of the cursor in\n"
+    "the image window. You are now in composite mode.  To exit\n"
+    "immediately, press Dismiss.  In composite mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Operators\n"
+    "      Over\n"
+    "      In\n"
+    "      Out\n"
+    "      Atop\n"
+    "      Xor\n"
+    "      Plus\n"
+    "      Minus\n"
+    "      Add\n"
+    "      Subtract\n"
+    "      Difference\n"
+    "      Multiply\n"
+    "      Bumpmap\n"
+    "      Copy\n"
+    "      CopyRed\n"
+    "      CopyGreen\n"
+    "      CopyBlue\n"
+    "      CopyOpacity\n"
+    "      Clear\n"
+    "    Dissolve\n"
+    "    Displace\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a composite operation from the Operators sub-menu of\n"
+    "the Command widget.  How each operator behaves is described\n"
+    "below.  Image window is the image currently displayed on\n"
+    "your X server and image is the image obtained with the File\n"
+    "Browser widget.\n"
+    "\n"
+    "Over     The result is the union of the two image shapes,\n"
+    "         with image obscuring image window in the region of\n"
+    "         overlap.\n"
+    "\n"
+    "In       The result is simply image cut by the shape of\n"
+    "         image window.  None of the image data of image\n"
+    "         window is in the result.\n"
+    "\n"
+    "Out      The resulting image is image with the shape of\n"
+    "         image window cut out.\n"
+    "\n"
+    "Atop     The result is the same shape as image image window,\n"
+    "         with image obscuring image window where the image\n"
+    "         shapes overlap.  Note this differs from over\n"
+    "         because the portion of image outside image window's\n"
+    "         shape does not appear in the result.\n"
+    "\n"
+    "Xor      The result is the image data from both image and\n"
+    "         image window that is outside the overlap region.\n"
+    "         The overlap region is blank.\n"
+    "\n"
+    "Plus     The result is just the sum of the image data.\n"
+    "         Output values are cropped to QuantumRange (no overflow).\n"
+    "\n"
+    "Minus    The result of image - image window, with underflow\n"
+    "         cropped to zero.\n"
+    "\n"
+    "Add      The result of image + image window, with overflow\n"
+    "         wrapping around (mod 256).\n"
+    "\n"
+    "Subtract The result of image - image window, with underflow\n"
+    "         wrapping around (mod 256).  The add and subtract\n"
+    "         operators can be used to perform reversible\n"
+    "         transformations.\n"
+    "\n"
+    "Difference\n"
+    "         The result of abs(image - image window).  This\n"
+    "         useful for comparing two very similar images.\n"
+    "\n"
+    "Multiply\n"
+    "         The result of image * image window.  This\n"
+    "         useful for the creation of drop-shadows.\n"
+    "\n"
+    "Bumpmap  The result of surface normals from image * image\n"
+    "         window.\n"
+    "\n"
+    "Copy     The resulting image is image window replaced with\n"
+    "         image.  Here the matte information is ignored.\n"
+    "\n"
+    "CopyRed  The red layer of the image window is replace with\n"
+    "         the red layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyGreen\n"
+    "         The green layer of the image window is replace with\n"
+    "         the green layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyBlue The blue layer of the image window is replace with\n"
+    "         the blue layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyOpacity\n"
+    "         The matte layer of the image window is replace with\n"
+    "         the matte layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "The image compositor requires a matte, or alpha channel in\n"
+    "the image for some operations.  This extra channel usually\n"
+    "defines a mask which represents a sort of a cookie-cutter\n"
+    "for the image.  This the case when matte is opaque (full\n"
+    "coverage) for pixels inside the shape, zero outside, and\n"
+    "between 0 and QuantumRange on the boundary.  If image does not\n"
+    "have a matte channel, it is initialized with 0 for any pixel\n"
+    "matching in color to pixel location (0,0), otherwise QuantumRange.\n"
+    "\n"
+    "If you choose Dissolve, the composite operator becomes Over.  The\n"
+    "image matte channel percent transparency is initialized to factor.\n"
+    "The image window is initialized to (100-factor). Where factor is the\n"
+    "value you specify in the Dialog widget.\n"
+    "\n"
+    "Displace shifts the image pixels as defined by a displacement\n"
+    "map.  With this option, image is used as a displacement map.\n"
+    "Black, within the displacement map, is a maximum positive\n"
+    "displacement.  White is a maximum negative displacement and\n"
+    "middle gray is neutral.  The displacement is scaled to determine\n"
+    "the pixel shift.  By default, the displacement applies in both the\n"
+    "horizontal and vertical directions.  However, if you specify a mask,\n"
+    "image is the horizontal X displacement and mask the vertical Y\n"
+    "displacement.\n"
+    "\n"
+    "Note that matte information for image window is not retained\n"
+    "for colormapped X server visuals (e.g. StaticColor,\n"
+    "StaticColor, GrayScale, PseudoColor).  Correct compositing\n"
+    "behavior may require a TrueColor or DirectColor visual or a\n"
+    "Standard Colormap.\n"
+    "\n"
+    "Choosing a composite operator is optional.  The default\n"
+    "operator is replace.  However, you must choose a location to\n"
+    "composite your image and press button 1.  Press and hold the\n"
+    "button before releasing and an outline of the image will\n"
+    "appear to help you identify your location.\n"
+    "\n"
+    "The actual colors of the composite image is saved.  However,\n"
+    "the color that appears in image window may be different.\n"
+    "For example, on a monochrome screen image window will appear\n"
+    "black or white even though your composited image may have\n"
+    "many colors.  If the image is saved to a file it is written\n"
+    "with the correct colors.  To assure the correct colors are\n"
+    "saved in the final image, any PseudoClass image is promoted\n"
+    "to DirectClass (see miff(5)).  To force a PseudoClass image\n"
+    "to remain PseudoClass, use -colors.\n"
   },
-  *const ImageCutHelp[] =
+  ImageCutHelp[] =
   {
-    "In cut mode, the Command widget has these options:",
-    "",
-    "    Help",
-    "    Dismiss",
-    "",
-    "To define a cut region, press button 1 and drag.  The",
-    "cut region is defined by a highlighted rectangle that",
-    "expands or contracts as it follows the pointer.  Once you",
-    "are satisfied with the cut region, release the button.",
-    "You are now in rectify mode.  In rectify mode, the Command",
-    "widget has these options:",
-    "",
-    "    Cut",
-    "    Help",
-    "    Dismiss",
-    "",
-    "You can make adjustments by moving the pointer to one of the",
-    "cut rectangle corners, pressing a button, and dragging.",
-    "Finally, press Cut to commit your copy region.  To",
-    "exit without cutting the image, press Dismiss.",
-    (char *) NULL,
+    "In cut mode, the Command widget has these options:\n"
+    "\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "To define a cut region, press button 1 and drag.  The\n"
+    "cut region is defined by a highlighted rectangle that\n"
+    "expands or contracts as it follows the pointer.  Once you\n"
+    "are satisfied with the cut region, release the button.\n"
+    "You are now in rectify mode.  In rectify mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Cut\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "You can make adjustments by moving the pointer to one of the\n"
+    "cut rectangle corners, pressing a button, and dragging.\n"
+    "Finally, press Cut to commit your copy region.  To\n"
+    "exit without cutting the image, press Dismiss.\n"
   },
-  *const ImageCopyHelp[] =
+  ImageCopyHelp[] =
   {
-    "In copy mode, the Command widget has these options:",
-    "",
-    "    Help",
-    "    Dismiss",
-    "",
-    "To define a copy region, press button 1 and drag.  The",
-    "copy region is defined by a highlighted rectangle that",
-    "expands or contracts as it follows the pointer.  Once you",
-    "are satisfied with the copy region, release the button.",
-    "You are now in rectify mode.  In rectify mode, the Command",
-    "widget has these options:",
-    "",
-    "    Copy",
-    "    Help",
-    "    Dismiss",
-    "",
-    "You can make adjustments by moving the pointer to one of the",
-    "copy rectangle corners, pressing a button, and dragging.",
-    "Finally, press Copy to commit your copy region.  To",
-    "exit without copying the image, press Dismiss.",
-    (char *) NULL,
+    "In copy mode, the Command widget has these options:\n"
+    "\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "To define a copy region, press button 1 and drag.  The\n"
+    "copy region is defined by a highlighted rectangle that\n"
+    "expands or contracts as it follows the pointer.  Once you\n"
+    "are satisfied with the copy region, release the button.\n"
+    "You are now in rectify mode.  In rectify mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Copy\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "You can make adjustments by moving the pointer to one of the\n"
+    "copy rectangle corners, pressing a button, and dragging.\n"
+    "Finally, press Copy to commit your copy region.  To\n"
+    "exit without copying the image, press Dismiss.\n"
   },
-  *const ImageCropHelp[] =
+  ImageCropHelp[] =
   {
-    "In crop mode, the Command widget has these options:",
-    "",
-    "    Help",
-    "    Dismiss",
-    "",
-    "To define a cropping region, press button 1 and drag.  The",
-    "cropping region is defined by a highlighted rectangle that",
-    "expands or contracts as it follows the pointer.  Once you",
-    "are satisfied with the cropping region, release the button.",
-    "You are now in rectify mode.  In rectify mode, the Command",
-    "widget has these options:",
-    "",
-    "    Crop",
-    "    Help",
-    "    Dismiss",
-    "",
-    "You can make adjustments by moving the pointer to one of the",
-    "cropping rectangle corners, pressing a button, and dragging.",
-    "Finally, press Crop to commit your cropping region.  To",
-    "exit without cropping the image, press Dismiss.",
-    (char *) NULL,
+    "In crop mode, the Command widget has these options:\n"
+    "\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "To define a cropping region, press button 1 and drag.  The\n"
+    "cropping region is defined by a highlighted rectangle that\n"
+    "expands or contracts as it follows the pointer.  Once you\n"
+    "are satisfied with the cropping region, release the button.\n"
+    "You are now in rectify mode.  In rectify mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Crop\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "You can make adjustments by moving the pointer to one of the\n"
+    "cropping rectangle corners, pressing a button, and dragging.\n"
+    "Finally, press Crop to commit your cropping region.  To\n"
+    "exit without cropping the image, press Dismiss.\n"
   },
-  *const ImageDrawHelp[] =
+  ImageDrawHelp[] =
   {
-    "The cursor changes to a crosshair to indicate you are in",
-    "draw mode.  To exit immediately, press Dismiss.  In draw mode,",
-    "the Command widget has these options:",
-    "",
-    "    Element",
-    "      point",
-    "      line",
-    "      rectangle",
-    "      fill rectangle",
-    "      circle",
-    "      fill circle",
-    "      ellipse",
-    "      fill ellipse",
-    "      polygon",
-    "      fill polygon",
-    "    Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      transparent",
-    "      Browser...",
-    "    Stipple",
-    "      Brick",
-    "      Diagonal",
-    "      Scales",
-    "      Vertical",
-    "      Wavy",
-    "      Translucent",
-    "      Opaque",
-    "      Open...",
-    "    Width",
-    "      1",
-    "      2",
-    "      4",
-    "      8",
-    "      16",
-    "      Dialog...",
-    "    Undo",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a drawing primitive from the Element sub-menu.",
-    "",
-    "Choose a color from the Color sub-menu.  Additional",
-    "colors can be specified with the color browser.",
-    "",
-    "If you choose the color browser and press Grab, you can",
-    "select the color by moving the pointer to the desired",
-    "color on the screen and press any button.  The transparent",
-    "color updates the image matte channel and is useful for",
-    "image compositing.",
-    "",
-    "Choose a stipple, if appropriate, from the Stipple sub-menu.",
-    "Additional stipples can be specified with the file browser.",
-    "Stipples obtained from the file browser must be on disk in the",
-    "X11 bitmap format.",
-    "",
-    "Choose a width, if appropriate, from the Width sub-menu.  To",
-    "choose a specific width select the Dialog widget.",
-    "",
-    "Choose a point in the Image window and press button 1 and",
-    "hold.  Next, move the pointer to another location in the",
-    "image.  As you move, a line connects the initial location and",
-    "the pointer.  When you release the button, the image is",
-    "updated with the primitive you just drew.  For polygons, the",
-    "image is updated when you press and release the button without",
-    "moving the pointer.",
-    "",
-    "To cancel image drawing, move the pointer back to the",
-    "starting point of the line and release the button.",
-    (char *) NULL,
+    "The cursor changes to a crosshair to indicate you are in\n"
+    "draw mode.  To exit immediately, press Dismiss.  In draw mode,\n"
+    "the Command widget has these options:\n"
+    "\n"
+    "    Element\n"
+    "      point\n"
+    "      line\n"
+    "      rectangle\n"
+    "      fill rectangle\n"
+    "      circle\n"
+    "      fill circle\n"
+    "      ellipse\n"
+    "      fill ellipse\n"
+    "      polygon\n"
+    "      fill polygon\n"
+    "    Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      transparent\n"
+    "      Browser...\n"
+    "    Stipple\n"
+    "      Brick\n"
+    "      Diagonal\n"
+    "      Scales\n"
+    "      Vertical\n"
+    "      Wavy\n"
+    "      Translucent\n"
+    "      Opaque\n"
+    "      Open...\n"
+    "    Width\n"
+    "      1\n"
+    "      2\n"
+    "      4\n"
+    "      8\n"
+    "      16\n"
+    "      Dialog...\n"
+    "    Undo\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a drawing primitive from the Element sub-menu.\n"
+    "\n"
+    "Choose a color from the Color sub-menu.  Additional\n"
+    "colors can be specified with the color browser.\n"
+    "\n"
+    "If you choose the color browser and press Grab, you can\n"
+    "select the color by moving the pointer to the desired\n"
+    "color on the screen and press any button.  The transparent\n"
+    "color updates the image matte channel and is useful for\n"
+    "image compositing.\n"
+    "\n"
+    "Choose a stipple, if appropriate, from the Stipple sub-menu.\n"
+    "Additional stipples can be specified with the file browser.\n"
+    "Stipples obtained from the file browser must be on disk in the\n"
+    "X11 bitmap format.\n"
+    "\n"
+    "Choose a width, if appropriate, from the Width sub-menu.  To\n"
+    "choose a specific width select the Dialog widget.\n"
+    "\n"
+    "Choose a point in the Image window and press button 1 and\n"
+    "hold.  Next, move the pointer to another location in the\n"
+    "image.  As you move, a line connects the initial location and\n"
+    "the pointer.  When you release the button, the image is\n"
+    "updated with the primitive you just drew.  For polygons, the\n"
+    "image is updated when you press and release the button without\n"
+    "moving the pointer.\n"
+    "\n"
+    "To cancel image drawing, move the pointer back to the\n"
+    "starting point of the line and release the button.\n"
   },
-  *const DisplayHelp[] =
+  DisplayHelp[] =
   {
-    "BUTTONS",
-    "  The effects of each button press is described below.  Three",
-    "  buttons are required.  If you have a two button mouse,",
-    "  button 1 and 3 are returned.  Press ALT and button 3 to",
-    "  simulate button 2.",
-    "",
-    "  1    Press this button to map or unmap the Command widget.",
-    "",
-    "  2    Press and drag to define a region of the image to",
-    "       magnify.",
-    "",
-    "  3    Press and drag to choose from a select set of commands.",
-    "       This button behaves differently if the image being",
-    "       displayed is a visual image directory.  Here, choose a",
-    "       particular tile of the directory and press this button and",
-    "       drag to select a command from a pop-up menu.  Choose from",
-    "       these menu items:",
-    "",
-    "           Open",
-    "           Next",
-    "           Former",
-    "           Delete",
-    "           Update",
-    "",
-    "       If you choose Open, the image represented by the tile is",
-    "       displayed.  To return to the visual image directory, choose",
-    "       Next from the Command widget.  Next and Former moves to the",
-    "       next or former image respectively.  Choose Delete to delete",
-    "       a particular image tile.  Finally, choose Update to",
-    "       synchronize all the image tiles with their respective",
-    "       images.",
-    "",
-    "COMMAND WIDGET",
-    "  The Command widget lists a number of sub-menus and commands.",
-    "  They are",
-    "",
-    "      File",
-    "        Open...",
-    "        Next",
-    "        Former",
-    "        Select...",
-    "        Save...",
-    "        Print...",
-    "        Delete...",
-    "        New...",
-    "        Visual Directory...",
-    "        Quit",
-    "      Edit",
-    "        Undo",
-    "        Redo",
-    "        Cut",
-    "        Copy",
-    "        Paste",
-    "      View",
-    "        Half Size",
-    "        Original Size",
-    "        Double Size",
-    "        Resize...",
-    "        Apply",
-    "        Refresh",
-    "        Restore",
-    "      Transform",
-    "        Crop",
-    "        Chop",
-    "        Flop",
-    "        Flip",
-    "        Rotate Right",
-    "        Rotate Left",
-    "        Rotate...",
-    "        Shear...",
-    "        Roll...",
-    "        Trim Edges",
-    "      Enhance",
-    "        Brightness...",
-    "        Saturation...",
-    "        Hue...",
-    "        Gamma...",
-    "        Sharpen...",
-    "        Dull",
-    "        Contrast Stretch...",
-    "        Sigmoidal Contrast...",
-    "        Normalize",
-    "        Equalize",
-    "        Negate",
-    "        Grayscale",
-    "        Map...",
-    "        Quantize...",
-    "      Effects",
-    "        Despeckle",
-    "        Emboss",
-    "        Reduce Noise",
-    "        Add Noise",
-    "        Sharpen...",
-    "        Blur...",
-    "        Threshold...",
-    "        Edge Detect...",
-    "        Spread...",
-    "        Shade...",
-    "        Painting...",
-    "        Segment...",
-    "      F/X",
-    "        Solarize...",
-    "        Sepia Tone...",
-    "        Swirl...",
-    "        Implode...",
-    "        Vignette...",
-    "        Wave...",
-    "        Oil Painting...",
-    "        Charcoal Drawing...",
-    "      Image Edit",
-    "        Annotate...",
-    "        Draw...",
-    "        Color...",
-    "        Matte...",
-    "        Composite...",
-    "        Add Border...",
-    "        Add Frame...",
-    "        Comment...",
-    "        Launch...",
-    "        Region of Interest...",
-    "      Miscellany",
-    "        Image Info",
-    "        Zoom Image",
-    "        Show Preview...",
-    "        Show Histogram",
-    "        Show Matte",
-    "        Background...",
-    "        Slide Show",
-    "        Preferences...",
-    "      Help",
-    "        Overview",
-    "        Browse Documentation",
-    "        About Display",
-    "",
-    "  Menu items with a indented triangle have a sub-menu.  They",
-    "  are represented above as the indented items.  To access a",
-    "  sub-menu item, move the pointer to the appropriate menu and",
-    "  press a button and drag.  When you find the desired sub-menu",
-    "  item, release the button and the command is executed.  Move",
-    "  the pointer away from the sub-menu if you decide not to",
-    "  execute a particular command.",
-    "",
-    "KEYBOARD ACCELERATORS",
-    "  Accelerators are one or two key presses that effect a",
-    "  particular command.  The keyboard accelerators that",
-    "  display(1) understands is:",
-    "",
-    "  Ctl+O     Press to open an image from a file.",
-    "",
-    "  space     Press to display the next image.",
-    "",
-    "            If the image is a multi-paged document such as a Postscript",
-    "            document, you can skip ahead several pages by preceding",
-    "            this command with a number.  For example to display the",
-    "            third page beyond the current page, press 3<space>.",
-    "",
-    "  backspace Press to display the former image.",
-    "",
-    "            If the image is a multi-paged document such as a Postscript",
-    "            document, you can skip behind several pages by preceding",
-    "            this command with a number.  For example to display the",
-    "            third page preceding the current page, press 3<backspace>.",
-    "",
-    "  Ctl+S     Press to write the image to a file.",
-    "",
-    "  Ctl+P     Press to print the image to a Postscript printer.",
-    "",
-    "  Ctl+D     Press to delete an image file.",
-    "",
-    "  Ctl+N     Press to create a blank canvas.",
-    "",
-    "  Ctl+Q     Press to discard all images and exit program.",
-    "",
-    "  Ctl+Z     Press to undo last image transformation.",
-    "",
-    "  Ctl+R     Press to redo last image transformation.",
-    "",
-    "  Ctl+X     Press to cut a region of the image.",
-    "",
-    "  Ctl+C     Press to copy a region of the image.",
-    "",
-    "  Ctl+V     Press to paste a region to the image.",
-    "",
-    "  <         Press to half the image size.",
-    "",
-    "  -         Press to return to the original image size.",
-    "",
-    "  >         Press to double the image size.",
-    "",
-    "  %         Press to resize the image to a width and height you",
-    "            specify.",
-    "",
+    "BUTTONS\n"
+    "  The effects of each button press is described below.  Three\n"
+    "  buttons are required.  If you have a two button mouse,\n"
+    "  button 1 and 3 are returned.  Press ALT and button 3 to\n"
+    "  simulate button 2.\n"
+    "\n"
+    "  1    Press this button to map or unmap the Command widget.\n"
+    "\n"
+    "  2    Press and drag to define a region of the image to\n"
+    "       magnify.\n"
+    "\n"
+    "  3    Press and drag to choose from a select set of commands.\n"
+    "       This button behaves differently if the image being\n"
+    "       displayed is a visual image directory.  Here, choose a\n"
+    "       particular tile of the directory and press this button and\n"
+    "       drag to select a command from a pop-up menu.  Choose from\n"
+    "       these menu items:\n"
+    "\n"
+    "           Open\n"
+    "           Next\n"
+    "           Former\n"
+    "           Delete\n"
+    "           Update\n"
+    "\n"
+    "       If you choose Open, the image represented by the tile is\n"
+    "       displayed.  To return to the visual image directory, choose\n"
+    "       Next from the Command widget.  Next and Former moves to the\n"
+    "       next or former image respectively.  Choose Delete to delete\n"
+    "       a particular image tile.  Finally, choose Update to\n"
+    "       synchronize all the image tiles with their respective\n"
+    "       images.\n"
+    "\n"
+    "COMMAND WIDGET\n"
+    "  The Command widget lists a number of sub-menus and commands.\n"
+    "  They are\n"
+    "\n"
+    "      File\n"
+    "        Open...\n"
+    "        Next\n"
+    "        Former\n"
+    "        Select...\n"
+    "        Save...\n"
+    "        Print...\n"
+    "        Delete...\n"
+    "        New...\n"
+    "        Visual Directory...\n"
+    "        Quit\n"
+    "      Edit\n"
+    "        Undo\n"
+    "        Redo\n"
+    "        Cut\n"
+    "        Copy\n"
+    "        Paste\n"
+    "      View\n"
+    "        Half Size\n"
+    "        Original Size\n"
+    "        Double Size\n"
+    "        Resize...\n"
+    "        Apply\n"
+    "        Refresh\n"
+    "        Restore\n"
+    "      Transform\n"
+    "        Crop\n"
+    "        Chop\n"
+    "        Flop\n"
+    "        Flip\n"
+    "        Rotate Right\n"
+    "        Rotate Left\n"
+    "        Rotate...\n"
+    "        Shear...\n"
+    "        Roll...\n"
+    "        Trim Edges\n"
+    "      Enhance\n"
+    "        Brightness...\n"
+    "        Saturation...\n"
+    "        Hue...\n"
+    "        Gamma...\n"
+    "        Sharpen...\n"
+    "        Dull\n"
+    "        Contrast Stretch...\n"
+    "        Sigmoidal Contrast...\n"
+    "        Normalize\n"
+    "        Equalize\n"
+    "        Negate\n"
+    "        Grayscale\n"
+    "        Map...\n"
+    "        Quantize...\n"
+    "      Effects\n"
+    "        Despeckle\n"
+    "        Emboss\n"
+    "        Reduce Noise\n"
+    "        Add Noise\n"
+    "        Sharpen...\n"
+    "        Blur...\n"
+    "        Threshold...\n"
+    "        Edge Detect...\n"
+    "        Spread...\n"
+    "        Shade...\n"
+    "        Painting...\n"
+    "        Segment...\n"
+    "      F/X\n"
+    "        Solarize...\n"
+    "        Sepia Tone...\n"
+    "        Swirl...\n"
+    "        Implode...\n"
+    "        Vignette...\n"
+    "        Wave...\n"
+    "        Oil Painting...\n"
+    "        Charcoal Drawing...\n"
+    "      Image Edit\n"
+    "        Annotate...\n"
+    "        Draw...\n"
+    "        Color...\n"
+    "        Matte...\n"
+    "        Composite...\n"
+    "        Add Border...\n"
+    "        Add Frame...\n"
+    "        Comment...\n"
+    "        Launch...\n"
+    "        Region of Interest...\n"
+    "      Miscellany\n"
+    "        Image Info\n"
+    "        Zoom Image\n"
+    "        Show Preview...\n"
+    "        Show Histogram\n"
+    "        Show Matte\n"
+    "        Background...\n"
+    "        Slide Show\n"
+    "        Preferences...\n"
+    "      Help\n"
+    "        Overview\n"
+    "        Browse Documentation\n"
+    "        About Display\n"
+    "\n"
+    "  Menu items with a indented triangle have a sub-menu.  They\n"
+    "  are represented above as the indented items.  To access a\n"
+    "  sub-menu item, move the pointer to the appropriate menu and\n"
+    "  press a button and drag.  When you find the desired sub-menu\n"
+    "  item, release the button and the command is executed.  Move\n"
+    "  the pointer away from the sub-menu if you decide not to\n"
+    "  execute a particular command.\n"
+    "\n"
+    "KEYBOARD ACCELERATORS\n"
+    "  Accelerators are one or two key presses that effect a\n"
+    "  particular command.  The keyboard accelerators that\n"
+    "  display(1) understands is:\n"
+    "\n"
+    "  Ctl+O     Press to open an image from a file.\n"
+    "\n"
+    "  space     Press to display the next image.\n"
+    "\n"
+    "            If the image is a multi-paged document such as a Postscript\n"
+    "            document, you can skip ahead several pages by preceding\n"
+    "            this command with a number.  For example to display the\n"
+    "            third page beyond the current page, press 3<space>.\n"
+    "\n"
+    "  backspace Press to display the former image.\n"
+    "\n"
+    "            If the image is a multi-paged document such as a Postscript\n"
+    "            document, you can skip behind several pages by preceding\n"
+    "            this command with a number.  For example to display the\n"
+    "            third page preceding the current page, press 3<backspace>.\n"
+    "\n"
+    "  Ctl+S     Press to write the image to a file.\n"
+    "\n"
+    "  Ctl+P     Press to print the image to a Postscript printer.\n"
+    "\n"
+    "  Ctl+D     Press to delete an image file.\n"
+    "\n"
+    "  Ctl+N     Press to create a blank canvas.\n"
+    "\n"
+    "  Ctl+Q     Press to discard all images and exit program.\n"
+    "\n"
+    "  Ctl+Z     Press to undo last image transformation.\n"
+    "\n"
+    "  Ctl+R     Press to redo last image transformation.\n"
+    "\n"
+    "  Ctl+X     Press to cut a region of the image.\n"
+    "\n"
+    "  Ctl+C     Press to copy a region of the image.\n"
+    "\n"
+    "  Ctl+V     Press to paste a region to the image.\n"
+    "\n"
+    "  <         Press to half the image size.\n"
+    "\n"
+    "  -         Press to return to the original image size.\n"
+    "\n"
+    "  >         Press to double the image size.\n"
+    "\n"
+    "  %         Press to resize the image to a width and height you\n"
+    "            specify.\n"
+    "\n"
     "Cmd-A       Press to make any image transformations permanent."
-    "",
-    "            By default, any image size transformations are applied",
-    "            to the original image to create the image displayed on",
-    "            the X server.  However, the transformations are not",
-    "            permanent (i.e. the original image does not change",
-    "            size only the X image does).  For example, if you",
-    "            press > the X image will appear to double in size,",
-    "            but the original image will in fact remain the same size.",
-    "            To force the original image to double in size, press >",
-    "            followed by Cmd-A.",
-    "",
-    "  @         Press to refresh the image window.",
-    "",
-    "  C         Press to cut out a rectangular region of the image.",
-    "",
-    "  [         Press to chop the image.",
-    "",
-    "  H         Press to flop image in the horizontal direction.",
-    "",
-    "  V         Press to flip image in the vertical direction.",
-    "",
-    "  /         Press to rotate the image 90 degrees clockwise.",
-    "",
-    " \\         Press to rotate the image 90 degrees counter-clockwise.",
-    "",
-    "  *         Press to rotate the image the number of degrees you",
-    "            specify.",
-    "",
-    "  S         Press to shear the image the number of degrees you",
-    "            specify.",
-    "",
-    "  R         Press to roll the image.",
-    "",
-    "  T         Press to trim the image edges.",
-    "",
-    "  Shft-H    Press to vary the image hue.",
-    "",
-    "  Shft-S    Press to vary the color saturation.",
-    "",
-    "  Shft-L    Press to vary the color brightness.",
-    "",
-    "  Shft-G    Press to gamma correct the image.",
-    "",
-    "  Shft-C    Press to sharpen the image contrast.",
-    "",
-    "  Shft-Z    Press to dull the image contrast.",
-    "",
-    "  =         Press to perform histogram equalization on the image.",
-    "",
-    "  Shft-N    Press to perform histogram normalization on the image.",
-    "",
-    "  Shft-~    Press to negate the colors of the image.",
-    "",
-    "  .         Press to convert the image colors to gray.",
-    "",
-    "  Shft-#    Press to set the maximum number of unique colors in the",
-    "            image.",
-    "",
-    "  F2        Press to reduce the speckles in an image.",
-    "",
-    "  F3        Press to eliminate peak noise from an image.",
-    "",
-    "  F4        Press to add noise to an image.",
-    "",
-    "  F5        Press to sharpen an image.",
-    "",
-    "  F6        Press to delete an image file.",
-    "",
-    "  F7        Press to threshold the image.",
-    "",
-    "  F8        Press to detect edges within an image.",
-    "",
-    "  F9        Press to emboss an image.",
-    "",
-    "  F10       Press to displace pixels by a random amount.",
-    "",
-    "  F11       Press to negate all pixels above the threshold level.",
-    "",
-    "  F12       Press to shade the image using a distant light source.",
-    "",
-    "  F13       Press to lighten or darken image edges to create a 3-D effect.",
-    "",
-    "  F14       Press to segment the image by color.",
-    "",
-    "  Meta-S    Press to swirl image pixels about the center.",
-    "",
-    "  Meta-I    Press to implode image pixels about the center.",
-    "",
-    "  Meta-W    Press to alter an image along a sine wave.",
-    "",
-    "  Meta-P    Press to simulate an oil painting.",
-    "",
-    "  Meta-C    Press to simulate a charcoal drawing.",
-    "",
-    "  Alt-A     Press to annotate the image with text.",
-    "",
-    "  Alt-D     Press to draw on an image.",
-    "",
-    "  Alt-P     Press to edit an image pixel color.",
-    "",
-    "  Alt-M     Press to edit the image matte information.",
-    "",
-    "  Alt-V     Press to composite the image with another.",
-    "",
-    "  Alt-B     Press to add a border to the image.",
-    "",
-    "  Alt-F     Press to add an ornamental border to the image.",
-    "",
-    "  Alt-Shft-!",
-    "            Press to add an image comment.",
-    "",
-    "  Ctl-A     Press to apply image processing techniques to a region",
-    "            of interest.",
-    "",
-    "  Shft-?    Press to display information about the image.",
-    "",
-    "  Shft-+    Press to map the zoom image window.",
-    "",
-    "  Shft-P    Press to preview an image enhancement, effect, or f/x.",
-    "",
-    "  F1        Press to display helpful information about display(1).",
-    "",
-    "  Find      Press to browse documentation about ImageMagick.",
-    "",
-    "  1-9       Press to change the level of magnification.",
-    "",
-    "  Use the arrow keys to move the image one pixel up, down,",
-    "  left, or right within the magnify window.  Be sure to first",
-    "  map the magnify window by pressing button 2.",
-    "",
-    "  Press ALT and one of the arrow keys to trim off one pixel",
-    "  from any side of the image.",
-    (char *) NULL,
+    "\n"
+    "            By default, any image size transformations are applied\n"
+    "            to the original image to create the image displayed on\n"
+    "            the X server.  However, the transformations are not\n"
+    "            permanent (i.e. the original image does not change\n"
+    "            size only the X image does).  For example, if you\n"
+    "            press > the X image will appear to double in size,\n"
+    "            but the original image will in fact remain the same size.\n"
+    "            To force the original image to double in size, press >\n"
+    "            followed by Cmd-A.\n"
+    "\n"
+    "  @         Press to refresh the image window.\n"
+    "\n"
+    "  C         Press to cut out a rectangular region of the image.\n"
+    "\n"
+    "  [         Press to chop the image.\n"
+    "\n"
+    "  H         Press to flop image in the horizontal direction.\n"
+    "\n"
+    "  V         Press to flip image in the vertical direction.\n"
+    "\n"
+    "  /         Press to rotate the image 90 degrees clockwise.\n"
+    "\n"
+    " \\         Press to rotate the image 90 degrees counter-clockwise.\n"
+    "\n"
+    "  *         Press to rotate the image the number of degrees you\n"
+    "            specify.\n"
+    "\n"
+    "  S         Press to shear the image the number of degrees you\n"
+    "            specify.\n"
+    "\n"
+    "  R         Press to roll the image.\n"
+    "\n"
+    "  T         Press to trim the image edges.\n"
+    "\n"
+    "  Shft-H    Press to vary the image hue.\n"
+    "\n"
+    "  Shft-S    Press to vary the color saturation.\n"
+    "\n"
+    "  Shft-L    Press to vary the color brightness.\n"
+    "\n"
+    "  Shft-G    Press to gamma correct the image.\n"
+    "\n"
+    "  Shft-C    Press to sharpen the image contrast.\n"
+    "\n"
+    "  Shft-Z    Press to dull the image contrast.\n"
+    "\n"
+    "  =         Press to perform histogram equalization on the image.\n"
+    "\n"
+    "  Shft-N    Press to perform histogram normalization on the image.\n"
+    "\n"
+    "  Shft-~    Press to negate the colors of the image.\n"
+    "\n"
+    "  .         Press to convert the image colors to gray.\n"
+    "\n"
+    "  Shft-#    Press to set the maximum number of unique colors in the\n"
+    "            image.\n"
+    "\n"
+    "  F2        Press to reduce the speckles in an image.\n"
+    "\n"
+    "  F3        Press to eliminate peak noise from an image.\n"
+    "\n"
+    "  F4        Press to add noise to an image.\n"
+    "\n"
+    "  F5        Press to sharpen an image.\n"
+    "\n"
+    "  F6        Press to delete an image file.\n"
+    "\n"
+    "  F7        Press to threshold the image.\n"
+    "\n"
+    "  F8        Press to detect edges within an image.\n"
+    "\n"
+    "  F9        Press to emboss an image.\n"
+    "\n"
+    "  F10       Press to displace pixels by a random amount.\n"
+    "\n"
+    "  F11       Press to negate all pixels above the threshold level.\n"
+    "\n"
+    "  F12       Press to shade the image using a distant light source.\n"
+    "\n"
+    "  F13       Press to lighten or darken image edges to create a 3-D effect.\n"
+    "\n"
+    "  F14       Press to segment the image by color.\n"
+    "\n"
+    "  Meta-S    Press to swirl image pixels about the center.\n"
+    "\n"
+    "  Meta-I    Press to implode image pixels about the center.\n"
+    "\n"
+    "  Meta-W    Press to alter an image along a sine wave.\n"
+    "\n"
+    "  Meta-P    Press to simulate an oil painting.\n"
+    "\n"
+    "  Meta-C    Press to simulate a charcoal drawing.\n"
+    "\n"
+    "  Alt-A     Press to annotate the image with text.\n"
+    "\n"
+    "  Alt-D     Press to draw on an image.\n"
+    "\n"
+    "  Alt-P     Press to edit an image pixel color.\n"
+    "\n"
+    "  Alt-M     Press to edit the image matte information.\n"
+    "\n"
+    "  Alt-V     Press to composite the image with another.\n"
+    "\n"
+    "  Alt-B     Press to add a border to the image.\n"
+    "\n"
+    "  Alt-F     Press to add an ornamental border to the image.\n"
+    "\n"
+    "  Alt-Shft-!\n"
+    "            Press to add an image comment.\n"
+    "\n"
+    "  Ctl-A     Press to apply image processing techniques to a region\n"
+    "            of interest.\n"
+    "\n"
+    "  Shft-?    Press to display information about the image.\n"
+    "\n"
+    "  Shft-+    Press to map the zoom image window.\n"
+    "\n"
+    "  Shft-P    Press to preview an image enhancement, effect, or f/x.\n"
+    "\n"
+    "  F1        Press to display helpful information about display(1).\n"
+    "\n"
+    "  Find      Press to browse documentation about ImageMagick.\n"
+    "\n"
+    "  1-9       Press to change the level of magnification.\n"
+    "\n"
+    "  Use the arrow keys to move the image one pixel up, down,\n"
+    "  left, or right within the magnify window.  Be sure to first\n"
+    "  map the magnify window by pressing button 2.\n"
+    "\n"
+    "  Press ALT and one of the arrow keys to trim off one pixel\n"
+    "  from any side of the image.\n"
   },
-  *const ImageMatteEditHelp[] =
+  ImageMatteEditHelp[] =
   {
-    "Matte information within an image is useful for some",
-    "operations such as image compositing (See IMAGE",
-    "COMPOSITING).  This extra channel usually defines a mask",
-    "which represents a sort of a cookie-cutter for the image.",
-    "This the case when matte is opaque (full coverage) for",
-    "pixels inside the shape, zero outside, and between 0 and",
-    "QuantumRange on the boundary.",
-    "",
-    "A small window appears showing the location of the cursor in",
-    "the image window. You are now in matte edit mode.  To exit",
-    "immediately, press Dismiss.  In matte edit mode, the Command",
-    "widget has these options:",
-    "",
-    "    Method",
-    "      point",
-    "      replace",
-    "      floodfill",
-    "      filltoborder",
-    "      reset",
-    "    Border Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      Browser...",
-    "    Fuzz",
-    "      0%",
-    "      2%",
-    "      5%",
-    "      10%",
-    "      15%",
-    "      Dialog...",
-    "    Matte",
-    "      Opaque",
-    "      Transparent",
-    "      Dialog...",
-    "    Undo",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a matte editing method from the Method sub-menu of",
-    "the Command widget.  The point method changes the matte value",
-    "of any pixel selected with the pointer until the button is",
-    "is released.  The replace method changes the matte value of",
-    "any pixel that matches the color of the pixel you select with",
-    "a button press.  Floodfill changes the matte value of any pixel",
-    "that matches the color of the pixel you select with a button",
-    "press and is a neighbor.  Whereas filltoborder changes the matte",
-    "value any neighbor pixel that is not the border color.  Finally",
-    "reset changes the entire image to the designated matte value.",
-    "",
-    "Choose Matte Value and pick Opaque or Transarent.  For other values",
-    "select the Dialog entry.  Here a dialog appears requesting a matte",
-    "value.  The value you select is assigned as the opacity value of the",
-    "selected pixel or pixels.",
-    "",
-    "Now, press any button to select a pixel within the image",
-    "window to change its matte value.",
-    "",
-    "If the Magnify widget is mapped, it can be helpful in positioning",
-    "your pointer within the image (refer to button 2).",
-    "",
-    "Matte information is only valid in a DirectClass image.",
-    "Therefore, any PseudoClass image is promoted to DirectClass",
-    "(see miff(5)).  Note that matte information for PseudoClass",
-    "is not retained for colormapped X server visuals (e.g.",
-    "StaticColor, StaticColor, GrayScale, PseudoColor) unless you",
-    "immediately save your image to a file (refer to Write).",
-    "Correct matte editing behavior may require a TrueColor or",
-    "DirectColor visual or a Standard Colormap.",
-    (char *) NULL,
+    "Matte information within an image is useful for some\n"
+    "operations such as image compositing (See IMAGE\n"
+    "COMPOSITING).  This extra channel usually defines a mask\n"
+    "which represents a sort of a cookie-cutter for the image.\n"
+    "This the case when matte is opaque (full coverage) for\n"
+    "pixels inside the shape, zero outside, and between 0 and\n"
+    "QuantumRange on the boundary.\n"
+    "\n"
+    "A small window appears showing the location of the cursor in\n"
+    "the image window. You are now in matte edit mode.  To exit\n"
+    "immediately, press Dismiss.  In matte edit mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Method\n"
+    "      point\n"
+    "      replace\n"
+    "      floodfill\n"
+    "      filltoborder\n"
+    "      reset\n"
+    "    Border Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      Browser...\n"
+    "    Fuzz\n"
+    "      0%\n"
+    "      2%\n"
+    "      5%\n"
+    "      10%\n"
+    "      15%\n"
+    "      Dialog...\n"
+    "    Matte\n"
+    "      Opaque\n"
+    "      Transparent\n"
+    "      Dialog...\n"
+    "    Undo\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a matte editing method from the Method sub-menu of\n"
+    "the Command widget.  The point method changes the matte value\n"
+    "of any pixel selected with the pointer until the button is\n"
+    "is released.  The replace method changes the matte value of\n"
+    "any pixel that matches the color of the pixel you select with\n"
+    "a button press.  Floodfill changes the matte value of any pixel\n"
+    "that matches the color of the pixel you select with a button\n"
+    "press and is a neighbor.  Whereas filltoborder changes the matte\n"
+    "value any neighbor pixel that is not the border color.  Finally\n"
+    "reset changes the entire image to the designated matte value.\n"
+    "\n"
+    "Choose Matte Value and pick Opaque or Transarent.  For other values\n"
+    "select the Dialog entry.  Here a dialog appears requesting a matte\n"
+    "value.  The value you select is assigned as the opacity value of the\n"
+    "selected pixel or pixels.\n"
+    "\n"
+    "Now, press any button to select a pixel within the image\n"
+    "window to change its matte value.\n"
+    "\n"
+    "If the Magnify widget is mapped, it can be helpful in positioning\n"
+    "your pointer within the image (refer to button 2).\n"
+    "\n"
+    "Matte information is only valid in a DirectClass image.\n"
+    "Therefore, any PseudoClass image is promoted to DirectClass\n"
+    "(see miff(5)).  Note that matte information for PseudoClass\n"
+    "is not retained for colormapped X server visuals (e.g.\n"
+    "StaticColor, StaticColor, GrayScale, PseudoColor) unless you\n"
+    "immediately save your image to a file (refer to Write).\n"
+    "Correct matte editing behavior may require a TrueColor or\n"
+    "DirectColor visual or a Standard Colormap.\n"
   },
-  *const ImagePanHelp[] =
+  ImagePanHelp[] =
   {
-    "When an image exceeds the width or height of the X server",
-    "screen, display maps a small panning icon.  The rectangle",
-    "within the panning icon shows the area that is currently",
-    "displayed in the image window.  To pan about the image,",
-    "press any button and drag the pointer within the panning",
-    "icon.  The pan rectangle moves with the pointer and the",
-    "image window is updated to reflect the location of the",
-    "rectangle within the panning icon.  When you have selected",
-    "the area of the image you wish to view, release the button.",
-    "",
-    "Use the arrow keys to pan the image one pixel up, down,",
-    "left, or right within the image window.",
-    "",
-    "The panning icon is withdrawn if the image becomes smaller",
-    "than the dimensions of the X server screen.",
-    (char *) NULL,
+    "When an image exceeds the width or height of the X server\n"
+    "screen, display maps a small panning icon.  The rectangle\n"
+    "within the panning icon shows the area that is currently\n"
+    "displayed in the image window.  To pan about the image,\n"
+    "press any button and drag the pointer within the panning\n"
+    "icon.  The pan rectangle moves with the pointer and the\n"
+    "image window is updated to reflect the location of the\n"
+    "rectangle within the panning icon.  When you have selected\n"
+    "the area of the image you wish to view, release the button.\n"
+    "\n"
+    "Use the arrow keys to pan the image one pixel up, down,\n"
+    "left, or right within the image window.\n"
+    "\n"
+    "The panning icon is withdrawn if the image becomes smaller\n"
+    "than the dimensions of the X server screen.\n"
   },
-  *const ImagePasteHelp[] =
+  ImagePasteHelp[] =
   {
-    "A small window appears showing the location of the cursor in",
-    "the image window. You are now in paste mode.  To exit",
-    "immediately, press Dismiss.  In paste mode, the Command",
-    "widget has these options:",
-    "",
-    "    Operators",
-    "      over",
-    "      in",
-    "      out",
-    "      atop",
-    "      xor",
-    "      plus",
-    "      minus",
-    "      add",
-    "      subtract",
-    "      difference",
-    "      replace",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a composite operation from the Operators sub-menu of",
-    "the Command widget.  How each operator behaves is described",
-    "below.  Image window is the image currently displayed on",
-    "your X server and image is the image obtained with the File",
-    "Browser widget.",
-    "",
-    "Over     The result is the union of the two image shapes,",
-    "         with image obscuring image window in the region of",
-    "         overlap.",
-    "",
-    "In       The result is simply image cut by the shape of",
-    "         image window.  None of the image data of image",
-    "         window is in the result.",
-    "",
-    "Out      The resulting image is image with the shape of",
-    "         image window cut out.",
-    "",
-    "Atop     The result is the same shape as image image window,",
-    "         with image obscuring image window where the image",
-    "         shapes overlap.  Note this differs from over",
-    "         because the portion of image outside image window's",
-    "         shape does not appear in the result.",
-    "",
-    "Xor      The result is the image data from both image and",
-    "         image window that is outside the overlap region.",
-    "         The overlap region is blank.",
-    "",
-    "Plus     The result is just the sum of the image data.",
-    "         Output values are cropped to QuantumRange (no overflow).",
-    "         This operation is independent of the matte",
-    "         channels.",
-    "",
-    "Minus    The result of image - image window, with underflow",
-    "         cropped to zero.",
-    "",
-    "Add      The result of image + image window, with overflow",
-    "         wrapping around (mod 256).",
-    "",
-    "Subtract The result of image - image window, with underflow",
-    "         wrapping around (mod 256).  The add and subtract",
-    "         operators can be used to perform reversible",
-    "         transformations.",
-    "",
-    "Difference",
-    "         The result of abs(image - image window).  This",
-    "         useful for comparing two very similar images.",
-    "",
-    "Copy     The resulting image is image window replaced with",
-    "         image.  Here the matte information is ignored.",
-    "",
-    "CopyRed  The red layer of the image window is replace with",
-    "         the red layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyGreen",
-    "         The green layer of the image window is replace with",
-    "         the green layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyBlue The blue layer of the image window is replace with",
-    "         the blue layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "CopyOpacity",
-    "         The matte layer of the image window is replace with",
-    "         the matte layer of the image.  The other layers are",
-    "         untouched.",
-    "",
-    "The image compositor requires a matte, or alpha channel in",
-    "the image for some operations.  This extra channel usually",
-    "defines a mask which represents a sort of a cookie-cutter",
-    "for the image.  This the case when matte is opaque (full",
-    "coverage) for pixels inside the shape, zero outside, and",
-    "between 0 and QuantumRange on the boundary.  If image does not",
-    "have a matte channel, it is initialized with 0 for any pixel",
-    "matching in color to pixel location (0,0), otherwise QuantumRange.",
-    "",
-    "Note that matte information for image window is not retained",
-    "for colormapped X server visuals (e.g. StaticColor,",
-    "StaticColor, GrayScale, PseudoColor).  Correct compositing",
-    "behavior may require a TrueColor or DirectColor visual or a",
-    "Standard Colormap.",
-    "",
-    "Choosing a composite operator is optional.  The default",
-    "operator is replace.  However, you must choose a location to",
-    "paste your image and press button 1.  Press and hold the",
-    "button before releasing and an outline of the image will",
-    "appear to help you identify your location.",
-    "",
-    "The actual colors of the pasted image is saved.  However,",
-    "the color that appears in image window may be different.",
-    "For example, on a monochrome screen image window will appear",
-    "black or white even though your pasted image may have",
-    "many colors.  If the image is saved to a file it is written",
-    "with the correct colors.  To assure the correct colors are",
-    "saved in the final image, any PseudoClass image is promoted",
-    "to DirectClass (see miff(5)).  To force a PseudoClass image",
-    "to remain PseudoClass, use -colors.",
-    (char *) NULL,
+    "A small window appears showing the location of the cursor in\n"
+    "the image window. You are now in paste mode.  To exit\n"
+    "immediately, press Dismiss.  In paste mode, the Command\n"
+    "widget has these options:\n"
+    "\n"
+    "    Operators\n"
+    "      over\n"
+    "      in\n"
+    "      out\n"
+    "      atop\n"
+    "      xor\n"
+    "      plus\n"
+    "      minus\n"
+    "      add\n"
+    "      subtract\n"
+    "      difference\n"
+    "      replace\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a composite operation from the Operators sub-menu of\n"
+    "the Command widget.  How each operator behaves is described\n"
+    "below.  Image window is the image currently displayed on\n"
+    "your X server and image is the image obtained with the File\n"
+    "Browser widget.\n"
+    "\n"
+    "Over     The result is the union of the two image shapes,\n"
+    "         with image obscuring image window in the region of\n"
+    "         overlap.\n"
+    "\n"
+    "In       The result is simply image cut by the shape of\n"
+    "         image window.  None of the image data of image\n"
+    "         window is in the result.\n"
+    "\n"
+    "Out      The resulting image is image with the shape of\n"
+    "         image window cut out.\n"
+    "\n"
+    "Atop     The result is the same shape as image image window,\n"
+    "         with image obscuring image window where the image\n"
+    "         shapes overlap.  Note this differs from over\n"
+    "         because the portion of image outside image window's\n"
+    "         shape does not appear in the result.\n"
+    "\n"
+    "Xor      The result is the image data from both image and\n"
+    "         image window that is outside the overlap region.\n"
+    "         The overlap region is blank.\n"
+    "\n"
+    "Plus     The result is just the sum of the image data.\n"
+    "         Output values are cropped to QuantumRange (no overflow).\n"
+    "         This operation is independent of the matte\n"
+    "         channels.\n"
+    "\n"
+    "Minus    The result of image - image window, with underflow\n"
+    "         cropped to zero.\n"
+    "\n"
+    "Add      The result of image + image window, with overflow\n"
+    "         wrapping around (mod 256).\n"
+    "\n"
+    "Subtract The result of image - image window, with underflow\n"
+    "         wrapping around (mod 256).  The add and subtract\n"
+    "         operators can be used to perform reversible\n"
+    "         transformations.\n"
+    "\n"
+    "Difference\n"
+    "         The result of abs(image - image window).  This\n"
+    "         useful for comparing two very similar images.\n"
+    "\n"
+    "Copy     The resulting image is image window replaced with\n"
+    "         image.  Here the matte information is ignored.\n"
+    "\n"
+    "CopyRed  The red layer of the image window is replace with\n"
+    "         the red layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyGreen\n"
+    "         The green layer of the image window is replace with\n"
+    "         the green layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyBlue The blue layer of the image window is replace with\n"
+    "         the blue layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "CopyOpacity\n"
+    "         The matte layer of the image window is replace with\n"
+    "         the matte layer of the image.  The other layers are\n"
+    "         untouched.\n"
+    "\n"
+    "The image compositor requires a matte, or alpha channel in\n"
+    "the image for some operations.  This extra channel usually\n"
+    "defines a mask which represents a sort of a cookie-cutter\n"
+    "for the image.  This the case when matte is opaque (full\n"
+    "coverage) for pixels inside the shape, zero outside, and\n"
+    "between 0 and QuantumRange on the boundary.  If image does not\n"
+    "have a matte channel, it is initialized with 0 for any pixel\n"
+    "matching in color to pixel location (0,0), otherwise QuantumRange.\n"
+    "\n"
+    "Note that matte information for image window is not retained\n"
+    "for colormapped X server visuals (e.g. StaticColor,\n"
+    "StaticColor, GrayScale, PseudoColor).  Correct compositing\n"
+    "behavior may require a TrueColor or DirectColor visual or a\n"
+    "Standard Colormap.\n"
+    "\n"
+    "Choosing a composite operator is optional.  The default\n"
+    "operator is replace.  However, you must choose a location to\n"
+    "paste your image and press button 1.  Press and hold the\n"
+    "button before releasing and an outline of the image will\n"
+    "appear to help you identify your location.\n"
+    "\n"
+    "The actual colors of the pasted image is saved.  However,\n"
+    "the color that appears in image window may be different.\n"
+    "For example, on a monochrome screen image window will appear\n"
+    "black or white even though your pasted image may have\n"
+    "many colors.  If the image is saved to a file it is written\n"
+    "with the correct colors.  To assure the correct colors are\n"
+    "saved in the final image, any PseudoClass image is promoted\n"
+    "to DirectClass (see miff(5)).  To force a PseudoClass image\n"
+    "to remain PseudoClass, use -colors.\n"
   },
-  *const ImageROIHelp[] =
+  ImageROIHelp[] =
   {
-    "In region of interest mode, the Command widget has these",
-    "options:",
-    "",
-    "    Help",
-    "    Dismiss",
-    "",
-    "To define a region of interest, press button 1 and drag.",
-    "The region of interest is defined by a highlighted rectangle",
-    "that expands or contracts as it follows the pointer.  Once",
-    "you are satisfied with the region of interest, release the",
-    "button.  You are now in apply mode.  In apply mode the",
-    "Command widget has these options:",
-    "",
-    "      File",
-    "        Save...",
-    "        Print...",
-    "      Edit",
-    "        Undo",
-    "        Redo",
-    "      Transform",
-    "        Flop",
-    "        Flip",
-    "        Rotate Right",
-    "        Rotate Left",
-    "      Enhance",
-    "        Hue...",
-    "        Saturation...",
-    "        Brightness...",
-    "        Gamma...",
-    "        Spiff",
-    "        Dull",
-    "        Contrast Stretch",
-    "        Sigmoidal Contrast...",
-    "        Normalize",
-    "        Equalize",
-    "        Negate",
-    "        Grayscale",
-    "        Map...",
-    "        Quantize...",
-    "      Effects",
-    "        Despeckle",
-    "        Emboss",
-    "        Reduce Noise",
-    "        Sharpen...",
-    "        Blur...",
-    "        Threshold...",
-    "        Edge Detect...",
-    "        Spread...",
-    "        Shade...",
-    "        Raise...",
-    "        Segment...",
-    "      F/X",
-    "        Solarize...",
-    "        Sepia Tone...",
-    "        Swirl...",
-    "        Implode...",
-    "        Vignette...",
-    "        Wave...",
-    "        Oil Painting...",
-    "        Charcoal Drawing...",
-    "      Miscellany",
-    "        Image Info",
-    "        Zoom Image",
-    "        Show Preview...",
-    "        Show Histogram",
-    "        Show Matte",
-    "      Help",
-    "      Dismiss",
-    "",
-    "You can make adjustments to the region of interest by moving",
-    "the pointer to one of the rectangle corners, pressing a",
-    "button, and dragging.  Finally, choose an image processing",
-    "technique from the Command widget.  You can choose more than",
-    "one image processing technique to apply to an area.",
-    "Alternatively, you can move the region of interest before",
-    "applying another image processing technique.  To exit, press",
-    "Dismiss.",
-    (char *) NULL,
+    "In region of interest mode, the Command widget has these\n"
+    "options:\n"
+    "\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "To define a region of interest, press button 1 and drag.\n"
+    "The region of interest is defined by a highlighted rectangle\n"
+    "that expands or contracts as it follows the pointer.  Once\n"
+    "you are satisfied with the region of interest, release the\n"
+    "button.  You are now in apply mode.  In apply mode the\n"
+    "Command widget has these options:\n"
+    "\n"
+    "      File\n"
+    "        Save...\n"
+    "        Print...\n"
+    "      Edit\n"
+    "        Undo\n"
+    "        Redo\n"
+    "      Transform\n"
+    "        Flop\n"
+    "        Flip\n"
+    "        Rotate Right\n"
+    "        Rotate Left\n"
+    "      Enhance\n"
+    "        Hue...\n"
+    "        Saturation...\n"
+    "        Brightness...\n"
+    "        Gamma...\n"
+    "        Spiff\n"
+    "        Dull\n"
+    "        Contrast Stretch\n"
+    "        Sigmoidal Contrast...\n"
+    "        Normalize\n"
+    "        Equalize\n"
+    "        Negate\n"
+    "        Grayscale\n"
+    "        Map...\n"
+    "        Quantize...\n"
+    "      Effects\n"
+    "        Despeckle\n"
+    "        Emboss\n"
+    "        Reduce Noise\n"
+    "        Sharpen...\n"
+    "        Blur...\n"
+    "        Threshold...\n"
+    "        Edge Detect...\n"
+    "        Spread...\n"
+    "        Shade...\n"
+    "        Raise...\n"
+    "        Segment...\n"
+    "      F/X\n"
+    "        Solarize...\n"
+    "        Sepia Tone...\n"
+    "        Swirl...\n"
+    "        Implode...\n"
+    "        Vignette...\n"
+    "        Wave...\n"
+    "        Oil Painting...\n"
+    "        Charcoal Drawing...\n"
+    "      Miscellany\n"
+    "        Image Info\n"
+    "        Zoom Image\n"
+    "        Show Preview...\n"
+    "        Show Histogram\n"
+    "        Show Matte\n"
+    "      Help\n"
+    "      Dismiss\n"
+    "\n"
+    "You can make adjustments to the region of interest by moving\n"
+    "the pointer to one of the rectangle corners, pressing a\n"
+    "button, and dragging.  Finally, choose an image processing\n"
+    "technique from the Command widget.  You can choose more than\n"
+    "one image processing technique to apply to an area.\n"
+    "Alternatively, you can move the region of interest before\n"
+    "applying another image processing technique.  To exit, press\n"
+    "Dismiss.\n"
   },
-  *const ImageRotateHelp[] =
+  ImageRotateHelp[] =
   {
-    "In rotate mode, the Command widget has these options:",
-    "",
-    "    Pixel Color",
-    "      black",
-    "      blue",
-    "      cyan",
-    "      green",
-    "      gray",
-    "      red",
-    "      magenta",
-    "      yellow",
-    "      white",
-    "      Browser...",
-    "    Direction",
-    "      horizontal",
-    "      vertical",
-    "    Help",
-    "    Dismiss",
-    "",
-    "Choose a background color from the Pixel Color sub-menu.",
-    "Additional background colors can be specified with the color",
-    "browser.  You can change the menu colors by setting the X",
-    "resources pen1 through pen9.",
-    "",
-    "If you choose the color browser and press Grab, you can",
-    "select the background color by moving the pointer to the",
-    "desired color on the screen and press any button.",
-    "",
-    "Choose a point in the image window and press this button and",
-    "hold.  Next, move the pointer to another location in the",
-    "image.  As you move a line connects the initial location and",
-    "the pointer.  When you release the button, the degree of",
-    "image rotation is determined by the slope of the line you",
-    "just drew.  The slope is relative to the direction you",
-    "choose from the Direction sub-menu of the Command widget.",
-    "",
-    "To cancel the image rotation, move the pointer back to the",
-    "starting point of the line and release the button.",
-    (char *) NULL,
+    "In rotate mode, the Command widget has these options:\n"
+    "\n"
+    "    Pixel Color\n"
+    "      black\n"
+    "      blue\n"
+    "      cyan\n"
+    "      green\n"
+    "      gray\n"
+    "      red\n"
+    "      magenta\n"
+    "      yellow\n"
+    "      white\n"
+    "      Browser...\n"
+    "    Direction\n"
+    "      horizontal\n"
+    "      vertical\n"
+    "    Help\n"
+    "    Dismiss\n"
+    "\n"
+    "Choose a background color from the Pixel Color sub-menu.\n"
+    "Additional background colors can be specified with the color\n"
+    "browser.  You can change the menu colors by setting the X\n"
+    "resources pen1 through pen9.\n"
+    "\n"
+    "If you choose the color browser and press Grab, you can\n"
+    "select the background color by moving the pointer to the\n"
+    "desired color on the screen and press any button.\n"
+    "\n"
+    "Choose a point in the image window and press this button and\n"
+    "hold.  Next, move the pointer to another location in the\n"
+    "image.  As you move a line connects the initial location and\n"
+    "the pointer.  When you release the button, the degree of\n"
+    "image rotation is determined by the slope of the line you\n"
+    "just drew.  The slope is relative to the direction you\n"
+    "choose from the Direction sub-menu of the Command widget.\n"
+    "\n"
+    "To cancel the image rotation, move the pointer back to the\n"
+    "starting point of the line and release the button.\n"
   };
 \f
 /*
@@ -2096,7 +2082,7 @@ static MagickBooleanType XAnnotateEditImage(Display *display,
               angle[MagickPathExtent] = "30.0";
 
             static const char
-              *const RotateMenu[] =
+              *RotateMenu[] =
               {
                 "-90",
                 "-45",
@@ -2131,7 +2117,7 @@ static MagickBooleanType XAnnotateEditImage(Display *display,
           }
           case AnnotateHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Annotation",ImageAnnotateHelp);
             break;
           }
@@ -2193,7 +2179,7 @@ static MagickBooleanType XAnnotateEditImage(Display *display,
           case XK_F1:
           case XK_Help:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Annotation",ImageAnnotateHelp);
             break;
           }
@@ -2329,7 +2315,7 @@ static MagickBooleanType XAnnotateEditImage(Display *display,
         {
           case TextHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Annotation",ImageAnnotateHelp);
             (void) XCheckDefineCursor(display,windows->image.id,cursor);
             break;
@@ -2861,7 +2847,7 @@ static MagickBooleanType XChopImage(Display *display,
   ExceptionInfo *exception)
 {
   static const char
-    *const ChopMenu[] =
+    *ChopMenu[] =
     {
       "Direction",
       "Help",
@@ -2964,7 +2950,7 @@ static MagickBooleanType XChopImage(Display *display,
               command[MagickPathExtent];
 
             static const char
-              *const Directions[] =
+              *Directions[] =
               {
                 "horizontal",
                 "vertical",
@@ -2981,7 +2967,7 @@ static MagickBooleanType XChopImage(Display *display,
           }
           case ChopHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Chop",ImageChopHelp);
             break;
           }
@@ -3053,7 +3039,7 @@ static MagickBooleanType XChopImage(Display *display,
           {
             (void) XSetFunction(display,windows->image.highlight_context,
               GXcopy);
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Chop",ImageChopHelp);
             (void) XSetFunction(display,windows->image.highlight_context,
               GXinvert);
@@ -3286,7 +3272,7 @@ static MagickBooleanType XColorEditImage(Display *display,
   ExceptionInfo *exception)
 {
   static const char
-    *const ColorEditMenu[] =
+    *ColorEditMenu[] =
     {
       "Method",
       "Pixel Color",
@@ -3516,7 +3502,7 @@ static MagickBooleanType XColorEditImage(Display *display,
               fuzz[MagickPathExtent];
 
             static const char
-              *const FuzzMenu[] =
+              *FuzzMenu[] =
               {
                 "0%",
                 "2%",
@@ -3559,7 +3545,7 @@ static MagickBooleanType XColorEditImage(Display *display,
           case ColorEditHelpCommand:
           default:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Annotation",ImageColorEditHelp);
             break;
           }
@@ -3650,7 +3636,7 @@ static MagickBooleanType XColorEditImage(Display *display,
           case XK_F1:
           case XK_Help:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Annotation",ImageColorEditHelp);
             break;
           }
@@ -3913,7 +3899,7 @@ static MagickBooleanType XCompositeImage(Display *display,
     filename[MagickPathExtent] = "\0";
 
   static const char
-    *const CompositeMenu[] =
+    *CompositeMenu[] =
     {
       "Operators",
       "Dissolve",
@@ -4102,7 +4088,7 @@ static MagickBooleanType XCompositeImage(Display *display,
           {
             (void) XSetFunction(display,windows->image.highlight_context,
               GXcopy);
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Composite",ImageCompositeHelp);
             (void) XSetFunction(display,windows->image.highlight_context,
               GXinvert);
@@ -4207,7 +4193,7 @@ static MagickBooleanType XCompositeImage(Display *display,
           {
             (void) XSetFunction(display,windows->image.highlight_context,
               GXcopy);
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Composite",ImageCompositeHelp);
             (void) XSetFunction(display,windows->image.highlight_context,
               GXinvert);
@@ -4574,7 +4560,7 @@ static MagickBooleanType XCropImage(Display *display,
   const ClipboardMode mode,ExceptionInfo *exception)
 {
   static const char
-    *const CropModeMenu[] =
+    *CropModeMenu[] =
     {
       "Help",
       "Dismiss",
@@ -4712,19 +4698,19 @@ static MagickBooleanType XCropImage(Display *display,
             {
               case CopyMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Copy",ImageCopyHelp);
                 break;
               }
               case CropMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Crop",ImageCropHelp);
                 break;
               }
               case CutMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Cut",ImageCutHelp);
                 break;
               }
@@ -4794,19 +4780,19 @@ static MagickBooleanType XCropImage(Display *display,
             {
               case CopyMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Copy",ImageCopyHelp);
                 break;
               }
               case CropMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Crop",ImageCropHelp);
                 break;
               }
               case CutMode:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Cut",ImageCutHelp);
                 break;
               }
@@ -5020,19 +5006,19 @@ static MagickBooleanType XCropImage(Display *display,
                 {
                   case CopyMode:
                   {
-                    XTextViewWidget(display,resource_info,windows,MagickFalse,
+                    XTextViewHelp(display,resource_info,windows,MagickFalse,
                       "Help Viewer - Image Copy",ImageCopyHelp);
                     break;
                   }
                   case CropMode:
                   {
-                    XTextViewWidget(display,resource_info,windows,MagickFalse,
+                    XTextViewHelp(display,resource_info,windows,MagickFalse,
                       "Help Viewer - Image Crop",ImageCropHelp);
                     break;
                   }
                   case CutMode:
                   {
-                    XTextViewWidget(display,resource_info,windows,MagickFalse,
+                    XTextViewHelp(display,resource_info,windows,MagickFalse,
                       "Help Viewer - Image Cut",ImageCutHelp);
                     break;
                   }
@@ -5194,19 +5180,19 @@ static MagickBooleanType XCropImage(Display *display,
               {
                 case CopyMode:
                 {
-                  XTextViewWidget(display,resource_info,windows,MagickFalse,
+                  XTextViewHelp(display,resource_info,windows,MagickFalse,
                     "Help Viewer - Image Copy",ImageCopyHelp);
                   break;
                 }
                 case CropMode:
                 {
-                  XTextViewWidget(display,resource_info,windows,MagickFalse,
+                  XTextViewHelp(display,resource_info,windows,MagickFalse,
                     "Help Viewer - Image Cropg",ImageCropHelp);
                   break;
                 }
                 case CutMode:
                 {
-                  XTextViewWidget(display,resource_info,windows,MagickFalse,
+                  XTextViewHelp(display,resource_info,windows,MagickFalse,
                     "Help Viewer - Image Cutg",ImageCutHelp);
                   break;
                 }
@@ -5410,7 +5396,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
   ExceptionInfo *exception)
 {
   static const char
-    *const DrawMenu[] =
+    *DrawMenu[] =
     {
       "Element",
       "Color",
@@ -5557,7 +5543,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
             case DrawElementCommand:
             {
               static const char
-                *const Elements[] =
+                *Elements[] =
                 {
                   "point",
                   "line",
@@ -5766,7 +5752,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
                 width[MagickPathExtent] = "0";
 
               static const char
-                *const WidthsMenu[] =
+                *WidthsMenu[] =
                 {
                   "1",
                   "2",
@@ -5805,7 +5791,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
             }
             case DrawHelpCommand:
             {
-              XTextViewWidget(display,resource_info,windows,MagickFalse,
+              XTextViewHelp(display,resource_info,windows,MagickFalse,
                 "Help Viewer - Image Rotation",ImageDrawHelp);
               (void) XCheckDefineCursor(display,windows->image.id,cursor);
               break;
@@ -5872,7 +5858,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
             case XK_F1:
             case XK_Help:
             {
-              XTextViewWidget(display,resource_info,windows,MagickFalse,
+              XTextViewHelp(display,resource_info,windows,MagickFalse,
                 "Help Viewer - Image Rotation",ImageDrawHelp);
               break;
             }
@@ -9249,7 +9235,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       /*
         User requested help.
       */
-      XTextViewWidget(display,resource_info,windows,MagickFalse,
+      XTextViewHelp(display,resource_info,windows,MagickFalse,
         "Help Viewer - Display",DisplayHelp);
       break;
     }
@@ -9668,7 +9654,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
     matte[MagickPathExtent] = "0";
 
   static const char
-    *const MatteEditMenu[] =
+    *MatteEditMenu[] =
     {
       "Method",
       "Border Color",
@@ -9846,7 +9832,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
               fuzz[MagickPathExtent];
 
             static const char
-              *const FuzzMenu[] =
+              *FuzzMenu[] =
               {
                 "0%",
                 "2%",
@@ -9886,7 +9872,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
               message[MagickPathExtent];
 
             static const char
-              *const MatteMenu[] =
+              *MatteMenu[] =
               {
                 "Opaque",
                 "Transparent",
@@ -9926,7 +9912,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
           }
           case MatteEditHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Matte Edit",ImageMatteEditHelp);
             break;
           }
@@ -10022,7 +10008,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
           case XK_F1:
           case XK_Help:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Matte Edit",ImageMatteEditHelp);
             break;
           }
@@ -10615,7 +10601,7 @@ static MagickBooleanType XPasteImage(Display *display,
   ExceptionInfo *exception)
 {
   static const char
-    *const PasteMenu[] =
+    *PasteMenu[] =
     {
       "Operator",
       "Help",
@@ -10751,7 +10737,7 @@ static MagickBooleanType XPasteImage(Display *display,
           }
           case PasteHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Composite",ImagePasteHelp);
             break;
           }
@@ -10863,7 +10849,7 @@ static MagickBooleanType XPasteImage(Display *display,
           {
             (void) XSetFunction(display,windows->image.highlight_context,
               GXcopy);
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Image Composite",ImagePasteHelp);
             (void) XSetFunction(display,windows->image.highlight_context,
               GXinvert);
@@ -11077,13 +11063,13 @@ static MagickBooleanType XROIImage(Display *display,
 #define ApplyMenus  7
 
   static const char
-    *const ROIMenu[] =
+    *ROIMenu[] =
     {
       "Help",
       "Dismiss",
       (char *) NULL
     },
-    *const ApplyMenu[] =
+    *ApplyMenu[] =
     {
       "File",
       "Edit",
@@ -11096,19 +11082,19 @@ static MagickBooleanType XROIImage(Display *display,
       "Dismiss",
       (char *) NULL
     },
-    *const FileMenu[] =
+    *FileMenu[] =
     {
       "Save...",
       "Print...",
       (char *) NULL
     },
-    *const EditMenu[] =
+    *EditMenu[] =
     {
       "Undo",
       "Redo",
       (char *) NULL
     },
-    *const TransformMenu[] =
+    *TransformMenu[] =
     {
       "Flop",
       "Flip",
@@ -11116,7 +11102,7 @@ static MagickBooleanType XROIImage(Display *display,
       "Rotate Left",
       (char *) NULL
     },
-    *const EnhanceMenu[] =
+    *EnhanceMenu[] =
     {
       "Hue...",
       "Saturation...",
@@ -11134,7 +11120,7 @@ static MagickBooleanType XROIImage(Display *display,
       "Quantize...",
       (char *) NULL
     },
-    *const EffectsMenu[] =
+    *EffectsMenu[] =
     {
       "Despeckle",
       "Emboss",
@@ -11150,7 +11136,7 @@ static MagickBooleanType XROIImage(Display *display,
       "Segment...",
       (char *) NULL
     },
-    *const FXMenu[] =
+    *FXMenu[] =
     {
       "Solarize...",
       "Sepia Tone...",
@@ -11162,7 +11148,7 @@ static MagickBooleanType XROIImage(Display *display,
       "Charcoal Draw...",
       (char *) NULL
     },
-    *const MiscellanyMenu[] =
+    *MiscellanyMenu[] =
     {
       "Image Info",
       "Zoom Image",
@@ -11173,7 +11159,7 @@ static MagickBooleanType XROIImage(Display *display,
     };
 
   static const char
-    *const *Menus[ApplyMenus] =
+    **Menus[ApplyMenus] =
     {
       FileMenu,
       EditMenu,
@@ -11370,7 +11356,7 @@ static MagickBooleanType XROIImage(Display *display,
         {
           case ROIHelpCommand:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Region of Interest",ImageROIHelp);
             break;
           }
@@ -11436,7 +11422,7 @@ static MagickBooleanType XROIImage(Display *display,
           case XK_F1:
           case XK_Help:
           {
-            XTextViewWidget(display,resource_info,windows,MagickFalse,
+            XTextViewHelp(display,resource_info,windows,MagickFalse,
               "Help Viewer - Region of Interest",ImageROIHelp);
             break;
           }
@@ -11732,7 +11718,7 @@ static MagickBooleanType XROIImage(Display *display,
             {
               (void) XSetFunction(display,windows->image.highlight_context,
                 GXcopy);
-              XTextViewWidget(display,resource_info,windows,MagickFalse,
+              XTextViewHelp(display,resource_info,windows,MagickFalse,
                 "Help Viewer - Region of Interest",ImageROIHelp);
               (void) XSetFunction(display,windows->image.highlight_context,
                 GXinvert);
@@ -11893,7 +11879,7 @@ static MagickBooleanType XROIImage(Display *display,
             {
               (void) XSetFunction(display,windows->image.highlight_context,
                 GXcopy);
-              XTextViewWidget(display,resource_info,windows,MagickFalse,
+              XTextViewHelp(display,resource_info,windows,MagickFalse,
                 "Help Viewer - Region of Interest",ImageROIHelp);
               (void) XSetFunction(display,windows->image.highlight_context,
                 GXinvert);
@@ -12028,7 +12014,7 @@ static MagickBooleanType XRotateImage(Display *display,
   ExceptionInfo *exception)
 {
   static const char
-    *const RotateMenu[] =
+    *RotateMenu[] =
     {
       "Pixel Color",
       "Direction",
@@ -12187,7 +12173,7 @@ static MagickBooleanType XRotateImage(Display *display,
               case RotateDirectionCommand:
               {
                 static const char
-                  *const Directions[] =
+                  *Directions[] =
                   {
                     "horizontal",
                     "vertical",
@@ -12205,7 +12191,7 @@ static MagickBooleanType XRotateImage(Display *display,
               }
               case RotateHelpCommand:
               {
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Rotation",ImageRotateHelp);
                 break;
               }
@@ -12279,7 +12265,7 @@ static MagickBooleanType XRotateImage(Display *display,
               {
                 (void) XSetFunction(display,windows->image.highlight_context,
                   GXcopy);
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Rotation",ImageRotateHelp);
                 (void) XSetFunction(display,windows->image.highlight_context,
                   GXinvert);
@@ -13067,7 +13053,7 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info,
   XWindows *windows,Image *image,XEvent *event,ExceptionInfo *exception)
 {
   static const char
-    *const VerbMenu[] =
+    *VerbMenu[] =
     {
       "Load",
       "Next",
@@ -14088,7 +14074,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info,
 #define MagickTitle  "Commands"
 
   static const char
-    *const CommandMenu[] =
+    *CommandMenu[] =
     {
       "File",
       "Edit",
@@ -15307,7 +15293,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info,
               factor;
 
             static const char
-              *const MagnifyMenu[] =
+              *MagnifyMenu[] =
               {
                 "2",
                 "4",
@@ -15818,7 +15804,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info,
                 windows->pan.screen);
             else
               if ((key_symbol == XK_F1) || (key_symbol == XK_Help))
-                XTextViewWidget(display,resource_info,windows,MagickFalse,
+                XTextViewHelp(display,resource_info,windows,MagickFalse,
                   "Help Viewer - Image Pan",ImagePanHelp);
               else
                 XTranslateImage(display,windows,*image,key_symbol);
index 0ef1d2cee84af9e125f809300469147d9d244a6c..bd2d1c715c73f18a55eb3e3838093c4c4f3598ed 100644 (file)
@@ -18,6 +18,7 @@
 #ifndef MAGICKCORE_WIDGET_PRIVATE_H
 #define MAGICKCORE_WIDGET_PRIVATE_H
 
+#include "MagickCore/string_.h"
 #include "MagickCore/xwindow-private.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -46,7 +47,27 @@ extern MagickPrivate void
   XProgressMonitorWidget(Display *,XWindows *,const char *,
     const MagickOffsetType,const MagickSizeType),
   XTextViewWidget(Display *,const XResourceInfo *,XWindows *,
-    const MagickBooleanType,const char *,const char *const *);
+    const MagickBooleanType,const char *,const char **);
+
+static inline void XTextViewHelp(Display *display,
+  const XResourceInfo *resource_info,XWindows *windows,
+  const MagickBooleanType mono,const char *title,const char *help)
+{
+  char
+    **help_list;
+
+  ssize_t
+    i;
+
+  help_list=StringToList(help);
+  if (help_list == (char **) NULL)
+    return;
+  XTextViewWidget(display,resource_info,windows,mono,title,(const char **)
+    help_list);
+  for (i=0; help_list[i] != (char *) NULL; i++)
+    help_list[i]=DestroyString(help_list[i]);  
+  help_list=(char **) RelinquishMagickMemory(help_list);
+}
 
 #endif
 
index 62d3ad204556737a9f7ae228bde6351c8ab0a1bb..e4a90ee14f377cf2cdfab782958833a78f579d95 100644 (file)
@@ -8938,7 +8938,7 @@ MagickPrivate void XProgressMonitorWidget(Display *display,XWindows *windows,
 %
 %      void XTextViewWidget(Display *display,const XResourceInfo *resource_info,
 %        XWindows *windows,const MagickBooleanType mono,const char *title,
-%        const char *const *textlist)
+%        const char **textlist)
 %
 %  A description of each parameter follows:
 %
@@ -8959,7 +8959,7 @@ MagickPrivate void XProgressMonitorWidget(Display *display,XWindows *windows,
 */
 MagickPrivate void XTextViewWidget(Display *display,
   const XResourceInfo *resource_info,XWindows *windows,
-  const MagickBooleanType mono,const char *title,const char *const *textlist)
+  const MagickBooleanType mono,const char *title,const char **textlist)
 {
 #define DismissButtonText  "Dismiss"