浏览代码

g.pnmcomp: fix options
update manual page


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@54645 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 12 年之前
父节点
当前提交
788c9a7f6e
共有 2 个文件被更改,包括 47 次插入38 次删除
  1. 34 30
      general/g.pnmcomp/g.pnmcomp.html
  2. 13 8
      general/g.pnmcomp/main.c

+ 34 - 30
general/g.pnmcomp/g.pnmcomp.html

@@ -1,42 +1,46 @@
 <h2>DESCRIPTION</h2>
 
-(culled from the mailing list)
-<br>
-<pre>
-From: Glynn Clements 
-Subject: Re: [GRASS5] Re: [GRASSLIST:10403] Transparency added
-Date: Sun, 19 Feb 2006 20:17:59 +0000
-
-g.pnmcomp isn't meant for end users. It's an internal tool for use by
-a Tcl/Tk GUI.
-
-In essence, g.pnmcomp generates a PPM image by overlaying a series of
-PPM/PGM pairs (PPM = RGB image, PGM = alpha channel).
-
-The intention is that d.* programs will emit PPM/PGM pairs (by way of
-the PNG-driver code being integrated into libraster). The GUI will
-manage a set of layers; each layer consists of the data necessary to
-generate a PPM/PGM pair.
-
-Whenever the layer "stack" changes (by adding, removing, hiding,
-showing or re-ordering layers), the GUI will render any layers for
-which it doesn't already have the PPM/PGM pair, then re-run g.pnmcomp
-to generate the final image (just redoing the composition is a lot
-faster than redrawing everything).
-
-A C/C++ GUI would either have g.pnmcomp's functionality (image
-composition) built-in, or would use the system's graphics API to
-perform composition (for translucent layers, you would need OpenGL or
-the Render extension, or something else which supports translucent
+<em>g.pnmcomp</em> isn't meant for end users. It's an internal tool
+for use by <em><a href="wxGUI.html">wxGUI</a></em>.
+
+<p>
+In essence, <em>g.pnmcomp</em> generates a PPM image by overlaying a
+series of PPM/PGM pairs (PPM = RGB image, PGM = alpha channel).
+
+<h2>NOTES</h2>
+
+The intention is that <em>d.*</em> modules will emit PPM/PGM pairs (by
+way of the PNG-driver code being integrated into Display Library). The
+GUI will manage a set of layers; each layer consists of the data
+necessary to generate a PPM/PGM pair.
+
+Whenever the layer &quot;stack&quot; changes (by adding, removing,
+hiding, showing or re-ordering layers), the GUI will render any layers
+for which it doesn't already have the PPM/PGM pair, then re-run
+<em>g.pnmcomp</em> to generate the final image (just redoing the
+composition is a lot faster than redrawing everything).
+
+<p>
+A C/C++ GUI would either have <em>g.pnmcomp's</em> functionality
+(image composition) built-in, or would use the system's graphics API
+to perform composition (for translucent layers, you would need OpenGL
+or the Render extension, or something else which supports translucent
 rendering).
 
+<p>
 Tk doesn't support transparent (masked) true-colour images (it does
 support transparent GIFs, but that's limited to 256 colours), and an
 image composition routine in Tcl would be unacceptably slow, hence
-the existence of g.pnmcomp.
-</pre>
+the existence of <em>g.pnmcomp</em>.
+
+<h2>SEE ALSO</h2>
+
+<em>
+<a href="g.cairocomp.html">g.cairocomp</a>
+</em>
 
 <h2>AUTHOR</h2>
+
 Glynn Clements
 
 <p><i>Last changed: $Date$</i>

+ 13 - 8
general/g.pnmcomp/main.c

@@ -18,6 +18,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <grass/gis.h>
+#include <grass/colors.h>
 #include <grass/glocale.h>
 
 static unsigned int width, height;
@@ -33,8 +34,8 @@ static void erase(unsigned char *buf, const char *color)
     unsigned char bg[3];
     unsigned int row, col, i;
 
-    if (sscanf(color, "%d:%d:%d", &r, &g, &b) != 3)
-	G_fatal_error(_("Invalid color: %s"), color);
+    if (G_str_to_color(color, &r, &g, &b) != 1)
+        G_fatal_error(_("Invalid color: %s"), color);
 
     bg[0] = (unsigned char)r;
     bg[1] = (unsigned char)g;
@@ -279,17 +280,20 @@ int main(int argc, char *argv[])
 
     module = G_define_module();
     G_add_keyword(_("general"));
-    G_add_keyword(_("support"));
-    G_add_keyword(_("gui"));
+    G_add_keyword(_("display"));
     
-    module->description = _("Overlays multiple PPM image files,");
+    module->description = _("Overlays multiple PPM image files.");
 
-    opt.in = G_define_standard_option(G_OPT_R_INPUTS);
+    opt.in = G_define_standard_option(G_OPT_F_INPUT);
+    opt.in->required = YES;
+    opt.in->multiple = YES;
+    opt.in->description = _("Name of input file(s)");
 
-    opt.mask = G_define_standard_option(G_OPT_R_INPUTS);
+    opt.mask = G_define_standard_option(G_OPT_F_INPUT);
     opt.mask->key = "mask";
     opt.mask->required = NO;
-    opt.mask->description = _("Name of mask files");
+    opt.mask->multiple = YES;
+    opt.mask->description = _("Name of input mask file(s)");
     
     opt.alpha = G_define_option();
     opt.alpha->key = "opacity";
@@ -317,6 +321,7 @@ int main(int argc, char *argv[])
     opt.height->description = _("Image height");
 
     opt.bg = G_define_standard_option(G_OPT_C_BG);
+    opt.bg->answer = NULL;
     
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);