private void applyOverlay(int gg0000, WritableRaster raster,
int frameIndex, ImageReadParam param, int outBits, byte[] ovlyData) {
Attributes ovlyAttrs = metadata.getAttributes();
int grayscaleValue = 0xffff;
if (param instanceof DicomImageReadParam) {
DicomImageReadParam dParam = (DicomImageReadParam) param;
Attributes psAttrs = dParam.getPresentationState();
if (psAttrs != null) {
if (psAttrs.containsValue(Tag.OverlayData | gg0000))
ovlyAttrs = psAttrs;
grayscaleValue = Overlays.getRecommendedDisplayGrayscaleValue(
psAttrs, gg0000);
} else
grayscaleValue = dParam.getOverlayGrayscaleValue();
}
Overlays.applyOverlay(ovlyData != null ? 0 : frameIndex, raster,
ovlyAttrs, gg0000, grayscaleValue >>> (16-outBits), ovlyData);
}