// -*- c++ -*-
//  Generated by gtkmmproc from ./../ruler.gen_h -- DO NOT MODIFY!
#ifndef _GTKMM_RULER_H
#define _GTKMM_RULER_H

/* $Id: ruler.gen_h,v 1.30 2000/04/03 22:58:42 glaurent Exp $ */

/* ruler.h
 *
 * Copyright (C) 1998-1999 The Gtk-- Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <gtk--/widget.h>
#include <gtk/gtkruler.h>
#include <gtk/gtkhruler.h>
#include <gtk/gtkvruler.h>

namespace Gtk {
class Ruler;
class Ruler_Class;
}
namespace Gtk { Gtk::Ruler *wrap (GtkRuler *o); }
namespace Gtk {
class VRuler;
class VRuler_Class;
}
namespace Gtk { Gtk::VRuler *wrap (GtkVRuler *o); }
namespace Gtk {
class HRuler;
class HRuler_Class;
}
namespace Gtk { Gtk::HRuler *wrap (GtkHRuler *o); }
namespace Gtk
{
//: Abstract Ruler
//- Ruler is an abstraction used as the base for Gtk_HRuler and
//- Gtk_VRuler.  Users should only instantiate those types.
class Ruler : public Widget {

public:
  typedef Ruler          CppObjectType;
  typedef Ruler_Class    CppClassType;
  typedef GtkRuler           BaseObjectType;
  typedef GtkRulerClass      BaseClassType;

private:
  friend class Ruler_Class;
  static CppClassType ruler_class;

  Ruler(const Ruler&);
  Ruler& operator=(const Ruler&); // not implemented

protected:
  void   initialize_class();
  explicit Ruler(GtkRuler *castitem);

public:
  static GtkType get_type();
  GtkRuler* gtkobj()             { return (GtkRuler*)(gtkobject); }
  const GtkRuler* gtkobj() const { return (GtkRuler*)(gtkobject); }
  static bool isA(Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~Ruler();

private:

public:




  //: Gets the metric of the ruler.
  GtkMetricType get_metric() const;

  //: Sets the desired metric of the ruler.  The possible choices are:
  //- <ul><li>GTK_PIXELS
  //- <li>GTK_INCHES
  //- <li>GTK_CENTIMETERS
  //- </ul>The default metric is GTK_PIXELS.

  void set_metric(GtkMetricType metric=GTK_PIXELS);


  gfloat get_range_lower() const;

  gfloat get_range_upper() const;

  //: sets the range of the ruler.
  //- <i>upper</i> and <i>lower</i> arguments denote the extents of the Ruler.
  //- <i>max_size</i> is the largest number displayed by the ruler.
  //- <i>position</i> gives the initial value of the ruler.
  //- Rulers do not have sane defaults so this function should always be called.



  void set_range(gfloat lower,gfloat upper,gfloat position,gfloat max_size);

  //: draw tick marks on the ruler

  void draw_ticks();

  //: draw a position indicator on the ruler

  void draw_pos();

protected:
  Ruler();

public:

protected:
  // impl functions

};


//: Vertical Ruler
class VRuler : public Ruler {

public:
  typedef VRuler          CppObjectType;
  typedef VRuler_Class    CppClassType;
  typedef GtkVRuler           BaseObjectType;
  typedef GtkVRulerClass      BaseClassType;

private:
  friend class VRuler_Class;
  static CppClassType vruler_class;

  VRuler(const VRuler&);
  VRuler& operator=(const VRuler&); // not implemented

protected:
  void   initialize_class();
  explicit VRuler(GtkVRuler *castitem);

public:
  static GtkType get_type();
  GtkVRuler* gtkobj()             { return (GtkVRuler*)(gtkobject); }
  const GtkVRuler* gtkobj() const { return (GtkVRuler*)(gtkobject); }
  static bool isA(Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~VRuler();

private:

public:
  VRuler();

public:

protected:
  // impl functions

};


//: Horizontal Ruler
class HRuler : public Ruler {

public:
  typedef HRuler          CppObjectType;
  typedef HRuler_Class    CppClassType;
  typedef GtkHRuler           BaseObjectType;
  typedef GtkHRulerClass      BaseClassType;

private:
  friend class HRuler_Class;
  static CppClassType hruler_class;

  HRuler(const HRuler&);
  HRuler& operator=(const HRuler&); // not implemented

protected:
  void   initialize_class();
  explicit HRuler(GtkHRuler *castitem);

public:
  static GtkType get_type();
  GtkHRuler* gtkobj()             { return (GtkHRuler*)(gtkobject); }
  const GtkHRuler* gtkobj() const { return (GtkHRuler*)(gtkobject); }
  static bool isA(Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~HRuler();

private:

public:
  HRuler();

public:

protected:
  // impl functions

};

}


//+ PROPERTIES(Gtk_Ruler)
//. name: backing_store
//. type: GdkPixmap*
//. get:
//. set:
//. desc:

//. name: non_gr_exp_gc
//. type: GdkGC*
//. get:
//. set:
//. desc:

//. name: metric
//. type: GtkRulerMetric*
//. get:
//. set:
//. desc:

//. name: slider_size
//. type: gint
//. get:
//. set:
//. desc:

//. name: lower
//. type: gfloat
//. get:
//. set:
//. desc: The upper limit of the ruler (in points)

//. name: upper
//. type: gfloat
//. get:
//. set:
//. desc: The lower limit of the ruler

//. name: position
//. type: gfloat
//. get:
//. set:
//. desc: The position of the mark on the ruler

//. name: max_size
//. type: gfloat
//. get:
//. set:
//. desc: The maximum size of the ruler

#endif
