Update of /cvsroot/ufraw/ufraw
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21910

Modified Files:
        dcraw.cc 
Log Message:
dcraw modified 9.25 (1.475). Changelog: Updated color matrices, support the 
Canon EOS 5DS. Use typecasts instead of [0] to flatten multi-dimensional arrays.

Index: dcraw.cc
===================================================================
RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v
retrieving revision 1.331
retrieving revision 1.332
diff -u -d -r1.331 -r1.332
--- dcraw.cc    26 Feb 2015 03:30:12 -0000      1.331
+++ dcraw.cc    11 Apr 2015 04:00:20 -0000      1.332
@@ -22,7 +22,7 @@
 #include "uf_progress.h"
 }
 
-#define DCRAW_VERSION "9.24"
+#define DCRAW_VERSION "9.25"
 
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
@@ -1064,10 +1064,10 @@
       val = curve[*rp++];
       if (cr2_slice[0]) {
        jidx = jrow*jwide + jcol;
-       i = jidx / (cr2_slice[1]*jh.high);
+       i = jidx / (cr2_slice[1]*raw_height);
        if ((j = i >= cr2_slice[0]))
                 i  = cr2_slice[0];
-       jidx -= i * (cr2_slice[1]*jh.high);
+       jidx -= i * (cr2_slice[1]*raw_height);
        row = jidx / cr2_slice[1+j];
        col = jidx % cr2_slice[1+j] + i*cr2_slice[1];
       }
@@ -1643,7 +1643,7 @@
       for (qr = 0; qr < 2; qr++)
        for (qc = 0; qc < 2; qc++)
          for (i = 0; i < 16; i++)
-           lc[qr][qc][i] = (ushort)get4();
+           lc[qr][qc][i] = get4();
       for (i = 0; i < 16; i++) {
        int v = 0;
        for (qr = 0; qr < 2; qr++)
@@ -1653,15 +1653,15 @@
       }
       for (qr = 0; qr < 2; qr++) {
        for (qc = 0; qc < 2; qc++) {
-         int cx[18], cf[18];
+         int cx[19], cf[19];
          for (i = 0; i < 16; i++) {
            cx[1+i] = lc[qr][qc][i];
            cf[1+i] = ref[i];
          }
          cx[0] = cf[0] = 0;
-         cx[17] = cf[17] = ((unsigned int)ref[15] * 65535) / lc[qr][qc][15];
-         cubic_spline(cx, cf, 18);
-
+         cx[17] = cf[17] = ((unsigned) ref[15] * 65535) / lc[qr][qc][15];
+         cx[18] = cf[18] = 65535;
+         cubic_spline(cx, cf, 19);
          for (row = (qr ? ph1.split_row : 0);
               (int) row < (qr ? raw_height : ph1.split_row); row++)
            for (col = (qc ? ph1.split_col : 0);
@@ -1690,17 +1690,17 @@
       ushort lc[2][2][7], ref[7];
       int qr, qc;
       for (i = 0; i < 7; i++)
-       ref[i] = (ushort)get4();
+       ref[i] = get4();
       for (qr = 0; qr < 2; qr++)
        for (qc = 0; qc < 2; qc++)
          for (i = 0; i < 7; i++)
-           lc[qr][qc][i] = (ushort)get4();
+           lc[qr][qc][i] = get4();
       for (qr = 0; qr < 2; qr++) {
        for (qc = 0; qc < 2; qc++) {
          int cx[9], cf[9];
          for (i = 0; i < 7; i++) {
            cx[1+i] = ref[i];
-           cf[1+i] = ((unsigned int)ref[i] * lc[qr][qc][i]) / 10000;
+           cf[1+i] = ((unsigned) ref[i] * lc[qr][qc][i]) / 10000;
          }
          cx[0] = cf[0] = 0;
          cx[8] = cf[8] = 65535;
@@ -2280,7 +2280,7 @@
     2,-26, 2,-13, 2,1, 3,-39, 4,16, 5,-55, 6,-76, 6,37
   };
   ushort huff[19][256];
-  int row, col, tree, nreps, rep, step, i, j, k, c, s, r, x, y, val;
+  int row, col, tree, nreps, rep, step, i, c, s, r, x, y, val;
   short last[3] = { 16,16,16 }, mul[3], buf[3][3][386];
   static const ushort pt[] =
     { 0,0, 1280,1344, 2320,3616, 3328,8000, 4095,16383, 65535,16383 };
@@ -2291,14 +2291,12 @@
        (c-pt[i-2]) / (pt[i]-pt[i-2]) * (pt[i+1]-pt[i-1]) + pt[i-1] + 0.5;
   for (s=i=0; i < (int) sizeof src; i+=2)
     FORC(256 >> src[i])
-      huff[0][s++] = src[i] << 8 | (uchar) src[i+1];
+      ((ushort *)huff)[s++] = src[i] << 8 | (uchar) src[i+1];
   s = kodak_cbpp == 243 ? 2 : 3;
   FORC(256) huff[18][c] = (8-s) << 8 | c >> s << s | 1 << (s-1);
   getbits(-1);
-  for (i=0; i < 3; i++)
-    for (j=0; j < 3; j++)
-      for (k=0; k < 386; k++)
-       buf[i][j][k] = 2048;
+  for (i=0; i < (int) sizeof(buf)/(int) sizeof(short); i++)
+    ((short *)buf)[i] = 2048;
   for (row=0; row < height; row+=4) {
     FORC3 mul[c] = getbits(6);
     FORC3 {
@@ -2306,9 +2304,8 @@
       s = val > 65564 ? 10:12;
       x = ~(-1 << (s-1));
       val <<= 12-s;
-      for (i=0; i < 3; i++)
-       for (j=0; j < 386; j++)
-         buf[c][i][j] = (buf[c][i][j] * val + x) >> s;
+      for (i=0; i < (int) sizeof(buf[0])/(int) sizeof(short); i++)
+       ((short *)buf[c])[i] = (((short *)buf[c])[i] * val + x) >> s;
       last[c] = mul[c];
       for (r=0; r <= !c; r++) {
        buf[c][1][width/2] = buf[c][2][width/2] = mul[c] << 7;
@@ -2759,14 +2756,14 @@
   key = get4();
   fseek (ifp, 164600, SEEK_SET);
   fread (head, 1, 40, ifp);
-  sony_decrypt ((unsigned int *) head, 10, 1, key);
+  sony_decrypt ((unsigned *) head, 10, 1, key);
   for (i=26; i-- > 22; )
     key = key << 8 | head[i];
   fseek (ifp, data_offset, SEEK_SET);
   for (row=0; row < raw_height; row++) {
     pixel = raw_image + row*raw_width;
     if (fread (pixel, 2, raw_width, ifp) < raw_width) derror();
-    sony_decrypt ((unsigned int *) pixel, raw_width/2, !row, key);
+    sony_decrypt ((unsigned *) pixel, raw_width/2, !row, key);
     for (col=0; col < raw_width; col++)
       if ((pixel[col] = ntohs(pixel[col])) >> 14) derror();
   }
@@ -2891,8 +2888,7 @@
     fseek (ifp, (data_offset-ftell(ifp)) & 15, SEEK_CUR);
     ph1_bits(-1);
     mag = 0; pmode = 7;
-    for (i=0; i<3; i++)
-      FORC(2) lent[i][c] = row < 2 ? 7:4;
+    FORC(6) ((ushort *)lent)[c] = row < 2 ? 7:4;
     prow[ row & 1] = &RAW(row-1,1-((row & 1) << 1));   // green
     prow[~row & 1] = &RAW(row-2,0);                    // red and blue
     for (tab=0; tab+15 < raw_width; tab+=16) {
@@ -3057,10 +3053,10 @@
 
   fseek (ifp, 67, SEEK_SET);
   offset = get4();
-  nseg = fgetc(ifp);
+  nseg = (uchar) fgetc(ifp);
   fseek (ifp, offset, SEEK_SET);
   for (i=0; i < nseg*2; i++)
-    seg[0][i] = get4() + data_offset*(i & 1);
+    ((unsigned *)seg)[i] = get4() + data_offset*(i & 1);
   fseek (ifp, 78, SEEK_SET);
   holes = fgetc(ifp);
   fseek (ifp, 88, SEEK_SET);
@@ -3571,8 +3567,8 @@
   black = (float (*)[3]) calloc (height, sizeof *black);
   for (row=0; row < height; row++) {
     for (i=0; i < 6; i++)
-      ddft[0][0][i] = ddft[1][0][i] +
-       row / (height-1.0) * (ddft[2][0][i] - ddft[1][0][i]);
+      ((float *)ddft[0])[i] = ((float *)ddft[1])[i] +
+       row / (height-1.0) * (((float *)ddft[2])[i] - ((float *)ddft[1])[i]);
     FORC3 black[row][c] =
        ( foveon_avg (image[row*width]+c, dscr[0], cfilt) +
          foveon_avg (image[row*width]+c, dscr[1], cfilt) * 3
@@ -3617,8 +3613,8 @@
 
   for (row=0; row < height; row++) {
     for (i=0; i < 6; i++)
-      ddft[0][0][i] = ddft[1][0][i] +
-       row / (height-1.0) * (ddft[2][0][i] - ddft[1][0][i]);
+      ((float *)ddft[0])[i] = ((float *)ddft[1])[i] +
+       row / (height-1.0) * (((float *)ddft[2])[i] - ((float *)ddft[1])[i]);
     pix = image[row*width];
     memcpy (prev, pix, sizeof prev);
     frow = row / (height-1.0) * (dim[2]-1);
@@ -3659,7 +3655,7 @@
 #endif
 
   if (foveon_camf_param ("IncludeBlocks", "BadPixels")) {
-    badpix = (unsigned int *) foveon_camf_matrix (dim, "BadPixels");
+    badpix = (unsigned *) foveon_camf_matrix (dim, "BadPixels");
     for (i=0; i < (int) dim[0]; i++) {
       col = (badpix[i] >> 8 & 0xfff) - keep[0];
       row = (badpix[i] >> 20       ) - keep[1];
@@ -3980,8 +3976,8 @@
   for (row=0; row < height; row++) {
     for (i=0; i < 3; i++)
       for (j=0; j < 2; j++)
-       ddft[0][i][j] = ddft[1][i][j] +
-         row / (height-1.0) * (ddft[2][i][j] - ddft[1][i][j]);
+       ((float *)ddft[0])[i] = ((float *)ddft[1])[i] +
+         row / (height-1.0) * (((float *)ddft[2])[i] - ((float *)ddft[1])[i]);
     FORC3 black[row][c] =
        ( foveon_avg (image[row*width]+c, dscr[0], cfilt) +
          foveon_avg (image[row*width]+c, dscr[1], cfilt) * 3
@@ -4027,8 +4023,8 @@
   for (row=0; row < height; row++) {
     for (i=0; i < 3; i++)
       for (j=0; j < 2; j++)
-       ddft[0][i][j] = ddft[1][i][j] +
-         row / (height-1.0) * (ddft[2][i][j] - ddft[1][i][j]);
+       ((float *)ddft[0])[i] = ((float *)ddft[1])[i] +
+         row / (height-1.0) * (((float *)ddft[2])[i] - ((float *)ddft[1])[i]);
     pix = image[row*width];
     memcpy (prev, pix, sizeof prev);
     frow = row / (height-1.0) * (dim[2]-1);
@@ -4067,7 +4063,7 @@
   free (sgrow);
   free (sgain);
 
-  if ((badpix = (unsigned int *) foveon_camf_matrix (dim, "BadPixels"))) {
+  if ((badpix = (unsigned *) foveon_camf_matrix (dim, "BadPixels"))) {
     for (i=0; i < (int) dim[0]; i++) {
       col = (badpix[i] >> 8 & 0xfff) - keep[0];
       row = (badpix[i] >> 20       ) - keep[1];
@@ -4807,13 +4803,13 @@
   }
   size = iheight*iwidth;
   for (i=0; i < size*4; i++) {
-    if (!(val = image[0][i])) continue;
+    if (!(val = ((ushort *)image)[i])) continue;
     if (cblack[4] && cblack[5])
       val -= cblack[6 + i/4 / iwidth % cblack[4] * cblack[5] +
                        i/4 % iwidth % cblack[5]];
     val -= cblack[i & 3];
     val *= scale_mul[i & 3];
-    image[0][i] = CLIP(val);
+    ((ushort *)image)[i] = CLIP(val);
   }
   if ((aber[0] != 1 || aber[2] != 1) && colors == 3) {
     dcraw_message (DCRAW_VERBOSE,_("Correcting chromatic aberration...\n"));
@@ -6118,7 +6114,7 @@
   { "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22",
     "Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65",
     "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7",
-    "Aptus-II 7","","","Aptus-II 6","","","Aptus-II 10","Aptus-II 5",
+    "AFi-II 7","Aptus-II 7","","Aptus-II 6","","","Aptus-II 10","Aptus-II 5",
     "","","","","Aptus-II 10R","Aptus-II 8","","Aptus-II 12","","AFi-II 12" };
   float romm_cam[3][3];
 
@@ -6144,12 +6140,12 @@
     }
     if (!strcmp(data,"icc_camera_to_tone_matrix")) {
       for (i=0; i < 9; i++)
-       romm_cam[0][i] = int_to_float(get4());
+       ((float *)romm_cam)[i] = int_to_float(get4());
       romm_coeff (romm_cam);
     }
     if (!strcmp(data,"CaptProf_color_matrix")) {
       for (i=0; i < 9; i++)
-       fscanf (ifp, "%f", &romm_cam[0][i]);
+       fscanf (ifp, "%f", (float *)romm_cam + i);
       romm_coeff (romm_cam);
     }
     if (!strcmp(data,"CaptProf_number_of_planes"))
@@ -6337,6 +6333,10 @@
            tiff_ifd[ifd].samples = jh.clrs;
            if (!(jh.sraw || (jh.clrs & 1)))
              tiff_ifd[ifd].width *= jh.clrs;
+           if ((tiff_ifd[ifd].width > 4*tiff_ifd[ifd].height) & ~jh.clrs) {
+             tiff_ifd[ifd].width  /= 2;
+             tiff_ifd[ifd].height *= 2;
+           }
            i = order;
            parse_tiff (tiff_ifd[ifd].offset + 12);
            order = i;
@@ -6436,8 +6436,7 @@
        break;
       case 33422:                      /* CFAPattern */
        if (filters == 9) {
-          for (i=0; i < 6; i++)
-           FORC(6) xtrans[i][c] = fgetc(ifp) & 3;
+         FORC(36) ((char *)xtrans)[c] = fgetc(ifp) & 3;
          break;
        }
       case 64777:                      /* Kodak P-series */
@@ -6676,7 +6675,7 @@
        break;
       case 50830:                      /* MaskedAreas */
         for (i=0; i < len && i < 32; i++)
-         mask[0][i] = getint(type);
+         ((int *)mask)[i] = getint(type);
        black = 0;
        break;
       case 51009:                      /* OpcodeList2 */
@@ -7185,7 +7184,7 @@
 
 void CLASS parse_phase_one (int base)
 {
-  unsigned entries, tag, len, data, save, i, j, c;
+  unsigned entries, tag, len, data, save, i, c;
   float romm_cam[3][3];
   char *cp;
 
@@ -7206,9 +7205,8 @@
     switch (tag) {
       case 0x100:  flip = "0653"[data & 3]-'0';  break;
       case 0x106:
-       for (i=0; i < 3; i++)
-         for (j=0; j < 3; j++)
-           romm_cam[i][j] = getreal(11);
+       for (i=0; i < 9; i++)
+         ((float *)romm_cam)[i] = getreal(11);
        romm_coeff (romm_cam);
        break;
       case 0x107:
@@ -7564,7 +7562,7 @@
        off += pent*8 + 24;
        if ((unsigned) pent > 256) pent=256;
        for (i=0; i < pent*2; i++)
-         poff[0][i] = off + get4()*2;
+         ((int *)poff)[i] = off + get4()*2;
        for (i=0; i < pent; i++) {
          foveon_gets (poff[i][0], name, 64);
          foveon_gets (poff[i][1], value, 64);
@@ -7616,6 +7614,8 @@
        { 9805,-2689,-1312,-5803,13064,3068,-2438,3075,8775 } },
     { "Canon EOS D60", 0, 0xfa0,
        { 6188,-1341,-890,-7168,14489,2937,-2640,3228,8483 } },
+    { "Canon EOS 5DS", 0, 0x3c96,      /* DJC */
+       { 6885,-753,-856,-4416,11752,2665,-1266,2393,5468 } },
     { "Canon EOS 5D Mark III", 0, 0x3c80,
        { 6722,-635,-963,-4287,12460,2028,-908,2162,5668 } },
     { "Canon EOS 5D Mark II", 0, 0x3cf0,
@@ -7880,6 +7880,8 @@
        { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } },
     { "Fujifilm X-A1", 0, 0,
        { 11086,-4555,-839,-3512,11310,2517,-815,1341,5940 } },
+    { "Fujifilm X-A2", 0, 0,
+       { 10763,-4560,-917,-3346,11311,2322,-475,1135,5843 } },
     { "Fujifilm X-E1", 0, 0,
        { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } },
     { "Fujifilm X-E2", 0, 0,
@@ -7892,7 +7894,7 @@
        { 8458,-2451,-855,-4597,12447,2407,-1475,2482,6526 } },
     { "Fujifilm XF1", 0, 0,
        { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } },
-    { "Fujifilm XQ1", 0, 0,
+    { "Fujifilm XQ", 0, 0,     // XQ1 and XQ2
        { 9252,-2704,-1064,-5893,14265,1717,-1101,2341,4349 } },
     { "Imacon Ixpress", 0, 0,          /* DJC */
        { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },
@@ -8032,8 +8034,8 @@
        { 8322,-3112,-1047,-6367,14342,2179,-988,1638,6394 } },
     { "Nikon D5300", 0, 0,
        { 6988,-1384,-714,-5631,13410,2447,-1485,2204,7318 } },
-    { "Nikon D5500", 0, 0,             /* DJC */
-       { 5765,-2176,184,-3736,9072,4664,-1028,2213,9259 } },
+    { "Nikon D5500", 0, 0,
+       { 8821,-2938,-785,-4178,12142,2287,-824,1651,6860 } },
     { "Nikon D50", 0, 0,
        { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
     { "Nikon D600", 0, 0x3e07,
@@ -8046,6 +8048,8 @@
        { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
     { "Nikon D7100", 0, 0,
        { 8322,-3112,-1047,-6367,14342,2179,-988,1638,6394 } },
+    { "Nikon D7200", 0, 0,             /* DJC */
+       { 6111,-2759,-358,-5108,10766,4343,-769,1691,8030 } },
     { "Nikon D750", 0, 0,
        { 9020,-2890,-715,-4535,12436,2348,-934,1919,7086 } },
     { "Nikon D700", 0, 0,
@@ -8110,6 +8114,8 @@
        { 5958,-1559,-571,-4021,11453,2939,-634,1548,5087 } },
     { "Nikon 1 J4", 0, 0,
        { 5958,-1559,-571,-4021,11453,2939,-634,1548,5087 } },
+    { "Nikon 1 J5", 0, 0,              /* DJC */
+       { 2621,-856,500,-4471,8761,5711,-1321,2644,11945 } },
     { "Nikon 1 S2", 200, 0,
        { 6612,-1342,-618,-3338,11055,2623,-174,1792,5075 } },
     { "Nikon 1 V2", 0, 0,
@@ -8194,8 +8200,8 @@
        { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
     { "Olympus E-M1", 0, 0,
        { 7687,-1984,-606,-4327,11928,2721,-1381,2339,6452 } },
-    { "Olympus E-M5MarkII", 0, 0,      /* DJC */
-       { 6617,-2589,139,-2917,8499,4419,-884,1913,6829 } },
+    { "Olympus E-M5MarkII", 0, 0,
+       { 9422,-3258,-711,-2655,10898,2015,-512,1354,5512 } },
     { "Olympus E-M5", 0, 0xfe1,
        { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
     { "Olympus SP350", 0, 0,
@@ -8358,8 +8364,8 @@
        { 8228,-2945,-660,-3938,11792,2430,-1094,2278,5793 } },
     { "Panasonic DMC-GF6", 15, 0,
        { 8130,-2801,-946,-3520,11289,2552,-1314,2511,5791 } },
-    { "Panasonic DMC-GF7", 15, 0,      /* DJC */
-       { 6086,-2691,-18,-4207,9767,4441,-1486,2640,7441 } },
+    { "Panasonic DMC-GF7", 15, 0,
+       { 7610,-2780,-576,-4614,12195,2733,-1375,2393,6490 } },
     { "Panasonic DMC-GH1", 15, 0xf92,
        { 6299,-1466,-532,-6535,13852,2969,-2331,3112,5984 } },
     { "Panasonic DMC-GH2", 15, 0xf95,
@@ -8380,6 +8386,10 @@
        { 8607,-2822,-808,-3755,11930,2049,-820,2060,5224 } },
     { "Panasonic DMC-ZS4", 15, 0,
        { 8607,-2822,-808,-3755,11930,2049,-820,2060,5224 } },
+    { "Panasonic DMC-TZ7", 15, 0,
+       { 8802,-3135,-789,-3151,11468,1904,-550,1745,4810 } },
+    { "Panasonic DMC-ZS5", 15, 0,
+       { 8802,-3135,-789,-3151,11468,1904,-550,1745,4810 } },
     { "Phase One H 20", 0, 0,          /* DJC */
        { 1313,1855,-109,-6715,15908,808,-327,1840,6020 } },
     { "Phase One H 25", 0, 0,
@@ -8420,9 +8430,11 @@
        { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
     { "Samsung NX10", 0, 0,    /* also NX100 */
        { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
+    { "Samsung NX500", 0, 0,           /* DJC */
+       { 10196,-4532,-272,-3888,11489,2400,-1203,2424,9173 } },
     { "Samsung NX5", 0, 0,
        { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
-    { "Samsung NX1", 128, 0,
+    { "Samsung NX1", 0, 0,
        { 10686,-4042,-1052,-3595,13238,276,-464,1259,5931 } },
     { "Samsung WB2000", 0, 0xfff,
        { 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } },
@@ -8533,7 +8545,7 @@
   };
   double cam_xyz[4][3];
   char name[130];
-  unsigned i, j, k;
+  unsigned i, j;
 
   sprintf (name, "%s %s", make, model);
   for (i=0; i < sizeof table / sizeof *table; i++)
@@ -8541,9 +8553,8 @@
       if (table[i].black)   black   = (ushort) table[i].black;
       if (table[i].maximum) maximum = (ushort) table[i].maximum;
       if (table[i].trans[0]) {
-      for (j=0; j < 4; j++)
-       for (k=0; k < 3; k++)
-         cam_xyz[j][k] = table[i].trans[3*j+k] / 10000.0;
+       for (raw_color = j=0; j < 12; j++)
+         ((double *)cam_xyz)[j] = table[i].trans[j] / 10000.0;
        cam_xyz_coeff (rgb_cam, cam_xyz);
       }
       break;
@@ -8686,6 +8697,7 @@
     { 5712, 3774,  62, 20, 10,  2 },
     { 5792, 3804, 158, 51,  0,  0 },
     { 5920, 3950, 122, 80,  2,  0 },
+    { 8896, 5920, 160, 64,  0,  0 },
   };
   static const struct {
     ushort id;
@@ -9175,7 +9187,10 @@
       case 3344: width -= 66;
       case 3872: width -= 6;
     }
-    if (height > width) SWAP(height,width);
+    if (height > width) {
+      SWAP(height,width);
+      SWAP(raw_height,raw_width);
+    }
     filters = 0;
     tiff_samples = colors = 3;
     load_raw = &CLASS canon_sraw_load_raw;
@@ -9362,9 +9377,8 @@
     }
     if (fuji_layout) raw_width *= is_raw;
     if (filters == 9)
-      for (i=0; i < 6; i++)
-       FORC(6) xtrans[i][c] =
-         xtrans_abs[(i+top_margin) % 6][(c+left_margin) % 6];
+      FORC(36) ((char *)xtrans)[c] =
+       xtrans_abs[(c/6+top_margin) % 6][(c+left_margin) % 6];
   } else if (!strcmp(model,"KD-400Z")) {
     height = 1712;
     width  = 2312;
@@ -9435,6 +9449,7 @@
     filters = 0x49494949;
   } else if (!strcmp(make,"Samsung") && raw_width == 6496) {
     filters = 0x61616161;
+    black = 1 << (tiff_bps - 7);
   } else if (!strcmp(model,"EX1")) {
     order = 0x4949;
     height -= 20;


------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
ufraw-cvs mailing list
ufraw-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs

Reply via email to