home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * Copyright (C) 1994 Charles P. Peterson *
- * 4007 Enchanted Sun, San Antonio, Texas 78244-1254 *
- * Email: Charles_P_Peterson@fcircus.sat.tx.us *
- * *
- * This is free software with NO WARRANTY. *
- * See gfft.c, or run program itself, for details. *
- * Support is available for a fee. *
- ***************************************************************************
- *
- * Program: gfft--General FFT analysis
- * File: saveset.c
- * Purpose: save settings
- * Author: Charles Peterson (CPP)
- * History: 11-Feb-95 CPP (1.39); Created.
- * Comment:
- */
-
- #include <stdio.h>
- #include <string.h>
-
- #include "gfft.h"
- #include "settings.h"
-
- #define WRITE_BOOLEAN( NAME, VARIABLE, DEFLT) \
- write_boolean (fp, cstr, NAME, VARIABLE, DEFLT);
-
- static void write_boolean (FILE *fp, char *cstr, char *name,
- BOOLEAN variable, BOOLEAN deflt)
- {
- if (variable && !deflt)
- {
- fprintf (fp, "%s%s\n", cstr, name);
- }
- else if (!variable && deflt)
- {
- fprintf (fp, "%sNo%s\n", cstr, name);
- }
- }
-
- #define WRITE_ULONG( NAME, VARIABLE, DEFLT, IGNORE1) \
- write_ulong (fp, cstr, NAME, VARIABLE, DEFLT, IGNORE1)
-
- static void write_ulong (FILE *fp, char *cstr, char *name, ULONG variable,
- ULONG deflt, ULONG ignore1)
- {
- if (!(variable == deflt || variable == ignore1))
- {
- fprintf (fp, "%s%s=%lu\n", cstr, name, variable);
- }
- }
-
- #define WRITE_LONG( NAME, VARIABLE, DEFLT, IGNORE) \
- write_long (fp, cstr, NAME, VARIABLE, DEFLT, IGNORE)
-
- static void write_long (FILE *fp, char *cstr, char *name, long variable,
- long deflt, long ignore)
- {
- if (!(variable == deflt || variable == ignore))
- {
- fprintf (fp, "%s%s=%ld\n", cstr, name, variable);
- }
- }
-
- #define WRITE_DOUBLE( NAME, VARIABLE, DEFLT, IGNORE) \
- write_double (fp, cstr, NAME, VARIABLE, DEFLT, IGNORE)
-
- static void write_double (FILE *fp, char *cstr, char *name,
- double variable, double deflt, double ignore)
- {
- if (!(variable == deflt || variable == ignore))
- {
- #ifdef _FFP
- fprintf (fp, "%s%s=%19.12g\n", cstr, name, variable);
- #else
- fprintf (fp, "%s%s=%15.8g\n", cstr, name, variable);
- #endif
- }
- }
-
- #define WRITE_CHARS( NAME, VARIABLE) \
- write_chars (fp, cstr, NAME, VARIABLE)
-
- static void write_chars (FILE *fp, char *cstr, char *name, char *variable)
- {
- if (variable && strlen (variable))
- {
- fprintf (fp, "%s%s=%s\n", cstr, name, variable);
- }
- }
-
- #define WRITE_WINDOWT( VARIABLE, DEFLT) \
- write_windowt (fp, cstr, VARIABLE, DEFLT);
-
- static void write_windowt (FILE *fp, char *cstr, int variable, int deflt)
- {
- char *windowt;
-
- if (variable != deflt)
- {
- switch (variable)
- {
- case RECTANGLE_WINDOW:
- windowt = "Rectangle";
- break;
- case TRIANGLE_WINDOW:
- windowt = "Triangle";
- break;
- case PARZEN_WINDOW:
- windowt = "Parzen";
- break;
- case WELCH_WINDOW:
- windowt = "Welch";
- break;
- case HANN_WINDOW:
- windowt = "Hann";
- break;
- case HAMMING_WINDOW:
- windowt = "Hamming";
- break;
- case BLACKMAN_HARRIS_74DB_WINDOW:
- windowt = "74dB-Blackman-Harris";
- break;
- case BLACKMAN_HARRIS_92DB_WINDOW:
- windowt = "92dB-Blackman-Harris";
- break;
- default:
- return;
- }
- fprintf (fp, "%s%s\n", cstr, windowt);
- }
- }
-
- #define WRITE_CAL_LIST( VARIABLE) \
- calibration_list__write (fp, cstr, &VARIABLE);
-
-
- #define WRITE_PLOT_COMMANDS( NAME, VARIABLE) \
- write_plot_commands (fp, cstr, NAME, VARIABLE);
-
-
- void write_settings (FILE *fp, char *cstr, BOOLEAN show_read,
- BOOLEAN show_write)
- {
- if (show_read)
- {
- WRITE_CHARS ("Read", ReadName);
- }
-
- if (show_write)
- {
- if (Appending)
- {
- WRITE_CHARS ("Append", WriteName);
- }
- else
- {
- WRITE_CHARS ("Write", WriteName);
- }
- }
-
- /* WRITE_BOOLEAN ("Amplitude", Amplitude, TRUE);
- True by default, else write POWER */
-
- WRITE_CAL_LIST (CalibrationList);
- WRITE_ULONG ("Channel", Channel, 1L, 0L);
- WRITE_BOOLEAN ("CombinePlots", CombinePlots, FALSE);
- WRITE_BOOLEAN ("Db", Db, FALSE);
- WRITE_ULONG ("Frames", Frames, ULONG_MAX, ULONG_MAX);
- WRITE_BOOLEAN ("Header", Header, TRUE)
- WRITE_BOOLEAN ("Hidden3D", Hidden3D, TRUE);
- WRITE_DOUBLE ("HighFrequency", HighFrequency, HIGHEST_FREQUENCY, HIGHEST_FREQUENCY);
- WRITE_DOUBLE ("HighY", HighY, HIGHEST_Y, HIGHEST_Y);
- WRITE_BOOLEAN ("IgnoreFormat", IgnoreFormat, FALSE);
- /* WRITE_PARAMETER (IOFormatS, InputFormat, INPUT_FORMAT_DEFAULTS); */
- WRITE_ULONG ("Interleave", Interleave, 1, INVALID_INTERLEAVE);
- WRITE_BOOLEAN ("LogX", LogX, FALSE);
- WRITE_BOOLEAN ("LogY", LogY, FALSE);
- WRITE_DOUBLE ("LowFrequency", LowFrequency, LOWEST_FREQUENCY, LOWEST_FREQUENCY);
- WRITE_DOUBLE ("LowY", LowY, LOWEST_Y, LOWEST_Y);
- WRITE_ULONG ("Key", Key, 0, 0);
-
- /* WRITE_BOOLEAN ("Mean", Mean, TRUE); true by default, else set SUM */
-
- WRITE_DOUBLE ("Multiply", Multiply, 1.0L, 1.0L);
- WRITE_LONG ("NumberBins", NumberBins, MAX_BINS, INVALID_BINS);
- WRITE_BOOLEAN ("Numerical", Numerical, FALSE);
- WRITE_ULONG ("Octave", Octave, 1L, 1L);
- WRITE_BOOLEAN ("OneShotOnly", OneShotOnly, FALSE);
- /* WRITE_PARAMETER (IOFormatS, OutputFormat, OUTPUT_FORMAT_DEFAULTS); */
- WRITE_BOOLEAN ("Overlap", Overlap, TRUE);
- WRITE_BOOLEAN ("Pad", Pad, FALSE);
- WRITE_BOOLEAN ("Parseval", Parseval, TRUE);
- WRITE_BOOLEAN ("Pink", Pink, FALSE);
- WRITE_BOOLEAN ("Plot", Plot, NO_PLOT);
- WRITE_PLOT_COMMANDS ("PlotCommand", PlotCommands);
- WRITE_CHARS ("PlotOutput", PlotOutput);
- WRITE_BOOLEAN ("Power", Power, FALSE);
- WRITE_BOOLEAN ("PSDensity", PSDensity, FALSE);
- WRITE_DOUBLE ("Quantization", Quantization, MIN_QUANTIZATION,
- BAD_QUANTIZATION);
- WRITE_BOOLEAN ("Quiet", Quiet, FALSE);
- WRITE_DOUBLE ("Rate", Rate, AUTO_RATE, INVALID_RATE);
- WRITE_DOUBLE ("RotX", RotX, DEF_ROT_X, INVALID_ROTATION);
- WRITE_DOUBLE ("RotZ", RotZ, DEF_ROT_Z, INVALID_ROTATION);
-
- WRITE_BOOLEAN ("RepeatOnly", RepeatOnly, FALSE);
- WRITE_BOOLEAN ("SaveMemory", SaveMemory, FALSE);
- WRITE_LONG ("SmoothingSegments", SmoothingSegments, NO_SMOOTHING,
- INVALID_SMOOTHING);
- WRITE_BOOLEAN ("SquaredSmoothing", SquaredSmoothing, FALSE);
- WRITE_ULONG ("StartByte", StartByte, 0, 0);
- WRITE_ULONG ("StartFrame", StartFrame, 0, 0);
- WRITE_ULONG ("StopByte", StopByte, ULONG_MAX, ULONG_MAX);
- WRITE_CHARS ("Terminal", Terminal);
- WRITE_BOOLEAN ("Time3D", Time3D, FALSE);
- WRITE_LONG ("TimeOffset", TimeOffset, NOT_SET, INVALID_SET);
- WRITE_DOUBLE ("TimeOverlap", TimeOverlap, DEFAULT_TIME_OVERLAP,
- (double) INVALID_SET);
- WRITE_LONG ("TimeSegments", TimeSegments, NOT_SET, INVALID_SET);
- WRITE_LONG ("TimeSegSize", TimeSegSize, NOT_SET, INVALID_SET);
- WRITE_BOOLEAN ("Topaz", Topaz, FALSE);
- WRITE_WINDOWT (WindowType, RECTANGLE_WINDOW);
- }
-
-