Next: 3.4 Assignment Up: 3. The VImage class Previous: 3.2 File conversion Contents

# 3.3 Projection functions

A set of member functions of `VImage` provide access to the fields in the header:

    int Xsize();
    int Ysize();
    int Bands();
    TBandFmt BandFmt();
    TCoding Coding();
    TType Type();
    float Xres();
    float Yres();
    int Length();
    TCompression Compression();
    short Level();
    int Xoffset();
    int Yoffset();

Where `TBandFmt`, `TCoding`, `TType` and `TCompression` are `enum`s for the types in the VIPS file header and are defined as:

    // Type type
    enum TType {
            MULTIBAND      = 0,
            B_W            = 1,
            LUMINACE       = 2,
            XRAY           = 3,
            IR             = 4,
            YUV            = 5,
            RED_ONLY       = 6,
            GREEN_ONLY     = 7,
            BLUE_ONLY      = 8,
            POWER_SPECTRUM = 9,
            HISTOGRAM      = 10,
            LUT            = 11,
            XYZ            = 12,
            LAB            = 13,
            CMC            = 14,
            CMYK           = 15,
            LABQ           = 16,
            RGB            = 17,
            UCS            = 18,
            LCH            = 19,
            LABS           = 20
    };

    // Format type
    enum TBandFmt {
            FMTNOTSET      = -1,
            FMTUCHAR       = 0,
            FMTCHAR        = 1,
            FMTUSHORT      = 2,
            FMTSHORT       = 3,
            FMTUINT        = 4,
            FMTINT         = 5,
            FMTFLOAT       = 6,
            FMTCOMPLEX     = 7,
            FMTDOUBLE      = 8,
            FMTDPCOMPLEX   = 9
    };

    // Coding type
    enum TCoding {
            NOCODING              = 0,
            COLQUANT              = 1,
            LABPACK               = 2,
            LABPACK_COMPRESSED    = 3,
            RGB_COMPRESSED        = 4,
            LUM_COMPRESSED        = 5
    };

    // Compression type
    enum TCompression {
            NO_COMPRESSION        = 0,
            TCSF_COMPRESSION      = 1,
            JPEG_COMPRESSION      = 2
    };

See section §2.1 for an explanation of all of these fields. Unfortunately, the C names and the C++ names for these fields no longer quite match. The C++ API may change to match C more closely in vips8.

The `image()` member function provides access to the `IMAGE` descriptor underlying the C++ API. See the VIPS Application Programmers' Guide for details.

    void *image();

The `data()` member function returns a pointer to an array of pixel data for the image.

    void *data() const;

This can be very slow and use huge amounts of RAM.

Finally, two projection functions give access to the filename and history fields maintained by the VIPS IO system.

    char *filename();
    char *Hist();