1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 c-style: "K&R" -*- */
3 /*----------------------------------------------------------------------
5 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
8 Copyright (C) 2002 Gerber van der Graaf
10 This file is part of gpiv.
12 Gpiv is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2, or (at your option)
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 ----------------------------------------------------------------------*/
29 * utility functions for gpiv
30 * $Log: utils_par.c,v $
31 * Revision 1.1 2008-09-16 11:24:37 gerber
38 #include "utils_par.h"
45 set_par_bool_ifdiff (gboolean
*val_src
,
50 set_par_int_ifdiff (gint
*val_src
,
55 print_par_bool (gchar
*parname
,
60 print_par_int (gchar
*parname
,
65 par_ovwrt_parameters (Par
*par_src
,
71 * Program-wide public functions
74 parameters_set (Par
*par
,
77 /*-----------------------------------------------------------------------------
78 * Defines each parameter member of par_dest->*__set to bool
82 par
->img_fmt__set
= bool;
84 par
->print_par__set
= bool;
85 par
->verbose__set
= bool;
86 par
->x_corr__set
= bool;
87 par
->console__show_tooltips__set
= bool;
88 par
->console__view_tabulator__set
= bool;
89 par
->console__view_gpivbuttons__set
= bool;
90 par
->console__nbins__set
= bool;
93 par
->process__cam
= bool;
94 #endif /* ENABLE_CAM */
97 par
->process__trig
= bool;
98 #endif /* ENABLE_DAC */
100 #ifdef ENABLE_IMGPROC
101 par
->process__imgproc
= bool;
102 #endif /* ENABLE_IMGPROC */
104 par
->process__piv
= bool;
105 par
->process__gradient
= bool;
106 par
->process__resstats
= bool;
107 par
->process__errvec
= bool;
108 par
->process__peaklock
= bool;
109 par
->process__scale
= bool;
110 par
->process__average
= bool;
111 par
->process__subtract
= bool;
112 par
->process__vorstra
= bool;
113 par
->display__view_menubar
= bool;
114 par
->display__view_rulers
= bool;
115 par
->display__stretch_auto
= bool;
116 par
->display__vector_scale
= bool;
117 par
->display__vector_color
= bool;
118 par
->display__zoom_index
= bool;
119 par
->display__backgrnd__set
= bool;
120 par
->display__intregs
= bool;
121 par
->display__piv
= bool;
122 par
->display__scalar__set
= bool;
128 set_parameters_ifdiff (Par
*par_src
,
131 /*-----------------------------------------------------------------------------
132 * Defines each parameter member of par_dest->*__set to TRUE if par_src differs
136 set_par_int_ifdiff ((int *) &par_src
->img_fmt
,
137 (int *) &par_dest
->img_fmt
,
138 &par_dest
->img_fmt__set
);
140 set_par_bool_ifdiff (&par_src
->hdf
,
142 &par_dest
->hdf__set
);
144 set_par_bool_ifdiff (&par_src
->print_par
,
145 &par_dest
->print_par
,
146 &par_dest
->print_par__set
);
148 set_par_bool_ifdiff (&par_src
->verbose
,
150 &par_dest
->verbose__set
);
152 set_par_bool_ifdiff (&par_src
->x_corr
,
154 &par_dest
->x_corr__set
);
156 set_par_bool_ifdiff (&par_src
->console__show_tooltips
,
157 &par_dest
->console__show_tooltips
,
158 &par_dest
->console__show_tooltips__set
);
160 set_par_bool_ifdiff (&par_src
->console__view_tabulator
,
161 &par_dest
->console__view_tabulator
,
162 &par_dest
->console__view_tabulator__set
);
164 set_par_bool_ifdiff (&par_src
->console__view_gpivbuttons
,
165 &par_dest
->console__view_gpivbuttons
,
166 &par_dest
->console__view_gpivbuttons__set
);
168 set_par_int_ifdiff (&par_src
->console__nbins
,
169 &par_dest
->console__nbins
,
170 &par_dest
->console__nbins__set
);
173 set_par_bool_ifdiff (&par_src
->process__cam
,
174 &par_dest
->process__cam
,
175 &par_dest
->process__cam__set
);
176 #endif /* ENABLE_CAM */
179 set_par_bool_ifdiff (&par_src
->process__trig
,
180 &par_dest
->process__trig
,
181 &par_dest
->process__trig__set
);
182 #endif /* ENABLE_DAC */
184 #ifdef ENABLE_IMGPROC
185 set_par_bool_ifdiff (&par_src
->process__imgproc
,
186 &par_dest
->process__imgproc
,
187 &par_dest
->process__imgproc__set
);
188 #endif /* ENABLE_IMGPROC */
190 set_par_bool_ifdiff (&par_src
->process__piv
,
191 &par_dest
->process__piv
,
192 &par_dest
->process__piv__set
);
194 set_par_bool_ifdiff (&par_src
->process__gradient
,
195 &par_dest
->process__gradient
,
196 &par_dest
->process__gradient__set
);
198 set_par_bool_ifdiff (&par_src
->process__resstats
,
199 &par_dest
->process__resstats
,
200 &par_dest
->process__resstats__set
);
202 set_par_bool_ifdiff (&par_src
->process__errvec
,
203 &par_dest
->process__errvec
,
204 &par_dest
->process__errvec__set
);
206 set_par_bool_ifdiff (&par_src
->process__peaklock
,
207 &par_dest
->process__peaklock
,
208 &par_dest
->process__peaklock__set
);
211 set_par_bool_ifdiff (&par_src
->process__scale
,
212 &par_dest
->process__scale
,
213 &par_dest
->process__scale__set
);
216 set_par_bool_ifdiff (&par_src
->process__average
,
217 &par_dest
->process__average
,
218 &par_dest
->process__average__set
);
221 set_par_bool_ifdiff (&par_src
->process__subtract
,
222 &par_dest
->process__subtract
,
223 &par_dest
->process__subtract__set
);
226 set_par_bool_ifdiff (&par_src
->process__vorstra
,
227 &par_dest
->process__vorstra
,
228 &par_dest
->process__vorstra__set
);
231 set_par_bool_ifdiff (&par_src
->display__view_menubar
,
232 &par_dest
->display__view_menubar
,
233 &par_dest
->display__view_menubar__set
);
236 set_par_bool_ifdiff (&par_src
->display__view_rulers
,
237 &par_dest
->display__view_rulers
,
238 &par_dest
->display__view_rulers__set
);
241 set_par_bool_ifdiff (&par_src
->display__stretch_auto
,
242 &par_dest
->display__stretch_auto
,
243 &par_dest
->display__stretch_auto__set
);
246 set_par_int_ifdiff ((int *) &par_src
->display__vector_scale
,
247 (int *) &par_dest
->display__vector_scale
,
248 &par_dest
->display__vector_scale__set
);
251 set_par_int_ifdiff ((int *) &par_src
->display__vector_color
,
252 (int *) &par_dest
->display__vector_color
,
253 &par_dest
->display__vector_color__set
);
256 set_par_int_ifdiff ((int *) &par_src
->display__zoom_index
,
257 (int *) &par_dest
->display__zoom_index
,
258 &par_dest
->display__zoom_index__set
);
261 set_par_int_ifdiff ((int *) &par_src
->display__backgrnd
,
262 (int *) &par_dest
->display__backgrnd
,
263 &par_dest
->display__backgrnd__set
);
266 set_par_bool_ifdiff (&par_src
->display__intregs
,
267 &par_dest
->display__intregs
,
268 &par_dest
->display__intregs__set
);
271 set_par_bool_ifdiff (&par_src
->display__piv
,
272 &par_dest
->display__piv
,
273 &par_dest
->display__piv__set
);
276 set_par_int_ifdiff ((int *) &par_src
->display__scalar
,
277 (int *) &par_dest
->display__scalar
,
278 &par_dest
->display__scalar__set
);
286 print_parameters (Par
*par
288 /*-----------------------------------------------------------------------------
292 print_par_int ("img_fmt", par
->img_fmt
,
295 print_par_bool ("hdf", par
->hdf
,
298 print_par_bool ("print_par", par
->print_par
,
299 par
->print_par__set
);
301 print_par_bool ("verbose", par
->verbose
,
304 print_par_bool ("x_corr", par
->x_corr
,
307 print_par_bool ("console__show_tooltips", par
->console__show_tooltips
,
308 par
->console__show_tooltips__set
);
310 print_par_bool ("console__view_tabulator", par
->console__view_tabulator
,
311 par
->console__view_tabulator__set
);
313 print_par_bool ("console__view_gpivbuttons", par
->console__view_gpivbuttons
,
314 par
->console__view_gpivbuttons__set
);
316 print_par_int ("console__nbins", par
->console__nbins
,
317 par
->console__nbins__set
);
320 print_par_bool ("process__cam", par
->process__cam
,
321 par
->process__cam__set
);
322 #endif /* ENABLE_CAM */
325 print_par_bool ("process__trig", par
->process__trig
,
326 par
->process__trig__set
);
327 #endif /* ENABLE_DAC */
329 #ifdef ENABLE_IMGPROC
330 print_par_bool ("process__imgproc", par
->process__imgproc
,
331 par
->process__imgproc__set
);
332 #endif /* ENABLE_IMGPROC */
334 print_par_bool ("process__piv", par
->process__piv
,
335 par
->process__piv__set
);
337 print_par_bool ("process__gradient", par
->process__gradient
,
338 par
->process__gradient__set
);
340 print_par_bool ("process__resstats", par
->process__resstats
,
341 par
->process__resstats__set
);
343 print_par_bool ("process__errvec", par
->process__errvec
,
344 par
->process__errvec__set
);
346 print_par_bool ("process__peaklock", par
->process__peaklock
,
347 par
->process__peaklock__set
);
350 print_par_bool ("process__scale", par
->process__scale
,
351 par
->process__scale__set
);
354 print_par_bool ("process__average", par
->process__average
,
355 par
->process__average__set
);
358 print_par_bool ("process__subtract", par
->process__subtract
,
359 par
->process__subtract__set
);
362 print_par_bool ("process__vorstra", par
->process__vorstra
,
363 par
->process__vorstra__set
);
366 print_par_bool ("display__view_menubar", par
->display__view_menubar
,
367 par
->display__view_menubar__set
);
370 print_par_bool ("display__view_rulers", par
->display__view_rulers
,
371 par
->display__view_rulers__set
);
374 print_par_bool ("display__stretch_auto", par
->display__stretch_auto
,
375 par
->display__stretch_auto__set
);
378 print_par_bool ("display__vector_scale", par
->display__vector_scale
,
379 par
->display__vector_scale__set
);
382 print_par_bool ("display__vector_color", par
->display__vector_color
,
383 par
->display__vector_color__set
);
386 print_par_bool ("display__zoom_index", par
->display__zoom_index
,
387 par
->display__zoom_index__set
);
390 print_par_bool ("display__background", par
->display__backgrnd
,
391 par
->display__backgrnd__set
);
394 print_par_bool ("display__intregs", par
->display__intregs
,
395 par
->display__intregs__set
);
398 print_par_bool ("display__piv", par
->display__piv
,
399 par
->display__piv__set
);
402 print_par_bool ("display__scalar", par
->display__scalar
,
403 par
->display__scalar__set
);
411 cp_undef_parameters (Par
*par_src
,
414 /*-----------------------------------------------------------------------------
416 * Copies only those gpiv parameters from src to dest if dest has not
420 * par_src: source gpiv parameters
421 * force: flag to force the copying, even if destination
423 * print_par: verbose output. Not implemented, yet.
426 * par_dest: destination piv parameters
430 *---------------------------------------------------------------------------*/
432 gchar
*err_msg
= NULL
;
433 gboolean force
= FALSE
;
436 par_ovwrt_parameters (par_src
, par_dest
, force
);
445 cp_parameters (Par
*par_src
447 /*-----------------------------------------------------------------------------
449 * Copies all gpiv parameters
452 * par_src: source gpiv parameters
453 * force: flag to force the copying, even if destination
455 * print_par: verbose output. Not implemented, yet.
458 * par_dest: destination piv parameters
462 *---------------------------------------------------------------------------*/
464 Par
*par_dest
= g_new0 (Par
, 1);
465 gboolean force
= TRUE
;
468 par_ovwrt_parameters (par_src
, par_dest
, force
);
480 set_par_bool_ifdiff (gboolean
*val_src
,
483 /*-----------------------------------------------------------------------------
486 if (*val_src
!= *val_dest
) {
487 *val_dest
= *val_src
;
497 set_par_int_ifdiff (gint
*val_src
,
500 /*-----------------------------------------------------------------------------
503 if (*val_src
!= *val_dest
) {
504 *val_dest
= *val_src
;
514 print_par_bool (gchar
*parname
,
517 /*-----------------------------------------------------------------------------
521 g_message ("%s__set is TRUE", parname
);
523 g_message ("%s__set is FALSE", parname
);
527 g_message ("%s is set to: TRUE", parname
);
529 g_message ("%s is set to: FALSE", parname
);
535 print_par_int (gchar
*parname
,
538 /*-----------------------------------------------------------------------------
542 g_message ("%s__set is TRUE", parname
);
544 g_message ("%s__set is FALSE", parname
);
547 g_message ("%s is set to: %d", parname
, val
);
552 par_ovwrt_parameters (Par
*par_src
,
556 /*-----------------------------------------------------------------------------
558 * Copies gpiv parameters
561 * par_src: source gpiv parameters
562 * par_dest: destination gpiv parameters
563 * force: flag to force the copying, even if destination
567 * par_dest: destination piv parameters
571 *---------------------------------------------------------------------------*/
575 || ( par_src
->img_fmt__set
576 && !par_dest
->img_fmt__set
)) {
577 par_dest
->img_fmt
= par_src
->img_fmt
;
578 par_dest
->img_fmt__set
= TRUE
;
582 || ( par_src
->hdf__set
583 && !par_dest
->hdf__set
)) {
584 par_dest
->hdf
= par_src
->hdf
;
585 par_dest
->hdf__set
= TRUE
;
589 || ( par_src
->print_par__set
590 && !par_dest
->print_par__set
)) {
591 par_dest
->print_par
= par_src
->print_par
;
592 par_dest
->print_par__set
= TRUE
;
596 || ( par_src
->verbose__set
597 && !par_dest
->verbose__set
)) {
598 par_dest
->verbose
= par_src
->verbose
;
599 par_dest
->verbose__set
= TRUE
;
603 || ( par_src
->x_corr__set
604 && !par_dest
->x_corr__set
)) {
605 par_dest
->x_corr
= par_src
->x_corr
;
606 par_dest
->x_corr__set
= TRUE
;
610 || ( par_src
->console__show_tooltips__set
611 && !par_dest
->console__show_tooltips__set
)) {
612 par_dest
->console__show_tooltips
= par_src
->console__show_tooltips
;
613 par_dest
->console__show_tooltips__set
= TRUE
;
617 || ( par_src
->console__view_tabulator__set
618 && !par_dest
->console__view_tabulator__set
)) {
619 par_dest
->console__view_tabulator
= par_src
->console__view_tabulator
;
620 par_dest
->console__view_tabulator__set
= TRUE
;
624 || ( par_src
->console__view_gpivbuttons__set
625 && !par_dest
->console__view_gpivbuttons__set
)) {
626 par_dest
->console__view_gpivbuttons
= par_src
->console__view_gpivbuttons
;
627 par_dest
->console__view_gpivbuttons__set
= TRUE
;
631 || ( par_src
->console__nbins__set
632 && !par_dest
->console__nbins__set
)) {
633 par_dest
->console__nbins
= par_src
->console__nbins
;
634 par_dest
->console__nbins__set
= TRUE
;
639 || ( par_src
->process__cam__set
640 && !par_dest
->process__cam__set
)) {
641 par_dest
->process__cam
= par_src
->process__cam
;
642 par_dest
->process__cam__set
= TRUE
;
644 #endif /* ENABLE_CAM */
648 || ( par_src
->process__trig__set
649 && !par_dest
->process__trig__set
)) {
650 par_dest
->process__trig
= par_src
->process__trig
;
651 par_dest
->process__trig__set
= TRUE
;
653 #endif /* ENABLE_DAC */
655 #ifdef ENABLE_IMGPROC
657 || ( par_src
->process__imgproc__set
658 && !par_dest
->process__imgproc__set
)) {
659 par_dest
->process__piv
= par_src
->process__piv
;
660 par_dest
->process__imgproc__set
= TRUE
;
662 #endif /* ENABLE_IMGPROC */
665 || ( par_src
->process__piv__set
666 && !par_dest
->process__piv__set
)) {
667 par_dest
->process__piv
= par_src
->process__piv
;
668 par_dest
->process__piv__set
= TRUE
;
672 || ( par_src
->process__gradient__set
673 && !par_dest
->process__gradient__set
)) {
674 par_dest
->process__gradient
= par_src
->process__gradient
;
675 par_dest
->process__gradient__set
= TRUE
;
679 || ( par_src
->process__resstats__set
680 && !par_dest
->process__resstats__set
)) {
681 par_src
->process__resstats
= par_dest
->process__resstats
;
682 par_dest
->process__resstats__set
= TRUE
;
686 || ( par_src
->process__errvec__set
687 && !par_dest
->process__errvec__set
)) {
688 par_dest
->process__errvec
= par_src
->process__errvec
;
689 par_dest
->process__errvec__set
= TRUE
;
693 || ( par_src
->process__peaklock__set
694 && !par_dest
->process__peaklock__set
)) {
695 par_dest
->process__peaklock
= par_src
->process__peaklock
;
696 par_dest
->process__peaklock__set
= TRUE
;
700 || ( par_src
->process__scale__set
701 && !par_dest
->process__scale__set
)) {
702 par_dest
->process__scale
= par_src
->process__scale
;
703 par_dest
->process__scale__set
= TRUE
;
707 || ( par_src
->process__average__set
708 && !par_dest
->process__average__set
)) {
709 par_dest
->process__average
= par_src
->process__average
;
710 par_dest
->process__average__set
= TRUE
;
714 || ( par_src
->process__subtract__set
715 && !par_dest
->process__subtract__set
)) {
716 par_dest
->process__subtract
= par_src
->process__subtract
;
717 par_dest
->process__subtract__set
= TRUE
;
721 || ( par_src
->process__vorstra__set
722 && !par_dest
->process__vorstra__set
)) {
723 par_dest
->process__vorstra
= par_src
->process__vorstra
;
724 par_dest
->process__vorstra__set
= TRUE
;
728 || ( par_src
->display__view_menubar__set
729 && !par_dest
->display__view_menubar__set
)) {
730 par_dest
->display__view_menubar
= par_src
->display__view_menubar
;
731 par_dest
->display__view_menubar__set
= TRUE
;
735 || ( par_src
->display__view_rulers__set
736 && !par_dest
->display__view_rulers__set
)) {
737 par_dest
->display__view_rulers
= par_src
->display__view_rulers
;
738 par_dest
->display__view_rulers__set
= TRUE
;
742 || ( par_src
->display__stretch_auto__set
743 && !par_dest
->display__stretch_auto__set
)) {
744 par_dest
->display__view_rulers
= par_src
->display__view_rulers
;
745 par_dest
->display__stretch_auto__set
= TRUE
;
749 || ( par_src
->display__vector_scale__set
750 && !par_dest
->display__vector_scale__set
)) {
751 par_dest
->display__vector_scale
= par_src
->display__vector_scale
;
752 par_dest
->display__vector_scale__set
= TRUE
;
756 || ( par_src
->display__vector_color__set
757 && !par_dest
->display__vector_color__set
)) {
758 par_dest
->display__vector_color
= par_src
->display__vector_color
;
759 par_dest
->display__vector_color__set
= TRUE
;
763 || ( par_src
->display__zoom_index__set
764 && !par_dest
->display__zoom_index__set
)) {
765 par_dest
->display__zoom_index
= par_src
->display__zoom_index
;
766 par_dest
->display__zoom_index__set
= TRUE
;
770 || ( par_src
->display__backgrnd__set
771 && !par_dest
->display__backgrnd__set
)) {
772 par_dest
->display__backgrnd
= par_src
->display__backgrnd
;
773 par_dest
->display__backgrnd__set
= TRUE
;
777 || ( par_src
->display__intregs__set
778 && !par_dest
->display__intregs__set
)) {
779 par_dest
->display__intregs
= par_src
->display__intregs
;
780 par_dest
->display__intregs__set
= TRUE
;
784 || ( par_src
->display__piv__set
785 && !par_dest
->display__piv__set
)) {
786 par_dest
->display__piv
= par_src
->display__piv
;
787 par_dest
->display__piv__set
= TRUE
;
791 || ( par_src
->display__scalar__set
792 && !par_dest
->display__scalar__set
)) {
793 par_dest
->display__scalar
= par_src
->display__scalar
;
794 par_dest
->display__scalar__set
= TRUE
;