Ignore:
Timestamp:
Feb 6, 2011, 12:52:58 PM (9 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Initial general node and table width computation
Location:
gaycko/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • gaycko/trunk

    • Property svn:ignore set to
      XCode_Project/XCode_Project.xcodeproj/jylam.mode1v3
  • gaycko/trunk/src/render/renderer.c

    r4749 r4750  
    1313
    1414void gaycko_render(gDOM *dom, gWindow *window) {
     15        dom->root->properties->width = window->width;
     16   
     17    int width = gaycko_get_width(dom->root, NULL);
     18    printf("Got %u\n", width);
     19}
    1520
     21
     22unsigned int gaycko_get_width(gNode *node, gNode *parent) {
     23        unsigned int c = 0;
     24    int w = 0;
     25   
     26   
     27    for(c = 0; c < node->children_count; c++) {
     28        switch(node->children[c]->type) {
     29         
     30            case ELEM_TABLE:
     31                w = gaycko_get_table_width(node->children[c], parent);
     32                break;
     33            case ELEM_TEXT:
     34                w +=  gaycko_get_text_width(node->children[c], parent);
     35                break;
     36            default:
     37                w+=gaycko_get_width(node->children[c], node);
     38                break;
     39        }
     40    }
     41   
     42     printf("Width of '%s' : %u\n", node->name, w);
     43    node->properties->width = w;
     44    return w;
    1645}
     46
     47
     48unsigned int gaycko_get_table_width(gNode *node, gNode *parent) {
     49    unsigned int w = node->properties->width;
     50    unsigned int c = 0;
     51   
     52    printf("Got TABLE, %u children\n", node->children_count);
     53   
     54     for(c = 0; c < node->children_count; c++) {
     55         unsigned int node_width = 0;
     56         
     57         printf("in TABLE children %s\n", node->children[c]->name);
     58         switch(node->children[c]->type) {
     59                 case ELEM_TR:
     60                 node_width = gaycko_get_width(node->children[c], node);
     61                 break;
     62                 
     63             default:
     64                 w+=0;
     65                 break;
     66         }
     67         if(node_width > w) w = node_width;
     68     }
     69   
     70    printf("Table : return %d\n", w);
     71    return w;
     72}
     73
     74
     75unsigned int gaycko_get_text_width(gNode *node, gNode *parent) {
     76           
     77    if(node->text) {
     78        node->properties->width = strlen(node->text);
     79        return node->properties->width;
     80    } else {
     81        return 0;   
     82    }
     83}
  • gaycko/trunk/src/render/renderer.h

    r4749 r4750  
    2424
    2525void gaycko_render(gDOM *dom, gWindow *window);
     26unsigned int gaycko_get_width      (gNode *node, gNode *parent);
     27unsigned int gaycko_get_table_width(gNode *node, gNode *parent);
     28unsigned int gaycko_get_text_width (gNode *node, gNode *parent);
    2629
    2730#endif /* RENDERER_H */
Note: See TracChangeset for help on using the changeset viewer.