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

#ifndef __javax_swing_plaf_metal_MetalIconFactory$VerticalSliderThumbIcon__
#define __javax_swing_plaf_metal_MetalIconFactory$VerticalSliderThumbIcon__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalIconFactory$VerticalSliderThumbIcon;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalIconFactory$VerticalSliderThumbIcon : public ::java::lang::Object
{

public:
  MetalIconFactory$VerticalSliderThumbIcon();
  virtual jint getIconWidth();
  virtual jint getIconHeight();
  virtual void paintIcon(::java::awt::Component *, ::java::awt::Graphics *, jint, jint);
public: // actually package-private
  JArray< JArray< jint > * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) gradientMask;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalIconFactory$VerticalSliderThumbIcon__
