freeimage.h

FreeImage_GetFIFExtensionList

DLL_API const char *DLL_CALLCONV FreeImage_GetFIFExtensionList(FREE_IMAGE_FORMAT fif);

Devuelve una lista de extensiones de fichero, delimitada con comas, que describe los formatos de fichero que el plugin dado puede leer y/o escribir.

/**
Builds a series of string pairs that specify filters you can apply to load a file.
The filter string is to be used by a 'File Open' dialog box
(GetOpenFileName or CFileDialog).
@param szFilter Input and output parameter. szFilter is an array of char whose length
should be 2048 or more.
@return Returns the number of supported import formats
*/
int GetOpenFilterString(char *szFilter) {
    int i, iCount;
    char Filter[2048];
    char *token;
    // Build a string for 'All image files'
    Filter[0] = '\0';
    for(i = 0; i < FreeImage_GetFIFCount(); i++) {
        if(FreeImage_FIFSupportsReading((FREE_IMAGE_FORMAT)i)) {
            strcat(Filter, FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i));
            strcat(Filter, ",");
        }
    }
    Filter[strlen(Filter)-1] = '\0';
    strcpy(szFilter, "All image files|");
    token = strtok(Filter, ",");
    while(token != NULL) {
        strcat(szFilter, "*.");
        strcat(szFilter, token);
        strcat(szFilter, ";");
        // get next token
        token = strtok(NULL, ",");
    }
    szFilter[strlen(szFilter)-1] = '|';
    // Build a string for 'All files'
    strcat(szFilter, "All Files (*.*)|*.*|");

    // Build a string for each format
    Filter[0] = '\0';
    iCount = 0;
    for(i = 0; i < FreeImage_GetFIFCount(); i++) {
        if(FreeImage_FIFSupportsReading((FREE_IMAGE_FORMAT)i)) {
            // Description
            sprintf(Filter, "%s (%s)|", FreeImage_GetFIFDescription((FREE_IMAGE_FORMAT)i),
            FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i));
            strcat(szFilter, Filter);
            // Extension(s)
            strcpy(Filter, FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i));
            token = strtok(Filter, ",");
            while(token != NULL) {
                strcat(szFilter, "*.");
                strcat(szFilter, token);
                strcat(szFilter, ";");
                // get next token
                token = strtok(NULL, ",");
            }
            szFilter[strlen(szFilter)-1] = '|';
            iCount++;
        }
    }
    strcat(szFilter, "|");
    return iCount;
}