Changeset 914


Ignore:
Timestamp:
Sep 25, 2006, 2:12:11 AM (15 years ago)
Author:
livings124
Message:

code's a little bit more confusing, but at least it doesn't have to compute values if it's not updating the image

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/nat-traversal/PiecesWindowController.m

    r913 r914  
    108108    }
    109109   
    110     int numPieces = MAX_ACROSS * MAX_ACROSS, across;
     110    int numPieces = MAX_ACROSS * MAX_ACROSS;
    111111    if ([fTorrent pieceCount] < numPieces)
    112     {
    113112        numPieces = [fTorrent pieceCount];
    114        
    115         //determine how many boxes
    116         across = sqrt(numPieces);
    117         if (across * across < numPieces)
    118             across++;
    119     }
    120     else
    121         across = MAX_ACROSS;
    122    
    123     float width = ([fExistingImage size].width - (float)(across + 1) * BETWEEN) / (float)across;
    124113   
    125114    int8_t * pieces = malloc(numPieces);
    126115    [fTorrent getAvailability: pieces size: numPieces];
    127116   
    128     int i, j, piece, index = -1;
     117    int i, j, piece, across;
     118    float width;
    129119    NSPoint point;
    130     NSRect rect = NSMakeRect(0, 0, width, width);
     120    NSRect rect;
    131121    NSImage * pieceImage;
    132122    BOOL change = NO;
    133    
    134     for (i = 0; i < across; i++)
    135         for (j = 0; j < across; j++)
    136         {
    137             pieceImage = nil;
    138        
    139             index++;
    140             if (index >= numPieces)
    141                 break;
     123       
     124    for (i = 0; i < numPieces; i++)
     125    {
     126        pieceImage = nil;
     127   
     128        if (i >= numPieces)
     129            break;
     130       
     131        piece = pieces[i];
     132        if (piece < 0)
     133        {
     134            if (first || fPieces[i] != -1)
     135            {
     136                fPieces[i] = -1;
     137                pieceImage = fGreenPiece;
     138            }
     139        }
     140        else if (piece == 0)
     141        {
     142            if (first || fPieces[i] != 0)
     143            {
     144                fPieces[i] = 0;
     145                pieceImage = fWhitePiece;
     146            }
     147        }
     148        else if (piece == 1)
     149        {
     150            if (first || fPieces[i] != 1)
     151            {
     152                fPieces[i] = 1;
     153                pieceImage = fBlue1Piece;
     154            }
     155        }
     156        else if (piece == 2)
     157        {
     158            if (first || fPieces[i] != 2)
     159            {
     160                fPieces[i] = 2;
     161                pieceImage = fBlue2Piece;
     162            }
     163        }
     164        else
     165        {
     166            if (first || fPieces[i] != 3)
     167            {
     168                fPieces[i] = 3;
     169                pieceImage = fBlue3Piece;
     170            }
     171        }
     172       
     173        if (pieceImage)
     174        {
     175            //drawing actually will occur, so figure out values
     176            if (!change)
     177            {
     178                //determine how many boxes and sizes
     179                if (numPieces < MAX_ACROSS * MAX_ACROSS)
     180                {
     181                    across = sqrt(numPieces);
     182                    if (across * across < numPieces)
     183                        across++;
     184                }
     185                else
     186                    across = MAX_ACROSS;
     187               
     188                width = ([fExistingImage size].width - (float)(across + 1) * BETWEEN) / (float)across;
     189                rect = NSMakeRect(0, 0, width, width);
     190               
     191                [fExistingImage lockFocus];
     192                change = YES;
     193            }
    142194           
    143             piece = pieces[index];
    144             if (piece < 0)
    145             {
    146                 if (first || fPieces[index] != -1)
    147                 {
    148                     fPieces[index] = -1;
    149                     pieceImage = fGreenPiece;
    150                 }
    151             }
    152             else if (piece == 0)
    153             {
    154                 if (first || fPieces[index] != 0)
    155                 {
    156                     fPieces[index] = 0;
    157                     pieceImage = fWhitePiece;
    158                 }
    159             }
    160             else if (piece == 1)
    161             {
    162                 if (first || fPieces[index] != 1)
    163                 {
    164                     fPieces[index] = 1;
    165                     pieceImage = fBlue1Piece;
    166                 }
    167             }
    168             else if (piece == 2)
    169             {
    170                 if (first || fPieces[index] != 2)
    171                 {
    172                     fPieces[index] = 2;
    173                     pieceImage = fBlue2Piece;
    174                 }
    175             }
    176             else
    177             {
    178                 if (first || fPieces[index] != 3)
    179                 {
    180                     fPieces[index] = 3;
    181                     pieceImage = fBlue3Piece;
    182                 }
    183             }
    184            
    185             if (pieceImage)
    186             {
    187                 if (!change)
    188                 {
    189                     [fExistingImage lockFocus];
    190                     change = YES;
    191                 }
    192                
    193                 point = NSMakePoint((float)j * (width + BETWEEN) + BETWEEN, (float)(across - i) * (width + BETWEEN) - width);
    194                 [pieceImage compositeToPoint: point fromRect: rect operation: NSCompositeSourceOver];
    195             }
    196         }
     195            int numAcross = i % across, numDown = i / across;
     196            point = NSMakePoint((float)numAcross * (width + BETWEEN) + BETWEEN,
     197                                (float)(across - numDown) * (width + BETWEEN) - width);
     198            [pieceImage compositeToPoint: point fromRect: rect operation: NSCompositeSourceOver];
     199        }
     200    }
    197201   
    198202    if (change)
Note: See TracChangeset for help on using the changeset viewer.