7 #include "dir_seperator.h"
9 //extern "C" void save_palette(const char *filename);
10 //extern "C" void load_palette(const char *filename);
12 struct mark_palette mark_palette[255];
15 void save_palette(const char *filename)
21 sprintf(name, "%s_palette", filename);
22 // printf("saving palette '%s'\n", name);
23 fp = fopen(name, "w");
25 printf("failed to save palette '%s'\n", name);
28 for (i = 0; i < 255; i++)
29 fprintf(fp, "%03d %03d %03d \"%s\" %f %f\n", mark_palette[i].r, mark_palette[i].g, mark_palette[i].b, mark_palette[i].name, mark_palette[i].bright, mark_palette[i].contrast);
30 fprintf(fp, "blacklevel %f\n", black_level);
31 fprintf(fp, "whitelevel %f\n", white_level);
32 fprintf(fp, "fadelevel %f\n", fade_level);
33 fprintf(fp, "yuv_mod %d\n", yuv_mod);
38 int load_palette(const char *filename)
45 float bright = 0, contrast = 1;
47 sprintf(name, "%s_palette", filename);
48 // printf("loading palette '%s'\n", name);
49 fp = fopen(name, "r");
51 printf("palette setting '%s' does not (yet) exists\n", name);
55 if (!fgets(line, sizeof(line), fp))
57 line[sizeof(line)-1] = '\0';
58 if (line[0]) line[strlen(line)-1] = '\0';
59 if (line[0] && line[strlen(line)-1] == '\r') line[strlen(line)-1] = '\0';
61 /* check for special attrs */
62 if (!strncmp(line, "blacklevel ", 11)) {
64 sscanf(p, "%lf", &black_level);
67 if (!strncmp(line, "whitelevel ", 11)) {
69 sscanf(p, "%lf", &white_level);
72 if (!strncmp(line, "fadelevel ", 10)) {
74 sscanf(p, "%lf", &fade_level);
77 if (!strncmp(line, "yuv_mod ", 8)) {
79 sscanf(p, "%d", &yuv_mod);
86 sscanf(line, "%d %d %d", &r, &g, &b);
87 if (!(p = strchr(line, '\"')))
90 strcpy(mark_palette[i].name, p);
91 if ((q = strchr(mark_palette[i].name, '\"')))
93 if ((p = strchr(p, '\"'))) {
95 sscanf(p, "%f %f", &bright, &contrast);
97 mark_palette[i].r = r;
98 mark_palette[i].g = g;
99 mark_palette[i].b = b;
100 mark_palette[i].bright = bright;
101 mark_palette[i].contrast = contrast;
107 /* save marked area, if any. return 0, if no pixle is marked and erase existing file */
108 int save_marked(unsigned char *img_mark_buffer, int width, int height, const char *filename)
114 for (i = 0; i < width * height; i++) {
115 if (img_mark_buffer[i])
118 sprintf(name, "%s_marked", filename);
119 if (i == width * height) {
120 // printf("delete marked frame=%s\n", name);
121 /* empty, so delete */
126 // printf("save marked frame=%s\n", name);
127 /* not empty, so save */
128 fp = fopen(name, "w");
131 printf("failed to save marked frame=%s\n", name);
134 rc = fwrite(img_mark_buffer, width * height, 1, fp);
143 int load_marked(unsigned char *img_mark_buffer, int width, int height, const char *filename)
149 sprintf(name, "%s_marked", filename);
150 // printf("load marked frame=%s\n", name);
151 fp = fopen(name, "r");
154 // printf("failed to load marked frame=%s\n", name);
157 rc = fread(img_mark_buffer, width * height, 1, fp);