Adding new file types to the file type manager
The following is a brief example for how to use the file type management classes. The main viewpoint of the description is from the perspective of the developer whose purpose to insert his file type into the file type manager.
-
Create a callback function for your file type.
bool BMPTypeCallback(IChannel& ic, long* retVal) { UNUSED_PARAMETER(retVal); char buffer[2]; if (ic.ReadBin (buffer, 2) != NoError) return false; if (buffer[0] == 'B' && buffer[1] == 'M') return true; return false; } -
Create a FileTypeManager instance. There is no need to derive your own class
from FileTypeManager.
FTM::FileTypeManager moduleTypeManager ("Module"); -
Create storage for ids returned by group and type addition functions.
enum{ bmp, etc, typeCount }; FTM::TypeID typeID[typeCount]; enum{ image, vectorImage, rasterImage, groupCount }; FTM::GroupID groupID[groupCount]; -
Add groups to database.
groupID[image] = moduleTypeManager.AddGroup ("Images", IO::FileTypeManager::RootGroup); groupID[rasterImage] = moduleTypeManager.AddGroup ("Raster Images" ,groupID[image]); groupID[vectorImage] = moduleTypeManager.AddGroup ("Vector Images" ,groupID[image]); -
Add types into groups.
typeID[bmp] = moduleTypeManager.AddType (IO::FileType("Bitmap files", "bmp", 'GSAC', 'BMP', 145, BMPTypeCallback), groupID[rasterImage]); -
Optionally you can add your file type into groups created by other modules.
moduleTypeManager.AddTypeToGroup (typeID[bmp], someOtherGroup );