/** * The bitmasks field only occurs if the DIB Header is BITMAPINFOHEADER field and the compression * type is set to BI_BITFIELD * * @return a ComplexField containing the bitmask if it exists, null otherwise */ private ComplexField<BitfieldMask> buildOptionalBitmasks() { if (DIBHeader.getValue().Size.getValueAsEnum() == DIBHeaderSize.BITMAPINFOHEADER) { BitmapInfoHeader bitmapInfoHeader = (BitmapInfoHeader) DIBHeader.getValue(); if (bitmapInfoHeader.Compression.getValueAsEnum() == CompressionType.BI_BITFIELD) { return new ComplexField<BitfieldMask>("Bitfield Masks", BitfieldMask.class); } } return null; // no bitmap exists }
/** * The Color Palette field only exists if the DIB Header contains a ClrUsed field * (BITMAPINFOHEADER through BITMAPV5HEADER) and the ClrUsed field is non-0 * * @return a ComplexArrayField containing the Color Palette array if it exists, null otherwise */ private ComplexArrayField<RGBQuad> buildColorPaletteArray() { if (DIBHeader.getValue() instanceof BitmapInfoHeader) // if the header is at LEAST a BitmapInfoHeader { BitmapInfoHeader bitmapInfoHeader = (BitmapInfoHeader) DIBHeader.getValue(); int NumberOfElements = bitmapInfoHeader.ClrUsed.getValueAsInt(); return new ComplexArrayField<BmpHeaderMap.RGBQuad>( "Color Palette", RGBQuad.class, NumberOfElements); } return null; // no color palette exists }