diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-06-13 02:27:13 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-06-13 02:27:13 +0000 |
| commit | 3f06273e7cb2d84e152d2d2f26d68d489a024e7e (patch) | |
| tree | eaa2c99ba776879cb8a456856aafdfe6e3571840 | |
| parent | 4752798b58dd89d794a5c3824f2e45d1958bd7e9 (diff) | |
| download | rockbox-3f06273e7cb2d84e152d2d2f26d68d489a024e7e.zip rockbox-3f06273e7cb2d84e152d2d2f26d68d489a024e7e.tar.gz rockbox-3f06273e7cb2d84e152d2d2f26d68d489a024e7e.tar.bz2 rockbox-3f06273e7cb2d84e152d2d2f26d68d489a024e7e.tar.xz | |
count line numbers correctly, handle the VIEWPORT change so it only ever has one child
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26824 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | utils/newparser/skin_render.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/utils/newparser/skin_render.c b/utils/newparser/skin_render.c index 68dfd78..e71a867 100644 --- a/utils/newparser/skin_render.c +++ b/utils/newparser/skin_render.c @@ -30,12 +30,14 @@ #include "symbols.h" #include "skin_scan.h" -void skin_render_alternator(struct skin_element* alternator); +void skin_render_alternator(struct skin_element* alternator, int line_number); /* Draw a LINE element onto the display */ -void skin_render_line(struct skin_element* line) +void skin_render_line(struct skin_element* line, int line_number) { int i=0, value; + if (line->children_count == 0) + return; /* empty line, do nothing */ struct skin_element *child = line->children[0]; while (child) { @@ -46,9 +48,9 @@ void skin_render_line(struct skin_element* line) if (value >= child->children_count) value = child->children_count-1; if (child->children[value]->type == SUBLINES) - skin_render_alternator(child->children[value]); + skin_render_alternator(child->children[value], line_number); else if (child->children[value]->type == LINE) - skin_render_line(child->children[value]); + skin_render_line(child->children[value], line_number); break; case TAG: printf("%%%s", child->tag->name); @@ -62,24 +64,26 @@ void skin_render_line(struct skin_element* line) } child = child->next; } - printf("\n"); /* might be incorrect */ } -void skin_render_alternator(struct skin_element* alternator) +void skin_render_alternator(struct skin_element* alternator, int line_number) { /*TODO Choose which subline to draw */ - skin_render_line(alternator->children[0]); + skin_render_line(alternator->children[0], line_number); } void skin_render_viewport(struct skin_element* viewport) { struct skin_element *line = viewport; + int line_number = 0; while (line) { + printf("\n[%d]", line_number); /* might be incorrect */ if (line->type == SUBLINES) - skin_render_alternator(line); + skin_render_alternator(line, line_number); else if (line->type == LINE) - skin_render_line(line); + skin_render_line(line, line_number); + line_number++; line = line->next; } } @@ -89,7 +93,7 @@ void skin_render(struct skin_element* root) struct skin_element* viewport = root; while (viewport) { - skin_render_viewport(viewport->children[viewport->children_count-1]); + skin_render_viewport(viewport->children[0]); viewport = viewport->next; } } |