kwo pushed a commit to branch master. commit 0d7f851f258ccf243034208a8c03da0e6e229c65 Author: Kim Woelders <[email protected]> Date: Wed Jul 3 00:31:58 2013 +0200
Cosmetics (reduce deep indentation level).
---
src/modules/loaders/loader_xpm.c | 584 +++++++++++++++++++--------------------
1 file changed, 287 insertions(+), 297 deletions(-)
diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c
index c8f9674..52f5d34 100644
--- a/src/modules/loaders/loader_xpm.c
+++ b/src/modules/loaders/loader_xpm.c
@@ -173,174 +173,129 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity,
comment = 0;
}
- if (!comment)
+ if (comment)
+ continue;
+
+ if ((!quote) && (c == '"'))
{
- if ((!quote) && (c == '"'))
- {
- quote = 1;
- i = 0;
- }
- else if ((quote) && (c == '"'))
+ quote = 1;
+ i = 0;
+ }
+ else if ((quote) && (c == '"'))
+ {
+ line[i] = 0;
+ quote = 0;
+ if (context == 0)
{
- line[i] = 0;
- quote = 0;
- if (context == 0)
+ /* Header */
+ sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
+ if ((ncolors > 32766) || (ncolors < 1))
{
- /* Header */
- sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
- if ((ncolors > 32766) || (ncolors < 1))
- {
- fprintf(stderr,
- "IMLIB ERROR: XPM files with colors >
32766 or < 1 not supported\n");
- free(line);
- fclose(f);
- xpm_parse_done();
- return 0;
- }
- if ((cpp > 5) || (cpp < 1))
- {
- fprintf(stderr,
- "IMLIB ERROR: XPM files with characters
per pixel > 5 or < 1not supported\n");
- free(line);
- fclose(f);
- xpm_parse_done();
- return 0;
- }
- if (!IMAGE_DIMENSIONS_OK(w, h))
- {
- fprintf(stderr,
- "IMLIB ERROR: Invalid image dimension:
%dx%d\n",
- w, h);
- free(line);
- fclose(f);
- xpm_parse_done();
- return 0;
- }
- im->w = w;
- im->h = h;
- if (!im->format)
- im->format = strdup("xpm");
+ fprintf(stderr,
+ "IMLIB ERROR: XPM files with colors > 32766 or
< 1 not supported\n");
+ free(line);
+ fclose(f);
+ xpm_parse_done();
+ return 0;
+ }
+ if ((cpp > 5) || (cpp < 1))
+ {
+ fprintf(stderr,
+ "IMLIB ERROR: XPM files with characters per
pixel > 5 or < 1not supported\n");
+ free(line);
+ fclose(f);
+ xpm_parse_done();
+ return 0;
+ }
+ if (!IMAGE_DIMENSIONS_OK(w, h))
+ {
+ fprintf(stderr,
+ "IMLIB ERROR: Invalid image dimension: %dx%d\n",
+ w, h);
+ free(line);
+ fclose(f);
+ xpm_parse_done();
+ return 0;
+ }
+ im->w = w;
+ im->h = h;
+ if (!im->format)
+ im->format = strdup("xpm");
- cmap = malloc(sizeof(struct _cmap) * ncolors);
+ cmap = malloc(sizeof(struct _cmap) * ncolors);
- if (!cmap)
- {
- free(line);
- fclose(f);
- xpm_parse_done();
- return 0;
- }
+ if (!cmap)
+ {
+ free(line);
+ fclose(f);
+ xpm_parse_done();
+ return 0;
+ }
- per_inc = 100.0 / (((float)w) * h);
+ per_inc = 100.0 / (((float)w) * h);
- if (im->loader || immediate_load || progress)
- {
- im->data =
- (DATA32 *) malloc(sizeof(DATA32) * im->w *
- im->h);
- if (!im->data)
- {
- free(cmap);
- free(line);
- fclose(f);
- xpm_parse_done();
- return 0;
- }
- ptr = im->data;
- pixels = w * h;
- end = ptr + (pixels);
- }
- else
+ if (im->loader || immediate_load || progress)
+ {
+ im->data =
+ (DATA32 *) malloc(sizeof(DATA32) * im->w * im->h);
+ if (!im->data)
{
free(cmap);
free(line);
fclose(f);
xpm_parse_done();
- return 1;
+ return 0;
}
-
- j = 0;
- context++;
+ ptr = im->data;
+ pixels = w * h;
+ end = ptr + (pixels);
+ }
+ else
+ {
+ free(cmap);
+ free(line);
+ fclose(f);
+ xpm_parse_done();
+ return 1;
}
- else if (context == 1)
+
+ j = 0;
+ context++;
+ }
+ else if (context == 1)
+ {
+ /* Color Table */
+ if (j < ncolors)
{
- /* Color Table */
- if (j < ncolors)
+ int slen;
+ int hascolor, iscolor;
+
+ iscolor = 0;
+ hascolor = 0;
+ tok[0] = 0;
+ col[0] = 0;
+ s[0] = 0;
+ len = strlen(line);
+ strncpy(cmap[j].str, line, cpp);
+ cmap[j].str[cpp] = 0;
+ cmap[j].r = -1;
+ cmap[j].transp = 0;
+ for (k = cpp; k < len; k++)
{
- int slen;
- int hascolor, iscolor;
-
- iscolor = 0;
- hascolor = 0;
- tok[0] = 0;
- col[0] = 0;
- s[0] = 0;
- len = strlen(line);
- strncpy(cmap[j].str, line, cpp);
- cmap[j].str[cpp] = 0;
- cmap[j].r = -1;
- cmap[j].transp = 0;
- for (k = cpp; k < len; k++)
+ if (line[k] != ' ')
{
- if (line[k] != ' ')
+ s[0] = 0;
+ sscanf(&line[k], "%255s", s);
+ slen = strlen(s);
+ k += slen;
+ if (!strcmp(s, "c"))
+ iscolor = 1;
+ if ((!strcmp(s, "m")) || (!strcmp(s, "s"))
+ || (!strcmp(s, "g4"))
+ || (!strcmp(s, "g"))
+ || (!strcmp(s, "c")) || (k >= len))
{
- s[0] = 0;
- sscanf(&line[k], "%255s", s);
- slen = strlen(s);
- k += slen;
- if (!strcmp(s, "c"))
- iscolor = 1;
- if ((!strcmp(s, "m")) || (!strcmp(s,
"s"))
- || (!strcmp(s, "g4"))
- || (!strcmp(s, "g"))
- || (!strcmp(s, "c")) || (k >= len))
- {
- if (k >= len)
- {
- if (col[0])
- {
- if (strlen(col) <
- (sizeof(col) - 2))
- strcat(col, " ");
- else
- done = 1;
- }
- if (strlen(col) + strlen(s) <
- (sizeof(col) - 1))
- strcat(col, s);
- }
- if (col[0])
- {
- if (!strcasecmp(col, "none"))
- {
- transp = 1;
- cmap[j].transp = 1;
- }
- else
- {
- if ((((cmap[j].r < 0) ||
- (!strcmp(tok, "c")))
- && (!hascolor)))
- {
- r = 0;
- g = 0;
- b = 0;
- xpm_parse_color(col,
- &r,
- &g,
- &b);
- cmap[j].r = r;
- cmap[j].g = g;
- cmap[j].b = b;
- if (iscolor)
- hascolor = 1;
- }
- }
- }
- strcpy(tok, s);
- col[0] = 0;
- }
- else
+ if (k >= len)
{
if (col[0])
{
@@ -354,41 +309,83 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity,
(sizeof(col) - 1))
strcat(col, s);
}
+ if (col[0])
+ {
+ if (!strcasecmp(col, "none"))
+ {
+ transp = 1;
+ cmap[j].transp = 1;
+ }
+ else
+ {
+ if ((((cmap[j].r < 0) ||
+ (!strcmp(tok, "c")))
+ && (!hascolor)))
+ {
+ r = 0;
+ g = 0;
+ b = 0;
+ xpm_parse_color(col, &r,
+ &g, &b);
+ cmap[j].r = r;
+ cmap[j].g = g;
+ cmap[j].b = b;
+ if (iscolor)
+ hascolor = 1;
+ }
+ }
+ }
+ strcpy(tok, s);
+ col[0] = 0;
+ }
+ else
+ {
+ if (col[0])
+ {
+ if (strlen(col) < (sizeof(col) - 2))
+ strcat(col, " ");
+ else
+ done = 1;
+ }
+ if (strlen(col) + strlen(s) <
+ (sizeof(col) - 1))
+ strcat(col, s);
}
}
}
- j++;
- if (j >= ncolors)
- {
- if (cpp == 1)
- for (i = 0; i < ncolors; i++)
- lookup[(int)cmap[i].str[0] - 32][0] = i;
- if (cpp == 2)
- for (i = 0; i < ncolors; i++)
- lookup[(int)cmap[i].str[0] -
- 32][(int)cmap[i].str[1] - 32] = i;
- context++;
- }
+ }
+ j++;
+ if (j >= ncolors)
+ {
+ if (cpp == 1)
+ for (i = 0; i < ncolors; i++)
+ lookup[(int)cmap[i].str[0] - 32][0] = i;
+ if (cpp == 2)
+ for (i = 0; i < ncolors; i++)
+ lookup[(int)cmap[i].str[0] -
+ 32][(int)cmap[i].str[1] - 32] = i;
+ context++;
+ }
- if (transp >= 0)
- {
- SET_FLAG(im->flags, F_HAS_ALPHA);
- }
- else
- {
- UNSET_FLAG(im->flags, F_HAS_ALPHA);
- }
+ if (transp >= 0)
+ {
+ SET_FLAG(im->flags, F_HAS_ALPHA);
}
else
{
- /* Image Data */
- i = 0;
- if (cpp == 0)
- {
- /* Chars per pixel = 0? well u never know */
- }
- if (cpp == 1)
- {
+ UNSET_FLAG(im->flags, F_HAS_ALPHA);
+ }
+ }
+ else
+ {
+ /* Image Data */
+ i = 0;
+ if (cpp == 0)
+ {
+ /* Chars per pixel = 0? well u never know */
+ }
+ if (cpp == 1)
+ {
#define PIX_RGB(_r, _g, _b) (((_r) << 16) | ((_g) << 8) | (_b))
#define PIX_ARGB(_r, _g, _b) ((0xff << 24) | PIX_RGB(_r, _g, _b))
@@ -396,38 +393,22 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity,
#define CM1_R() (unsigned char)cmap[lookup[col[0] - ' '][0]].r
#define CM1_G() (unsigned char)cmap[lookup[col[0] - ' '][0]].g
#define CM1_B() (unsigned char)cmap[lookup[col[0] - ' '][0]].b
- if (transp)
+ if (transp)
+ {
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
{
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ col[0] = line[i];
+ if (CM1_TRANS())
{
- col[0] = line[i];
- if (CM1_TRANS())
- {
- r = CM1_R();
- g = CM1_G();
- b = CM1_B();
- *ptr++ = PIX_RGB(r, g, b);
- count++;
- }
- else
- {
- r = CM1_R();
- g = CM1_G();
- b = CM1_B();
- *ptr++ = PIX_ARGB(r, g, b);
- count++;
- }
+ r = CM1_R();
+ g = CM1_G();
+ b = CM1_B();
+ *ptr++ = PIX_RGB(r, g, b);
+ count++;
}
- }
- else
- {
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ else
{
- col[0] = line[i];
r = CM1_R();
g = CM1_G();
b = CM1_B();
@@ -436,46 +417,43 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity,
}
}
}
- else if (cpp == 2)
+ else
{
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
+ {
+ col[0] = line[i];
+ r = CM1_R();
+ g = CM1_G();
+ b = CM1_B();
+ *ptr++ = PIX_ARGB(r, g, b);
+ count++;
+ }
+ }
+ }
+ else if (cpp == 2)
+ {
#define CM2_TRANS() cmap[lookup[col[0] - ' '][col[1] - ' ']].transp
#define CM2_R() (unsigned char)cmap[lookup[col[0] - ' '][col[1] - ' ']].r
#define CM2_G() (unsigned char)cmap[lookup[col[0] - ' '][col[1] - ' ']].g
#define CM2_B() (unsigned char)cmap[lookup[col[0] - ' '][col[1] - ' ']].b
- if (transp)
+ if (transp)
+ {
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
{
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ col[0] = line[i++];
+ col[1] = line[i];
+ if (CM2_TRANS())
{
- col[0] = line[i++];
- col[1] = line[i];
- if (CM2_TRANS())
- {
- r = CM2_R();
- g = CM2_G();
- b = CM2_B();
- *ptr++ = PIX_RGB(r, g, b);
- count++;
- }
- else
- {
- r = CM2_R();
- g = CM2_G();
- b = CM2_B();
- *ptr++ = PIX_ARGB(r, g, b);
- count++;
- }
+ r = CM2_R();
+ g = CM2_G();
+ b = CM2_B();
+ *ptr++ = PIX_RGB(r, g, b);
+ count++;
}
- }
- else
- {
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ else
{
- col[0] = line[i++];
- col[1] = line[i];
r = CM2_R();
g = CM2_G();
b = CM2_B();
@@ -486,95 +464,107 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity,
}
else
{
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
+ {
+ col[0] = line[i++];
+ col[1] = line[i];
+ r = CM2_R();
+ g = CM2_G();
+ b = CM2_B();
+ *ptr++ = PIX_ARGB(r, g, b);
+ count++;
+ }
+ }
+ }
+ else
+ {
#define CM0_TRANS(_j) cmap[_j].transp
#define CM0_R(_j) (unsigned char)cmap[_j].r
#define CM0_G(_j) (unsigned char)cmap[_j].g
#define CM0_B(_j) (unsigned char)cmap[_j].b
- if (transp)
+ if (transp)
+ {
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
{
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ for (j = 0; j < cpp; j++, i++)
{
- for (j = 0; j < cpp; j++, i++)
- {
- col[j] = line[i];
- }
- col[j] = 0;
- i--;
- for (j = 0; j < ncolors; j++)
- {
- if (!strcmp(col, cmap[j].str))
- {
- if (CM0_TRANS(j))
- {
- r = CM1_R();
- g = CM1_G();
- b = CM1_B();
- *ptr++ = PIX_RGB(r, g, b);
- count++;
- }
- else
- {
- r = CM0_R(j);
- g = CM0_G(j);
- b = CM0_B(j);
- *ptr++ = PIX_ARGB(r, g,
b);
- count++;
- }
- j = ncolors;
- }
- }
+ col[j] = line[i];
}
- }
- else
- {
- for (i = 0;
- ((i < 65536) && (ptr < end) &&
(line[i]));
- i++)
+ col[j] = 0;
+ i--;
+ for (j = 0; j < ncolors; j++)
{
- for (j = 0; j < cpp; j++, i++)
+ if (!strcmp(col, cmap[j].str))
{
- col[j] = line[i];
- }
- col[j] = 0;
- i--;
- for (j = 0; j < ncolors; j++)
- {
- if (!strcmp(col, cmap[j].str))
+ if (CM0_TRANS(j))
+ {
+ r = CM1_R();
+ g = CM1_G();
+ b = CM1_B();
+ *ptr++ = PIX_RGB(r, g, b);
+ count++;
+ }
+ else
{
r = CM0_R(j);
g = CM0_G(j);
b = CM0_B(j);
*ptr++ = PIX_ARGB(r, g, b);
count++;
- j = ncolors;
}
+ j = ncolors;
}
}
}
}
- per += per_inc;
- if (progress && (((int)per) != last_per)
- && (((int)per) % progress_granularity == 0))
+ else
{
- last_per = (int)per;
- if (!(progress(im, (int)per, 0, last_y, w, i)))
+ for (i = 0;
+ ((i < 65536) && (ptr < end) && (line[i]));
i++)
{
- fclose(f);
- free(cmap);
- free(line);
- xpm_parse_done();
- return 2;
+ for (j = 0; j < cpp; j++, i++)
+ {
+ col[j] = line[i];
+ }
+ col[j] = 0;
+ i--;
+ for (j = 0; j < ncolors; j++)
+ {
+ if (!strcmp(col, cmap[j].str))
+ {
+ r = CM0_R(j);
+ g = CM0_G(j);
+ b = CM0_B(j);
+ *ptr++ = PIX_ARGB(r, g, b);
+ count++;
+ j = ncolors;
+ }
+ }
}
- last_y = i;
}
}
+ per += per_inc;
+ if (progress && (((int)per) != last_per)
+ && (((int)per) % progress_granularity == 0))
+ {
+ last_per = (int)per;
+ if (!(progress(im, (int)per, 0, last_y, w, i)))
+ {
+ fclose(f);
+ free(cmap);
+ free(line);
+ xpm_parse_done();
+ return 2;
+ }
+ last_y = i;
+ }
}
}
/* Scan in line from XPM file */
- if ((!comment) && (quote) && (c != '"'))
+ if ((quote) && (c != '"'))
{
if (c < 32)
c = 32;
--
------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent
caught up. So what steps can you take to put your SQL databases under
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
