in incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/MainBoxRegistry.java [79:151]
public Box create(final Reader reader, final int fourCC) throws IOException, DataStoreException {
switch (fourCC) {
case ChromaLocation.BOXTYPE: return new ChromaLocation(reader);
case ColourInformation.BOXTYPE: return new ColourInformation(reader);
case CombinaisonType.BOXTYPE: return new CombinaisonType(reader);
case ComponentDefinition.BOXTYPE: return reader.componentDefinition = new ComponentDefinition(reader);
case ComponentPalette.BOXTYPE: return new ComponentPalette(reader, reader.componentDefinition);
case ComponentPatternDefinition.BOXTYPE: return new ComponentPatternDefinition(reader, reader.componentDefinition);
case ComponentReferenceLevel.BOXTYPE: return new ComponentReferenceLevel(reader);
case ContentDescribes.BOXTYPE: return new ContentDescribes(reader);
case Copyright.BOXTYPE: return new Copyright(reader);
case CreationTime.BOXTYPE: return new CreationTime(reader);
case DepthMappingInformation.BOXTYPE: return new DepthMappingInformation(reader);
case DerivedImageReference.BOXTYPE: return new DerivedImageReference(reader);
case DisparityInformation.BOXTYPE: return new DisparityInformation(reader);
case ExtendedType.BOXTYPE: return new ExtendedType(reader);
case FDItemInfoExtension.BOXTYPE: return new FDItemInfoExtension(reader);
case FieldInterlace.BOXTYPE: return new FieldInterlace(reader);
case FieldInterlaceType.BOXTYPE: return new FieldInterlaceType(reader);
case FileType.BOXTYPE: return new FileType(reader);
case FramePackingInformation.BOXTYPE: return new FramePackingInformation(reader);
case FreeSpace.SKIP: // Fall through
case FreeSpace.BOXTYPE: return new FreeSpace();
case GroupList.BOXTYPE: return new GroupList(reader);
case HandlerReference.BOXTYPE: return new HandlerReference(reader);
case IdentifiedMediaData.BOXTYPE: return new IdentifiedMediaData(reader);
case ImagePyramid.BOXTYPE: return new ImagePyramid(reader);
case ImageSpatialExtents.BOXTYPE: return new ImageSpatialExtents(reader);
case ItemData.BOXTYPE: return new ItemData(reader);
case ItemInfo.BOXTYPE: return new ItemInfo(reader);
case ItemInfoEntry.BOXTYPE: return new ItemInfoEntry(reader);
case ItemLocation.BOXTYPE: return new ItemLocation(reader);
case ItemProperties.BOXTYPE: return new ItemProperties(reader);
case ItemPropertyAssociation.BOXTYPE: return new ItemPropertyAssociation(reader);
case ItemPropertyContainer.BOXTYPE: return new ItemPropertyContainer(reader);
case ItemReference.BOXTYPE: return new ItemReference(reader);
case MediaData.BOXTYPE: return new MediaData(reader);
case Meta.BOXTYPE: return new Meta(reader);
case ModelCRS.BOXTYPE: return new ModelCRS(reader);
case ModelTiePoint.BOXTYPE: return new ModelTiePoint(reader);
case ModelTransformation.BOXTYPE: return new ModelTransformation(reader);
case ModificationTime.BOXTYPE: return new ModificationTime(reader);
case Movie.BOXTYPE: return new Movie(reader);
case MovieHeader.BOXTYPE: return reader.movieHeader = new MovieHeader(reader);
case OriginalFileType.BOXTYPE: return new OriginalFileType(reader);
case PixelInformation.BOXTYPE: return new PixelInformation(reader);
case PolarizationPatternDefinition.BOXTYPE: return new PolarizationPatternDefinition(reader);
case PrimaryItem.BOXTYPE: return new PrimaryItem(reader);
case ProgressiveDownloadInfo.BOXTYPE: return new ProgressiveDownloadInfo(reader);
case SensorBadPixelsMap.BOXTYPE: return new SensorBadPixelsMap(reader);
case SensorNonUniformityCorrection.BOXTYPE: return new SensorNonUniformityCorrection(reader);
case TAIClockInfo.BOXTYPE: return new TAIClockInfo(reader);
case TAITimeStamp.BOXTYPE: return new TAITimeStamp(reader);
case TiledImageConfiguration.BOXTYPE: return new TiledImageConfiguration(reader);
case Track.BOXTYPE: return new Track(reader);
case TrackHeader.BOXTYPE: return new TrackHeader(reader, reader.movieHeader);
case UncompressedFrameConfig.BOXTYPE: return new UncompressedFrameConfig(reader, reader.componentDefinition);
case UserData.BOXTYPE: return new UserData(reader);
case UserDescription.BOXTYPE: return new UserDescription(reader);
case Extension.BOXTYPE: {
final ChannelDataInput input = reader.input;
return create(reader, new UUID(input.readLong(), input.readLong()));
}
}
// Search in user-specified registries.
for (BoxRegistry registry : registries) {
Box candidate = registry.create(reader, fourCC);
if (candidate != null) {
return candidate;
}
}
return super.create(reader, fourCC);
}