]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkstyle.h
Updated
[~andy/gtk] / gtk / gtkstyle.h
index e23203a1c556d78c0cb3e527e1091d31c37fbe77..cc6ac74aa7b6c06f2f7d00e55a9ee2a992a1a157 100644 (file)
@@ -36,9 +36,6 @@
 extern "C" {
 #endif /* __cplusplus */
 
-typedef struct _GtkStyle       GtkStyle;
-typedef struct _GtkStyleClass  GtkStyleClass;
-
 #define GTK_TYPE_STYLE              (gtk_style_get_type ())
 #define GTK_STYLE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_STYLE, GtkStyle))
 #define GTK_STYLE_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_STYLE, GtkStyleClass))
@@ -46,24 +43,30 @@ typedef struct _GtkStyleClass  GtkStyleClass;
 #define GTK_IS_STYLE_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_STYLE))
 #define GTK_STYLE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_STYLE, GtkStyleClass))
 
+#define GTK_TYPE_BORDER             (gtk_border_get_type ())
+
 /* Some forward declarations needed to rationalize the header
  * files.
  */
+typedef struct _GtkBorder      GtkBorder;
+typedef struct _GtkStyle       GtkStyle;
+typedef struct _GtkStyleClass  GtkStyleClass;
 typedef struct _GtkThemeEngine GtkThemeEngine;
 typedef struct _GtkRcStyle     GtkRcStyle;
-
+typedef struct _GtkIconSet     GtkIconSet;
+typedef struct _GtkIconSource  GtkIconSource;
+typedef struct _GtkRcProperty  GtkRcProperty;
+typedef struct _GtkSettings    GtkSettings;
+typedef gboolean (*GtkRcPropertyParser) (const GParamSpec *pspec,
+                                        const GString    *rc_string,
+                                        GValue           *property_value);
 
 /* We make this forward declaration here, since we pass
- * GtkWidgt's to the draw functions.
+ * GtkWidget's to the draw functions.
  */
 typedef struct _GtkWidget      GtkWidget;
 
-/* This is used for having dynamic style changing stuff
- * fg, bg, light, dark, mid, text, base
- */
-#define GTK_STYLE_NUM_STYLECOLORS()    (7 * 5)
-
-#define GTK_STYLE_ATTACHED(style)      (((GtkStyle*) (style))->attach_count > 0)
+#define GTK_STYLE_ATTACHED(style)      (GTK_STYLE (style)->attach_count > 0)
 
 struct _GtkStyle
 {
@@ -78,10 +81,10 @@ struct _GtkStyle
   GdkColor mid[5];
   GdkColor text[5];
   GdkColor base[5];
+  GdkColor text_aa[5];         /* Halfway between text/base */
   
   GdkColor black;
   GdkColor white;
-  GdkFont *font;
   PangoFontDescription *font_desc;
   
   gint xthickness;
@@ -94,6 +97,7 @@ struct _GtkStyle
   GdkGC *mid_gc[5];
   GdkGC *text_gc[5];
   GdkGC *base_gc[5];
+  GdkGC *text_aa_gc[5];
   GdkGC *black_gc;
   GdkGC *white_gc;
   
@@ -105,11 +109,15 @@ struct _GtkStyle
   
   gint depth;
   GdkColormap *colormap;
+  GdkFont *private_font;
+  PangoFontDescription *private_font_desc; /* Font description for style->private_font or %NULL */
   
-  GtkRcStyle    *rc_style;     /* the Rc style from which this style
-                                * was created
-                                */
-  GSList        *styles;
+  /* the RcStyle from which this style was created */
+  GtkRcStyle    *rc_style;
+
+  GSList        *styles;         /* of type GtkStyle* */
+  GArray        *property_cache;
+  GSList         *icon_factories; /* of type GtkIconFactory* */
 };
 
 struct _GtkStyleClass
@@ -149,8 +157,18 @@ struct _GtkStyleClass
                                 GdkWindow              *window,
                                 GtkStateType            state_type);
 
+
+  GdkPixbuf * (* render_icon)   (GtkStyle               *style,
+                                 const GtkIconSource    *source,
+                                 GtkTextDirection        direction,
+                                 GtkStateType            state,
+                                 GtkIconSize             size,
+                                 GtkWidget              *widget,
+                                 const gchar            *detail);
+  
   /* Drawing functions
    */
+  
   void (*draw_hline)           (GtkStyle               *style,
                                 GdkWindow              *window,
                                 GtkStateType            state_type,
@@ -166,8 +184,8 @@ struct _GtkStyleClass
                                 GdkRectangle           *area,
                                 GtkWidget              *widget,
                                 const gchar            *detail,
-                                gint                    y1,
-                                gint                    y2,
+                                gint                    y1_,
+                                gint                    y2_,
                                 gint                    x);
   void (*draw_shadow)          (GtkStyle               *style,
                                 GdkWindow              *window,
@@ -214,17 +232,6 @@ struct _GtkStyleClass
                                 gint                    y,
                                 gint                    width,
                                 gint                    height);
-  void (*draw_oval)            (GtkStyle               *style,
-                                GdkWindow              *window,
-                                GtkStateType            state_type,
-                                GtkShadowType           shadow_type,
-                                GdkRectangle           *area,
-                                GtkWidget              *widget,
-                                const gchar            *detail,
-                                gint                    x,
-                                gint                    y,
-                                gint                    width,
-                                gint                    height);
   void (*draw_string)          (GtkStyle               *style,
                                 GdkWindow              *window,
                                 GtkStateType            state_type,
@@ -278,29 +285,6 @@ struct _GtkStyleClass
                                 gint                    y,
                                 gint                    width,
                                 gint                    height);
-  void (*draw_cross)           (GtkStyle               *style,
-                                GdkWindow              *window,
-                                GtkStateType            state_type,
-                                GtkShadowType           shadow_type,
-                                GdkRectangle           *area,
-                                GtkWidget              *widget,
-                                const gchar            *detail,
-                                gint                    x,
-                                gint                    y,
-                                gint                    width,
-                                gint                    height);
-  void (*draw_ramp)            (GtkStyle               *style,
-                                GdkWindow              *window,
-                                GtkStateType            state_type,
-                                GtkShadowType           shadow_type,
-                                GdkRectangle           *area,
-                                GtkWidget              *widget,
-                                const gchar            *detail,
-                                GtkArrowType            arrow_type,
-                                gint                    x,
-                                gint                    y,
-                                gint                    width,
-                                gint                    height);
   void (*draw_tab)             (GtkStyle               *style,
                                 GdkWindow              *window,
                                 GtkStateType            state_type,
@@ -354,6 +338,7 @@ struct _GtkStyleClass
                                 GtkPositionType         gap_side);
   void (*draw_focus)           (GtkStyle               *style,
                                 GdkWindow              *window,
+                                 GtkStateType            state_type,
                                 GdkRectangle           *area,
                                 GtkWidget              *widget,
                                 const gchar            *detail,
@@ -385,16 +370,77 @@ struct _GtkStyleClass
                                 gint                    width,
                                 gint                    height,
                                 GtkOrientation          orientation);
+
+  void (*draw_expander)                (GtkStyle               *style,
+                                GdkWindow              *window,
+                                GtkStateType            state_type,
+                                GdkRectangle           *area,
+                                GtkWidget              *widget,
+                                const gchar            *detail,
+                                gint                    x,
+                                gint                    y,
+                                 GtkExpanderStyle        expander_style);
+  void (*draw_layout)          (GtkStyle               *style,
+                                GdkWindow              *window,
+                                GtkStateType            state_type,
+                                gboolean                use_text,
+                                GdkRectangle           *area,
+                                GtkWidget              *widget,
+                                const gchar            *detail,
+                                gint                    x,
+                                gint                    y,
+                                 PangoLayout            *layout);
+  void (*draw_resize_grip)      (GtkStyle              *style,
+                                GdkWindow              *window,
+                                GtkStateType            state_type,
+                                GdkRectangle           *area,
+                                GtkWidget              *widget,
+                                const gchar            *detail,
+                                 GdkWindowEdge           edge,
+                                gint                    x,
+                                gint                    y,
+                                gint                    width,
+                                gint                    height);
+
+  /* Padding for future expansion */
+  void (*_gtk_reserved1)  (void);
+  void (*_gtk_reserved2)  (void);
+  void (*_gtk_reserved3)  (void);
+  void (*_gtk_reserved4)  (void);
+  void (*_gtk_reserved5)  (void);
+  void (*_gtk_reserved6)  (void);
+  void (*_gtk_reserved7)  (void);
+  void (*_gtk_reserved8)  (void);
+  void (*_gtk_reserved9)  (void);
+  void (*_gtk_reserved10) (void);
+  void (*_gtk_reserved11) (void);
+  void (*_gtk_reserved12) (void);
+};
+
+struct _GtkBorder
+{
+  gint left;
+  gint right;
+  gint top;
+  gint bottom;
 };
 
 GType     gtk_style_get_type                 (void) G_GNUC_CONST;
 GtkStyle* gtk_style_new                             (void);
-GtkStyle* gtk_style_copy                    (GtkStyle      *style);
-GtkStyle* gtk_style_attach                  (GtkStyle      *style,
-                                             GdkWindow     *window);
+GtkStyle* gtk_style_copy                    (GtkStyle     *style);
+GtkStyle* gtk_style_attach                  (GtkStyle     *style,
+                                             GdkWindow    *window);
 void     gtk_style_detach                   (GtkStyle     *style);
+
+#ifndef GTK_DISABLE_DEPRECATED
 GtkStyle* gtk_style_ref                             (GtkStyle     *style);
 void     gtk_style_unref                    (GtkStyle     *style);
+
+GdkFont * gtk_style_get_font                 (GtkStyle     *style);
+void      gtk_style_set_font                 (GtkStyle     *style,
+                                             GdkFont      *font);
+#endif /* GTK_DISABLE_DEPRECATED */
+
 void     gtk_style_set_background           (GtkStyle     *style,
                                              GdkWindow    *window,
                                              GtkStateType  state_type);
@@ -408,6 +454,16 @@ void         gtk_style_apply_default_background (GtkStyle     *style,
                                              gint          width, 
                                              gint          height);
 
+GtkIconSet* gtk_style_lookup_icon_set (GtkStyle            *style,
+                                       const gchar         *stock_id);
+GdkPixbuf*  gtk_style_render_icon     (GtkStyle            *style,
+                                       const GtkIconSource *source,
+                                       GtkTextDirection     direction,
+                                       GtkStateType         state,
+                                       GtkIconSize          size,
+                                       GtkWidget           *widget,
+                                       const gchar         *detail);
+#ifndef GTK_DISABLE_DEPRECATED
 void gtk_draw_hline      (GtkStyle        *style,
                          GdkWindow       *window,
                          GtkStateType     state_type,
@@ -417,8 +473,8 @@ void gtk_draw_hline      (GtkStyle        *style,
 void gtk_draw_vline      (GtkStyle        *style,
                          GdkWindow       *window,
                          GtkStateType     state_type,
-                         gint             y1,
-                         gint             y2,
+                         gint             y1_,
+                         gint             y2_,
                          gint             x);
 void gtk_draw_shadow     (GtkStyle        *style,
                          GdkWindow       *window,
@@ -453,20 +509,6 @@ void gtk_draw_diamond    (GtkStyle        *style,
                          gint             y,
                          gint             width,
                          gint             height);
-void gtk_draw_oval       (GtkStyle        *style,
-                         GdkWindow       *window,
-                         GtkStateType     state_type,
-                         GtkShadowType    shadow_type,
-                         gint             x,
-                         gint             y,
-                         gint             width,
-                         gint             height);
-void gtk_draw_string     (GtkStyle        *style,
-                         GdkWindow       *window,
-                         GtkStateType     state_type,
-                         gint             x,
-                         gint             y,
-                         const gchar     *string);
 void gtk_draw_box        (GtkStyle        *style,
                          GdkWindow       *window,
                          GtkStateType     state_type,
@@ -499,23 +541,6 @@ void gtk_draw_option     (GtkStyle        *style,
                          gint             y,
                          gint             width,
                          gint             height);
-void gtk_draw_cross      (GtkStyle        *style,
-                         GdkWindow       *window,
-                         GtkStateType     state_type,
-                         GtkShadowType    shadow_type,
-                         gint             x,
-                         gint             y,
-                         gint             width,
-                         gint             height);
-void gtk_draw_ramp       (GtkStyle        *style,
-                         GdkWindow       *window,
-                         GtkStateType     state_type,
-                         GtkShadowType    shadow_type,
-                         GtkArrowType     arrow_type,
-                         gint             x,
-                         gint             y,
-                         gint             width,
-                         gint             height);
 void gtk_draw_tab        (GtkStyle        *style,
                          GdkWindow       *window,
                          GtkStateType     state_type,
@@ -579,6 +604,28 @@ void gtk_draw_handle     (GtkStyle        *style,
                          gint             width,
                          gint             height,
                          GtkOrientation   orientation);
+void gtk_draw_expander   (GtkStyle        *style,
+                          GdkWindow       *window,
+                          GtkStateType     state_type,
+                          gint             x,
+                          gint             y,
+                         GtkExpanderStyle expander_style);
+void gtk_draw_layout     (GtkStyle        *style,
+                          GdkWindow       *window,
+                          GtkStateType     state_type,
+                         gboolean         use_text,
+                          gint             x,
+                          gint             y,
+                          PangoLayout     *layout);
+void gtk_draw_resize_grip (GtkStyle       *style,
+                           GdkWindow      *window,
+                           GtkStateType    state_type,
+                           GdkWindowEdge   edge,
+                           gint            x,
+                           gint            y,
+                           gint            width,
+                           gint            height);
+#endif /* GTK_DISABLE_DEPRECATED */
 
 void gtk_paint_hline      (GtkStyle        *style,
                           GdkWindow       *window,
@@ -595,8 +642,8 @@ void gtk_paint_vline      (GtkStyle        *style,
                           GdkRectangle    *area,
                           GtkWidget       *widget,
                           const gchar     *detail,
-                          gint             y1,
-                          gint             y2,
+                          gint             y1_,
+                          gint             y2_,
                           gint             x);
 void gtk_paint_shadow     (GtkStyle        *style,
                           GdkWindow       *window,
@@ -643,26 +690,6 @@ void gtk_paint_diamond    (GtkStyle        *style,
                           gint             y,
                           gint             width,
                           gint             height);
-void gtk_paint_oval       (GtkStyle        *style,
-                          GdkWindow       *window,
-                          GtkStateType     state_type,
-                          GtkShadowType    shadow_type,
-                          GdkRectangle    *area,
-                          GtkWidget       *widget,
-                          const gchar     *detail,
-                          gint             x,
-                          gint             y,
-                          gint             width,
-                          gint             height);
-void gtk_paint_string     (GtkStyle        *style,
-                          GdkWindow       *window,
-                          GtkStateType     state_type,
-                          GdkRectangle    *area,
-                          GtkWidget       *widget,
-                          const gchar     *detail,
-                          gint             x,
-                          gint             y,
-                          const gchar     *string);
 void gtk_paint_box        (GtkStyle        *style,
                           GdkWindow       *window,
                           GtkStateType     state_type,
@@ -707,29 +734,6 @@ void gtk_paint_option     (GtkStyle        *style,
                           gint             y,
                           gint             width,
                           gint             height);
-void gtk_paint_cross      (GtkStyle        *style,
-                          GdkWindow       *window,
-                          GtkStateType     state_type,
-                          GtkShadowType    shadow_type,
-                          GdkRectangle    *area,
-                          GtkWidget       *widget,
-                          const gchar     *detail,
-                          gint             x,
-                          gint             y,
-                          gint             width,
-                          gint             height);
-void gtk_paint_ramp       (GtkStyle        *style,
-                          GdkWindow       *window,
-                          GtkStateType     state_type,
-                          GtkShadowType    shadow_type,
-                          GdkRectangle    *area,
-                          GtkWidget       *widget,
-                          const gchar     *detail,
-                          GtkArrowType     arrow_type,
-                          gint             x,
-                          gint             y,
-                          gint             width,
-                          gint             height);
 void gtk_paint_tab        (GtkStyle        *style,
                           GdkWindow       *window,
                           GtkStateType     state_type,
@@ -783,6 +787,7 @@ void gtk_paint_extension  (GtkStyle        *style,
                           GtkPositionType  gap_side);
 void gtk_paint_focus      (GtkStyle        *style,
                           GdkWindow       *window,
+                          GtkStateType     state_type,
                           GdkRectangle    *area,
                           GtkWidget       *widget,
                           const gchar     *detail,
@@ -814,6 +819,80 @@ void gtk_paint_handle     (GtkStyle        *style,
                           gint             width,
                           gint             height,
                           GtkOrientation   orientation);
+void gtk_paint_expander   (GtkStyle        *style,
+                           GdkWindow       *window,
+                           GtkStateType     state_type,
+                           GdkRectangle    *area,
+                           GtkWidget       *widget,
+                           const gchar     *detail,
+                           gint             x,
+                           gint             y,
+                          GtkExpanderStyle expander_style);
+void gtk_paint_layout     (GtkStyle        *style,
+                           GdkWindow       *window,
+                           GtkStateType     state_type,
+                          gboolean         use_text,
+                           GdkRectangle    *area,
+                           GtkWidget       *widget,
+                           const gchar     *detail,
+                           gint             x,
+                           gint             y,
+                           PangoLayout     *layout);
+
+void gtk_paint_resize_grip (GtkStyle           *style,
+                            GdkWindow          *window,
+                            GtkStateType         state_type,
+                            GdkRectangle        *area,
+                            GtkWidget          *widget,
+                            const gchar                *detail,
+                            GdkWindowEdge        edge,
+                            gint                 x,
+                            gint                 y,
+                            gint                 width,
+                            gint                height);
+
+
+GType      gtk_border_get_type (void);
+GtkBorder *gtk_border_copy     (const GtkBorder *border_);
+void       gtk_border_free (   GtkBorder       *border_);
+
+/* --- private API --- */
+const GValue* _gtk_style_peek_property_value (GtkStyle           *style,
+                                             GType               widget_type,
+                                             GParamSpec         *pspec,
+                                             GtkRcPropertyParser parser);
+
+void _gtk_style_init_for_settings (GtkStyle    *style,
+                                  GtkSettings *settings);
+
+/* deprecated */
+#ifndef GTK_DISABLE_DEPRECATED
+#define gtk_style_apply_default_pixmap(s,gw,st,a,x,y,w,h) gtk_style_apply_default_background (s,gw,1,st,a,x,y,w,h)
+void gtk_draw_string     (GtkStyle        *style,
+                         GdkWindow       *window,
+                         GtkStateType     state_type,
+                         gint             x,
+                         gint             y,
+                         const gchar     *string);
+void gtk_paint_string     (GtkStyle        *style,
+                          GdkWindow       *window,
+                          GtkStateType     state_type,
+                          GdkRectangle    *area,
+                          GtkWidget       *widget,
+                          const gchar     *detail,
+                          gint             x,
+                          gint             y,
+                          const gchar     *string);
+#endif /* GTK_DISABLE_DEPRECATED */
+
+GdkGC *_gtk_get_insertion_cursor_gc (GtkWidget        *widget,
+                                    gboolean          is_primary);
+void   _gtk_draw_insertion_cursor   (GtkWidget        *widget,
+                                    GdkDrawable      *drawable,
+                                    GdkGC            *gc,
+                                    GdkRectangle     *location,
+                                    GtkTextDirection  direction,
+                                    gboolean          draw_arrow);
 
 #ifdef __cplusplus
 }