Changeset 910
- Timestamp:
- Sep 25, 2006, 12:54:04 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nat-traversal/PiecesWindowController.m
r909 r910 9 9 #import "PiecesWindowController.h" 10 10 11 #define HEIGHT 4.0 12 #define WIDTH 4.0 13 #define BETWEEN 1.0 14 #define ACROSS 18 15 #define DOWN 18 11 #define MIN_WIDTH 4.0 12 #define MAX_ACROSS 18 16 13 17 14 #define BLANK -99 … … 24 21 { 25 22 fTorrent = nil; 26 fPieces = malloc(ACROSS * DOWN); 23 int numPieces = MAX_ACROSS * MAX_ACROSS; 24 fPieces = malloc(numPieces); 27 25 int i; 28 for (i = 0; i < DOWN * ACROSS; i++)26 for (i = 0; i < numPieces; i++) 29 27 fPieces[i] = BLANK; 30 28 31 29 fBack = [NSImage imageNamed: @"PiecesBack.tiff"]; 30 NSSize size = [fBack size]; 31 32 32 fWhitePiece = [NSImage imageNamed: @"BoxWhite.tiff"]; 33 [fWhitePiece setScalesWhenResized: YES]; 34 [fWhitePiece setSize: size]; 35 33 36 fGreenPiece = [NSImage imageNamed: @"BoxGreen.tiff"]; 37 [fGreenPiece setScalesWhenResized: YES]; 38 [fGreenPiece setSize: size]; 39 34 40 fBlue1Piece = [NSImage imageNamed: @"BoxBlue1.tiff"]; 41 [fBlue1Piece setScalesWhenResized: YES]; 42 [fBlue1Piece setSize: size]; 43 35 44 fBlue2Piece = [NSImage imageNamed: @"BoxBlue2.tiff"]; 45 [fBlue2Piece setScalesWhenResized: YES]; 46 [fBlue2Piece setSize: size]; 47 36 48 fBlue3Piece = [NSImage imageNamed: @"BoxBlue3.tiff"]; 49 [fBlue3Piece setScalesWhenResized: YES]; 50 [fBlue3Piece setSize: size]; 37 51 38 52 fExistingImage = [fBack copy]; … … 94 108 } 95 109 96 int numPieces = ACROSS * DOWN;110 int numPieces = MAX_ACROSS * MAX_ACROSS; 97 111 if (numPieces > [fTorrent pieceCount]) 98 112 numPieces = [fTorrent pieceCount]; 99 113 114 //determine how many boxes 115 int across = MAX_ACROSS; 116 float width = MIN_WIDTH, between; 117 while (numPieces <= (across / 2) * (across / 2)) 118 { 119 across /= 2; 120 width *= 2.0; 121 } 122 between = ([fExistingImage size].width - (float)across * width) / (float)(across + 1); 123 100 124 int8_t * pieces = malloc(numPieces); 101 125 [fTorrent getAvailability: pieces size: numPieces]; … … 103 127 int i, j, piece, index = -1; 104 128 NSPoint point; 129 NSRect rect = NSMakeRect(0, 0, width, width); 105 130 NSImage * pieceImage; 106 131 BOOL change = NO; 107 132 108 for (i = 0; i < DOWN; i++)109 for (j = 0; j < ACROSS; j++)133 for (i = 0; i < across; i++) 134 for (j = 0; j < across; j++) 110 135 { 111 136 pieceImage = nil; … … 164 189 change = YES; 165 190 } 166 point = NSMakePoint(j * (WIDTH + BETWEEN) + BETWEEN, (DOWN - i - 1) * (HEIGHT + BETWEEN) + BETWEEN); 167 [pieceImage compositeToPoint: point operation: NSCompositeSourceOver]; 191 192 point = NSMakePoint((float)j * (width + between) + between, (float)(across - i) * (width + between) - width); 193 [pieceImage compositeToPoint: point fromRect: rect operation: NSCompositeSourceOver]; 168 194 } 169 195 } 170 196 171 197 if (change) 198 { 172 199 [fExistingImage unlockFocus]; 173 174 //reload the image if changes were made or the torrent was loaded after it was blank 175 if (change || first) 176 { 200 177 201 [fImageView setImage: nil]; 178 202 [fImageView setImage: fExistingImage];
Note: See TracChangeset
for help on using the changeset viewer.