Changeset 4760


Ignore:
Timestamp:
Feb 6, 2011, 6:19:30 PM (10 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • TD's are now aligned to the widest one

-- This line, and those below, will be ignored--

M src/render/position.c
M src/render/renderer.c
M src/render/renderer.h

Location:
gaycko/trunk/src/render
Files:
3 edited

Legend:

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

    r4759 r4760  
    103103    }
    104104   
    105 
    106105    node->properties->width  = w;
    107106    node->properties->height = h;
    108107}
    109108
     109
    110110void gaycko_fix_table(gNode *table) {
    111111        unsigned int tr = 0;
     112    unsigned int e  = 0;
     113    gNode *last_tr = NULL;
    112114    table->specific.table->tr_count = 0;
    113115   
     116    /* Count TD by TR, and TR by TABLE */
    114117    for(tr = 0 ; tr < table->children_count; tr++) {
    115118        if(table->children[tr]->type == ELEM_TR) {
    116119            gaycko_fix_tr(table->children[tr]);
    117120            table->specific.table->tr_count++;
    118         }
    119     }
    120    
    121 }
     121            last_tr = table->children[tr];
     122        }
     123    }
     124   
     125   
     126    /* Scan TD's and set each correspondants to the max width */
     127    unsigned int td = 0;
     128    for(td = 0; td < last_tr->specific.tr->td_count; td++) {
     129        unsigned int biggest_td = 0;
     130       
     131        for(e = 0 ; e < table->children_count; e++) {
     132            if(table->children[e]->type == ELEM_TR) {
     133                unsigned int td_width = gaycko_get_td_width(table->children[e], td);
     134                if(biggest_td < td_width) {
     135                    biggest_td = td_width;
     136                }
     137            }
     138        }
     139        for(e = 0 ; e < table->children_count; e++) {
     140            if(table->children[e]->type == ELEM_TR) {
     141                gaycko_set_td_width(table->children[e], td, biggest_td);
     142            }
     143        }
     144       
     145    }
     146   
     147}
     148
    122149void gaycko_fix_tr(gNode *tr) {
    123150        unsigned int td = 0;
     
    131158}   
    132159   
    133    
    134    
    135    
    136    
     160unsigned int gaycko_get_td_width(gNode *tr, unsigned int td_index) {
     161    unsigned int e = 0;
     162    unsigned int td = 0;
     163    for(e = 0 ; e < tr->children_count; e++) {
     164        if(tr->children[e]->type == ELEM_TD) {
     165            if(td == td_index) return tr->children[e]->properties->width;
     166            td++;
     167        }
     168    }
     169    return 0;
     170}
     171   
     172void gaycko_set_td_width(gNode *tr, unsigned td_index, unsigned int width) {
     173    unsigned int e = 0;
     174    unsigned int td = 0;
     175    unsigned int add_width = 0;
     176   
     177    for(e = 0 ; e < tr->children_count; e++) {
     178        if(tr->children[e]->type == ELEM_TD) {
     179            if(td == td_index) {
     180                add_width = width - tr->children[e]->properties->width;
     181            } else {
     182                gaycko_add_node_x(tr->children[e], add_width);
     183            }
     184            td++;
     185        }
     186    }
     187}
     188
     189
     190void gaycko_add_node_x(gNode *node, unsigned int add) {
     191
     192    unsigned int e = 0;
     193    for(e = 0 ; e < node->children_count; e++) {
     194                node->children[e]->properties->x +=add;
     195    }
     196}
     197
     198
     199
     200
     201
     202
  • gaycko/trunk/src/render/renderer.c

    r4758 r4760  
    2727
    2828void gaycko_print_node(gNode *node, gWindow *window) {
    29         int c = 0;
     29        unsigned int c = 0;
    3030   
    3131    switch(node->type) {
  • gaycko/trunk/src/render/renderer.h

    r4759 r4760  
    2828void gaycko_fix_table(gNode *table);
    2929void gaycko_fix_tr(gNode *tr);
     30unsigned int gaycko_get_td_width(gNode *tr, unsigned int td_index);
     31void gaycko_set_td_width(gNode *tr, unsigned td_index, unsigned int width);
     32void gaycko_add_node_x(gNode *node, unsigned int add);
    3033
    3134void gaycko_print_dom(gWindow *window);
Note: See TracChangeset for help on using the changeset viewer.