4 #include "opticalflow.h"
15 enum setting_type type;
19 static struct settings settings[] = {
20 { "blacklevel", SETTING_DOUBLE, &black_level },
21 { "whitelevel", SETTING_DOUBLE, &white_level },
22 { "fadelevel", SETTING_DOUBLE, &fade_level },
23 { "yuv_mod", SETTING_INT, &yuv_mod },
25 { "flow_enable", SETTING_INT, &flow_enable },
26 { "flow_window", SETTING_INT, &flow_window },
27 { "flow_view_vector", SETTING_INT, &flow_view_vector },
28 { "flow_view_uv", SETTING_INT, &flow_view_uv },
34 void save_settings(const char *filename)
40 sprintf(name, "%s_settings", filename);
41 fp = fopen(name, "w");
43 printf("failed to save settings '%s'\n", name);
46 for (i = 0; settings[i].keyword; i++) {
47 switch (settings[i].type) {
49 fprintf(fp, "%s %f\n", settings[i].keyword, *((double *)settings[i].variable));
52 fprintf(fp, "%s %d\n", settings[i].keyword, *((int *)settings[i].variable));
60 int _load_settings(const char *filename, const char *suffix)
68 sprintf(name, "%s_%s", filename, suffix);
69 fp = fopen(name, "r");
73 while (fgets(line, sizeof(line), fp)) {
74 line[sizeof(line)-1] = '\0';
75 if (line[0]) line[strlen(line)-1] = '\0';
76 if (line[0] && line[strlen(line)-1] == '\r') line[strlen(line)-1] = '\0';
78 for (i = 0; settings[i].keyword; i++) {
79 if (!!strncmp(line, settings[i].keyword, strlen(settings[i].keyword)))
81 if (line[strlen(settings[i].keyword)] != ' ')
83 p = line + strlen(settings[i].keyword) + 1;
84 switch (settings[i].type) {
86 sscanf(p, "%lf", (double *)settings[i].variable);
90 sscanf(p, "%d", (int *)settings[i].variable);
101 int load_settings(const char *filename)
105 rc = _load_settings(filename, "palette");
107 printf("Keywords in file '%s_palette' have moved. After saving, they are moved to *_settings.\n", filename);
110 rc = _load_settings(filename, "opticalflow");
112 printf("File '%s_opticalflow' is obsolete. After saving, keywords are moved to *_settings and you can remove it.\n", filename);
115 rc = _load_settings(filename, "settings");