www.pudn.com > vcmatlab20060426WaterMark.zip > iofun_private_imbmpinfo.cpp


// 
// MATLAB Compiler: 2.2 
// Date: Tue May 10 11:47:30 2005 
// Arguments: "-B" "macro_default" "-O" "all" "-O" "fold_scalar_mxarrays:on" 
// "-O" "fold_non_scalar_mxarrays:on" "-O" "optimize_integer_for_loops:on" "-O" 
// "array_indexing:on" "-O" "optimize_conditionals:on" "-B" "sglcpp" "-p" "-W" 
// "main" "-L" "Cpp" "-t" "-T" "link:exe" "-h" "libmmfile.mlib" "-W" "mainhg" 
// "libmwsglm.mlib" "huatu"  
// 
#include "iofun_private_imbmpinfo.hpp" 
#include "libmatlbm.hpp" 
#include "libmmfile.hpp" 
 
static mxChar _array1_[164] = { 'R', 'u', 'n', '-', 't', 'i', 'm', 'e', ' ', 
                                'E', 'r', 'r', 'o', 'r', ':', ' ', 'F', 'i', 
                                'l', 'e', ':', ' ', 'i', 'o', 'f', 'u', 'n', 
                                '/', 'p', 'r', 'i', 'v', 'a', 't', 'e', '/', 
                                'i', 'm', 'b', 'm', 'p', 'i', 'n', 'f', 'o', 
                                ' ', 'L', 'i', 'n', 'e', ':', ' ', '1', ' ', 
                                'C', 'o', 'l', 'u', 'm', 'n', ':', ' ', '1', 
                                ' ', 'T', 'h', 'e', ' ', 'f', 'u', 'n', 'c', 
                                't', 'i', 'o', 'n', ' ', '"', 'i', 'o', 'f', 
                                'u', 'n', '/', 'p', 'r', 'i', 'v', 'a', 't', 
                                'e', '/', 'i', 'm', 'b', 'm', 'p', 'i', 'n', 
                                'f', 'o', '"', ' ', 'w', 'a', 's', ' ', 'c', 
                                'a', 'l', 'l', 'e', 'd', ' ', 'w', 'i', 't', 
                                'h', ' ', 'm', 'o', 'r', 'e', ' ', 't', 'h', 
                                'a', 'n', ' ', 't', 'h', 'e', ' ', 'd', 'e', 
                                'c', 'l', 'a', 'r', 'e', 'd', ' ', 'n', 'u', 
                                'm', 'b', 'e', 'r', ' ', 'o', 'f', ' ', 'o', 
                                'u', 't', 'p', 'u', 't', 's', ' ', '(', '2', 
                                ')', '.' }; 
static mwArray _mxarray0_ = mclInitializeString(164, _array1_); 
 
static mxChar _array3_[163] = { 'R', 'u', 'n', '-', 't', 'i', 'm', 'e', ' ', 
                                'E', 'r', 'r', 'o', 'r', ':', ' ', 'F', 'i', 
                                'l', 'e', ':', ' ', 'i', 'o', 'f', 'u', 'n', 
                                '/', 'p', 'r', 'i', 'v', 'a', 't', 'e', '/', 
                                'i', 'm', 'b', 'm', 'p', 'i', 'n', 'f', 'o', 
                                ' ', 'L', 'i', 'n', 'e', ':', ' ', '1', ' ', 
                                'C', 'o', 'l', 'u', 'm', 'n', ':', ' ', '1', 
                                ' ', 'T', 'h', 'e', ' ', 'f', 'u', 'n', 'c', 
                                't', 'i', 'o', 'n', ' ', '"', 'i', 'o', 'f', 
                                'u', 'n', '/', 'p', 'r', 'i', 'v', 'a', 't', 
                                'e', '/', 'i', 'm', 'b', 'm', 'p', 'i', 'n', 
                                'f', 'o', '"', ' ', 'w', 'a', 's', ' ', 'c', 
                                'a', 'l', 'l', 'e', 'd', ' ', 'w', 'i', 't', 
                                'h', ' ', 'm', 'o', 'r', 'e', ' ', 't', 'h', 
                                'a', 'n', ' ', 't', 'h', 'e', ' ', 'd', 'e', 
                                'c', 'l', 'a', 'r', 'e', 'd', ' ', 'n', 'u', 
                                'm', 'b', 'e', 'r', ' ', 'o', 'f', ' ', 'i', 
                                'n', 'p', 'u', 't', 's', ' ', '(', '1', ')', 
                                '.' }; 
static mwArray _mxarray2_ = mclInitializeString(163, _array3_); 
static mwArray _mxarray4_ = mclInitializeDoubleVector(0, 0, (double *)NULL); 
static mwArray _mxarray5_ = mclInitializeCharVector(0, 0, (mxChar *)NULL); 
 
static mxChar _array7_[25] = { 'F', 'I', 'L', 'E', 'N', 'A', 'M', 'E', ' ', 
                               'm', 'u', 's', 't', ' ', 'b', 'e', ' ', 'a', 
                               ' ', 's', 't', 'r', 'i', 'n', 'g' }; 
static mwArray _mxarray6_ = mclInitializeString(25, _array7_); 
 
static mxChar _array9_[1] = { 'r' }; 
static mwArray _mxarray8_ = mclInitializeString(1, _array9_); 
 
static mxChar _array11_[7] = { 'i', 'e', 'e', 'e', '-', 'l', 'e' }; 
static mwArray _mxarray10_ = mclInitializeString(7, _array11_); 
static mwArray _mxarray12_ = mclInitializeDouble(-1.0); 
 
static mxChar _array14_[3] = { 'b', 'm', 'p' }; 
static mwArray _mxarray13_ = mclInitializeString(3, _array14_); 
static mwArray _mxarray15_ = mclInitializeDouble(2.0); 
 
static mxChar _array17_[5] = { 'u', 'i', 'n', 't', '8' }; 
static mwArray _mxarray16_ = mclInitializeString(5, _array17_); 
 
static mxChar _array19_[10] = { 'E', 'm', 'p', 't', 'y', 
                                ' ', 'f', 'i', 'l', 'e' }; 
static mwArray _mxarray18_ = mclInitializeString(10, _array19_); 
 
static mxChar _array21_[2] = { 'B', 'M' }; 
static mwArray _mxarray20_ = mclInitializeString(2, _array21_); 
static mwArray _mxarray22_ = mclInitializeDouble(1.0); 
 
static mxChar _array24_[6] = { 'u', 'i', 'n', 't', '3', '2' }; 
static mwArray _mxarray23_ = mclInitializeString(6, _array24_); 
static mwArray _mxarray25_ = mclInitializeDouble(4.0); 
 
static mxChar _array27_[3] = { 'c', 'o', 'f' }; 
static mwArray _mxarray26_ = mclInitializeString(3, _array27_); 
 
static mxChar _array29_[16] = { 'T', 'r', 'u', 'n', 'c', 'a', 't', 'e', 
                                'd', ' ', 'h', 'e', 'a', 'd', 'e', 'r' }; 
static mwArray _mxarray28_ = mclInitializeString(16, _array29_); 
static mwArray _mxarray30_ = mclInitializeDouble(12.0); 
 
static mxChar _array32_[5] = { 'i', 'n', 't', '1', '6' }; 
static mwArray _mxarray31_ = mclInitializeString(5, _array32_); 
static mwArray _mxarray33_ = mclInitializeDouble(0.0); 
 
static mxChar _array35_[24] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', 
                                '1', ' ', '(', 'I', 'B', 'M', ' ', 'O', 
                                'S', '/', '2', ' ', '1', '.', 'x', ')' }; 
static mwArray _mxarray34_ = mclInitializeString(24, _array35_); 
static mwArray _mxarray36_ = mclInitializeDouble(-4.0); 
 
static mxChar _array38_[6] = { 'u', 'i', 'n', 't', '1', '6' }; 
static mwArray _mxarray37_ = mclInitializeString(6, _array38_); 
 
static mxChar _array40_[33] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', '2', 
                                ' ', '(', 'M', 'i', 'c', 'r', 'o', 's', 'o', 
                                'f', 't', ' ', 'W', 'i', 'n', 'd', 'o', 'w', 
                                's', ' ', '2', '.', 'x', ')' }; 
static mwArray _mxarray39_ = mclInitializeString(33, _array40_); 
static mwArray _mxarray41_ = mclInitializeDouble(40.0); 
static mwArray _mxarray42_ = mclInitializeDouble(3.0); 
 
static mxChar _array44_[32] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', 
                                '3', ' ', '(', 'M', 'i', 'c', 'r', 'o', 
                                's', 'o', 'f', 't', ' ', 'W', 'i', 'n', 
                                'd', 'o', 'w', 's', ' ', 'N', 'T', ')' }; 
static mwArray _mxarray43_ = mclInitializeString(32, _array44_); 
 
static mxChar _array46_[33] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', '3', 
                                ' ', '(', 'M', 'i', 'c', 'r', 'o', 's', 'o', 
                                'f', 't', ' ', 'W', 'i', 'n', 'd', 'o', 'w', 
                                's', ' ', '3', '.', 'x', ')' }; 
static mwArray _mxarray45_ = mclInitializeString(33, _array46_); 
static mwArray _mxarray47_ = mclInitializeDouble(108.0); 
 
static mxChar _array49_[32] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', 
                                '4', ' ', '(', 'M', 'i', 'c', 'r', 'o', 
                                's', 'o', 'f', 't', ' ', 'W', 'i', 'n', 
                                'd', 'o', 'w', 's', ' ', '9', '5', ')' }; 
static mwArray _mxarray48_ = mclInitializeString(32, _array49_); 
static mwArray _mxarray50_ = mclInitializeDouble(64.0); 
 
static mxChar _array52_[24] = { 'V', 'e', 'r', 's', 'i', 'o', 'n', ' ', 
                                '2', ' ', '(', 'I', 'B', 'M', ' ', 'O', 
                                'S', '/', '2', ' ', '2', '.', 'x', ')' }; 
static mwArray _mxarray51_ = mclInitializeString(24, _array52_); 
 
static mxChar _array54_[16] = { 'C', 'o', 'r', 'r', 'u', 'p', 't', 'e', 
                                'd', ' ', 'h', 'e', 'a', 'd', 'e', 'r' }; 
static mwArray _mxarray53_ = mclInitializeString(16, _array54_); 
 
static mxChar _array56_[4] = { 'n', 'o', 'n', 'e' }; 
static mwArray _mxarray55_ = mclInitializeString(4, _array56_); 
 
static mxChar _array58_[9] = { '8', '-', 'b', 'i', 't', ' ', 'R', 'L', 'E' }; 
static mwArray _mxarray57_ = mclInitializeString(9, _array58_); 
 
static mxChar _array60_[9] = { '4', '-', 'b', 'i', 't', ' ', 'R', 'L', 'E' }; 
static mwArray _mxarray59_ = mclInitializeString(9, _array60_); 
 
static mxChar _array62_[9] = { 'b', 'i', 't', 'f', 'i', 'e', 'l', 'd', 's' }; 
static mwArray _mxarray61_ = mclInitializeString(9, _array62_); 
 
static mxChar _array64_[10] = { 'H', 'u', 'f', 'f', 'm', 
                                'a', 'n', ' ', '1', 'D' }; 
static mwArray _mxarray63_ = mclInitializeString(10, _array64_); 
 
static mxChar _array66_[10] = { '2', '4', '-', 'b', 'i', 
                                't', ' ', 'R', 'L', 'E' }; 
static mwArray _mxarray65_ = mclInitializeString(10, _array66_); 
 
static mxChar _array68_[29] = { 'U', 'n', 'r', 'e', 'c', 'o', 'g', 'n', 
                                'i', 'z', 'e', 'd', ' ', 'c', 'o', 'm', 
                                'p', 'r', 'e', 's', 's', 'i', 'o', 'n', 
                                ' ', 't', 'y', 'p', 'e' }; 
static mwArray _mxarray67_ = mclInitializeString(29, _array68_); 
 
static mxChar _array70_[2] = { 'B', 'A' }; 
static mwArray _mxarray69_ = mclInitializeString(2, _array70_); 
 
static mxChar _array72_[47] = { 'U', 'n', 's', 'u', 'p', 'p', 'o', 'r', 
                                't', 'e', 'd', ' ', 'f', 'o', 'r', 'm', 
                                'a', 't', ';', ' ', 'm', 'a', 'y', ' ', 
                                'b', 'e', ' ', 'a', 'n', ' ', 'O', 'S', 
                                '/', '2', ' ', 'b', 'i', 't', 'm', 'a', 
                                'p', ' ', 'a', 'r', 'r', 'a', 'y' }; 
static mwArray _mxarray71_ = mclInitializeString(47, _array72_); 
 
static mxChar _array74_[14] = { 'N', 'o', 't', ' ', 'a', ' ', 'B', 
                                'M', 'P', ' ', 'f', 'i', 'l', 'e' }; 
static mwArray _mxarray73_ = mclInitializeString(14, _array74_); 
 
static mxChar _array76_[23] = { 'T', 'r', 'u', 'n', 'c', 'a', 't', 'e', 
                                'd', ' ', 'c', 'o', 'l', 'o', 'r', 'm', 
                                'a', 'p', ' ', 'd', 'a', 't', 'a' }; 
static mwArray _mxarray75_ = mclInitializeString(23, _array76_); 
static mwArray _mxarray77_ = mclInitializeDouble(255.0); 
 
static mxChar _array79_[5] = { 'i', 'n', 't', '3', '2' }; 
static mwArray _mxarray78_ = mclInitializeString(5, _array79_); 
static mwArray _mxarray80_ = mclInitializeDouble(32.0); 
 
static mxChar _array82_[63] = { 'B', 'M', 'P', ' ', 'V', 'e', 'r', 's', 'i', 
                                'o', 'n', ' ', '3', ' ', '(', 'M', 'i', 'c', 
                                'r', 'o', 's', 'o', 'f', 't', ' ', 'W', 'i', 
                                'n', 'd', 'o', 'w', 's', ' ', 'N', 'T', ')', 
                                ' ', 'f', 'i', 'l', 'e', ' ', 'a', 'p', 'p', 
                                'e', 'a', 'r', 's', ' ', 't', 'o', ' ', 'b', 
                                'e', ' ', 'c', 'o', 'r', 'r', 'u', 'p', 't' }; 
static mwArray _mxarray81_ = mclInitializeString(63, _array82_); 
static mwArray _mxarray83_ = mclInitializeDouble(16.0); 
 
static mxChar _array85_[63] = { 'B', 'M', 'P', ' ', 'V', 'e', 'r', 's', 'i', 
                                'o', 'n', ' ', '4', ' ', '(', 'M', 'i', 'c', 
                                'r', 'o', 's', 'o', 'f', 't', ' ', 'W', 'i', 
                                'n', 'd', 'o', 'w', 's', ' ', '9', '5', ')', 
                                ' ', 'f', 'i', 'l', 'e', ' ', 'a', 'p', 'p', 
                                'e', 'a', 'r', 's', ' ', 't', 'o', ' ', 'b', 
                                'e', ' ', 'c', 'o', 'r', 'r', 'u', 'p', 't' }; 
static mwArray _mxarray84_ = mclInitializeString(63, _array85_); 
 
static mxChar _array87_[12] = { 'p', 'i', 'x', 'e', 'l', 's', 
                                '/', 'm', 'e', 't', 'e', 'r' }; 
static mwArray _mxarray86_ = mclInitializeString(12, _array87_); 
 
static mxChar _array89_[7] = { 'u', 'n', 'k', 'n', 'o', 'w', 'n' }; 
static mwArray _mxarray88_ = mclInitializeString(7, _array89_); 
 
static mxChar _array91_[15] = { 'e', 'r', 'r', 'o', 'r', ' ', 'd', 'i', 
                                'f', 'f', 'u', 's', 'i', 'o', 'n' }; 
static mwArray _mxarray90_ = mclInitializeString(15, _array91_); 
 
static mxChar _array93_[5] = { 'P', 'A', 'N', 'D', 'A' }; 
static mwArray _mxarray92_ = mclInitializeString(5, _array93_); 
 
static mxChar _array95_[12] = { 's', 'u', 'p', 'e', 'r', '-', 
                                'c', 'i', 'r', 'c', 'l', 'e' }; 
static mwArray _mxarray94_ = mclInitializeString(12, _array95_); 
 
static mxChar _array97_[3] = { 'R', 'G', 'B' }; 
static mwArray _mxarray96_ = mclInitializeString(3, _array97_); 
 
static mxChar _array99_[34] = { 'P', 'r', 'o', 'b', 'l', 'e', 'm', ' ', 'i', 
                                'd', 'e', 'n', 't', 'i', 'f', 'y', 'i', 'n', 
                                'g', ' ', 'f', 'o', 'r', 'm', 'a', 't', ' ', 
                                'v', 'e', 'r', 's', 'i', 'o', 'n' }; 
static mwArray _mxarray98_ = mclInitializeString(34, _array99_); 
 
static mxChar _array101_[7] = { 'i', 'n', 'd', 'e', 'x', 'e', 'd' }; 
static mwArray _mxarray100_ = mclInitializeString(7, _array101_); 
static mwArray _mxarray102_ = mclInitializeDouble(8.0); 
 
static mxChar _array104_[9] = { 'g', 'r', 'a', 'y', 's', 'c', 'a', 'l', 'e' }; 
static mwArray _mxarray103_ = mclInitializeString(9, _array104_); 
 
static mxChar _array106_[9] = { 't', 'r', 'u', 'e', 'c', 'o', 'l', 'o', 'r' }; 
static mwArray _mxarray105_ = mclInitializeString(9, _array106_); 
 
static mxChar _array108_[38] = { 'C', 'o', 'r', 'r', 'u', 'p', 't', ' ', 
                                 'B', 'M', 'P', ' ', 'f', 'i', 'l', 'e', 
                                 ':', ' ', 'b', 'a', 'd', ' ', 'i', 'm', 
                                 'a', 'g', 'e', ' ', 'd', 'i', 'm', 'e', 
                                 'n', 's', 'i', 'o', 'n', 's' }; 
static mwArray _mxarray107_ = mclInitializeString(38, _array108_); 
 
void InitializeModule_iofun_private_imbmpinfo() { 
} 
 
void TerminateModule_iofun_private_imbmpinfo() { 
} 
 
static mwArray Miofun_private_imbmpinfo(mwArray * msg, 
                                        int nargout_, 
                                        mwArray filename); 
 
_mexLocalFunctionTable _local_function_table_iofun_private_imbmpinfo 
  = { 0, (mexFunctionTableEntry *)NULL }; 
 
// 
// The function "iofun_private_imbmpinfo" contains the normal interface for the 
// "iofun/private/imbmpinfo" M-function from file 
// "D:\matlab\matlab\toolbox\matlab\iofun\private\imbmpinfo.m" (lines 1-470). 
// This function processes any input arguments and passes them to the 
// implementation version of the function, appearing above. 
// 
mwArray iofun_private_imbmpinfo(mwArray * msg, mwArray filename) { 
    int nargout(1); 
    mwArray info(mclGetUninitializedArray()); 
    mwArray msg__(mclGetUninitializedArray()); 
    if (msg != NULL) { 
        ++nargout; 
    } 
    info = Miofun_private_imbmpinfo(&msg__, nargout, filename); 
    if (msg != NULL) { 
        *msg = msg__; 
    } 
    return info; 
} 
 
// 
// The function "mlxIofun_private_imbmpinfo" contains the feval interface for 
// the "iofun/private/imbmpinfo" M-function from file 
// "D:\matlab\matlab\toolbox\matlab\iofun\private\imbmpinfo.m" (lines 1-470). 
// The feval function calls the implementation version of 
// iofun/private/imbmpinfo through this function. This function processes any 
// input arguments and passes them to the implementation version of the 
// function, appearing above. 
// 
void mlxIofun_private_imbmpinfo(int nlhs, 
                                mxArray * plhs[], 
                                int nrhs, 
                                mxArray * prhs[]) { 
    MW_BEGIN_MLX(); 
    { 
        mwArray mprhs[1]; 
        mwArray mplhs[2]; 
        int i; 
        mclCppUninitializeArrays(2, mplhs); 
        if (nlhs > 2) { 
            error(_mxarray0_); 
        } 
        if (nrhs > 1) { 
            error(_mxarray2_); 
        } 
        for (i = 0; i < 1 && i < nrhs; ++i) { 
            mprhs[i] = mwArray(prhs[i], 0); 
        } 
        for (; i < 1; ++i) { 
            mprhs[i].MakeDIN(); 
        } 
        mplhs[0] = Miofun_private_imbmpinfo(&mplhs[1], nlhs, mprhs[0]); 
        plhs[0] = mplhs[0].FreezeData(); 
        for (i = 1; i < 2 && i < nlhs; ++i) { 
            plhs[i] = mplhs[i].FreezeData(); 
        } 
    } 
    MW_END_MLX(); 
} 
 
// 
// The function "Miofun_private_imbmpinfo" is the implementation version of the 
// "iofun/private/imbmpinfo" M-function from file 
// "D:\matlab\matlab\toolbox\matlab\iofun\private\imbmpinfo.m" (lines 1-470). 
// It contains the actual compiled code for that M-function. It is a static 
// function and must only be called from one of the interface functions, 
// appearing below. 
// 
// 
// function [info,msg] = imbmpinfo(filename) 
// 
static mwArray Miofun_private_imbmpinfo(mwArray * msg, 
                                        int nargout_, 
                                        mwArray filename) { 
    mwLocalFunctionTable save_local_function_table_ 
      (&_local_function_table_iofun_private_imbmpinfo); 
    mwArray info(mclGetUninitializedArray()); 
    mwArray encoding(mclGetUninitializedArray()); 
    mwArray halftoning(mclGetUninitializedArray()); 
    mwArray units(mclGetUninitializedArray()); 
    mwArray count(mclGetUninitializedArray()); 
    mwArray map(mclGetUninitializedArray()); 
    mwArray compression(mclGetUninitializedArray()); 
    mwArray ans(mclGetUninitializedArray()); 
    mwArray d(mclGetUninitializedArray()); 
    mwArray m(mclGetUninitializedArray()); 
    mwArray fid(mclGetUninitializedArray()); 
    // 
    // %IMBMPINFO Get information about the image in a BMP file. 
    // %   [INFO,MSG] = IMBMPINFO(FILENAME) returns information about 
    // %   the image contained in a BMP file.  If the attempt fails for 
    // %   some reason (e.g. the file does not exist or is not a BMP 
    // %   file), then INFO is empty and MSG is a string containing a 
    // %   diagnostic message. 
    // % 
    // %   See also IMREAD, IMWRITE, IMFINFO. 
    //  
    // %   Steven L. Eddins, June 1996 
    // %   Copyright 1984-2001 The MathWorks, Inc.  
    // %   $Revision: 1.11 $  $Date: 2001/04/15 12:02:00 $ 
    //  
    // %   Required reading before editing this file: Encyclopedia of 
    // %   Graphics File Formats, 2nd ed., pp. 572-591, pp. 630-650. 
    //  
    // % This function should not call error()!  -SLE 
    //  
    // info = []; 
    // 
    info = _mxarray4_; 
    // 
    // msg = ''; 
    // 
    *msg = _mxarray5_; 
    // 
    //  
    // if (~isstr(filename)) 
    // 
    if (mclNotBool(mwVe(isstr(mwVa(filename, "filename"))))) { 
        // 
        // msg = 'FILENAME must be a string'; 
        // 
        *msg = _mxarray6_; 
        // 
        // return; 
        // 
        goto return_; 
    // 
    // end 
    // 
    } 
    // 
    //  
    // [fid,m] = fopen(filename, 'r', 'ieee-le');  % BMP files are little-endian 
    // 
    fid = fopen(&m, mwVa(filename, "filename"), _mxarray8_, _mxarray10_); 
    // 
    // if (fid == -1) 
    // 
    if (mclEqBool(mwVv(fid, "fid"), _mxarray12_)) { 
        // 
        // info = []; 
        // 
        info = _mxarray4_; 
        // 
        // msg = m; 
        // 
        *msg = mwVsv(m, "m"); 
        // 
        // return; 
        // 
        goto return_; 
    // 
    // end 
    // 
    } 
    // 
    // filename = fopen(fid);  % Get the full path name if not in pwd 
    // 
    filename = fopen(mwVv(fid, "fid")); 
    // 
    // d = dir(filename);      % Read directory information 
    // 
    d = Ndir(1, mwVa(filename, "filename")); 
    // 
    //  
    // % 
    // % Initialize universal structure fields to fix the order 
    // % 
    // info.Filename = filename; 
    // 
    info.field("Filename") = mwVsa(filename, "filename"); 
    // 
    // info.FileModDate = d.date; 
    // 
    info.field("FileModDate") = mwVsv(d, "d").field("date"); 
    // 
    // info.FileSize = d.bytes; 
    // 
    info.field("FileSize") = mwVsv(d, "d").field("bytes"); 
    // 
    // info.Format = 'bmp'; 
    // 
    info.field("Format") = _mxarray13_; 
    // 
    // info.FormatVersion = []; 
    // 
    info.field("FormatVersion") = _mxarray4_; 
    // 
    // info.Width = []; 
    // 
    info.field("Width") = _mxarray4_; 
    // 
    // info.Height = []; 
    // 
    info.field("Height") = _mxarray4_; 
    // 
    // info.BitDepth = []; 
    // 
    info.field("BitDepth") = _mxarray4_; 
    // 
    // info.ColorType = []; 
    // 
    info.field("ColorType") = _mxarray4_; 
    // 
    // info.FormatSignature = []; 
    // 
    info.field("FormatSignature") = _mxarray4_; 
    // 
    //  
    // % 
    // % Initialize BMP-specific structure fields to fix the order 
    // % 
    // info.NumColormapEntries = []; 
    // 
    info.field("NumColormapEntries") = _mxarray4_; 
    // 
    // info.Colormap = []; 
    // 
    info.field("Colormap") = _mxarray4_; 
    // 
    // info.RedMask = []; 
    // 
    info.field("RedMask") = _mxarray4_; 
    // 
    // info.GreenMask = []; 
    // 
    info.field("GreenMask") = _mxarray4_; 
    // 
    // info.BlueMask = []; 
    // 
    info.field("BlueMask") = _mxarray4_; 
    // 
    //  
    //  
    // % 
    // % First we must determine which variant of BMP we have. 
    // % Use the algorithm from Encyclopedia of Graphics File Formats, 
    // % 2ed, pp. 584-585 
    // % 
    // info.FormatSignature = char(fread(fid, 2, 'uint8')'); 
    // 
    info.field("FormatSignature") 
    = char_func( 
        mwVarargin( 
          ctranspose( 
            mwVe(fread(mwVv(fid, "fid"), _mxarray15_, _mxarray16_))))); 
    // 
    // if (isempty(info.FormatSignature)) 
    // 
    if (tobool( 
          mwVe( 
            feval( 
              mwValueVarargout(), 
              mlxIsempty, 
              mwVarargin( 
                mwVe(mwVsv(info, "info").field("FormatSignature"))))))) { 
        // 
        // info = []; 
        // 
        info = _mxarray4_; 
        // 
        // msg = 'Empty file'; 
        // 
        *msg = _mxarray18_; 
        // 
        // fclose(fid); 
        // 
        ans.EqAns(fclose(mwVv(fid, "fid"))); 
        // 
        // return; 
        // 
        goto return_; 
    // 
    // end 
    // 
    } 
    // 
    //  
    // if (strcmp(info.FormatSignature, 'BM')) 
    // 
    if (tobool( 
          mwVe( 
            feval( 
              mwValueVarargout(), 
              mlxStrcmp, 
              mwVarargin( 
                mwVe(mwVsv(info, "info").field("FormatSignature")), 
                _mxarray20_))))) { 
        // 
        // % We have a single-image BMP file. It may be  
        // % a Windows or an OS/2 file. 
        // info.FileSize = fread(fid, 1, 'uint32'); 
        // 
        info.field("FileSize") 
        = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
        // 
        // fseek(fid, 4, 'cof');  % skip 2 reserved 16-bit words 
        // 
        ans.EqAns(fseek(mwVv(fid, "fid"), _mxarray25_, _mxarray26_)); 
        // 
        // info.ImageDataOffset = fread(fid, 1, 'uint32'); 
        // 
        info.field("ImageDataOffset") 
        = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
        // 
        // info.BitmapHeaderSize = fread(fid, 1, 'uint32'); 
        // 
        info.field("BitmapHeaderSize") 
        = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
        // 
        //  
        // if (isempty(info.BitmapHeaderSize)) 
        // 
        if (tobool( 
              mwVe( 
                feval( 
                  mwValueVarargout(), 
                  mlxIsempty, 
                  mwVarargin( 
                    mwVe(mwVsv(info, "info").field("BitmapHeaderSize"))))))) { 
            // 
            // info = []; 
            // 
            info = _mxarray4_; 
            // 
            // msg = 'Truncated header'; 
            // 
            *msg = _mxarray28_; 
            // 
            // fclose(fid); 
            // 
            ans.EqAns(fclose(mwVv(fid, "fid"))); 
            // 
            // return; 
            // 
            goto return_; 
        // 
        // end 
        // 
        } 
        // 
        //  
        // compression = []; 
        // 
        compression = _mxarray4_; 
        // 
        // switch info.BitmapHeaderSize 
        // 
        { 
            mwArray v_(mwVe(mwVsv(info, "info").field("BitmapHeaderSize"))); 
            if (switchcompare(v_, _mxarray30_)) { 
                // 
                // case 12 
                // info.Width = fread(fid, 1, 'int16'); 
                // 
                info.field("Width") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray31_); 
                // 
                // info.Height = fread(fid, 1, 'int16'); 
                // 
                info.field("Height") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray31_); 
                // 
                // if (isempty(info.Width) | isempty(info.Height)) 
                // 
                { 
                    mwArray a_ 
                      (mwVe( 
                         feval( 
                           mwValueVarargout(), 
                           mlxIsempty, 
                           mwVarargin( 
                             mwVe(mwVsv(info, "info").field("Width")))))); 
                    if (tobool(a_) 
                        || tobool( 
                             a_ 
                             | mwVe( 
                                 feval( 
                                   mwValueVarargout(), 
                                   mlxIsempty, 
                                   mwVarargin( 
                                     mwVe( 
                                       mwVsv(info, "info").field( 
                                         "Height"))))))) { 
                        // 
                        // info = []; 
                        // 
                        info = _mxarray4_; 
                        // 
                        // msg = 'Truncated header'; 
                        // 
                        *msg = _mxarray28_; 
                        // 
                        // fclose(fid); 
                        // 
                        ans.EqAns(fclose(mwVv(fid, "fid"))); 
                        // 
                        // return; 
                        // 
                        goto return_; 
                    } else { 
                    } 
                // 
                // end 
                // 
                } 
                // 
                // if ((info.Width < 0) | (info.Height < 0)) 
                // 
                { 
                    mwArray a_ 
                      (feval( 
                         mwValueVarargout(), 
                         mlxLt, 
                         mwVarargin( 
                           mwVe(mwVsv(info, "info").field("Width")), 
                           _mxarray33_))); 
                    if (tobool(a_) 
                        || tobool( 
                             a_ 
                             | feval( 
                                 mwValueVarargout(), 
                                 mlxLt, 
                                 mwVarargin( 
                                   mwVe(mwVsv(info, "info").field("Height")), 
                                   _mxarray33_)))) { 
                        // 
                        // info.FormatVersion = 'Version 1 (IBM OS/2 1.x)'; 
                        // 
                        info.field("FormatVersion") = _mxarray34_; 
                        // 
                        // fseek(fid, -4, 'cof'); 
                        // 
                        ans.EqAns( 
                          fseek(mwVv(fid, "fid"), _mxarray36_, _mxarray26_)); 
                        // 
                        // info.Width = fread(fid, 1, 'uint16'); 
                        // 
                        info.field("Width") 
                        = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
                        // 
                        // info.Height = fread(fid, 1, 'uint16'); 
                        // 
                        info.field("Height") 
                        = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
                    // 
                    // else 
                    // 
                    } else { 
                        // 
                        // info.FormatVersion = 'Version 2 (Microsoft Windows 2.x)'; 
                        // 
                        info.field("FormatVersion") = _mxarray39_; 
                    } 
                // 
                // end 
                // 
                } 
                // 
                //  
                // info.NumPlanes = fread(fid, 1, 'uint16'); 
                // 
                info.field("NumPlanes") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
                // 
                // info.BitDepth = fread(fid, 1, 'uint16'); 
                // 
                info.field("BitDepth") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
            // 
            //  
            // case 40 
            // 
            } else if (switchcompare(v_, _mxarray41_)) { 
                // 
                // info.Width = fread(fid, 1, 'uint32'); 
                // 
                info.field("Width") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // info.Height = fread(fid, 1, 'uint32'); 
                // 
                info.field("Height") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // info.NumPlanes = fread(fid, 1, 'uint16'); 
                // 
                info.field("NumPlanes") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
                // 
                // info.BitDepth = fread(fid, 1, 'uint16'); 
                // 
                info.field("BitDepth") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
                // 
                //  
                // compression = fread(fid, 1, 'uint32'); 
                // 
                compression = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // if (isempty(compression)) 
                // 
                if (tobool(mwVe(isempty(mwVv(compression, "compression"))))) { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Truncated header'; 
                    // 
                    *msg = _mxarray28_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                // 
                // end 
                // 
                } 
                // 
                // if (compression == 3) 
                // 
                if (mclEqBool(mwVv(compression, "compression"), _mxarray42_)) { 
                    // 
                    // info.FormatVersion = 'Version 3 (Microsoft Windows NT)' 
                    // 
                    info.field("FormatVersion") = _mxarray43_; 
                    mwVsv(info, "info").Print("info"); 
                // 
                // else 
                // 
                } else { 
                    // 
                    // info.FormatVersion = 'Version 3 (Microsoft Windows 3.x)'; 
                    // 
                    info.field("FormatVersion") = _mxarray45_; 
                // 
                // end 
                // 
                } 
            // 
            //  
            // case 108 
            // 
            } else if (switchcompare(v_, _mxarray47_)) { 
                // 
                //  
                // info.FormatVersion = 'Version 4 (Microsoft Windows 95)'; 
                // 
                info.field("FormatVersion") = _mxarray48_; 
                // 
                // compression = fread(fid, 1, 'uint32'); 
                // 
                compression = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // if (isempty(compression)) 
                // 
                if (tobool(mwVe(isempty(mwVv(compression, "compression"))))) { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Truncated header'; 
                    // 
                    *msg = _mxarray28_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                // 
                // end 
                // 
                } 
            // 
            //  
            // otherwise 
            // 
            } else { 
                // 
                //  
                // if ((info.HeaderSize > 12) & (info.HeaderSize <= 64)) 
                // 
                mwArray a_ 
                  (feval( 
                     mwValueVarargout(), 
                     mlxGt, 
                     mwVarargin( 
                       mwVe(mwVsv(info, "info").field("HeaderSize")), 
                       _mxarray30_))); 
                if (tobool(a_) 
                    && tobool( 
                         a_ 
                         & feval( 
                             mwValueVarargout(), 
                             mlxLe, 
                             mwVarargin( 
                               mwVe(mwVsv(info, "info").field("HeaderSize")), 
                               _mxarray50_)))) { 
                    // 
                    // info.FormatVersion = 'Version 2 (IBM OS/2 2.x)'; 
                    // 
                    info.field("FormatVersion") = _mxarray51_; 
                    // 
                    // compression = fread(fid, 1, 'uint32'); 
                    // 
                    compression 
                      = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                    // 
                    // if (isempty(compression)) 
                    // 
                    if (tobool( 
                          mwVe(isempty(mwVv(compression, "compression"))))) { 
                        // 
                        // info = []; 
                        // 
                        info = _mxarray4_; 
                        // 
                        // msg = 'Truncated header'; 
                        // 
                        *msg = _mxarray28_; 
                        // 
                        // fclose(fid); 
                        // 
                        ans.EqAns(fclose(mwVv(fid, "fid"))); 
                        // 
                        // return; 
                        // 
                        goto return_; 
                    // 
                    // end 
                    // 
                    } 
                // 
                //  
                // else 
                // 
                } else { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Corrupted header'; 
                    // 
                    *msg = _mxarray53_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                } 
            // 
            // end 
            //  
            // end 
            // 
            } 
        } 
        // 
        //  
        // if (~isempty(compression)) 
        // 
        if (mclNotBool(mwVe(isempty(mwVv(compression, "compression"))))) { 
            // 
            // switch compression 
            // 
            mwArray v_(mwVv(compression, "compression")); 
            if (switchcompare(v_, _mxarray33_)) { 
                // 
                // case 0 
                // info.CompressionType = 'none'; 
                // 
                info.field("CompressionType") = _mxarray55_; 
            // 
            //  
            // case 1 
            // 
            } else if (switchcompare(v_, _mxarray22_)) { 
                // 
                // info.CompressionType = '8-bit RLE'; 
                // 
                info.field("CompressionType") = _mxarray57_; 
            // 
            //  
            // case 2 
            // 
            } else if (switchcompare(v_, _mxarray15_)) { 
                // 
                // info.CompressionType = '4-bit RLE'; 
                // 
                info.field("CompressionType") = _mxarray59_; 
            // 
            //  
            // case 3 
            // 
            } else if (switchcompare(v_, _mxarray42_)) { 
                // 
                // if (strcmp(info.FormatVersion, 'Version 3 (Microsoft Windows NT)')) 
                // 
                if (tobool( 
                      mwVe( 
                        feval( 
                          mwValueVarargout(), 
                          mlxStrcmp, 
                          mwVarargin( 
                            mwVe(mwVsv(info, "info").field("FormatVersion")), 
                            _mxarray43_))))) { 
                    // 
                    // info.CompressionType = 'bitfields'; 
                    // 
                    info.field("CompressionType") = _mxarray61_; 
                // 
                // else 
                // 
                } else { 
                    // 
                    // % OS/2 2.x 
                    // info.CompressionType = 'Huffman 1D'; 
                    // 
                    info.field("CompressionType") = _mxarray63_; 
                // 
                // end 
                // 
                } 
            // 
            //  
            // case 4 
            // 
            } else if (switchcompare(v_, _mxarray25_)) { 
                // 
                // % Only valid for OS/2 2.x 
                // info.CompressionType = '24-bit RLE'; 
                // 
                info.field("CompressionType") = _mxarray65_; 
            // 
            //  
            // otherwise 
            // 
            } else { 
                // 
                // info = []; 
                // 
                info = _mxarray4_; 
                // 
                // msg = 'Unrecognized compression type'; 
                // 
                *msg = _mxarray67_; 
                // 
                // fclose(fid); 
                // 
                ans.EqAns(fclose(mwVv(fid, "fid"))); 
                // 
                // return; 
                // 
                goto return_; 
            // 
            //  
            // end 
            // 
            } 
        // 
        // else 
        // 
        } else { 
            // 
            // info.CompressionType = 'none'; 
            // 
            info.field("CompressionType") = _mxarray55_; 
        // 
        // end 
        // 
        } 
    // 
    //  
    // elseif (strcmp(info.FormatSignature, 'BA'))             
    // 
    } else if (tobool( 
                 mwVe( 
                   feval( 
                     mwValueVarargout(), 
                     mlxStrcmp, 
                     mwVarargin( 
                       mwVe(mwVsv(info, "info").field("FormatSignature")), 
                       _mxarray69_))))) { 
        // 
        // info = []; 
        // 
        info = _mxarray4_; 
        // 
        // msg = 'Unsupported format; may be an OS/2 bitmap array'; 
        // 
        *msg = _mxarray71_; 
        // 
        // fclose(fid); 
        // 
        ans.EqAns(fclose(mwVv(fid, "fid"))); 
        // 
        // return; 
        // 
        goto return_; 
    // 
    //  
    // else 
    // 
    } else { 
        // 
        // info = []; 
        // 
        info = _mxarray4_; 
        // 
        // msg = 'Not a BMP file'; 
        // 
        *msg = _mxarray73_; 
        // 
        // fclose(fid); 
        // 
        ans.EqAns(fclose(mwVv(fid, "fid"))); 
        // 
        // return; 
        // 
        goto return_; 
    // 
    //  
    // end 
    // 
    } 
    // 
    //  
    // switch info.FormatVersion 
    // 
    { 
        mwArray v_(mwVe(mwVsv(info, "info").field("FormatVersion"))); 
        if (switchcompare(v_, _mxarray34_)) { 
            // 
            //  
            // case 'Version 1 (IBM OS/2 1.x)' 
            //  
            // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/3); 
            // 
            info.field("NumColormapEntries") 
            = floor( 
                feval( 
                  mwValueVarargout(), 
                  mlxMinus, 
                  mwVarargin( 
                    mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                    mwVe(ftell(mwVv(fid, "fid"))))) 
                / _mxarray42_); 
            // 
            // if (info.NumColormapEntries > 0) 
            // 
            if (tobool( 
                  feval( 
                    mwValueVarargout(), 
                    mlxGt, 
                    mwVarargin( 
                      mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                      _mxarray33_)))) { 
                // 
                // [map,count] = fread(fid, info.NumColormapEntries*3, 'uint8'); 
                // 
                map 
                = fread( 
                    &count, 
                    mwVv(fid, "fid"), 
                    feval( 
                      mwValueVarargout(), 
                      mlxMtimes, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                        _mxarray42_)), 
                    _mxarray16_); 
                // 
                // if (count ~= info.NumColormapEntries*3) 
                // 
                if (mclNeBool( 
                      mwVv(count, "count"), 
                      feval( 
                        mwValueVarargout(), 
                        mlxMtimes, 
                        mwVarargin( 
                          mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray42_)))) { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Truncated colormap data'; 
                    // 
                    *msg = _mxarray75_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                // 
                // end 
                // 
                } 
                // 
                // map = reshape(map, 3, info.NumColormapEntries); 
                // 
                map 
                  = reshape( 
                      mwVv(map, "map"), 
                      mwVarargin( 
                        _mxarray42_, 
                        mwVe( 
                          mwVsv(info, "info").field("NumColormapEntries")))); 
                // 
                // info.Colormap = double(flipud(map)')/255; 
                // 
                info.field("Colormap") 
                = mwVe(double_func(ctranspose(mwVe(flipud(mwVv(map, "map")))))) 
                  / _mxarray77_; 
            // 
            // end 
            // 
            } 
        // 
        //  
        // case 'Version 2 (Microsoft Windows 2.x)'; 
        // 
        } else if (switchcompare(v_, _mxarray39_)) { 
            // 
            //  
            // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/3); 
            // 
            info.field("NumColormapEntries") 
            = floor( 
                feval( 
                  mwValueVarargout(), 
                  mlxMinus, 
                  mwVarargin( 
                    mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                    mwVe(ftell(mwVv(fid, "fid"))))) 
                / _mxarray42_); 
            // 
            //  
            // if (info.NumColormapEntries > 0) 
            // 
            if (tobool( 
                  feval( 
                    mwValueVarargout(), 
                    mlxGt, 
                    mwVarargin( 
                      mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                      _mxarray33_)))) { 
                // 
                // [map,count] = fread(fid, info.NumColormapEntries*3, 'uint8'); 
                // 
                map 
                = fread( 
                    &count, 
                    mwVv(fid, "fid"), 
                    feval( 
                      mwValueVarargout(), 
                      mlxMtimes, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                        _mxarray42_)), 
                    _mxarray16_); 
                // 
                // if (count ~= info.NumColormapEntries*3) 
                // 
                if (mclNeBool( 
                      mwVv(count, "count"), 
                      feval( 
                        mwValueVarargout(), 
                        mlxMtimes, 
                        mwVarargin( 
                          mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray42_)))) { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Truncated colormap data'; 
                    // 
                    *msg = _mxarray75_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                // 
                // end 
                // 
                } 
                // 
                // map = reshape(map, 3, info.NumColormapEntries); 
                // 
                map 
                  = reshape( 
                      mwVv(map, "map"), 
                      mwVarargin( 
                        _mxarray42_, 
                        mwVe( 
                          mwVsv(info, "info").field("NumColormapEntries")))); 
                // 
                // info.Colormap = double(flipud(map)')/255; 
                // 
                info.field("Colormap") 
                = mwVe(double_func(ctranspose(mwVe(flipud(mwVv(map, "map")))))) 
                  / _mxarray77_; 
            // 
            // end 
            // 
            } 
        // 
        //  
        // case 'Version 3 (Microsoft Windows 3.x)'; 
        // 
        } else if (switchcompare(v_, _mxarray45_)) { 
            // 
            //  
            // info.BitmapSize = fread(fid, 1, 'uint32'); 
            // 
            info.field("BitmapSize") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.HorzResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("HorzResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.VertResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("VertResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.NumColorsUsed = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumColorsUsed") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.NumImportantColors = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumImportantColors") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/4); 
            // 
            info.field("NumColormapEntries") 
            = floor( 
                feval( 
                  mwValueVarargout(), 
                  mlxMinus, 
                  mwVarargin( 
                    mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                    mwVe(ftell(mwVv(fid, "fid"))))) 
                / _mxarray25_); 
            // 
            // if (info.NumColormapEntries > 0) 
            // 
            if (tobool( 
                  feval( 
                    mwValueVarargout(), 
                    mlxGt, 
                    mwVarargin( 
                      mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                      _mxarray33_)))) { 
                // 
                // [map,count] = fread(fid, info.NumColormapEntries*4, 'uint8'); 
                // 
                map 
                = fread( 
                    &count, 
                    mwVv(fid, "fid"), 
                    feval( 
                      mwValueVarargout(), 
                      mlxMtimes, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                        _mxarray25_)), 
                    _mxarray16_); 
                // 
                // if (count ~= info.NumColormapEntries*4) 
                // 
                if (mclNeBool( 
                      mwVv(count, "count"), 
                      feval( 
                        mwValueVarargout(), 
                        mlxMtimes, 
                        mwVarargin( 
                          mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray25_)))) { 
                    // 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg = 'Truncated colormap data'; 
                    // 
                    *msg = _mxarray75_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                // 
                // end 
                // 
                } 
                // 
                // map = reshape(map, 4, info.NumColormapEntries); 
                // 
                map 
                  = reshape( 
                      mwVv(map, "map"), 
                      mwVarargin( 
                        _mxarray25_, 
                        mwVe( 
                          mwVsv(info, "info").field("NumColormapEntries")))); 
                // 
                // info.Colormap = double(flipud(map(1:3,:))')/255; 
                // 
                info.field("Colormap") 
                = mwVe( 
                    double_func( 
                      ctranspose( 
                        mwVe( 
                          flipud( 
                            mwVe( 
                              mclArrayRef( 
                                mwVsv(map, "map"), 
                                colon(_mxarray22_, _mxarray42_), 
                                colon()))))))) 
                  / _mxarray77_; 
            // 
            // end 
            // 
            } 
        // 
        //  
        // case 'Version 3 (Microsoft Windows NT)' 
        // 
        } else if (switchcompare(v_, _mxarray43_)) { 
            // 
            //  
            // info.BitmapSize = fread(fid, 1, 'uint32'); 
            // 
            info.field("BitmapSize") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.HorzResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("HorzResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.VertResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("VertResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.NumColorsUsed = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumColorsUsed") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.NumImportantColors = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumImportantColors") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // if (((info.BitDepth == 16) | (info.BitDepth == 32)) & ... 
            // 
            { 
                mwArray a_ 
                  (feval( 
                     mwValueVarargout(), 
                     mlxEq, 
                     mwVarargin( 
                       mwVe(mwVsv(info, "info").field("BitDepth")), 
                       _mxarray83_))); 
                if (tobool(a_)) { 
                    a_ = 1; 
                } else { 
                    a_ 
                      = a_ 
                        | feval( 
                            mwValueVarargout(), 
                            mlxEq, 
                            mwVarargin( 
                              mwVe(mwVsv(info, "info").field("BitDepth")), 
                              _mxarray80_)); 
                } 
                if (tobool(a_) 
                    && tobool( 
                         a_ 
                         & ~ mwVe( 
                               feval( 
                                 mwValueVarargout(), 
                                 mlxStrcmp, 
                                 mwVarargin( 
                                   mwVe( 
                                     mwVsv(info, "info").field( 
                                       "CompressionType")), 
                                   _mxarray61_))))) { 
                    // 
                    // (~strcmp(info.CompressionType,'bitfields'))) 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg= 'BMP Version 3 (Microsoft Windows NT) file appears to be corrupt'; 
                    // 
                    *msg = _mxarray81_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                } else { 
                } 
            // 
            // end 
            // 
            } 
            // 
            //  
            // if (strcmp(info.CompressionType, 'bitfields')) 
            // 
            if (tobool( 
                  mwVe( 
                    feval( 
                      mwValueVarargout(), 
                      mlxStrcmp, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("CompressionType")), 
                        _mxarray61_))))) { 
                // 
                // info.NumColormapEntries = 0; 
                // 
                info.field("NumColormapEntries") = _mxarray33_; 
                // 
                // info.Colormap = []; 
                // 
                info.field("Colormap") = _mxarray4_; 
                // 
                //  
                // info.RedMask = fread(fid, 1, 'uint32'); 
                // 
                info.field("RedMask") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // info.GreenMask = fread(fid, 1, 'uint32'); 
                // 
                info.field("GreenMask") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
                // 
                // info.BlueMask = fread(fid, 1, 'uint32'); 
                // 
                info.field("BlueMask") 
                = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // else 
            // 
            } else { 
                // 
                // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/4); 
                // 
                info.field("NumColormapEntries") 
                = floor( 
                    feval( 
                      mwValueVarargout(), 
                      mlxMinus, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                        mwVe(ftell(mwVv(fid, "fid"))))) 
                    / _mxarray25_); 
                // 
                // if (info.NumColormapEntries > 0) 
                // 
                if (tobool( 
                      feval( 
                        mwValueVarargout(), 
                        mlxGt, 
                        mwVarargin( 
                          mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray33_)))) { 
                    // 
                    // [map,count] = fread(fid, info.NumColormapEntries*4, 'uint8'); 
                    // 
                    map 
                    = fread( 
                        &count, 
                        mwVv(fid, "fid"), 
                        feval( 
                          mwValueVarargout(), 
                          mlxMtimes, 
                          mwVarargin( 
                            mwVe( 
                              mwVsv(info, "info").field("NumColormapEntries")), 
                            _mxarray25_)), 
                        _mxarray16_); 
                    // 
                    // if (count ~= info.NumColormapEntries*4) 
                    // 
                    if (mclNeBool( 
                          mwVv(count, "count"), 
                          feval( 
                            mwValueVarargout(), 
                            mlxMtimes, 
                            mwVarargin( 
                              mwVe( 
                                mwVsv(info, "info").field( 
                                  "NumColormapEntries")), 
                              _mxarray25_)))) { 
                        // 
                        // info = []; 
                        // 
                        info = _mxarray4_; 
                        // 
                        // msg = 'Truncated colormap data'; 
                        // 
                        *msg = _mxarray75_; 
                        // 
                        // fclose(fid); 
                        // 
                        ans.EqAns(fclose(mwVv(fid, "fid"))); 
                        // 
                        // return; 
                        // 
                        goto return_; 
                    // 
                    // end 
                    // 
                    } 
                    // 
                    // map = reshape(map, 4, info.NumColormapEntries); 
                    // 
                    map 
                      = reshape( 
                          mwVv(map, "map"), 
                          mwVarargin( 
                            _mxarray25_, 
                            mwVe( 
                              mwVsv(info, "info").field( 
                                "NumColormapEntries")))); 
                    // 
                    // info.Colormap = double(flipud(map(1:3,:))')/255; 
                    // 
                    info.field("Colormap") 
                    = mwVe( 
                        double_func( 
                          ctranspose( 
                            mwVe( 
                              flipud( 
                                mwVe( 
                                  mclArrayRef( 
                                    mwVsv(map, "map"), 
                                    colon(_mxarray22_, _mxarray42_), 
                                    colon()))))))) 
                      / _mxarray77_; 
                // 
                // end 
                // 
                } 
            // 
            //  
            // end 
            // 
            } 
        // 
        //  
        // case 'Version 4 (Microsoft Windows 95)'; 
        // 
        } else if (switchcompare(v_, _mxarray48_)) { 
            // 
            //  
            // info.BitmapSize = fread(fid, 1, 'uint32'); 
            // 
            info.field("BitmapSize") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.HorzResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("HorzResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.VertResolution = fread(fid, 1, 'int32'); 
            // 
            info.field("VertResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.NumColorsUsed = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumColorsUsed") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.NumImportantColors = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumImportantColors") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // % Fields added for Version 4 
            // info.RedMask = fread(fid, 1, 'uint32'); 
            // 
            info.field("RedMask") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.GreenMask = fread(fid, 1, 'uint32'); 
            // 
            info.field("GreenMask") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.BlueMask = fread(fid, 1,  'uint32'); 
            // 
            info.field("BlueMask") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.AlphaMask = fread(fid, 1, 'uint32'); 
            // 
            info.field("AlphaMask") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.ColorspaceType = fread(fid, 1, 'uint32'); 
            // 
            info.field("ColorspaceType") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.RedX = fread(fid, 1, 'int32'); 
            // 
            info.field("RedX") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.RedY = fread(fid, 1, 'int32'); 
            // 
            info.field("RedY") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.RedZ = fread(fid, 1, 'int32'); 
            // 
            info.field("RedZ") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.GreenX = fread(fid, 1, 'int32'); 
            // 
            info.field("GreenX") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.GreenY = fread(fid, 1, 'int32'); 
            // 
            info.field("GreenY") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.GreenZ = fread(fid, 1, 'int32'); 
            // 
            info.field("GreenZ") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.BlueX = fread(fid, 1, 'int32'); 
            // 
            info.field("BlueX") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.BlueY = fread(fid, 1, 'int32'); 
            // 
            info.field("BlueY") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.BlueZ = fread(fid, 1, 'int32'); 
            // 
            info.field("BlueZ") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray78_); 
            // 
            // info.GammaRed = fread(fid, 1, 'uint32'); 
            // 
            info.field("GammaRed") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.GammaGreen = fread(fid, 1, 'uint32'); 
            // 
            info.field("GammaGreen") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.GammaBlue = fread(fid, 1, 'uint32'); 
            // 
            info.field("GammaBlue") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // if (((info.BitDepth == 16) | (info.BitDepth == 32)) & ... 
            // 
            { 
                mwArray a_ 
                  (feval( 
                     mwValueVarargout(), 
                     mlxEq, 
                     mwVarargin( 
                       mwVe(mwVsv(info, "info").field("BitDepth")), 
                       _mxarray83_))); 
                if (tobool(a_)) { 
                    a_ = 1; 
                } else { 
                    a_ 
                      = a_ 
                        | feval( 
                            mwValueVarargout(), 
                            mlxEq, 
                            mwVarargin( 
                              mwVe(mwVsv(info, "info").field("BitDepth")), 
                              _mxarray80_)); 
                } 
                if (tobool(a_) 
                    && tobool( 
                         a_ 
                         & ~ mwVe( 
                               feval( 
                                 mwValueVarargout(), 
                                 mlxStrcmp, 
                                 mwVarargin( 
                                   mwVe( 
                                     mwVsv(info, "info").field( 
                                       "CompressionType")), 
                                   _mxarray61_))))) { 
                    // 
                    // (~strcmp(info.CompressionType,'bitfields'))) 
                    // info = []; 
                    // 
                    info = _mxarray4_; 
                    // 
                    // msg= 'BMP Version 4 (Microsoft Windows 95) file appears to be corrupt'; 
                    // 
                    *msg = _mxarray84_; 
                    // 
                    // fclose(fid); 
                    // 
                    ans.EqAns(fclose(mwVv(fid, "fid"))); 
                    // 
                    // return; 
                    // 
                    goto return_; 
                } else { 
                } 
            // 
            // end 
            // 
            } 
            // 
            //  
            // if (strcmp(info.CompressionType, 'bitfields')) 
            // 
            if (tobool( 
                  mwVe( 
                    feval( 
                      mwValueVarargout(), 
                      mlxStrcmp, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("CompressionType")), 
                        _mxarray61_))))) { 
                // 
                // info.NumColormapEntries = 0; 
                // 
                info.field("NumColormapEntries") = _mxarray33_; 
                // 
                // info.Colormap = []; 
                // 
                info.field("Colormap") = _mxarray4_; 
            // 
            //  
            // else 
            // 
            } else { 
                // 
                // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/4); 
                // 
                info.field("NumColormapEntries") 
                = floor( 
                    feval( 
                      mwValueVarargout(), 
                      mlxMinus, 
                      mwVarargin( 
                        mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                        mwVe(ftell(mwVv(fid, "fid"))))) 
                    / _mxarray25_); 
                // 
                // if (info.NumColormapEntries > 0) 
                // 
                if (tobool( 
                      feval( 
                        mwValueVarargout(), 
                        mlxGt, 
                        mwVarargin( 
                          mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray33_)))) { 
                    // 
                    // [map,count] = fread(fid, info.NumColormapEntries*4, 'uint8'); 
                    // 
                    map 
                    = fread( 
                        &count, 
                        mwVv(fid, "fid"), 
                        feval( 
                          mwValueVarargout(), 
                          mlxMtimes, 
                          mwVarargin( 
                            mwVe( 
                              mwVsv(info, "info").field("NumColormapEntries")), 
                            _mxarray25_)), 
                        _mxarray16_); 
                    // 
                    // if (count ~= info.NumColormapEntries*4) 
                    // 
                    if (mclNeBool( 
                          mwVv(count, "count"), 
                          feval( 
                            mwValueVarargout(), 
                            mlxMtimes, 
                            mwVarargin( 
                              mwVe( 
                                mwVsv(info, "info").field( 
                                  "NumColormapEntries")), 
                              _mxarray25_)))) { 
                        // 
                        // info = []; 
                        // 
                        info = _mxarray4_; 
                        // 
                        // msg = 'Truncated colormap data'; 
                        // 
                        *msg = _mxarray75_; 
                        // 
                        // fclose(fid); 
                        // 
                        ans.EqAns(fclose(mwVv(fid, "fid"))); 
                        // 
                        // return; 
                        // 
                        goto return_; 
                    // 
                    // end 
                    // 
                    } 
                    // 
                    // map = reshape(map, 4, info.NumColormapEntries); 
                    // 
                    map 
                      = reshape( 
                          mwVv(map, "map"), 
                          mwVarargin( 
                            _mxarray25_, 
                            mwVe( 
                              mwVsv(info, "info").field( 
                                "NumColormapEntries")))); 
                    // 
                    // info.Colormap = double(flipud(map(1:3,:))')/255; 
                    // 
                    info.field("Colormap") 
                    = mwVe( 
                        double_func( 
                          ctranspose( 
                            mwVe( 
                              flipud( 
                                mwVe( 
                                  mclArrayRef( 
                                    mwVsv(map, "map"), 
                                    colon(_mxarray22_, _mxarray42_), 
                                    colon()))))))) 
                      / _mxarray77_; 
                // 
                // end 
                // 
                } 
            // 
            //  
            // end 
            // 
            } 
        // 
        //  
        //  
        // case 'Version 2 (IBM OS/2 2.x)' 
        // 
        } else if (switchcompare(v_, _mxarray51_)) { 
            // 
            //  
            // info.BitmapSize = fread(fid, 1, 'uint32'); 
            // 
            info.field("BitmapSize") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.HorzResolution = fread(fid, 1, 'uint32'); 
            // 
            info.field("HorzResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.VertResolution = fread(fid, 1, 'uint32'); 
            // 
            info.field("VertResolution") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.NumColorsUsed = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumColorsUsed") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.NumImportantColors = fread(fid, 1, 'uint32'); 
            // 
            info.field("NumImportantColors") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // units = fread(fid, 1, 'uint16'); 
            // 
            units = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
            // 
            // if (isempty(units)) 
            // 
            if (tobool(mwVe(isempty(mwVv(units, "units"))))) { 
                // 
                // info = []; 
                // 
                info = _mxarray4_; 
                // 
                // msg = 'Truncated header'; 
                // 
                *msg = _mxarray28_; 
                // 
                // fclose(fid); 
                // 
                ans.EqAns(fclose(mwVv(fid, "fid"))); 
                // 
                // return; 
                // 
                goto return_; 
            // 
            // end 
            // 
            } 
            // 
            // if (units == 0) 
            // 
            if (mclEqBool(mwVv(units, "units"), _mxarray33_)) { 
                // 
                // info.Units = 'pixels/meter'; 
                // 
                info.field("Units") = _mxarray86_; 
            // 
            // else 
            // 
            } else { 
                // 
                // info.Units = 'unknown'; 
                // 
                info.field("Units") = _mxarray88_; 
            // 
            // end 
            // 
            } 
            // 
            // fseek(fid, 2, 'cof');  % skip 2-byte pad 
            // 
            ans.EqAns(fseek(mwVv(fid, "fid"), _mxarray15_, _mxarray26_)); 
            // 
            // info.Recording = fread(fid, 1, 'uint16'); 
            // 
            info.field("Recording") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
            // 
            //  
            // halftoning = fread(fid, 1, 'uint16'); 
            // 
            halftoning = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray37_); 
            // 
            // if (isempty(halftoning)) 
            // 
            if (tobool(mwVe(isempty(mwVv(halftoning, "halftoning"))))) { 
                // 
                // info = []; 
                // 
                info = _mxarray4_; 
                // 
                // msg = 'Truncated header'; 
                // 
                *msg = _mxarray28_; 
                // 
                // fclose(fid); 
                // 
                ans.EqAns(fclose(mwVv(fid, "fid"))); 
                // 
                // return; 
                // 
                goto return_; 
            // 
            // end 
            // 
            } 
            // 
            //  
            // switch halftoning 
            // 
            { 
                mwArray v_0(mwVv(halftoning, "halftoning")); 
                if (switchcompare(v_0, _mxarray33_)) { 
                    // 
                    // case 0 
                    // info.HalftoningAlgorithm = 'none'; 
                    // 
                    info.field("HalftoningAlgorithm") = _mxarray55_; 
                // 
                //  
                // case 1 
                // 
                } else if (switchcompare(v_0, _mxarray22_)) { 
                    // 
                    // info.HalftoningAlgorithm = 'error diffusion'; 
                    // 
                    info.field("HalftoningAlgorithm") = _mxarray90_; 
                // 
                //  
                // case 2 
                // 
                } else if (switchcompare(v_0, _mxarray15_)) { 
                    // 
                    // info.HalftoningAlgorithm = 'PANDA'; 
                    // 
                    info.field("HalftoningAlgorithm") = _mxarray92_; 
                // 
                //  
                // case 3 
                // 
                } else if (switchcompare(v_0, _mxarray42_)) { 
                    // 
                    // info.HalftoningAlgorithm = 'super-circle'; 
                    // 
                    info.field("HalftoningAlgorithm") = _mxarray94_; 
                // 
                //  
                // otherwise 
                // 
                } else { 
                    // 
                    // info.HalftoningAlgorithm = 'unknown'; 
                    // 
                    info.field("HalftoningAlgorithm") = _mxarray88_; 
                // 
                //  
                // end 
                // 
                } 
            } 
            // 
            //  
            // info.HalftoneField1 = fread(fid, 1, 'uint32'); 
            // 
            info.field("HalftoneField1") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // info.HalftoneField2 = fread(fid, 1, 'uint32'); 
            // 
            info.field("HalftoneField2") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // encoding = fread(fid, 1, 'uint32'); 
            // 
            encoding = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            // if (isempty(encoding)) 
            // 
            if (tobool(mwVe(isempty(mwVv(encoding, "encoding"))))) { 
                // 
                // info = []; 
                // 
                info = _mxarray4_; 
                // 
                // msg = 'Truncated header'; 
                // 
                *msg = _mxarray28_; 
                // 
                // fclose(fid); 
                // 
                ans.EqAns(fclose(mwVv(fid, "fid"))); 
                // 
                // return; 
                // 
                goto return_; 
            // 
            // end 
            // 
            } 
            // 
            //  
            // if (encoding == 0) 
            // 
            if (mclEqBool(mwVv(encoding, "encoding"), _mxarray33_)) { 
                // 
                // info.ColorEncoding = 'RGB'; 
                // 
                info.field("ColorEncoding") = _mxarray96_; 
            // 
            // else 
            // 
            } else { 
                // 
                // info.ColorEncoding = 'unknown'; 
                // 
                info.field("ColorEncoding") = _mxarray88_; 
            // 
            // end 
            // 
            } 
            // 
            //  
            // info.ApplicationIdentifier = fread(fid, 1, 'uint32'); 
            // 
            info.field("ApplicationIdentifier") 
            = fread(mwVv(fid, "fid"), _mxarray22_, _mxarray23_); 
            // 
            //  
            // info.NumColormapEntries = floor((info.ImageDataOffset - ftell(fid))/4); 
            // 
            info.field("NumColormapEntries") 
            = floor( 
                feval( 
                  mwValueVarargout(), 
                  mlxMinus, 
                  mwVarargin( 
                    mwVe(mwVsv(info, "info").field("ImageDataOffset")), 
                    mwVe(ftell(mwVv(fid, "fid"))))) 
                / _mxarray25_); 
            // 
            // if (info.NumColormapEntries > 0) 
            // 
            if (tobool( 
                  feval( 
                    mwValueVarargout(), 
                    mlxGt, 
                    mwVarargin( 
                      mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
                      _mxarray33_)))) { 
                // 
                // map = fread(fid, info.NumColormapEntries*4, 'uint8'); 
                // 
                map 
                  = fread( 
                      mwVv(fid, "fid"), 
                      feval( 
                        mwValueVarargout(), 
                        mlxMtimes, 
                        mwVarargin( 
                          mwVe( 
                            mwVsv(info, "info").field("NumColormapEntries")), 
                          _mxarray25_)), 
                      _mxarray16_); 
                // 
                // map = reshape(map, 4, info.NumColormapEntries); 
                // 
                map 
                  = reshape( 
                      mwVv(map, "map"), 
                      mwVarargin( 
                        _mxarray25_, 
                        mwVe( 
                          mwVsv(info, "info").field("NumColormapEntries")))); 
                // 
                // info.Colormap = double(flipud(map(1:3,:))')/255; 
                // 
                info.field("Colormap") 
                = mwVe( 
                    double_func( 
                      ctranspose( 
                        mwVe( 
                          flipud( 
                            mwVe( 
                              mclArrayRef( 
                                mwVsv(map, "map"), 
                                colon(_mxarray22_, _mxarray42_), 
                                colon()))))))) 
                  / _mxarray77_; 
            // 
            // end 
            // 
            } 
        // 
        //  
        // otherwise 
        // 
        } else { 
            // 
            // info = []; 
            // 
            info = _mxarray4_; 
            // 
            // msg = 'Problem identifying format version'; 
            // 
            *msg = _mxarray98_; 
            // 
            // fclose(fid); 
            // 
            ans.EqAns(fclose(mwVv(fid, "fid"))); 
            // 
            // return; 
            // 
            goto return_; 
        // 
        //  
        // end 
        // 
        } 
    } 
    // 
    //  
    // fclose(fid); 
    // 
    ans.EqAns(fclose(mwVv(fid, "fid"))); 
    // 
    //  
    // if (isempty(info.NumColormapEntries)) 
    // 
    if (tobool( 
          mwVe( 
            feval( 
              mwValueVarargout(), 
              mlxIsempty, 
              mwVarargin( 
                mwVe(mwVsv(info, "info").field("NumColormapEntries"))))))) { 
        // 
        // info.NumColormapEntries = 0; 
        // 
        info.field("NumColormapEntries") = _mxarray33_; 
    // 
    // end 
    // 
    } 
    // 
    //  
    // if (info.NumColormapEntries > 0) 
    // 
    if (tobool( 
          feval( 
            mwValueVarargout(), 
            mlxGt, 
            mwVarargin( 
              mwVe(mwVsv(info, "info").field("NumColormapEntries")), 
              _mxarray33_)))) { 
        // 
        // info.ColorType = 'indexed'; 
        // 
        info.field("ColorType") = _mxarray100_; 
    // 
    //  
    // else 
    // 
    } else { 
        // 
        // if (info.BitDepth <= 8) 
        // 
        if (tobool( 
              feval( 
                mwValueVarargout(), 
                mlxLe, 
                mwVarargin( 
                  mwVe(mwVsv(info, "info").field("BitDepth")), 
                  _mxarray102_)))) { 
            // 
            // info.ColorType = 'grayscale'; 
            // 
            info.field("ColorType") = _mxarray103_; 
        // 
        // else 
        // 
        } else { 
            // 
            // info.ColorType = 'truecolor'; 
            // 
            info.field("ColorType") = _mxarray105_; 
        // 
        // end 
        // 
        } 
    // 
    // end 
    // 
    } 
    // 
    //  
    //  
    // % 
    // % Other validity checks 
    // % 
    // if ((info.Width < 0) | (info.Height < 0)) 
    // 
    { 
        mwArray a_ 
          (feval( 
             mwValueVarargout(), 
             mlxLt, 
             mwVarargin( 
               mwVe(mwVsv(info, "info").field("Width")), _mxarray33_))); 
        if (tobool(a_) 
            || tobool( 
                 a_ 
                 | feval( 
                     mwValueVarargout(), 
                     mlxLt, 
                     mwVarargin( 
                       mwVe(mwVsv(info, "info").field("Height")), 
                       _mxarray33_)))) { 
            // 
            // info = []; 
            // 
            info = _mxarray4_; 
            // 
            // msg = 'Corrupt BMP file: bad image dimensions'; 
            // 
            *msg = _mxarray107_; 
            // 
            // fclose(fid); 
            // 
            ans.EqAns(fclose(mwVv(fid, "fid"))); 
        } else { 
        } 
    // 
    // return; 
    // end 
    // 
    } 
    return_: 
    mwValidateOutput(info, 1, nargout_, "info", "iofun/private/imbmpinfo"); 
    mwValidateOutput(*msg, 2, nargout_, "msg", "iofun/private/imbmpinfo"); 
    return info; 
}