38a39
> 
53d53
<             {
59a60
> 		    	//fprintf(stderr,"%d %d",p1[j],p0[j]);
77c78,93
<             }
---
> 	    case GDT_Int16:
> 	   	//process 16bit DEM tiles
> 		//ensure only 1 band of data exists
> 		short *pint0 = reinterpret_cast<short*>(d0);
> 		short *pint1 = reinterpret_cast<short*>(d1);
> 		short minDataVal_short = m_minDataVal;
> 		//fprintf(stderr,"Got Here Int16");
> 		if(bands == 1){
> 		   //fprintf(stderr,"Got Here bands");
> 		   for (int j = 0; j < sx; j += 1) {
> 		   	//fprintf(stderr,"%d %d",pint1[j],pint0[j]);
> 			if (pint1[j] >= minDataVal_short) pint0[j] = pint1[j];
> 			else if (pint0[j] < minDataVal_short) pint0[j] = 0;
> 		   }
> 		}
> 		break;
107c123
< 
---
>     //line size is for bytes
123d138
<             {
131,135c146,149
< 			int l;
<                 	for ( l = 0; l < 3; ++l) ic[0][l] = p0[j + l];
< 			for ( l = 0; l < 3; ++l) ic[1][l] = p0[j + l + 3];
< 			for ( l = 0; l < 3; ++l) ic[2][l] = p0[j + l + lineSize];
< 			for ( l = 0; l < 3; ++l) ic[3][l] = p0[j + l + lineSize + 3];
---
>                 	for (int l = 0; l < 3; ++l) ic[0][l] = p0[j + l];
> 			for (int l = 0; l < 3; ++l) ic[1][l] = p0[j + l + 3];
> 			for (int l = 0; l < 3; ++l) ic[2][l] = p0[j + l + lineSize];
> 			for (int l = 0; l < 3; ++l) ic[3][l] = p0[j + l + lineSize + 3];
142c156
< 			    for ( l = 0; l < 3; ++l) p1[k + l] = (static_cast<unsigned int>(2) + ic[0][l] + ic[1][l] + ic[2][l] + ic[3][l]) >> 2;
---
> 			    for (int l = 0; l < 3; ++l) p1[k + l] = (static_cast<unsigned int>(2) + ic[0][l] + ic[1][l] + ic[2][l] + ic[3][l]) >> 2;
152c166,178
<             }
---
> 	    //handle 16bit data
> 	    case GDT_Int16:
> 	    	short *pint0 = reinterpret_cast<short*>(d0);
> 	        short *pint1 = reinterpret_cast<short*>(d1);
> 	        short minDataVal_short = m_minDataVal;
> 		//check if only 1 band is present
> 		if (bands == 1) {
> 	    	    for (int j = 0, k = 0; j < sx; j += 2, k += 1) {
> 			if ((pint0[j] < minDataVal_short)|| (pint0[j + 1] < minDataVal_short) || (pint0[j + sx*bands] < minDataVal_short) || (pint0[j + sx*bands + 1] < minDataVal_short)) pint1[k] = 0;
> 			else pint1[k] = (static_cast<short>(2) + pint0[j] + pint0[j + 1] + pint0[j + sx*bands] + pint0[j + sx*bands + 1]) >> 2;
> 			}
> 		}
> 		break;
192d217
<         {
212c237,252
<         }
---
> 	case GDT_Int16:
> 	   //handle 16bit DEM data 
> 	   //ensure only 1 band of data exists
> 	   //find tiles to drop
> 	   if(bands == 1){
> 	   	//fprintf(stderr,"Got Here bands");
> 		short *pint0 = reinterpret_cast<short*>(d0);
> 		short minDataVal_short = m_minDataVal;
> 	   	for (int j = 0; j < sx; j += 1) {
> 		    if (pint0[j] >= minDataVal_short) {
> 			delete d0;
> 			return false;
> 		    }
> 		}
> 	   }
> 	   break;
217c257
< 
---
>     
232d271
<     int  i;
234,237c273,276
<     for ( i = 0; i < blackIn; ++i) lut[i] = blackOut;
<     for ( i = blackIn; i < whiteIn; ++i) lut[i] = blackOut + ((whiteOut - blackOut) * (i - blackIn)) / (whiteIn - blackIn);
<     for ( i = whiteIn; i < 256; ++i) lut[i] = whiteOut;
<     for ( i = 0; i < keepBlack; ++i) lut[i] = 0;
---
>     for (int i = 0; i < blackIn; ++i) lut[i] = blackOut;
>     for (int i = blackIn; i < whiteIn; ++i) lut[i] = blackOut + ((whiteOut - blackOut) * (i - blackIn)) / (whiteIn - blackIn);
>     for (int i = whiteIn; i < 256; ++i) lut[i] = whiteOut;
>     for (int i = 0; i < keepBlack; ++i) lut[i] = 0;
