diff options
Diffstat (limited to 'utils/newparser')
-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 68dfd78949..e71a867130 100644 --- a/utils/newparser/skin_render.c +++ b/utils/newparser/skin_render.c | |||
@@ -30,12 +30,14 @@ | |||
30 | #include "symbols.h" | 30 | #include "symbols.h" |
31 | #include "skin_scan.h" | 31 | #include "skin_scan.h" |
32 | 32 | ||
33 | void skin_render_alternator(struct skin_element* alternator); | 33 | void skin_render_alternator(struct skin_element* alternator, int line_number); |
34 | 34 | ||
35 | /* Draw a LINE element onto the display */ | 35 | /* Draw a LINE element onto the display */ |
36 | void skin_render_line(struct skin_element* line) | 36 | void skin_render_line(struct skin_element* line, int line_number) |
37 | { | 37 | { |
38 | int i=0, value; | 38 | int i=0, value; |
39 | if (line->children_count == 0) | ||
40 | return; /* empty line, do nothing */ | ||
39 | struct skin_element *child = line->children[0]; | 41 | struct skin_element *child = line->children[0]; |
40 | while (child) | 42 | while (child) |
41 | { | 43 | { |
@@ -46,9 +48,9 @@ void skin_render_line(struct skin_element* line) | |||
46 | if (value >= child->children_count) | 48 | if (value >= child->children_count) |
47 | value = child->children_count-1; | 49 | value = child->children_count-1; |
48 | if (child->children[value]->type == SUBLINES) | 50 | if (child->children[value]->type == SUBLINES) |
49 | skin_render_alternator(child->children[value]); | 51 | skin_render_alternator(child->children[value], line_number); |
50 | else if (child->children[value]->type == LINE) | 52 | else if (child->children[value]->type == LINE) |
51 | skin_render_line(child->children[value]); | 53 | skin_render_line(child->children[value], line_number); |
52 | break; | 54 | break; |
53 | case TAG: | 55 | case TAG: |
54 | printf("%%%s", child->tag->name); | 56 | printf("%%%s", child->tag->name); |
@@ -62,24 +64,26 @@ void skin_render_line(struct skin_element* line) | |||
62 | } | 64 | } |
63 | child = child->next; | 65 | child = child->next; |
64 | } | 66 | } |
65 | printf("\n"); /* might be incorrect */ | ||
66 | } | 67 | } |
67 | 68 | ||
68 | void skin_render_alternator(struct skin_element* alternator) | 69 | void skin_render_alternator(struct skin_element* alternator, int line_number) |
69 | { | 70 | { |
70 | /*TODO Choose which subline to draw */ | 71 | /*TODO Choose which subline to draw */ |
71 | skin_render_line(alternator->children[0]); | 72 | skin_render_line(alternator->children[0], line_number); |
72 | } | 73 | } |
73 | 74 | ||
74 | void skin_render_viewport(struct skin_element* viewport) | 75 | void skin_render_viewport(struct skin_element* viewport) |
75 | { | 76 | { |
76 | struct skin_element *line = viewport; | 77 | struct skin_element *line = viewport; |
78 | int line_number = 0; | ||
77 | while (line) | 79 | while (line) |
78 | { | 80 | { |
81 | printf("\n[%d]", line_number); /* might be incorrect */ | ||
79 | if (line->type == SUBLINES) | 82 | if (line->type == SUBLINES) |
80 | skin_render_alternator(line); | 83 | skin_render_alternator(line, line_number); |
81 | else if (line->type == LINE) | 84 | else if (line->type == LINE) |
82 | skin_render_line(line); | 85 | skin_render_line(line, line_number); |
86 | line_number++; | ||
83 | line = line->next; | 87 | line = line->next; |
84 | } | 88 | } |
85 | } | 89 | } |
@@ -89,7 +93,7 @@ void skin_render(struct skin_element* root) | |||
89 | struct skin_element* viewport = root; | 93 | struct skin_element* viewport = root; |
90 | while (viewport) | 94 | while (viewport) |
91 | { | 95 | { |
92 | skin_render_viewport(viewport->children[viewport->children_count-1]); | 96 | skin_render_viewport(viewport->children[0]); |
93 | viewport = viewport->next; | 97 | viewport = viewport->next; |
94 | } | 98 | } |
95 | } | 99 | } |