Changeset 1839


Ignore:
Timestamp:
11/21/06 16:18:38 (13 years ago)
Author:
curtis
Message:

Update pad for shorts, ints, floats and doubles
to match fixed byte implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ImageTools.java

    r1838 r1839  
    12901290    int oldWidth, int width, int height) 
    12911291  { 
    1292     boolean needsPadding = 
    1293       (oldWidth != width) || ((b.length / (oldWidth*c)) != height); 
    1294  
    1295     if (needsPadding) { 
    1296       int oldHeight = b.length / (oldWidth * c); 
    1297  
    1298       // adjust to correct width 
    1299  
    1300       short[] padded = new short[width * oldHeight * c]; 
    1301       int clip = (width - oldWidth) / 2; 
    1302  
    1303       for (int i=0; i<oldHeight; i++) { 
    1304         System.arraycopy(b, i*oldWidth*c, padded, i*width*c,  
    1305           clip < 0 ? width*c : oldWidth*c); 
    1306       } 
    1307  
    1308       // adjust to correct height 
    1309  
    1310       short[] rtn = new short[width * height * c]; 
    1311       clip = (height - oldHeight) / 2; 
    1312  
    1313       if (clip < 0) { 
    1314         clip *= -1; 
    1315         for (int i=0; i<height; i++) { 
    1316           System.arraycopy(padded, (i+clip)*width*c, rtn, i*width*c, width*c); 
    1317         } 
    1318       } 
    1319       else { 
    1320         for (int i=clip; i<height+clip; i++) { 
    1321           System.arraycopy(padded, i*width*c, rtn, (i-clip)*width*c, width*c); 
    1322         } 
    1323       } 
    1324       return rtn; 
    1325     } 
    1326     return b;  
     1292    int oldHeight = b.length / (oldWidth * c); 
     1293    if (width < oldWidth) width = oldWidth; 
     1294    if (height < oldHeight) height = oldHeight; 
     1295    if (width == oldWidth && height == oldHeight) return b; 
     1296 
     1297    int wClip = (width - oldWidth) / 2; 
     1298    int hClip = (height - oldHeight) / 2; 
     1299 
     1300    short[] padded = new short[width * height * c]; 
     1301 
     1302    for (int oy=0, y=0; oy<oldHeight; oy++, y++) { 
     1303      int oldIndex = oldWidth * c * oy; 
     1304      int index = width * c * (y + hClip) + c * wClip; 
     1305      System.arraycopy(b, oldIndex, padded, index, oldWidth * c); 
     1306    } 
     1307 
     1308    return padded; 
    13271309  } 
    13281310 
     
    13341316    int oldWidth, int width, int height) 
    13351317  { 
    1336     boolean needsPadding = 
    1337       (oldWidth != width) || ((b.length / (oldWidth*c)) != height); 
    1338  
    1339     if (needsPadding) { 
    1340       int oldHeight = b.length / (oldWidth * c); 
    1341  
    1342       // adjust to correct width 
    1343  
    1344       int[] padded = new int[width * oldHeight * c]; 
    1345       int clip = (width - oldWidth) / 2; 
    1346  
    1347       for (int i=0; i<oldHeight; i++) { 
    1348         System.arraycopy(b, i*oldWidth*c, padded, i*width*c,  
    1349           clip < 0 ? width*c : oldWidth*c); 
    1350       } 
    1351  
    1352       // adjust to correct height 
    1353  
    1354       int[] rtn = new int[width * height * c]; 
    1355       clip = (height - oldHeight) / 2; 
    1356  
    1357       if (clip < 0) { 
    1358         clip *= -1; 
    1359         for (int i=0; i<height; i++) { 
    1360           System.arraycopy(padded, (i+clip)*width*c, rtn, i*width*c, width*c); 
    1361         } 
    1362       } 
    1363       else { 
    1364         for (int i=clip; i<height+clip; i++) { 
    1365           System.arraycopy(padded, i*width*c, rtn, (i-clip)*width*c, width*c); 
    1366         } 
    1367       } 
    1368       return rtn; 
    1369     } 
    1370     return b;  
     1318    int oldHeight = b.length / (oldWidth * c); 
     1319    if (width < oldWidth) width = oldWidth; 
     1320    if (height < oldHeight) height = oldHeight; 
     1321    if (width == oldWidth && height == oldHeight) return b; 
     1322 
     1323    int wClip = (width - oldWidth) / 2; 
     1324    int hClip = (height - oldHeight) / 2; 
     1325 
     1326    int[] padded = new int[width * height * c]; 
     1327 
     1328    for (int oy=0, y=0; oy<oldHeight; oy++, y++) { 
     1329      int oldIndex = oldWidth * c * oy; 
     1330      int index = width * c * (y + hClip) + c * wClip; 
     1331      System.arraycopy(b, oldIndex, padded, index, oldWidth * c); 
     1332    } 
     1333 
     1334    return padded; 
    13711335  } 
    13721336 
     
    13781342    int oldWidth, int width, int height) 
    13791343  { 
    1380     boolean needsPadding = 
    1381       (oldWidth != width) || ((b.length / (oldWidth*c)) != height); 
    1382  
    1383     if (needsPadding) { 
    1384       int oldHeight = b.length / (oldWidth * c); 
    1385  
    1386       // adjust to correct width 
    1387  
    1388       float[] padded = new float[width * oldHeight * c]; 
    1389       int clip = (width - oldWidth) / 2; 
    1390  
    1391       for (int i=0; i<oldHeight; i++) { 
    1392         System.arraycopy(b, i*oldWidth*c, padded, i*width*c,  
    1393           clip < 0 ? width*c : oldWidth*c); 
    1394       } 
    1395  
    1396       // adjust to correct height 
    1397  
    1398       float[] rtn = new float[width * height * c]; 
    1399       clip = (height - oldHeight) / 2; 
    1400  
    1401       if (clip < 0) { 
    1402         clip *= -1; 
    1403         for (int i=0; i<height; i++) { 
    1404           System.arraycopy(padded, (i+clip)*width*c, rtn, i*width*c, width*c); 
    1405         } 
    1406       } 
    1407       else { 
    1408         for (int i=clip; i<height+clip; i++) { 
    1409           System.arraycopy(padded, i*width*c, rtn, (i-clip)*width*c, width*c); 
    1410         } 
    1411       } 
    1412       return rtn; 
    1413     } 
    1414     return b;  
     1344    int oldHeight = b.length / (oldWidth * c); 
     1345    if (width < oldWidth) width = oldWidth; 
     1346    if (height < oldHeight) height = oldHeight; 
     1347    if (width == oldWidth && height == oldHeight) return b; 
     1348 
     1349    int wClip = (width - oldWidth) / 2; 
     1350    int hClip = (height - oldHeight) / 2; 
     1351 
     1352    float[] padded = new float[width * height * c]; 
     1353 
     1354    for (int oy=0, y=0; oy<oldHeight; oy++, y++) { 
     1355      int oldIndex = oldWidth * c * oy; 
     1356      int index = width * c * (y + hClip) + c * wClip; 
     1357      System.arraycopy(b, oldIndex, padded, index, oldWidth * c); 
     1358    } 
     1359 
     1360    return padded; 
    14151361  } 
    14161362 
     
    14221368    int oldWidth, int width, int height) 
    14231369  { 
    1424     boolean needsPadding = 
    1425       (oldWidth != width) || ((b.length / (oldWidth*c)) != height); 
    1426  
    1427     if (needsPadding) { 
    1428       int oldHeight = b.length / (oldWidth * c); 
    1429  
    1430       // adjust to correct width 
    1431  
    1432       double[] padded = new double[width * oldHeight * c]; 
    1433       int clip = (width - oldWidth) / 2; 
    1434  
    1435       for (int i=0; i<oldHeight; i++) { 
    1436         System.arraycopy(b, i*oldWidth*c, padded, i*width*c,  
    1437           clip < 0 ? width*c : oldWidth*c); 
    1438       } 
    1439  
    1440       // adjust to correct height 
    1441  
    1442       double[] rtn = new double[width * height * c]; 
    1443       clip = (height - oldHeight) / 2; 
    1444  
    1445       if (clip < 0) { 
    1446         clip *= -1; 
    1447         for (int i=0; i<height; i++) { 
    1448           System.arraycopy(padded, (i+clip)*width*c, rtn, i*width*c, width*c); 
    1449         } 
    1450       } 
    1451       else { 
    1452         for (int i=clip; i<height+clip; i++) { 
    1453           System.arraycopy(padded, i*width*c, rtn, (i-clip)*width*c, width*c); 
    1454         } 
    1455       } 
    1456       return rtn; 
    1457     } 
    1458     return b;  
     1370    int oldHeight = b.length / (oldWidth * c); 
     1371    if (width < oldWidth) width = oldWidth; 
     1372    if (height < oldHeight) height = oldHeight; 
     1373    if (width == oldWidth && height == oldHeight) return b; 
     1374 
     1375    int wClip = (width - oldWidth) / 2; 
     1376    int hClip = (height - oldHeight) / 2; 
     1377 
     1378    double[] padded = new double[width * height * c]; 
     1379 
     1380    for (int oy=0, y=0; oy<oldHeight; oy++, y++) { 
     1381      int oldIndex = oldWidth * c * oy; 
     1382      int index = width * c * (y + hClip) + c * wClip; 
     1383      System.arraycopy(b, oldIndex, padded, index, oldWidth * c); 
     1384    } 
     1385 
     1386    return padded; 
    14591387  } 
    14601388 
Note: See TracChangeset for help on using the changeset viewer.