text: /* GTK - The GIMP Toolkit
   * Copyright (C) 2011 Benjamin Otte <otte@gnome.org>
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library. If not, see <http://www.gnu.org/licenses/>.
   */
  
  #ifndef __GTK_ROUNDED_BOX_PRIVATE_H__
  #define __GTK_ROUNDED_BOX_PRIVATE_H__
  
  #include <glib-object.h>
  #include <cairo.h>
  #include <gtk/gtkenums.h>
  #include <gtk/gtktypes.h>
  
  #include "gtkcsstypesprivate.h"
  
  G_BEGIN_DECLS
  
  typedef struct _GtkRoundedBox GtkRoundedBox;
  typedef struct _GtkRoundedBoxCorner GtkRoundedBoxCorner;
  
  struct _GtkRoundedBoxCorner {
    double                   horizontal;
    double                   vertical;
  };
  
  struct _GtkRoundedBox {
    /*< private >*/
    cairo_rectangle_t        box;
    GtkRoundedBoxCorner      corner[4];
  };
  
  void            _gtk_rounded_box_init_rect                      (GtkRoundedBox       *box,
                                                                   double               x,
                                                                   double               y,
                                                                   double               width,
                                                                   double               height);
  
  void            _gtk_rounded_box_apply_border_radius_for_style  (GtkRoundedBox       *box,
                                                                   GtkCssStyle         *style,
                                                                   GtkJunctionSides     junction);
  
  void            _gtk_rounded_box_apply_outline_radius_for_style (GtkRoundedBox       *box,
                                                                   GtkCssStyle         *style,
                                                                   GtkJunctionSides     junction);
  
  void            _gtk_rounded_box_grow                           (GtkRoundedBox       *box,
                                                                   double               top,
                                                                   double               right,
                                                                   double               bottom,
                                                                   double               left);
  void            _gtk_rounded_box_shrink                         (GtkRoundedBox       *box,
                                                                   double               top,
                                                                   double               right,
                                                                   double               bottom,
                                                                   double               left);
  void            _gtk_rounded_box_move                           (GtkRoundedBox       *box,
                                                                   double               dx,
                                                                   double               dy);
  
  double          _gtk_rounded_box_guess_length                   (const GtkRoundedBox *box,
                                                                   GtkCssSide           side);
  
  void            _gtk_rounded_box_path                           (const GtkRoundedBox *box,
                                                                   cairo_t             *cr);
  void            _gtk_rounded_box_path_side                      (const GtkRoundedBox *box,
                                                                   cairo_t             *cr,
                                                                   GtkCssSide           side);
  void            _gtk_rounded_box_path_top                       (const GtkRoundedBox *outer,
                                                                   const GtkRoundedBox *inner,
                                                                   cairo_t             *cr);
  void            _gtk_rounded_box_path_right                     (const GtkRoundedBox *outer,
                                                                   const GtkRoundedBox *inner,
                                                                   cairo_t             *cr);
  void            _gtk_rounded_box_path_bottom                    (const GtkRoundedBox *outer,
                                                                   const GtkRoundedBox *inner,
                                                                   cairo_t             *cr);
  void            _gtk_rounded_box_path_left                      (const GtkRoundedBox *outer,
                                                                   const GtkRoundedBox *inner,
                                                                   cairo_t             *cr);
  void            _gtk_rounded_box_clip_path                      (const GtkRoundedBox *box,
                                                                   cairo_t             *cr);
  gboolean        _gtk_rounded_box_intersects_rectangle           (const GtkRoundedBox *box,
                                                                   gdouble              x1,
                                                                   gdouble              y1,
                                                                   gdouble              x2,
                                                                   gdouble              y2);
  gboolean        _gtk_rounded_box_contains_rectangle             (const GtkRoundedBox *box,
                                                                   gdouble              x1,
                                                                   gdouble              y1,
                                                                   gdouble              x2,
                                                                   gdouble              y2);
  
  G_END_DECLS
  
  #endif /* __GTK_ROUNDED_BOX_PRIVATE_H__ */
  