summaryrefslogtreecommitdiffstats
path: root/tdegtk/tdegtk-support.c
diff options
context:
space:
mode:
Diffstat (limited to 'tdegtk/tdegtk-support.c')
-rw-r--r--tdegtk/tdegtk-support.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/tdegtk/tdegtk-support.c b/tdegtk/tdegtk-support.c
new file mode 100644
index 0000000..52c161d
--- /dev/null
+++ b/tdegtk/tdegtk-support.c
@@ -0,0 +1,89 @@
+/* The TdeGtk Theming Engine for Gtk+.
+ * Copyright (C) 2011 Canonical Ltd
+ *
+ * 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, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * Authored by Andrea Cimitan <[email protected]>
+ *
+ */
+
+#include <gtk/gtk.h>
+
+#include "tdegtk-engine.h"
+#include "tdegtk-support.h"
+#include "tdegtk-types.h"
+
+gboolean
+tdegtk_gdk_rgba_is_default (GdkRGBA *color)
+{
+ GdkRGBA default_color;
+
+ /* pink is default GdkRGBA color set in gtk/gtkstyleproperty.c */
+ gdk_rgba_parse (&default_color, "pink");
+
+ return gdk_rgba_equal (&default_color, color);
+}
+
+void
+tdegtk_get_line_width (GtkThemingEngine *engine,
+ gdouble *line_width)
+{
+ GtkBorder border;
+ GtkStateFlags state;
+
+ state = gtk_theming_engine_get_state (engine);
+
+ gtk_theming_engine_get_border (engine, state, &border);
+
+ *line_width = MIN (MIN (border.top, border.bottom),
+ MIN (border.left, border.right));
+}
+
+gboolean
+tdegtk_gtk_border_is_zero (GtkBorder *border)
+{
+ return (border->top == 0) && (border->bottom == 0) && (border->left == 0) && (border->right == 0);
+}
+
+void
+tdegtk_lookup_functions (TdeGtkEngine *engine,
+ TdeGtkStyleFunctions **functions)
+{
+ /* only one style is defined now,
+ * add here a check for a theming engine css property,
+ * for example -tdegtk-style, and assign new styles */
+ if (functions)
+ *functions = &engine->style_functions[TDEGTK_STYLE_DEFAULT];
+}
+
+void
+tdegtk_trim_scale_allocation (GtkThemingEngine *engine,
+ gdouble *x,
+ gdouble *y,
+ gdouble *width,
+ gdouble *height)
+{
+ if (!gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_VERTICAL))
+ {
+ *y += (gint) (*height / 2.0) - 2.0;
+ *height = 5;
+ }
+ else
+ {
+ *x += (gint) (*width / 2.0) - 2.0;
+ *width = 5;
+ }
+}