
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_javax_imageio_png_PNGGamma__
#define __gnu_javax_imageio_png_PNGGamma__

#pragma interface

#include <gnu/javax/imageio/png/PNGChunk.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace imageio
      {
        namespace png
        {
            class PNGGamma;
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace color
      {
          class ColorSpace;
      }
    }
  }
}

class gnu::javax::imageio::png::PNGGamma : public ::gnu::javax::imageio::png::PNGChunk
{

public: // actually protected
  PNGGamma(jint, JArray< jbyte > *, jint);
public:
  PNGGamma(jdouble);
  virtual ::java::awt::color::ColorSpace * getColorSpace(jboolean);
  virtual ::java::lang::String * toString();
private:
  jdouble __attribute__((aligned(__alignof__( ::gnu::javax::imageio::png::PNGChunk)))) gamma;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_imageio_png_PNGGamma__
