Bläddra i källkod

nviz_cmd: enable to use _map and _value surface commands concurrently for more surfaces

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46868 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 14 år sedan
förälder
incheckning
90d1bb2111
3 ändrade filer med 31 tillägg och 28 borttagningar
  1. 2 2
      visualization/nviz2/cmd/args.c
  2. 2 1
      visualization/nviz2/cmd/main.c
  3. 27 25
      visualization/nviz2/cmd/surface.c

+ 2 - 2
visualization/nviz2/cmd/args.c

@@ -528,7 +528,7 @@ void args_viewpoint(struct GParams *params)
     /* focus */
     params->focus = G_define_option();
     params->focus->key = "focus";
-    params->focus->key_desc = "x,y";
+    params->focus->key_desc = "x,y,z";
     params->focus->type = TYPE_DOUBLE;
     params->focus->required = NO;
     params->focus->multiple = NO;
@@ -918,7 +918,7 @@ void print_error(int nmaps, int nconsts, int nelevs,
 		 const char *elev_map, const char *elev_const,
 		 const char *map_name, const char *const_name)
 {
-    if ((nmaps > 0 && nelevs != nmaps) || (nconsts > 0 && nelevs != nconsts))
+    if ((nmaps + nconsts > 0) && (nelevs != nmaps + nconsts))
 	G_fatal_error(_("Inconsistent number of attributes (<%s/%s> %d: <%s> %d, <%s> %d"),
 		      elev_map, elev_const, nelevs, map_name, nmaps,
 		      const_name, nconsts);

+ 2 - 1
visualization/nviz2/cmd/main.c

@@ -152,7 +152,8 @@ int main(int argc, char *argv[])
     Nviz_set_viewpoint_persp(atoi(params->persp->answer));
     if (params->focus->answer) {
     Nviz_set_focus(&data, atof(params->focus->answers[0]),
-                          atof(params->focus->answers[1]), 0);
+                          atof(params->focus->answers[1]), 
+                          atof(params->focus->answers[2]));
     }
 
     /* set lights */

+ 27 - 25
visualization/nviz2/cmd/surface.c

@@ -40,11 +40,7 @@ int load_rasters(const struct GParams *params, nv_data * data)
     nelev_map = opt_get_num_answers(params->elev_map);
     nelev_const = opt_get_num_answers(params->elev_const);
 
-    if (nelev_map > 0)
-	nelevs = nelev_map;
-    else
-	nelevs = nelev_const;
-
+    nelevs = nelev_const + nelev_map;
     /* topography (required) */
     for (i = 0; i < nelevs; i++) {
 	/* check maps */
@@ -61,10 +57,10 @@ int load_rasters(const struct GParams *params, nv_data * data)
 				  0.0, data);
 	}
 	else {
-	    if (i < nelev_const && strcmp(params->elev_const->answers[i], "")) {
+	    if (i-nelev_map < nelev_const && strcmp(params->elev_const->answers[i-nelev_map], "")) {
 		id = Nviz_new_map_obj(MAP_OBJ_SURF,
 				      NULL,
-				      atof(params->elev_const->answers[i]),
+				      atof(params->elev_const->answers[i-nelev_map]),
 				      data);
 	    }
 	    else {
@@ -118,19 +114,25 @@ int load_rasters(const struct GParams *params, nv_data * data)
 			  data);
 	}
 	/* check for color value */
-	else if (i < ncolor_const &&
-		 strcmp(params->color_const->answers[i], "")) {
+	else if (i-ncolor_map < ncolor_const &&
+		 strcmp(params->color_const->answers[i-ncolor_map], "")) {
 	    Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, CONST_ATT, NULL,
 			  Nviz_color_from_str(params->color_const->
-					      answers[i]), data);
+					      answers[i-ncolor_map]), data);
 	}
 	else {			/* use by default elevation map for coloring */
-	    Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, MAP_ATT,
-			  G_fully_qualified_name(params->elev_map->answers[i],
-						 mapset), -1.0, data);
-	    G_verbose_message(_("Color attribute not defined, using default <%s>"),
-			      G_fully_qualified_name(params->elev_map->
-						     answers[i], mapset));
+        if (nelev_map > 0){
+            Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, MAP_ATT,
+                G_fully_qualified_name(params->elev_map->answers[i],
+                            mapset), -1.0, data);
+            G_verbose_message(_("Color attribute not defined, using default <%s>"),
+                G_fully_qualified_name(params->elev_map->
+                                 answers[i], mapset));
+        }
+        else{
+            G_fatal_error(_("Missing color attribute for surface %d"),
+			      i + 1);
+        }
 	}
 	/* mask */
 	if (i < nmask_map && strcmp(params->mask_map->answers[i], "")) {
@@ -146,10 +148,10 @@ int load_rasters(const struct GParams *params, nv_data * data)
 						 answers[i], mapset), -1.0,
 			  data);
 	}
-	else if (i < ntransp_const &&
-		 strcmp(params->transp_const->answers[i], "")) {
+	else if (i-ntransp_map < ntransp_const &&
+		 strcmp(params->transp_const->answers[i-ntransp_map], "")) {
 	    Nviz_set_attr(id, MAP_OBJ_SURF, ATT_TRANSP, CONST_ATT, NULL,
-			  atof(params->transp_const->answers[i]), data);
+			  atof(params->transp_const->answers[i-ntransp_map]), data);
 	}
 
 	/* shininess */
@@ -159,10 +161,10 @@ int load_rasters(const struct GParams *params, nv_data * data)
 						 answers[i], mapset), -1.0,
 			  data);
 	}
-	else if (i < nshine_const &&
-		 strcmp(params->shine_const->answers[i], "")) {
+	else if (i-nshine_map < nshine_const &&
+		 strcmp(params->shine_const->answers[i-nshine_map], "")) {
 	    Nviz_set_attr(id, MAP_OBJ_SURF, ATT_SHINE, CONST_ATT, NULL,
-			  atof(params->shine_const->answers[i]), data);
+			  atof(params->shine_const->answers[i-nshine_map]), data);
 	}
 
 	/* emission */
@@ -171,10 +173,10 @@ int load_rasters(const struct GParams *params, nv_data * data)
 			  G_fully_qualified_name(params->emit_map->answers[i],
 						 mapset), -1.0, data);
 	}
-	else if (i < nemit_const &&
-		 strcmp(params->emit_const->answers[i], "")) {
+	else if (i-nemit_map < nemit_const &&
+		 strcmp(params->emit_const->answers[i-nemit_map], "")) {
 	    Nviz_set_attr(id, MAP_OBJ_SURF, ATT_EMIT, CONST_ATT, NULL,
-			  atof(params->emit_const->answers[i]), data);
+			  atof(params->emit_const->answers[i-nemit_map]), data);
 	}
 
 	/*