Changeset 4764


Ignore:
Timestamp:
Feb 6, 2011, 8:22:33 PM (9 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Fixed indentation (nia nia nia)
Location:
gaycko/trunk/src/render
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • gaycko/trunk/src/render/position.c

    r4763 r4764  
    1515void gaycko_get_position(gNode *node, gNode *parent) {
    1616        unsigned int c = 0;
    17     unsigned int w = 0;
    18     unsigned int h = 0;
    19     unsigned int x = node->properties->x;
    20     unsigned int y = node->properties->y;
    21    
    22     for(c = 0; c < node->children_count; c++) {
    23         node->children[c]->properties->x = x;
    24         node->children[c]->properties->y = y;
    25         switch(node->children[c]->type) {
    26             case ELEM_TABLE:
    27                 gaycko_get_position(node->children[c], parent);
    28                 x+=node->children[c]->properties->width;
    29                
    30                 gaycko_fix_table(node->children[c]);
    31                 if(node->children[c]->properties->width>w) {
    32                     w = (node->children[c]->properties->width);
    33                 }
    34                 break;
    35                
    36             case ELEM_TR:
    37                 gaycko_get_position(node->children[c], parent);
    38                 node->children[c]->properties->height+=1;
    39                 x = 0;   
    40                 w+=node->children[c]->properties->width+1;
    41                 break;
    42                
    43             case ELEM_TD:
    44                 gaycko_get_position(node->children[c], parent);
    45                 x+=node->children[c]->properties->width;
    46                 if(node->children[c]->properties->width>w) {
    47                     w = (node->children[c]->properties->width);
    48                 }
    49                 break;
    50                
    51             case ELEM_BR:
    52                 node->children[c]->properties->height+=1;
    53                 x = 0;   
    54                 w+=node->children[c]->properties->width+1;
    55                 break;
    56                
    57             case ELEM_HR:
    58                 node->children[c]->properties->height+=1;
    59                 x = 0;   
    60                 w+=node->children[c]->properties->width+1;
    61                 break;
    62                
    63             case ELEM_H1:
    64             case ELEM_H2:
    65             case ELEM_H3:
    66                 node->children[c]->properties->height+=1;
    67                 x = 0;   
    68                 w+=node->children[c]->properties->width+1;
    69                 break;
    70                
    71                
    72             case ELEM_TEXT:
    73                 if(parent &&
    74                    (parent->type!=ELEM_TR && parent->type!=ELEM_TABLE)) {
    75                         if(node->children[c]->text) {
    76                         node->children[c]->properties->width = strlen(node->children[c]->text);
    77                         } else {
    78                         node->children[c]->properties->width = 0;
    79                         }
    80                 } else {
    81                     node->children[c]->properties->width  = 0;
    82                     node->children[c]->properties->height = 0;
    83                 }
    84                 x+=node->children[c]->properties->width;
    85                 if(node->children[c]->properties->width>w) {
    86                     w = (node->children[c]->properties->width);
    87                 }
    88                 break;
    89                
    90                
    91             default:
    92                 gaycko_get_position(node->children[c], node);
    93                 x+=node->children[c]->properties->width;
    94                 if(node->children[c]->properties->width>w) {
    95                     w = (node->children[c]->properties->width);
    96                 }
    97                
    98                 break;
    99         }
     17        unsigned int w = 0;
     18        unsigned int h = 0;
     19        unsigned int x = node->properties->x;
     20        unsigned int y = node->properties->y;
    10021
    101         y+=node->children[c]->properties->height;
    102         h+=node->children[c]->properties->height;
    103     }
    104    
    105     node->properties->width  = w;
    106     node->properties->height = h;
     22        for(c = 0; c < node->children_count; c++) {
     23                node->children[c]->properties->x = x;
     24                node->children[c]->properties->y = y;
     25                switch(node->children[c]->type) {
     26                        case ELEM_TABLE:
     27                                gaycko_get_position(node->children[c], parent);
     28                                x+=node->children[c]->properties->width;
     29
     30                                gaycko_fix_table(node->children[c]);
     31                                if(node->children[c]->properties->width>w) {
     32                                        w = (node->children[c]->properties->width);
     33                                }
     34                                break;
     35
     36                        case ELEM_TR:
     37                                gaycko_get_position(node->children[c], parent);
     38                                node->children[c]->properties->height+=1;
     39                                x = 0;   
     40                                w+=node->children[c]->properties->width+1;
     41                                break;
     42
     43                        case ELEM_TD:
     44                                gaycko_get_position(node->children[c], parent);
     45                                x+=node->children[c]->properties->width;
     46                                if(node->children[c]->properties->width>w) {
     47                                        w = (node->children[c]->properties->width);
     48                                }
     49                                break;
     50
     51                        case ELEM_BR:
     52                                node->children[c]->properties->height+=1;
     53                                x = 0;   
     54                                w+=node->children[c]->properties->width+1;
     55                                break;
     56
     57                        case ELEM_HR:
     58                                node->children[c]->properties->height+=1;
     59                                x = 0;   
     60                                w+=node->children[c]->properties->width+1;
     61                                break;
     62
     63                        case ELEM_H1:
     64                        case ELEM_H2:
     65                        case ELEM_H3:
     66                                node->children[c]->properties->height+=1;
     67                                x = 0;   
     68                                w+=node->children[c]->properties->width+1;
     69                                break;
     70
     71
     72                        case ELEM_TEXT:
     73                                if(parent &&
     74                                                (parent->type!=ELEM_TR && parent->type!=ELEM_TABLE)) {
     75                                        if(node->children[c]->text) {
     76                                                node->children[c]->properties->width = strlen(node->children[c]->text);
     77                                        } else {
     78                                                node->children[c]->properties->width = 0;
     79                                        }
     80                                } else {
     81                                        node->children[c]->properties->width  = 0;
     82                                        node->children[c]->properties->height = 0;
     83                                }
     84                                x+=node->children[c]->properties->width;
     85                                if(node->children[c]->properties->width>w) {
     86                                        w = (node->children[c]->properties->width);
     87                                }
     88                                break;
     89
     90
     91                        default:
     92                                gaycko_get_position(node->children[c], node);
     93                                x+=node->children[c]->properties->width;
     94                                if(node->children[c]->properties->width>w) {
     95                                        w = (node->children[c]->properties->width);
     96                                }
     97
     98                                break;
     99                }
     100
     101                y+=node->children[c]->properties->height;
     102                h+=node->children[c]->properties->height;
     103        }
     104
     105        node->properties->width  = w;
     106        node->properties->height = h;
    107107}
    108108
     
    110110void gaycko_add_node_x(gNode *node, unsigned int add) {
    111111
    112     unsigned int e = 0;
    113     for(e = 0 ; e < node->children_count; e++) {
    114         gaycko_add_node_x(node->children[e], add);     
    115     }
    116     node->properties->x += add;
    117    
     112        unsigned int e = 0;
     113        for(e = 0 ; e < node->children_count; e++) {
     114                gaycko_add_node_x(node->children[e], add);     
     115        }
     116        node->properties->x += add;
     117
    118118}
    119119
  • gaycko/trunk/src/render/renderer.c

    r4760 r4764  
    1414void gaycko_render(gWindow *window) {
    1515        window->dom->root->properties->width = window->width;
    16     gaycko_get_position(window->dom->root, NULL);
    17     caca_set_canvas_size(window->cv,
    18                          window->dom->root->properties->width,
    19                          window->dom->root->properties->height);
    20     gaycko_print_dom(window);
     16        gaycko_get_position(window->dom->root, NULL);
     17        caca_set_canvas_size(window->cv,
     18                        window->dom->root->properties->width,
     19                        window->dom->root->properties->height);
     20        gaycko_print_dom(window);
    2121}
    2222
     
    2828void gaycko_print_node(gNode *node, gWindow *window) {
    2929        unsigned int c = 0;
    30    
    31     switch(node->type) {
     30
     31        switch(node->type) {
    3232                case ELEM_TEXT:
    33                 caca_set_color_argb(window->cv, 0, 0xFFFF);
    34                 caca_put_str(window->cv, node->properties->x, node->properties->y, node->text);
    35             break;
    36         case ELEM_HR:
     33                        caca_set_color_argb(window->cv, 0, 0xFFFF);
     34                        caca_put_str(window->cv, node->properties->x, node->properties->y, node->text);
     35                        break;
     36                case ELEM_HR:
    3737                        caca_draw_line(window->cv,
    38                            node->properties->x, node->properties->y,
    39                            node->properties->x+node->parent->properties->width, node->properties->y,
    40                            '-');
    41             printf("Line parent is '%s', width %d\n", node->parent->name, node->parent->properties->width);
    42                 break;
    43         default:
    44            
    45             break;
     38                                        node->properties->x, node->properties->y,
     39                                        node->properties->x+node->parent->properties->width, node->properties->y,
     40                                        '-');
     41                        printf("Line parent is '%s', width %d\n", node->parent->name, node->parent->properties->width);
     42                        break;
     43                default:
     44
     45                        break;
    4646        }
    47        
    48     for(c = 0; c < node->children_count; c++) {
    49         gaycko_print_node(node->children[c], window);
    50     }
     47
     48        for(c = 0; c < node->children_count; c++) {
     49                gaycko_print_node(node->children[c], window);
     50        }
    5151}
  • gaycko/trunk/src/render/table.c

    r4762 r4764  
    1313#include "renderer.h"
    1414void gaycko_fix_table(gNode *table) {
    15         unsigned int tr = 0;
    16     unsigned int e  = 0;
    17     gNode *last_tr = NULL;
    18     table->specific.table->tr_count = 0;
    19    
    20     /* Count TD by TR, and TR by TABLE */
    21     for(tr = 0 ; tr < table->children_count; tr++) {
    22         if(table->children[tr]->type == ELEM_TR) {
    23             gaycko_fix_tr(table->children[tr]);
    24             table->specific.table->tr_count++;
    25             last_tr = table->children[tr];
    26         }
    27     }
    28    
    29     /* Scan TD's and set each correspondants to the max width */
    30     unsigned int td = 0;
    31    
    32     for(td = 0; td < last_tr->specific.tr->td_count; td++) {
    33         unsigned int biggest_td = 0;
    34        
    35         /* Find widest at a given X offset */
    36         for(e = 0 ; e < table->children_count; e++) {
    37             if(table->children[e]->type == ELEM_TR) {
    38                 unsigned int td_width = gaycko_get_trtd_width(table->children[e], td);
    39                 if(biggest_td < td_width) {
    40                     biggest_td = td_width;
    41                 }
    42             }
    43         }
    44         /* Set the others's width to the widest one */
    45         for(e = 0 ; e < table->children_count; e++) {
    46             if(table->children[e]->type == ELEM_TR) {
    47                 gaycko_set_trtd_width(table->children[e], td, biggest_td);
    48             }
    49         }
    50     }
    51    
    52     table->properties->width = gaycko_get_tr_width(last_tr);
    53     printf("Table %d wide\n", table->properties->width);
    54    
     15        unsigned int tr = 0;
     16        unsigned int e  = 0;
     17        gNode *last_tr = NULL;
     18        table->specific.table->tr_count = 0;
     19
     20        /* Count TD by TR, and TR by TABLE */
     21        for(tr = 0 ; tr < table->children_count; tr++) {
     22                if(table->children[tr]->type == ELEM_TR) {
     23                        gaycko_fix_tr(table->children[tr]);
     24                        table->specific.table->tr_count++;
     25                        last_tr = table->children[tr];
     26                }
     27        }
     28
     29        /* Scan TD's and set each correspondants to the max width */
     30        unsigned int td = 0;
     31
     32        for(td = 0; td < last_tr->specific.tr->td_count; td++) {
     33                unsigned int biggest_td = 0;
     34
     35                /* Find widest at a given X offset */
     36                for(e = 0 ; e < table->children_count; e++) {
     37                        if(table->children[e]->type == ELEM_TR) {
     38                                unsigned int td_width = gaycko_get_trtd_width(table->children[e], td);
     39                                if(biggest_td < td_width) {
     40                                        biggest_td = td_width;
     41                                }
     42                        }
     43                }
     44                /* Set the others's width to the widest one */
     45                for(e = 0 ; e < table->children_count; e++) {
     46                        if(table->children[e]->type == ELEM_TR) {
     47                                gaycko_set_trtd_width(table->children[e], td, biggest_td);
     48                        }
     49                }
     50        }
     51
     52        table->properties->width = gaycko_get_tr_width(last_tr);
     53        printf("Table %d wide\n", table->properties->width);
     54
    5555}
    5656
     
    5858
    5959unsigned int gaycko_get_tr_width(gNode *tr) {
    60         unsigned int w = 0, td = 0;
    61    
    62     for(td = 0 ; td < tr->children_count; td++) {
    63         if(tr->children[td]->type == ELEM_TD) {
    64             unsigned int tw = gaycko_get_node_width(tr->children[td]);
    65             w +=  tw;
    66             printf("TD width %d\n", tw);
    67         }
    68     }
    69     printf("So TR width %d\n", w);
    70     return w;
     60        unsigned int w = 0, td = 0;
     61
     62        for(td = 0 ; td < tr->children_count; td++) {
     63                if(tr->children[td]->type == ELEM_TD) {
     64                        unsigned int tw = gaycko_get_node_width(tr->children[td]);
     65                        w +=  tw;
     66                        printf("TD width %d\n", tw);
     67                }
     68        }
     69        printf("So TR width %d\n", w);
     70        return w;
    7171}
    7272
    7373unsigned int gaycko_get_node_width(gNode *td) {
    74     unsigned int e = 0;
     74        unsigned int e = 0;
    7575        unsigned int w = 0;
    76     for(e = 0 ; e < td->children_count; e++) {
    77         w+=td->properties->width;
    78     }
    79     return w;
     76        for(e = 0 ; e < td->children_count; e++) {
     77                w+=td->properties->width;
     78        }
     79        return w;
    8080}
    8181
    8282
    8383void gaycko_fix_tr(gNode *tr) {
    84         unsigned int td = 0;
    85     tr->specific.tr->td_count = 0;
    86    
    87     for(td = 0 ; td < tr->children_count; td++) {
    88         if(tr->children[td]->type == ELEM_TD) {
    89             tr->specific.tr->td_count++;
    90         }
    91     }
     84        unsigned int td = 0;
     85        tr->specific.tr->td_count = 0;
     86
     87        for(td = 0 ; td < tr->children_count; td++) {
     88                if(tr->children[td]->type == ELEM_TD) {
     89                        tr->specific.tr->td_count++;
     90                }
     91        }
    9292}   
    9393
    9494unsigned int gaycko_get_trtd_width(gNode *tr, unsigned int td_index) {
    95     unsigned int e = 0;
    96     unsigned int td = 0;
    97     for(e = 0 ; e < tr->children_count; e++) {
    98         if(tr->children[e]->type == ELEM_TD) {
    99             if(td == td_index) return tr->children[e]->properties->width;
    100             td++;
    101         }
    102     }
    103     return 0;
     95        unsigned int e = 0;
     96        unsigned int td = 0;
     97        for(e = 0 ; e < tr->children_count; e++) {
     98                if(tr->children[e]->type == ELEM_TD) {
     99                        if(td == td_index) return tr->children[e]->properties->width;
     100                        td++;
     101                }
     102        }
     103        return 0;
    104104}
    105105
    106106void gaycko_set_trtd_width(gNode *tr, unsigned td_index, unsigned int width) {
    107     unsigned int e = 0;
    108     unsigned int td = 0;
    109     unsigned int add_width = 0;
    110    
    111     for(e = 0 ; e < tr->children_count; e++) {
    112         if(tr->children[e]->type == ELEM_TD) {
    113             if(td == td_index) {
    114                 add_width = width - tr->children[e]->properties->width;
    115             }
    116             td++;
    117         }
    118     }
     107        unsigned int e = 0;
     108        unsigned int td = 0;
     109        unsigned int add_width = 0;
     110
     111        for(e = 0 ; e < tr->children_count; e++) {
     112                if(tr->children[e]->type == ELEM_TD) {
     113                        if(td == td_index) {
     114                                add_width = width - tr->children[e]->properties->width;
     115                        }
     116                        td++;
     117                }
     118        }
    119119        td = 0;
    120     for(e = 0 ; e < tr->children_count; e++) {
    121         if(tr->children[e]->type == ELEM_TD) {
    122             if(td == td_index) {
    123                
    124             } else if(td > td_index){
    125                 tr->children[e]->properties->width = width;
    126                 gaycko_add_node_x(tr->children[e], add_width);
    127             }
    128             td++;
    129         }
    130     }
    131    
    132    
     120        for(e = 0 ; e < tr->children_count; e++) {
     121                if(tr->children[e]->type == ELEM_TD) {
     122                        if(td == td_index) {
     123
     124                        } else if(td > td_index){
     125                                tr->children[e]->properties->width = width;
     126                                gaycko_add_node_x(tr->children[e], add_width);
     127                        }
     128                        td++;
     129                }
     130        }
     131
     132
    133133}
    134134
Note: See TracChangeset for help on using the changeset viewer.