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

/* $Id: ruler.h,v 1.2 2003/06/17 16:37:41 pbd 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:
  //- {\enum GTK_PIXELS}, {\enum GTK_INCHES}, or {\enum GTK_CENTIMETERS}.
  //- The default metric is {\enum 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.
  //- upper, lower: The extents of the Ruler.
  //-
  //- max_size: The largest number displayed by the ruler.
  //-
  //- position: 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

};


//: A vertical ruler.
//- The {\class Gtk::VRuler} widget is a widget arranged vertically
//- creating a ruler that is utilized around other widgets such as a
//- text widget. The ruler is used to show
//- the location of the mouse on the window and to show the size of
//- the window in specified units. The available units of measurement are {\enum GTK_PIXELS},
//- {\enum GTK_INCHES} and {\enum GTK_CENTIMETERS}. {\enum GTK_PIXELS} is the default.
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

};


//: A Horizontal ruler.
//- The HRuler widget is a widget arranged horizontally creating a ruler
//- that is utilized around other widgets such as a text widget. The
//- ruler is used to show the location of the mouse on the window and to
//- show the size of the window in specified units. The available units
//- of measurement are {\enum GTK_PIXELS}, {\enum GTK_INCHES} and
//- {\enum GTK_CENTIMETERS}. {\enum GTK_PIXELS} is the default.
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
