Mercurial > MadButterfly
diff src/shape_path.c @ 7:569f3168ba53
Clear background & tranform relative pos into absolute ones
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Sat, 26 Jul 2008 02:53:08 +0800 |
parents | 772511b8b9be |
children | 94b4b5bd8810 |
line wrap: on
line diff
--- a/src/shape_path.c Sat Jul 26 02:41:00 2008 +0800 +++ b/src/shape_path.c Sat Jul 26 02:53:08 2008 +0800 @@ -178,6 +178,7 @@ static int sh_path_cmd_arg_fill(char *data, sh_path_t *path) { char *p, *old; char *cmds; + char cmd; co_aix *args; cmds = path->user_data; @@ -186,9 +187,9 @@ while(*p) { SKIP_SPACE(p); - /* TODO: transform all relative to absolute, */ - *cmds++ = *p; - switch(*p++) { + /* Transform all relative to absolute, */ + *cmds++ = toupper(*p); + switch((cmd = *p++)) { case 'c': case 'C': while(*p) { @@ -198,41 +199,41 @@ SKIP_NUM(p); if(p == old) break; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); } break; case 's': @@ -246,28 +247,28 @@ SKIP_NUM(p); if(p == old) break; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); } break; case 'm': @@ -283,14 +284,14 @@ SKIP_NUM(p); if(p == old) break; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); SKIP_SPACE(p); old = p; SKIP_NUM(p); if(p == old) return ERR; - *args++ = atof(old); + *args++ = islower(cmd)? *(args - 2) + atof(old): atof(old); } break; case 'h':