} else if (raster instanceof ShortComponentRaster &&
raster.getNumDataElements() == 1 &&
((ShortComponentRaster)raster).getPixelStride() == 1)
{
SurfaceType sType = SurfaceType.AnyShort;
IndexColorModel icm = null;
if (cm instanceof DirectColorModel) {
DirectColorModel dcm = (DirectColorModel) cm;
int aMask = dcm.getAlphaMask();
int rMask = dcm.getRedMask();
int gMask = dcm.getGreenMask();
int bMask = dcm.getBlueMask();
if (numBands == 3 &&
aMask == 0 &&
rMask == DCM_555X_RED_MASK &&
gMask == DCM_555X_GREEN_MASK &&
bMask == DCM_555X_BLUE_MASK)
{
sType = SurfaceType.Ushort555Rgbx;
} else
if (numBands == 4 &&
aMask == DCM_4444_ALPHA_MASK &&
rMask == DCM_4444_RED_MASK &&
gMask == DCM_4444_GREEN_MASK &&
bMask == DCM_4444_BLUE_MASK)
{
sType = SurfaceType.Ushort4444Argb;
}
} else if (cm instanceof IndexColorModel) {
icm = (IndexColorModel)cm;
if (icm.getPixelSize() == 12) {
if (isOpaqueGray(icm)) {
sType = SurfaceType.Index12Gray;
} else {
sType = SurfaceType.UshortIndexed;
}