// -*- c++ -*-
//  Generated by gtkmmproc from ./../canvas-line.gen_h -- DO NOT MODIFY!
#ifndef _GNOMEMM_CANVAS_LINE_H
#define _GNOMEMM_CANVAS_LINE_H

/* $Id: canvas-line.gen_h,v 1.38 2001/06/23 15:26:09 murrayc Exp $ */

/* canvas-line.h
 *
 * Copyright (C) 1998 EMC Capital Management Inc.
 * Developed by Havoc Pennington <hp@pobox.com>
 *
 * Copyright (C) 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 <gnome--/canvas-item.h>
#include <gnome--/canvas-property.h>
#include <libgnomeui/gnome-canvas-line.h>
#include <libgnomeui/gnome-canvas-util.h>
#include <vector>

namespace Gnome {
class CanvasLine;
class CanvasLine_Class;
}
namespace Gtk { Gnome::CanvasLine *wrap (GnomeCanvasLine *o); }
namespace Gnome
{

class GnomeGroup;

// Sample use of Gnome_CanvasPoints :

//   Gnome_CanvasPoints points;
//
//   points.push_back(Art::Point(0, 0));
//   points.push_back(Art::Point(100,0));
//   points.push_back(Art::Point(0,100));
//   points.push_back(Art::Point(100,100));
//
//   line = new Gnome_CanvasLine(&m_canvasgroup,points);

using std::vector;

class CanvasPoints : public vector<Art::Point>
{
 public:
  CanvasPoints(size_type nbpoints = 0);
  CanvasPoints(GnomeCanvasPoints *castitem);
  ~CanvasPoints();

  const GnomeCanvasPoints* gtkobj() const { return _gtkobj(); }
  GnomeCanvasPoints* gtkobj() { return _gtkobj(); }

 protected:
  GnomeCanvasPoints* _gtkobj() const;
  mutable GnomeCanvasPoints *points_;
  mutable bool owned_;
};

class CanvasLine : public CanvasItem
{

public:
  typedef CanvasLine          CppObjectType;
  typedef CanvasLine_Class    CppClassType;
  typedef GnomeCanvasLine           BaseObjectType;
  typedef GnomeCanvasLineClass      BaseClassType;

private:
  friend class CanvasLine_Class;
  static CppClassType canvas_line_class;

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

protected:
  void   initialize_class();
  explicit CanvasLine(GnomeCanvasLine *castitem);

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

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

  virtual ~CanvasLine();

private:

public:
  CanvasLine(const CanvasGroup &parent);
  CanvasLine(const CanvasGroup &parent,const CanvasPoints&);



  void set_points(const CanvasPoints&);

  void set_fill_color(const Gtk::string&);
  void set_fill_color(const Gdk_Color&);
  Gdk_Color get_fill_color() const;

  //FIXME: fill_color_rgba?
  void set_fill_stipple(const Gdk_Pixmap&);
  Gdk_Pixmap get_fill_stipple() const;
  void set_width_pixels(guint);
  void set_width_units(gdouble);

  void set_cap_style(GdkCapStyle);
  GdkCapStyle get_cap_style() const;

  void set_join_style(GdkJoinStyle);
  GdkJoinStyle get_join_style() const;

  void set_line_style(GdkLineStyle);
  GdkLineStyle get_line_style() const;
  void set_first_arrowhead(bool);
  bool get_first_arrowhead() const;

  void set_last_arrowhead(bool);
  bool get_last_arrowhead() const;
  void set_smooth(bool);
  bool get_smooth() const;

  void set_spline_step(guint);
  guint get_spline_step() const;
  void set_arrow_shape_a(gdouble);
  gdouble get_arrow_shape_a() const;

  void set_arrow_shape_b(gdouble);
  gdouble get_arrow_shape_b() const;

  void set_arrow_shape_c(gdouble);
  gdouble get_arrow_shape_c() const;

public:

protected:
  // impl functions

};

}

#endif
