Changeset 5925


Ignore:
Timestamp:
May 23, 2008, 8:36:19 PM (14 years ago)
Author:
livings124
Message:

even more efficiency when drawing custom row colors

Location:
trunk/macosx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/TorrentTableView.m

    r5923 r5925  
    703703{
    704704    NSColor * altColor = [[NSColor controlAlternatingRowBackgroundColors] objectAtIndex: 1];
     705    [altColor set];
    705706   
    706707    NSRect visibleRect = clipRect;
    707708    NSRange rows = [self rowsInRect: visibleRect];
    708709    BOOL start = YES;
     710    int i;
    709711   
    710712    if (rows.length > 0)
    711713    {
    712         int i;
    713        
    714714        //determine what the first row color should be
    715715        if ([[self itemAtRow: rows.location] isKindOfClass: [Torrent class]])
     
    737737           
    738738            if (!start)
    739             {
    740                 [altColor set];
    741739                NSRectFill([self rectOfRow: i]);
    742             }
    743740           
    744741            start = !start;
     
    751748   
    752749    //remaining visible rows continue alternating
    753     NSRect rowRect = visibleRect;
    754     rowRect.size.height = [self rowHeight] + [self intercellSpacing].height;
    755    
    756     while (rowRect.origin.y < NSMaxY(visibleRect))
     750    float height = [self rowHeight] + [self intercellSpacing].height;
     751    int numberOfRects = ceil(visibleRect.size.height / height);
     752    visibleRect.size.height = height;
     753   
     754    for (i=0; i<numberOfRects; i++)
    757755    {
    758756        if (!start)
    759         {
    760             [altColor set];
    761             NSRectFill(rowRect);
    762         }
     757            NSRectFill(visibleRect);
    763758       
    764759        start = !start;
    765         rowRect.origin.y += rowRect.size.height;
     760        visibleRect.origin.y += height;
    766761    }
    767762   
  • trunk/macosx/TrackerTableView.m

    r5923 r5925  
    3636{
    3737    NSColor * altColor = [[NSColor controlAlternatingRowBackgroundColors] objectAtIndex: 1];
     38    [altColor set];
    3839   
    3940    NSRect visibleRect = clipRect;
    4041    NSRange rows = [self rowsInRect: visibleRect];
    4142    BOOL start = YES;
     43    int i;
    4244   
    4345    if (rows.length > 0)
    4446    {
    45         int i;
    46        
    4747        //determine what the first row color should be
    4848        if (![[fTrackers objectAtIndex: rows.location] isKindOfClass: [NSNumber class]])
     
    7070           
    7171            if (!start)
    72             {
    73                 [altColor set];
    7472                NSRectFill([self rectOfRow: i]);
    75             }
    7673           
    7774            start = !start;
     
    8481   
    8582    //remaining visible rows continue alternating
    86     NSRect rowRect = visibleRect;
    87     rowRect.size.height = [self rowHeight] + [self intercellSpacing].height;
     83    float height = [self rowHeight] + [self intercellSpacing].height;
     84    int numberOfRects = ceil(visibleRect.size.height / height);
     85    visibleRect.size.height = height;
    8886   
    89     while (rowRect.origin.y < NSMaxY(visibleRect))
     87    for (i=0; i<numberOfRects; i++)
    9088    {
    9189        if (!start)
    92         {
    93             [altColor set];
    94             NSRectFill(rowRect);
    95         }
     90            NSRectFill(visibleRect);
    9691       
    9792        start = !start;
    98         rowRect.origin.y += rowRect.size.height;
     93        visibleRect.origin.y += height;
    9994    }
    10095   
Note: See TracChangeset for help on using the changeset viewer.