Changes in progress indicator.
netzel

netzel commited on 2024-11-18 12:37:21
Showing 1 changed files, with 22 additions and 14 deletions.

... ...
@@ -110,6 +110,9 @@ double calc(EZGDAL_FRAME *f, double **mtx, int **visible) {
110 110
   return v;
111 111
 }
112 112
 
113
+int quiet_val = 0;
114
+
115
+
113 116
 /**********************************
114 117
  *     Calculation sky brightness
115 118
  */
... ...
@@ -125,18 +128,18 @@ void calc_model(EZGDAL_LAYER *ghsl_layer, EZGDAL_LAYER *dem_layer, EZGDAL_LAYER
125 128
   r1 = ghsl_layer->stripe->rows/2;
126 129
   r2 = ghsl_layer->rows - r1 + 1;
127 130
   
128
-  printf("  0%%"); fflush(stdout);
131
+  if(quiet_val!=1) ezgdal_show_progress(stderr,0,rN);
129 132
 
130 133
   for(c=0; c<out_layer->cols; c++)
131 134
     out_layer->buffer[c] = out_layer->no_data;
132 135
   for(r=0; r<=r1; r++) {
133
-    if(100*r/rN != prc) {prc=100*r/rN; printf("\b\b\b\b%3d%%",prc); fflush(stdout); }
136
+    if(quiet_val!=1) ezgdal_show_progress(stderr,r,rN);
134 137
     ezgdal_write_buffer(out_layer,r);
135 138
   }
136 139
 
137 140
 
138 141
   for(r=r1+1; r<r2; r++) {
139
-    if(100*r/rN != prc) {prc=100*r/rN; printf("\b\b\b\b%3d%%",prc); fflush(stdout); }
142
+    if(quiet_val!=1) ezgdal_show_progress(stderr,r,rN);
140 143
     
141 144
     ezgdal_load_stripe_data(ghsl_layer->stripe, r-r1);
142 145
     if(dem_layer!=NULL) ezgdal_load_stripe_data(dem_layer->stripe, r-r1);
... ...
@@ -157,11 +160,11 @@ void calc_model(EZGDAL_LAYER *ghsl_layer, EZGDAL_LAYER *dem_layer, EZGDAL_LAYER
157 160
   for(c=0; c<out_layer->cols; c++)
158 161
     out_layer->buffer[c] = out_layer->no_data;
159 162
   for(r=r2; r<rN; r++) {
163
+    if(quiet_val!=1) ezgdal_show_progress(stderr,r,rN);
160 164
     if(100*r/rN != prc) {prc=100*r/rN; printf("\b\b\b\b%3d%%",prc); fflush(stdout); }
161 165
     ezgdal_write_buffer(out_layer,r);
162 166
   }
163
-  printf("\b\b\b\b100%%");
164
-  
167
+  if(quiet_val!=1) ezgdal_show_progress(stderr,rN,rN);
165 168
 }
166 169
 
167 170
 /*************************************
... ...
@@ -217,9 +220,10 @@ int main(int argc, char *argv[])
217 220
   struct arg_dbl  *p_resY  = arg_dbl0(NULL,"res_y","<dbl>","scale factor: row to km (default: 0.1)");
218 221
   struct arg_dbl  *p_resH  = arg_dbl0(NULL,"res_h","<dbl>","scale factor: height to km (default: 0.001)");
219 222
   struct arg_int  *th      = arg_int0("t","threads","<n>","number of threads (default 1)");
223
+  struct arg_lit  *quiet   = arg_litn("q","quiet",0,2,"print help and exit");
220 224
   struct arg_lit  *help    = arg_lit0(NULL,"help","print help and exit");
221 225
   struct arg_end  *end     = arg_end(20);
222
-  void* argtable[] = {ghsl,dem,out,p_par_a,p_par_U,p_par_V,p_par_h,p_par_k,p_par_N,p_resX,p_resY,p_resH,th,help,end};
226
+  void* argtable[] = {ghsl,dem,out,p_par_a,p_par_U,p_par_V,p_par_h,p_par_k,p_par_N,p_resX,p_resY,p_resH,th,quiet,help,end};
223 227
 
224 228
   int nerrors = arg_parse(argc,argv,argtable);
225 229
 
... ...
@@ -229,6 +233,8 @@ int main(int argc, char *argv[])
229 233
   if(nerrors != 0) 
230 234
     usage(argv[0],argtable);
231 235
 
236
+  quiet_val = quiet->count;
237
+
232 238
   if(!file_exists(ghsl->sval[0])) {
233 239
     printf("\nInput file [%s] does not exists!\n\n",ghsl->sval[0]);
234 240
     exit(1);
... ...
@@ -255,12 +261,14 @@ int main(int argc, char *argv[])
255 261
     omp_set_num_threads(1);
256 262
 
257 263
 
264
+  if(quiet_val==0) {
258 265
     printf("\nInput file (GHSL): %s\n",ghsl->sval[0]);
259 266
     if(dem->count>0)
260 267
       printf("Input file (DEM): %s\n",dem->sval[0]);
261 268
     printf("Output file (sky brightness): %s\n",out->sval[0]);
262 269
     printf("Berry's model parameters: a=%lf, U=%lf, V=%lf, h=%lf, k=%lf\n",par_a,par_U,par_V,par_h,par_k);
263 270
     printf("                  radius: %d\n\n",par_N);
271
+  }
264 272
 
265 273
 
266 274
   int no_data;
... ...
@@ -273,7 +281,7 @@ int main(int argc, char *argv[])
273 281
   int **visibility;
274 282
 
275 283
 
276
-  printf(" - preparing environment ... ");
284
+  if(quiet_val==0) ezgdal_show_message_nolf(stdout, " - preparing environment ... ");
277 285
     no_data = -9999;
278 286
 
279 287
     if(dem->count>0) {
... ...
@@ -302,14 +310,14 @@ int main(int argc, char *argv[])
302 310
     
303 311
     if(p_resX->count==0) {
304 312
       if(at[2]!=0.0) {
305
-        printf("\n\nYou have to provide 'res_x' parameter\n\n");
313
+        ezgdal_show_message(stderr,"\n\nYou have to provide 'res_x' parameter\n\n");
306 314
         exit(1);
307 315
       } else 
308 316
         resX = 0.001*fabs(at[1]);
309 317
     }
310 318
     if(p_resY->count==0) {
311 319
       if(at[4]!=0.0) {
312
-        printf("\n\nYou have to provide 'res_y' parameter\n\n");
320
+        ezgdal_show_message(stderr,"\n\nYou have to provide 'res_y' parameter\n\n");
313 321
         exit(1);
314 322
       } else 
315 323
         resY = 0.001*fabs(at[5]);
... ...
@@ -320,19 +328,19 @@ int main(int argc, char *argv[])
320 328
     model_matrix = init_model_matrix(par_a,par_U,par_V,par_h,par_k,par_N,resX,resY);
321 329
     distance = create_dist(2*par_N+1,resX);
322 330
     visibility = create_mask(2*par_N+1,distance,par_N*resX);
323
-  printf("OK\n");
331
+  if(quiet_val==0) ezgdal_show_message(stdout,"OK");
324 332
   
325 333
 
326
-  printf(" - calculating ... "); fflush(stdout);
334
+  if(quiet_val==0) ezgdal_show_message_nolf(stdout," - calculating ... ");
327 335
   
328 336
     calc_model(ghsl_layer, dem_layer, out_layer, 
329 337
                model_matrix, distance, visibility, 
330 338
                par_h, par_N*resX, resH);
331 339
 
332
-  printf(" ... OK\n");
340
+  if(quiet_val==0) ezgdal_show_message(stdout," ... OK");
333 341
 
334 342
   
335
-  printf(" - closing environment ... "); fflush(stdout);
343
+  if(quiet_val==0) ezgdal_show_message_nolf(stdout," - closing environment ... ");
336 344
     ezgdal_close_layer(ghsl_layer);
337 345
     if(dem->count>0)
338 346
       ezgdal_close_layer(dem_layer);
... ...
@@ -340,7 +348,7 @@ int main(int argc, char *argv[])
340 348
     free_model_matrix(model_matrix, par_N);
341 349
     free_array((void **)distance, 2*par_N+1);
342 350
     free_array((void **)visibility, 2*par_N+1);
343
-  printf("OK\n");
351
+  if(quiet_val==0) ezgdal_show_message(stdout,"OK");
344 352
 
345 353
   arg_freetable(argtable, sizeof(argtable) / sizeof(argtable[0]));
346 354
 
347 355