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 %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, mark_palette[i].alpha);
34 int load_palette(const char *filename)
41 float bright, contrast, alpha;
43 sprintf(name, "%s_palette", filename);
44 // printf("loading palette '%s'\n", name);
45 fp = fopen(name, "r");
47 printf("palette setting '%s' does not (yet) exists\n", name);
51 if (!fgets(line, sizeof(line), fp))
53 line[sizeof(line)-1] = '\0';
54 if (line[0]) line[strlen(line)-1] = '\0';
55 if (line[0] && line[strlen(line)-1] == '\r') line[strlen(line)-1] = '\0';
60 sscanf(line, "%d %d %d", &r, &g, &b);
61 if (!(p = strchr(line, '\"')))
64 strncpy(mark_palette[i].name, p, sizeof(mark_palette[i].name)-1);
65 if ((q = strchr(mark_palette[i].name, '\"')))
67 if ((p = strchr(p, '\"'))) {
72 sscanf(p, "%f %f %f", &bright, &contrast, &alpha);
74 mark_palette[i].r = r;
75 mark_palette[i].g = g;
76 mark_palette[i].b = b;
77 mark_palette[i].bright = bright;
78 mark_palette[i].contrast = contrast;
79 mark_palette[i].alpha = alpha;
85 /* save marked area, if any. return 0, if no pixle is marked and erase existing file */
86 int save_marked(unsigned char *img_mark_buffer, int width, int height, const char *filename)
92 for (i = 0; i < width * height; i++) {
93 if (img_mark_buffer[i])
96 sprintf(name, "%s_marked", filename);
97 if (i == width * height) {
98 // printf("delete marked frame=%s\n", name);
99 /* empty, so delete */
104 // printf("save marked frame=%s\n", name);
105 /* not empty, so save */
106 fp = fopen(name, "w");
109 printf("failed to save marked frame=%s\n", name);
112 rc = fwrite(img_mark_buffer, width * height, 1, fp);
121 int load_marked(unsigned char *img_mark_buffer, int width, int height, const char *filename)
127 sprintf(name, "%s_marked", filename);
128 // printf("load marked frame=%s\n", name);
129 fp = fopen(name, "r");
132 // printf("failed to load marked frame=%s\n", name);
135 rc = fread(img_mark_buffer, width * height, 1, fp);
143 /* scale down mark map in mark_buffer */
144 void scale_mark(unsigned char *mark_buffer, int width, int height, int scale)
146 int w, h, i, j, x, y;
147 unsigned char c, temp;
155 for (i = 0; i < h; i++) {
156 for (j = 0; j < w; j++) {
158 /* always use one index other than 0, if there is any in an areaa to be shrinked */
159 for (y = 0; y < scale; y++) {
160 for (x = 0; x < scale; x++) {
161 temp = mark_buffer[(i*scale+y) * width + j*scale+x];
166 mark_buffer[i * w + j] = c;