File unico-bnc813150-gtk-theming-engine-crash.patch of Package unico
=== modified file 'Makefile.am'
--- Makefile.am 2011-05-19 13:32:42 +0000
+++ Makefile.am 2012-07-25 22:49:45 +0000
@@ -1,7 +1,6 @@
SUBDIRS = \
build \
- unico \
- tests
+ unico
ACLOCAL_AMFLAGS = -I build
=== modified file 'configure.ac'
--- configure.ac 2012-03-29 14:25:14 +0000
+++ configure.ac 2012-07-25 22:49:45 +0000
@@ -35,7 +35,7 @@
PKG_PROG_PKG_CONFIG
AC_SUBST(glib_req, 2.26.0)
-AC_SUBST(gtk_req, 3.3.14)
+AC_SUBST(gtk_req, 3.5.2)
AC_SUBST(cairo_req, 1.10)
PKG_CHECK_MODULES(DEPS, glib-2.0 >= $glib_req gtk+-3.0 >= $gtk_req cairo >= $cairo_req)
@@ -113,7 +113,6 @@
build/Makefile
po/Makefile
unico/Makefile
-tests/Makefile
])
AC_OUTPUT
=== removed directory 'tests'
=== removed file 'tests/Makefile.am'
--- tests/Makefile.am 2011-05-18 13:41:46 +0000
+++ tests/Makefile.am 1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
-EXTRA_DIST = \
- test-widgets.glade
-
-noinst_PROGRAMS = \
- test-widgets
-
-test_widgets_CFLAGS = \
- -I$(top_srcdir) \
- $(UNICO_CFLAGS)
-
-test_widgets_LDADD = \
- $(UNICO_LIBADD)
-
-test_widgets_LDFLAGS = \
- $(UNICO_LDFLAGS)
-
-# FIXME(Cimi): Figure out what tests must be compiled and add them here.
=== removed file 'tests/test-widgets.c'
--- tests/test-widgets.c 2011-05-18 13:41:46 +0000
+++ tests/test-widgets.c 1970-01-01 00:00:00 +0000
@@ -1,45 +0,0 @@
-/* The Unico 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 <andrea.cimitan@canonical.com>
- *
- */
-
-#include <gtk/gtk.h>
-
-int
-main (int argc, char *argv[])
-{
- GtkBuilder *builder;
- GtkWidget *window;
-
- gtk_init (&argc, &argv);
-
- builder = gtk_builder_new ();
- gtk_builder_add_from_file (builder, "./test-widgets.glade", NULL);
-
- window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
- gtk_builder_connect_signals (builder, NULL);
-
- g_object_unref (G_OBJECT (builder));
-
- gtk_widget_show (window);
- gtk_main ();
-
- return 0;
-}
=== removed file 'tests/test-widgets.glade'
--- tests/test-widgets.glade 2011-05-18 13:41:46 +0000
+++ tests/test-widgets.glade 1970-01-01 00:00:00 +0000
@@ -1,1717 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <!-- interface-requires gtk+ 3.0 -->
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">100</property>
- <property name="value">50</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkListStore" id="liststore1">
- <columns>
- <!-- column-name Cool -->
- <column type="gboolean"/>
- <!-- column-name Name -->
- <column type="gchararray"/>
- <!-- column-name Nick -->
- <column type="gchararray"/>
- </columns>
- <data>
- <row>
- <col id="0">True</col>
- <col id="1" translatable="yes">Andrea</col>
- <col id="2" translatable="yes">Cimi</col>
- </row>
- <row>
- <col id="0">False</col>
- <col id="1" translatable="yes">Otto</col>
- <col id="2" translatable="yes">chaotic</col>
- </row>
- </data>
- </object>
- <object class="GtkTextBuffer" id="textbuffer1">
- <property name="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-Nullam fringilla, est ut feugiat ultrices, elit lacus ultricies nibh, id commodo tortor nisi id elit.
-Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
-Morbi vel elit erat. Maecenas dignissim, dui et pharetra rutrum, tellus lectus rutrum mi, a convallis libero nisi quis tellus.
-Nulla facilisi. Nullam eleifend lobortis nisl, in porttitor tellus malesuada vitae.
-Aenean lacus tellus, pellentesque quis molestie quis, fringilla in arcu.
-Duis elementum, tellus sed tristique semper, metus metus accumsan augue, et porttitor augue orci a libero.
-Ut sed justo ac felis placerat laoreet sed id sem. Proin mattis tincidunt odio vitae tristique.
-Morbi massa libero, congue vitae scelerisque vel, ultricies vel nisl.
-Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus rutrum est.
-Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
-Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
-Suspendisse feugiat quam quis dolor accumsan cursus. </property>
- </object>
- <object class="GtkWindow" id="window">
- <property name="can_focus">False</property>
- <child>
- <object class="GtkBox" id="box1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkMenuBar" id="menubar1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menuitem1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">_File</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem1">
- <property name="label">gtk-new</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem2">
- <property name="label">gtk-open</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem3">
- <property name="label">gtk-save</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem4">
- <property name="label">gtk-save-as</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem5">
- <property name="label">gtk-quit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">_Edit</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem6">
- <property name="label">gtk-cut</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem7">
- <property name="label">gtk-copy</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem8">
- <property name="label">gtk-paste</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem9">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">_View</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">_Help</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem10">
- <property name="label">gtk-about</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar" id="toolbar1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkToolButton" id="toolbutton2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Save</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-save</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="toolbutton1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Open</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-open</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparatorToolItem" id="toolbutton3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="toolbutton4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Find</property>
- <property name="use_underline">True</property>
- <property name="stock_id">gtk-find</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolItem" id="toolbutton5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolItem" id="toolbutton6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <child>
- <object class="GtkEntry" id="entry3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="text" translatable="yes">search...</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkBox" id="box3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkComboBoxText" id="comboboxtext1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="has_entry">True</property>
- <child internal-child="entry">
- <object class="GtkEntry" id="comboboxtext-entry">
- <property name="can_focus">False</property>
- <property name="text" translatable="yes">comboboxentry</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="comboboxtext2">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">False</property>
- <property name="has_entry">True</property>
- <child internal-child="entry">
- <object class="GtkEntry" id="comboboxtext-entry2">
- <property name="can_focus">False</property>
- <property name="invisible_char">•</property>
- <property name="text" translatable="yes">comboboxentry</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="text" translatable="yes">entry</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry2">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="text" translatable="yes">entry</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box18">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">20</property>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">label</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">label</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="spinbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="spinbutton2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="row_homogeneous">True</property>
- <property name="n_rows">4</property>
- <property name="n_columns">2</property>
- <child>
- <object class="GtkCheckButton" id="checkbutton1">
- <property name="label" translatable="yes">checkbutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="checkbutton2">
- <property name="label" translatable="yes">checkbutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="checkbutton3">
- <property name="label" translatable="yes">checkbutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="checkbutton4">
- <property name="label" translatable="yes">checkbutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="radiobutton1">
- <property name="label" translatable="yes">radiobutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="radiobutton2">
- <property name="label" translatable="yes">radiobutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">radiobutton1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="radiobutton3">
- <property name="label" translatable="yes">radiobutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="radiobutton4">
- <property name="label" translatable="yes">radiobutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">radiobutton3</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">4</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparator" id="separator1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box19">
- <property name="width_request">110</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkToggleButton" id="togglebutton1">
- <property name="label" translatable="yes">togglebutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToggleButton" id="togglebutton2">
- <property name="label" translatable="yes">togglebutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkToggleButton" id="togglebutton3">
- <property name="label" translatable="yes">togglebutton</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="active">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkToggleButton" id="togglebutton4">
- <property name="label" translatable="yes">togglebutton</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="active">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="model">liststore1</property>
- <property name="active">0</property>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext1"/>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox2">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">False</property>
- <property name="model">liststore1</property>
- <property name="active">1</property>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext2"/>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkFontButton" id="fontbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkColorButton" id="colorbutton1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="color">#31316867a09f</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkFileChooserButton" id="filechooserbutton1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">8</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparator" id="separator2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box20">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkBox" id="box21">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">8</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkProgressBar" id="progressbar1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="fraction">0.5</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkProgressBar" id="progressbar2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="fraction">0.5</property>
- <property name="inverted">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box27">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkBox" id="box24">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="orientation">vertical</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkScale" id="scale1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">adjustment1</property>
- <property name="restrict_to_fill_level">False</property>
- <property name="fill_level">75</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScale" id="scale2">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="adjustment">adjustment1</property>
- <property name="restrict_to_fill_level">False</property>
- <property name="fill_level">75</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box25">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkBox" id="box28">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="vexpand">True</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkProgressBar" id="progressbar5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="fraction">0.5</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkProgressBar" id="progressbar6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="fraction">0.5</property>
- <property name="inverted">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box23">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="vexpand">True</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkScale" id="scale3">
- <property name="height_request">100</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">adjustment1</property>
- <property name="restrict_to_fill_level">False</property>
- <property name="fill_level">75</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScale" id="scale4">
- <property name="height_request">100</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">adjustment1</property>
- <property name="restrict_to_fill_level">False</property>
- <property name="fill_level">75</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box22">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkHandleBox" id="handlebox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLinkButton" id="linkbutton1">
- <property name="label" translatable="yes">link button</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="has_tooltip">True</property>
- <property name="use_action_appearance">False</property>
- <property name="relief">none</property>
- <property name="uri">http://www.ubuntu.com</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkExpander" id="expander1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkViewport" id="viewport1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-Nullam fringilla, est ut feugiat ultrices, elit lacus ultricies nibh, id commodo tortor nisi id elit.
-Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
-Morbi vel elit erat. Maecenas dignissim, dui et pharetra rutrum, tellus lectus rutrum mi, a convallis libero nisi quis tellus.
-Nulla facilisi. Nullam eleifend lobortis nisl, in porttitor tellus malesuada vitae.
-Aenean lacus tellus, pellentesque quis molestie quis, fringilla in arcu.
-Duis elementum, tellus sed tristique semper, metus metus accumsan augue, et porttitor augue orci a libero.
-Ut sed justo ac felis placerat laoreet sed id sem. Proin mattis tincidunt odio vitae tristique.
-Morbi massa libero, congue vitae scelerisque vel, ultricies vel nisl.
-Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus rutrum est.
-Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
-Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
-Suspendisse feugiat quam quis dolor accumsan cursus. </property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">expander</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparator" id="separator3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box26">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkFrame" id="frame1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="left_padding">12</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>In</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="frame2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">out</property>
- <child>
- <object class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="left_padding">12</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Out</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="frame3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <child>
- <object class="GtkAlignment" id="alignment3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="left_padding">12</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label17">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Etched out</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="frame4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">etched-out</property>
- <child>
- <object class="GtkAlignment" id="alignment4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="left_padding">12</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label18">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Etched out</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparator" id="separator4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="width_request">150</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="vscrollbar_policy">always</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="treeview1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="model">liststore1</property>
- <property name="headers_clickable">False</property>
- <property name="search_column">0</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="treeviewcolumn3">
- <property name="title" translatable="yes">Cool</property>
- <child>
- <object class="GtkCellRendererToggle" id="cellrenderertoggle1"/>
- <attributes>
- <attribute name="active">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="treeviewcolumn1">
- <property name="title" translatable="yes">Name</property>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext3"/>
- <attributes>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="treeviewcolumn2">
- <property name="title" translatable="yes">Nick</property>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext4"/>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTextView" id="textview1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="buffer">textbuffer1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">6</property>
- <property name="position">8</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparator" id="separator5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_left">5</property>
- <property name="margin_right">5</property>
- <property name="margin_bottom">5</property>
- <property name="spacing">10</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkNotebook" id="notebook1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkBox" id="box6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 1</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 2</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 3</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tab_pos">right</property>
- <child>
- <object class="GtkBox" id="box9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 1</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 2</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 3</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tab_pos">bottom</property>
- <child>
- <object class="GtkBox" id="box12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 1</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 2</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box14">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 3</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook4">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tab_pos">left</property>
- <child>
- <object class="GtkBox" id="box15">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label14">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 1</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box16">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label15">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 2</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box17">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label16">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">page 3</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkStatusbar" id="statusbar1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
-</interface>
=== modified file 'unico/Makefile.am'
--- unico/Makefile.am 2011-07-28 09:12:33 +0000
+++ unico/Makefile.am 2012-07-25 22:49:45 +0000
@@ -1,8 +1,5 @@
source_h = \
$(srcdir)/unico.h \
- $(srcdir)/exponential-blur.h \
- $(srcdir)/gtkroundedboxprivate.h \
- $(srcdir)/raico-blur.h \
$(srcdir)/unico-cairo-support.h \
$(srcdir)/unico-draw.h \
$(srcdir)/unico-engine.h \
@@ -10,9 +7,6 @@
$(srcdir)/unico-types.h
source_c = \
- $(srcdir)/exponential-blur.c \
- $(srcdir)/gtkroundedbox.c \
- $(srcdir)/raico-blur.c \
$(srcdir)/unico-cairo-support.c \
$(srcdir)/unico-draw.c \
$(srcdir)/unico-engine.c \
=== removed file 'unico/exponential-blur.c'
--- unico/exponential-blur.c 2011-07-13 10:21:30 +0000
+++ unico/exponential-blur.c 1970-01-01 00:00:00 +0000
@@ -1,288 +0,0 @@
-/* The Unico Theming Engine for Gtk+.
- * Copyright (C) 2009 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 Mirco "MacSlow" Mueller <mirco.mueller@canonical.com>
- *
- * Notes:
- * based on exponential-blur algorithm by Jani Huhtanen
- *
- */
-
-/* FIXME: not working yet, unfinished */
-
-#include <math.h>
-
-#include "exponential-blur.h"
-
-static inline void
-_blurinner (guchar* pixel,
- gint *zR,
- gint *zG,
- gint *zB,
- gint *zA,
- gint alpha,
- gint aprec,
- gint zprec);
-
-static inline void
-_blurrow (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint line,
- gint alpha,
- gint aprec,
- gint zprec);
-
-static inline void
-_blurcol (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint col,
- gint alpha,
- gint aprec,
- gint zprec);
-
-void
-_expblur (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint radius,
- gint aprec,
- gint zprec);
-
-void
-surface_exponential_blur (cairo_surface_t* surface,
- guint radius)
-{
- guchar* pixels;
- guint width;
- guint height;
- cairo_format_t format;
-
- /* sanity checks are done in raico-blur.c */
-
- /* before we mess with the surface execute any pending drawing */
- cairo_surface_flush (surface);
-
- pixels = cairo_image_surface_get_data (surface);
- width = cairo_image_surface_get_width (surface);
- height = cairo_image_surface_get_height (surface);
- format = cairo_image_surface_get_format (surface);
-
- switch (format)
- {
- case CAIRO_FORMAT_ARGB32:
- _expblur (pixels, width, height, 4, radius, 16, 7);
- break;
- case CAIRO_FORMAT_RGB24:
- _expblur (pixels, width, height, 3, radius, 16, 7);
- break;
- case CAIRO_FORMAT_A8:
- _expblur (pixels, width, height, 1, radius, 16, 7);
- break;
- default:
- break;
- }
-
- /* inform cairo we altered the surfaces contents */
- cairo_surface_mark_dirty (surface);
-}
-
-/*
- * pixels image-data
- * width image-width
- * height image-height
- * channels image-channels
- *
- * in-place blur of image 'img' with kernel of approximate radius 'radius'
- *
- * blurs with two sided exponential impulse response
- *
- * aprec = precision of alpha parameter in fixed-point format 0.aprec
- *
- * zprec = precision of state parameters zR,zG,zB and zA in fp format 8.zprec
- */
-void
-_expblur (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint radius,
- gint aprec,
- gint zprec)
-{
- gint alpha;
- gint row = 0;
- gint col = 0;
-
- if (radius < 1)
- return;
-
- /* calculate the alpha such that 90% of
- * the kernel is within the radius.
- * (Kernel extends to infinity) */
- alpha = (gint) ((1 << aprec) * (1.0f - expf (-2.3f / (radius + 1.f))));
-
- for (; row < height; row++)
- _blurrow (pixels,
- width,
- height,
- channels,
- row,
- alpha,
- aprec,
- zprec);
-
- for(; col < width; col++)
- _blurcol (pixels,
- width,
- height,
- channels,
- col,
- alpha,
- aprec,
- zprec);
-
- return;
-}
-
-static inline void
-_blurinner (guchar* pixel,
- gint *zR,
- gint *zG,
- gint *zB,
- gint *zA,
- gint alpha,
- gint aprec,
- gint zprec)
-{
- gint R;
- gint G;
- gint B;
- guchar A;
-
- R = *pixel;
- G = *(pixel + 1);
- B = *(pixel + 2);
- A = *(pixel + 3);
-
- *zR += (alpha * ((R << zprec) - *zR)) >> aprec;
- *zG += (alpha * ((G << zprec) - *zG)) >> aprec;
- *zB += (alpha * ((B << zprec) - *zB)) >> aprec;
- *zA += (alpha * ((A << zprec) - *zA)) >> aprec;
-
- *pixel = *zR >> zprec;
- *(pixel + 1) = *zG >> zprec;
- *(pixel + 2) = *zB >> zprec;
- *(pixel + 3) = *zA >> zprec;
-}
-
-static inline void
-_blurrow (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint line,
- gint alpha,
- gint aprec,
- gint zprec)
-{
- gint zR;
- gint zG;
- gint zB;
- gint zA;
- gint index;
- guchar* scanline;
-
- scanline = &(pixels[line * width * channels]);
-
- zR = *scanline << zprec;
- zG = *(scanline + 1) << zprec;
- zB = *(scanline + 2) << zprec;
- zA = *(scanline + 3) << zprec;
-
- for (index = 0; index < width; index ++)
- _blurinner (&scanline[index * channels],
- &zR,
- &zG,
- &zB,
- &zA,
- alpha,
- aprec,
- zprec);
-
- for (index = width - 2; index >= 0; index--)
- _blurinner (&scanline[index * channels],
- &zR,
- &zG,
- &zB,
- &zA,
- alpha,
- aprec,
- zprec);
-}
-
-static inline void
-_blurcol (guchar* pixels,
- gint width,
- gint height,
- gint channels,
- gint x,
- gint alpha,
- gint aprec,
- gint zprec)
-{
- gint zR;
- gint zG;
- gint zB;
- gint zA;
- gint index;
- guchar* ptr;
-
- ptr = pixels;
-
- ptr += x * channels;
-
- zR = *((guchar*) ptr ) << zprec;
- zG = *((guchar*) ptr + 1) << zprec;
- zB = *((guchar*) ptr + 2) << zprec;
- zA = *((guchar*) ptr + 3) << zprec;
-
- for (index = width; index < (height - 1) * width; index += width)
- _blurinner ((guchar*) &ptr[index * channels],
- &zR,
- &zG,
- &zB,
- &zA,
- alpha,
- aprec,
- zprec);
-
- for (index = (height - 2) * width; index >= 0; index -= width)
- _blurinner ((guchar*) &ptr[index * channels],
- &zR,
- &zG,
- &zB,
- &zA,
- alpha,
- aprec,
- zprec);
-}
=== removed file 'unico/exponential-blur.h'
--- unico/exponential-blur.h 2011-08-09 22:26:09 +0000
+++ unico/exponential-blur.h 1970-01-01 00:00:00 +0000
@@ -1,37 +0,0 @@
-/* The Unico Theming Engine for Gtk+.
- * Copyright (C) 2009 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 Mirco "MacSlow" Mueller <mirco.mueller@canonical.com>
- *
- * Notes:
- * based on exponential-blur algorithm by Jani Huhtanen
- *
- */
-
-#ifndef _EXPONENTIAL_BLUR_H
-#define _EXPONENTIAL_BLUR_H
-
-#include <cairo.h>
-#include <glib.h>
-
-void
-surface_exponential_blur (cairo_surface_t* surface,
- guint radius);
-
-#endif // _EXPONENTIAL_BLUR_H
-
=== removed file 'unico/gtkroundedbox.c'
--- unico/gtkroundedbox.c 2012-02-08 12:54:39 +0000
+++ unico/gtkroundedbox.c 1970-01-01 00:00:00 +0000
@@ -1,527 +0,0 @@
-/* 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <string.h>
-#include <cairo.h>
-
-#include "gtkroundedboxprivate.h"
-
-double
-_gtk_css_number_get (const GtkCssNumber *number,
- double one_hundred_percent)
-{
- if (number->unit == GTK_CSS_PERCENT)
- return number->value * one_hundred_percent * 0.01;
- else
- return number->value;
-}
-
-/**
- * _gtk_rounded_box_init_rect:
- * @box: box to initialize
- * @x: x coordinate of box
- * @y: y coordinate of box
- * @width: width of box
- * @height: height of box
- *
- * Initializes the given @box to represent the given rectangle.
- * The
- **/
-void
-_gtk_rounded_box_init_rect (GtkRoundedBox *box,
- double x,
- double y,
- double width,
- double height)
-{
- memset (box, 0, sizeof (GtkRoundedBox));
-
- box->box.x = x;
- box->box.y = y;
- box->box.width = width;
- box->box.height = height;
-}
-
-/* clamp border radius, following CSS specs */
-static void
-gtk_rounded_box_clamp_border_radius (GtkRoundedBox *box)
-{
- gdouble factor = 1.0;
-
- /* note: division by zero leads to +INF, which is > factor, so will be ignored */
- factor = MIN (factor, box->box.width / (box->corner[GTK_CSS_TOP_LEFT].horizontal +
- box->corner[GTK_CSS_TOP_RIGHT].horizontal));
- factor = MIN (factor, box->box.height / (box->corner[GTK_CSS_TOP_RIGHT].vertical +
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical));
- factor = MIN (factor, box->box.width / (box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal +
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal));
- factor = MIN (factor, box->box.height / (box->corner[GTK_CSS_TOP_LEFT].vertical +
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical));
-
- box->corner[GTK_CSS_TOP_LEFT].horizontal *= factor;
- box->corner[GTK_CSS_TOP_LEFT].vertical *= factor;
- box->corner[GTK_CSS_TOP_RIGHT].horizontal *= factor;
- box->corner[GTK_CSS_TOP_RIGHT].vertical *= factor;
- box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal *= factor;
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical *= factor;
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal *= factor;
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical *= factor;
-}
-
-void
-_gtk_rounded_box_apply_border_radius (GtkRoundedBox *box,
- GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkJunctionSides junction)
-{
- GtkCssBorderCornerRadius *corner[4];
- guint i;
-
- gtk_theming_engine_get (engine, state,
- /* Can't use border-radius as it's an int for
- * backwards compat */
- "border-top-left-radius", &corner[GTK_CSS_TOP_LEFT],
- "border-top-right-radius", &corner[GTK_CSS_TOP_RIGHT],
- "border-bottom-right-radius", &corner[GTK_CSS_BOTTOM_RIGHT],
- "border-bottom-left-radius", &corner[GTK_CSS_BOTTOM_LEFT],
- NULL);
-
- if (corner[GTK_CSS_TOP_LEFT] && (junction & GTK_JUNCTION_CORNER_TOPLEFT) == 0)
- {
- box->corner[GTK_CSS_TOP_LEFT].horizontal = _gtk_css_number_get (&corner[GTK_CSS_TOP_LEFT]->horizontal,
- box->box.width);
- box->corner[GTK_CSS_TOP_LEFT].vertical = _gtk_css_number_get (&corner[GTK_CSS_TOP_LEFT]->vertical,
- box->box.height);
- }
- if (corner[GTK_CSS_TOP_RIGHT] && (junction & GTK_JUNCTION_CORNER_TOPRIGHT) == 0)
- {
- box->corner[GTK_CSS_TOP_RIGHT].horizontal = _gtk_css_number_get (&corner[GTK_CSS_TOP_RIGHT]->horizontal,
- box->box.width);
- box->corner[GTK_CSS_TOP_RIGHT].vertical = _gtk_css_number_get (&corner[GTK_CSS_TOP_RIGHT]->vertical,
- box->box.height);
- }
- if (corner[GTK_CSS_BOTTOM_RIGHT] && (junction & GTK_JUNCTION_CORNER_BOTTOMRIGHT) == 0)
- {
- box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal = _gtk_css_number_get (&corner[GTK_CSS_BOTTOM_RIGHT]->horizontal,
- box->box.width);
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical = _gtk_css_number_get (&corner[GTK_CSS_BOTTOM_RIGHT]->vertical,
- box->box.height);
- }
- if (corner[GTK_CSS_BOTTOM_LEFT] && (junction & GTK_JUNCTION_CORNER_BOTTOMLEFT) == 0)
- {
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal = _gtk_css_number_get (&corner[GTK_CSS_BOTTOM_LEFT]->horizontal,
- box->box.width);
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical = _gtk_css_number_get (&corner[GTK_CSS_BOTTOM_LEFT]->vertical,
- box->box.height);
- }
-
- gtk_rounded_box_clamp_border_radius (box);
-
- for (i = 0; i < 4; i++)
- g_free (corner[i]);
-}
-
-static void
-gtk_css_border_radius_grow (GtkRoundedBoxCorner *corner,
- double horizontal,
- double vertical)
-{
- corner->horizontal += horizontal;
- corner->vertical += vertical;
-
- if (corner->horizontal <= 0 || corner->vertical <= 0)
- {
- corner->horizontal = 0;
- corner->vertical = 0;
- }
-}
-void
-_gtk_rounded_box_grow (GtkRoundedBox *box,
- double top,
- double right,
- double bottom,
- double left)
-{
- if (box->box.width + left + right < 0)
- {
- box->box.x -= left * box->box.width / (left + right);
- box->box.width = 0;
- }
- else
- {
- box->box.x -= left;
- box->box.width += left + right;
- }
-
- if (box->box.height + bottom + right < 0)
- {
- box->box.y -= top * box->box.height / (top + bottom);
- box->box.height = 0;
- }
- else
- {
- box->box.y -= top;
- box->box.height += top + bottom;
- }
-
- gtk_css_border_radius_grow (&box->corner[GTK_CSS_TOP_LEFT], left, top);
- gtk_css_border_radius_grow (&box->corner[GTK_CSS_TOP_RIGHT], right, bottom);
- gtk_css_border_radius_grow (&box->corner[GTK_CSS_BOTTOM_RIGHT], right, top);
- gtk_css_border_radius_grow (&box->corner[GTK_CSS_BOTTOM_LEFT], left, bottom);
-}
-
-void
-_gtk_rounded_box_shrink (GtkRoundedBox *box,
- double top,
- double right,
- double bottom,
- double left)
-{
- _gtk_rounded_box_grow (box, -top, -right, -bottom, -left);
-}
-
-void
-_gtk_rounded_box_move (GtkRoundedBox *box,
- double dx,
- double dy)
-{
- box->box.x += dx;
- box->box.y += dy;
-}
-
-static void
-_cairo_ellipsis (cairo_t *cr,
- double xc, double yc,
- double xradius, double yradius,
- double angle1, double angle2)
-{
- if (xradius <= 0.0 || yradius <= 0.0)
- {
- cairo_line_to (cr, xc, yc);
- return;
- }
-
- cairo_save (cr);
- cairo_translate (cr, xc, yc);
- cairo_scale (cr, xradius, yradius);
- cairo_arc (cr, 0, 0, 1.0, angle1, angle2);
- cairo_restore (cr);
-}
-
-static void
-_cairo_ellipsis_negative (cairo_t *cr,
- double xc, double yc,
- double xradius, double yradius,
- double angle1, double angle2)
-{
- if (xradius <= 0.0 || yradius <= 0.0)
- {
- cairo_line_to (cr, xc, yc);
- return;
- }
-
- cairo_save (cr);
- cairo_translate (cr, xc, yc);
- cairo_scale (cr, xradius, yradius);
- cairo_arc_negative (cr, 0, 0, 1.0, angle1, angle2);
- cairo_restore (cr);
-}
-
-void
-_gtk_rounded_box_path (const GtkRoundedBox *box,
- cairo_t *cr)
-{
- cairo_new_sub_path (cr);
-
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_LEFT].vertical,
- box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->corner[GTK_CSS_TOP_LEFT].vertical,
- G_PI, 3 * G_PI / 2);
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_RIGHT].vertical,
- box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->corner[GTK_CSS_TOP_RIGHT].vertical,
- - G_PI / 2, 0);
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- 0, G_PI / 2);
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- G_PI / 2, G_PI);
-
- cairo_close_path (cr);
-}
-
-double
-_gtk_rounded_box_guess_length (const GtkRoundedBox *box,
- GtkCssSide side)
-{
- double length;
- GtkCssCorner before, after;
-
- before = side;
- after = (side + 1) % 4;
-
- if (side & 1)
- length = box->box.height
- - box->corner[before].vertical
- - box->corner[after].vertical;
- else
- length = box->box.width
- - box->corner[before].horizontal
- - box->corner[after].horizontal;
-
- length += G_PI * 0.125 * (box->corner[before].horizontal
- + box->corner[before].vertical
- + box->corner[after].horizontal
- + box->corner[after].vertical);
-
- return length;
-}
-
-void
-_gtk_rounded_box_path_side (const GtkRoundedBox *box,
- cairo_t *cr,
- GtkCssSide side)
-{
- switch (side)
- {
- case GTK_CSS_TOP:
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_LEFT].vertical,
- box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->corner[GTK_CSS_TOP_LEFT].vertical,
- 5 * G_PI / 4, 3 * G_PI / 2);
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_RIGHT].vertical,
- box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->corner[GTK_CSS_TOP_RIGHT].vertical,
- - G_PI / 2, -G_PI / 4);
- break;
- case GTK_CSS_RIGHT:
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_RIGHT].vertical,
- box->corner[GTK_CSS_TOP_RIGHT].horizontal,
- box->corner[GTK_CSS_TOP_RIGHT].vertical,
- - G_PI / 4, 0);
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- 0, G_PI / 4);
- break;
- case GTK_CSS_BOTTOM:
- _cairo_ellipsis (cr,
- box->box.x + box->box.width - box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- box->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- box->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- G_PI / 4, G_PI / 2);
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- G_PI / 2, 3 * G_PI / 4);
- break;
- case GTK_CSS_LEFT:
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->box.y + box->box.height - box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- box->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- box->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- 3 * G_PI / 4, G_PI);
- _cairo_ellipsis (cr,
- box->box.x + box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->box.y + box->corner[GTK_CSS_TOP_LEFT].vertical,
- box->corner[GTK_CSS_TOP_LEFT].horizontal,
- box->corner[GTK_CSS_TOP_LEFT].vertical,
- G_PI, 5 * G_PI / 4);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-}
-
-void
-_gtk_rounded_box_path_top (const GtkRoundedBox *outer,
- const GtkRoundedBox *inner,
- cairo_t *cr)
-{
- cairo_new_sub_path (cr);
-
- _cairo_ellipsis (cr,
- outer->box.x + outer->corner[GTK_CSS_TOP_LEFT].horizontal,
- outer->box.y + outer->corner[GTK_CSS_TOP_LEFT].vertical,
- outer->corner[GTK_CSS_TOP_LEFT].horizontal,
- outer->corner[GTK_CSS_TOP_LEFT].vertical,
- 5 * G_PI / 4, 3 * G_PI / 2);
- _cairo_ellipsis (cr,
- outer->box.x + outer->box.width - outer->corner[GTK_CSS_TOP_RIGHT].horizontal,
- outer->box.y + outer->corner[GTK_CSS_TOP_RIGHT].vertical,
- outer->corner[GTK_CSS_TOP_RIGHT].horizontal,
- outer->corner[GTK_CSS_TOP_RIGHT].vertical,
- - G_PI / 2, -G_PI / 4);
-
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->box.width - inner->corner[GTK_CSS_TOP_RIGHT].horizontal,
- inner->box.y + inner->corner[GTK_CSS_TOP_RIGHT].vertical,
- inner->corner[GTK_CSS_TOP_RIGHT].horizontal,
- inner->corner[GTK_CSS_TOP_RIGHT].vertical,
- -G_PI / 4, - G_PI / 2);
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->corner[GTK_CSS_TOP_LEFT].horizontal,
- inner->box.y + inner->corner[GTK_CSS_TOP_LEFT].vertical,
- inner->corner[GTK_CSS_TOP_LEFT].horizontal,
- inner->corner[GTK_CSS_TOP_LEFT].vertical,
- 3 * G_PI / 2, 5 * G_PI / 4);
-
- cairo_close_path (cr);
-}
-
-void
-_gtk_rounded_box_path_right (const GtkRoundedBox *outer,
- const GtkRoundedBox *inner,
- cairo_t *cr)
-{
- cairo_new_sub_path (cr);
-
- _cairo_ellipsis (cr,
- outer->box.x + outer->box.width - outer->corner[GTK_CSS_TOP_RIGHT].horizontal,
- outer->box.y + outer->corner[GTK_CSS_TOP_RIGHT].vertical,
- outer->corner[GTK_CSS_TOP_RIGHT].horizontal,
- outer->corner[GTK_CSS_TOP_RIGHT].vertical,
- - G_PI / 4, 0);
- _cairo_ellipsis (cr,
- outer->box.x + outer->box.width - outer->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- outer->box.y + outer->box.height - outer->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- outer->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- outer->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- 0, G_PI / 4);
-
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->box.width - inner->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- inner->box.y + inner->box.height - inner->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- inner->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- inner->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- G_PI / 4, 0);
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->box.width - inner->corner[GTK_CSS_TOP_RIGHT].horizontal,
- inner->box.y + inner->corner[GTK_CSS_TOP_RIGHT].vertical,
- inner->corner[GTK_CSS_TOP_RIGHT].horizontal,
- inner->corner[GTK_CSS_TOP_RIGHT].vertical,
- 0, - G_PI / 4);
-
- cairo_close_path (cr);
-}
-
-void
-_gtk_rounded_box_path_bottom (const GtkRoundedBox *outer,
- const GtkRoundedBox *inner,
- cairo_t *cr)
-{
- cairo_new_sub_path (cr);
-
- _cairo_ellipsis (cr,
- outer->box.x + outer->box.width - outer->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- outer->box.y + outer->box.height - outer->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- outer->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- outer->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- G_PI / 4, G_PI / 2);
- _cairo_ellipsis (cr,
- outer->box.x + outer->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- outer->box.y + outer->box.height - outer->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- outer->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- outer->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- G_PI / 2, 3 * G_PI / 4);
-
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- inner->box.y + inner->box.height - inner->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- inner->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- inner->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- 3 * G_PI / 4, G_PI / 2);
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->box.width - inner->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- inner->box.y + inner->box.height - inner->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- inner->corner[GTK_CSS_BOTTOM_RIGHT].horizontal,
- inner->corner[GTK_CSS_BOTTOM_RIGHT].vertical,
- G_PI / 2, G_PI / 4);
-
- cairo_close_path (cr);
-}
-
-void
-_gtk_rounded_box_path_left (const GtkRoundedBox *outer,
- const GtkRoundedBox *inner,
- cairo_t *cr)
-{
- cairo_new_sub_path (cr);
-
- _cairo_ellipsis (cr,
- outer->box.x + outer->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- outer->box.y + outer->box.height - outer->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- outer->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- outer->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- 3 * G_PI / 4, G_PI);
- _cairo_ellipsis (cr,
- outer->box.x + outer->corner[GTK_CSS_TOP_LEFT].horizontal,
- outer->box.y + outer->corner[GTK_CSS_TOP_LEFT].vertical,
- outer->corner[GTK_CSS_TOP_LEFT].horizontal,
- outer->corner[GTK_CSS_TOP_LEFT].vertical,
- G_PI, 5 * G_PI / 4);
-
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->corner[GTK_CSS_TOP_LEFT].horizontal,
- inner->box.y + inner->corner[GTK_CSS_TOP_LEFT].vertical,
- inner->corner[GTK_CSS_TOP_LEFT].horizontal,
- inner->corner[GTK_CSS_TOP_LEFT].vertical,
- 5 * G_PI / 4, G_PI);
- _cairo_ellipsis_negative (cr,
- inner->box.x + inner->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- inner->box.y + inner->box.height - inner->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- inner->corner[GTK_CSS_BOTTOM_LEFT].horizontal,
- inner->corner[GTK_CSS_BOTTOM_LEFT].vertical,
- G_PI, 3 * G_PI / 4);
-
- cairo_close_path (cr);
-}
-
-void
-_gtk_rounded_box_clip_path (const GtkRoundedBox *box,
- cairo_t *cr)
-{
- cairo_rectangle (cr,
- box->box.x, box->box.y,
- box->box.width, box->box.height);
-}
=== removed file 'unico/gtkroundedboxprivate.h'
--- unico/gtkroundedboxprivate.h 2012-02-08 12:54:39 +0000
+++ unico/gtkroundedboxprivate.h 1970-01-01 00:00:00 +0000
@@ -1,97 +0,0 @@
- /* 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GTK_ROUNDED_BOX_PRIVATE_H__
-#define __GTK_ROUNDED_BOX_PRIVATE_H__
-
-#include <cairo.h>
-#include <gtk/gtk.h>
-
-#include "unico-types.h"
-
-G_BEGIN_DECLS
-
-typedef struct _GtkRoundedBox GtkRoundedBox;
-typedef struct _GtkRoundedBoxCorner GtkRoundedBoxCorner;
-
-struct _GtkRoundedBoxCorner {
- double horizontal;
- double vertical;
-};
-
-struct _GtkRoundedBox {
- cairo_rectangle_t box;
- GtkRoundedBoxCorner corner[4];
-};
-
-double _gtk_css_number_get (const GtkCssNumber *number,
- double one_hundred_percent);
-
-void _gtk_rounded_box_init_rect (GtkRoundedBox *box,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-
-void _gtk_rounded_box_apply_border_radius (GtkRoundedBox *box,
- GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkJunctionSides junction);
-
-void _gtk_rounded_box_grow (GtkRoundedBox *box,
- gdouble top,
- gdouble right,
- gdouble bottom,
- gdouble left);
-
-void _gtk_rounded_box_shrink (GtkRoundedBox *box,
- gdouble top,
- gdouble right,
- gdouble bottom,
- gdouble left);
-
-void _gtk_rounded_box_move (GtkRoundedBox *box,
- gdouble dx,
- gdouble dy);
-
-void _gtk_rounded_box_path (const GtkRoundedBox *box,
- cairo_t *cr);
-
-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);
-
-G_END_DECLS
-
-#endif /* __GTK_ROUNDED_BOX_PRIVATE_H__ */
=== removed file 'unico/raico-blur.c'
--- unico/raico-blur.c 2011-08-09 22:26:09 +0000
+++ unico/raico-blur.c 1970-01-01 00:00:00 +0000
@@ -1,173 +0,0 @@
-/* The Unico Theming Engine for Gtk+.
- * Copyright (C) 2009 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 Mirco "MacSlow" Mueller <mirco.mueller@canonical.com>
- *
- */
-
-#include "exponential-blur.h"
-#include "raico-blur.h"
-
-struct _raico_blur_private_t
-{
- raico_blur_quality_t quality; /* low, medium, high */
- guint radius; /* blur-radius */
-};
-
-raico_blur_t*
-raico_blur_create (void)
-{
- raico_blur_t* blur = NULL;
- raico_blur_private_t* priv = NULL;
-
- blur = g_new0 (raico_blur_t, 1);
- if (!blur)
- {
- g_debug ("raico_blur_create(): could not allocate blur struct");
- return NULL;
- }
-
- priv = g_new0 (raico_blur_private_t, 1);
- if (!priv)
- {
- g_debug ("raico_blur_create(): could not allocate priv struct");
- g_free ((gpointer) blur);
- return NULL;
- }
-
- priv->quality = RAICO_BLUR_QUALITY_LOW;
-
- priv->radius = 0;
-
- blur->priv = priv;
-
- return blur;
-}
-
-raico_blur_quality_t
-raico_blur_get_quality (raico_blur_t* blur)
-{
- g_assert (blur != NULL);
-
- return blur->priv->quality;
-}
-
-void
-raico_blur_set_quality (raico_blur_t* blur,
- raico_blur_quality_t quality)
-{
- if (!blur)
- {
- g_debug ("raico_blur_set_quality(): NULL blur-pointer passed");
- return;
- }
-
- blur->priv->quality = quality;
-}
-
-guint
-raico_blur_get_radius (raico_blur_t* blur)
-{
- g_assert (blur != NULL);
-
- return blur->priv->radius;
-}
-
-void
-raico_blur_set_radius (raico_blur_t* blur,
- guint radius)
-{
- if (!blur)
- {
- g_debug ("raico_blur_set_radius(): NULL blur-pointer passed");
- return;
- }
-
- blur->priv->radius = radius;
-}
-
-void
-raico_blur_apply (raico_blur_t* blur,
- cairo_surface_t* surface)
-{
- cairo_format_t format;
-
- /* sanity checks */
- if (!blur)
- {
- g_debug ("raico_blur_apply(): NULL blur-pointer passed");
- return;
- }
-
- if (!surface)
- {
- g_debug ("raico_blur_apply(): NULL surface-pointer passed");
- return;
- }
-
- if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS)
- {
- g_debug ("raico_blur_apply(): invalid surface status");
- return;
- }
-
- if (cairo_surface_get_type (surface) != CAIRO_SURFACE_TYPE_IMAGE)
- {
- g_debug ("raico_blur_apply(): non-image surface passed");
- return;
- }
-
- format = cairo_image_surface_get_format (surface);
- if (format != CAIRO_FORMAT_A8 &&
- format != CAIRO_FORMAT_RGB24 &&
- format != CAIRO_FORMAT_ARGB32)
- {
- g_debug ("raico_blur_apply(): unsupported image-format");
- return;
- }
-
- /* stupid, but you never know */
- if (blur->priv->radius == 0)
- return;
-
- /* now do the real work */
- switch (blur->priv->quality)
- {
- default:
- case RAICO_BLUR_QUALITY_HIGH:
- case RAICO_BLUR_QUALITY_MEDIUM:
- /* Not implemented yet */
- //surface_gaussian_blur (surface, blur->priv->radius);
- case RAICO_BLUR_QUALITY_LOW:
- surface_exponential_blur (surface, blur->priv->radius);
- break;
- }
-}
-
-void
-raico_blur_destroy (raico_blur_t* blur)
-{
- if (!blur)
- {
- g_debug ("raico_blur_destroy(): invalid blur-pointer passed");
- return;
- }
-
- g_free ((gpointer) blur->priv);
- g_free ((gpointer) blur);
-}
=== removed file 'unico/raico-blur.h'
--- unico/raico-blur.h 2011-08-09 22:26:09 +0000
+++ unico/raico-blur.h 1970-01-01 00:00:00 +0000
@@ -1,67 +0,0 @@
-/* The Unico Theming Engine for Gtk+.
- * Copyright (C) 2009 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 Mirco "MacSlow" Mueller <mirco.mueller@canonical.com>
- *
- */
-
-#ifndef _RAICO_BLUR_H
-#define _RAICO_BLUR_H
-
-#include <cairo.h>
-#include <glib.h>
-
-typedef enum _raico_blur_quality_t
-{
- RAICO_BLUR_QUALITY_LOW = 0, /* low quality, but fast, maybe interactive */
- RAICO_BLUR_QUALITY_MEDIUM, /* compromise between speed and quality */
- RAICO_BLUR_QUALITY_HIGH /* quality before speed */
-} raico_blur_quality_t;
-
-typedef struct _raico_blur_private_t raico_blur_private_t;
-
-typedef struct _raico_blur_t
-{
- raico_blur_private_t* priv;
-} raico_blur_t;
-
-raico_blur_t*
-raico_blur_create (void);
-
-raico_blur_quality_t
-raico_blur_get_quality (raico_blur_t* blur);
-
-void
-raico_blur_set_quality (raico_blur_t* blur,
- raico_blur_quality_t quality);
-
-guint
-raico_blur_get_radius (raico_blur_t* blur);
-
-void
-raico_blur_set_radius (raico_blur_t* blur,
- guint radius);
-
-void
-raico_blur_apply (raico_blur_t* blur,
- cairo_surface_t* surface);
-
-void
-raico_blur_destroy (raico_blur_t* blur);
-
-#endif /* _RAICO_BLUR_H */
=== modified file 'unico/unico-cairo-support.c'
--- unico/unico-cairo-support.c 2012-03-26 15:10:02 +0000
+++ unico/unico-cairo-support.c 2012-07-25 22:49:45 +0000
@@ -23,1220 +23,10 @@
#include <cairo.h>
#include <gtk/gtk.h>
-#include "gtkroundedboxprivate.h"
-#include "raico-blur.h"
#include "unico-cairo-support.h"
#include "unico-support.h"
#include "unico-types.h"
-/* apply default color */
-static void
-apply_default_color (GdkRGBA *colors[4],
- GdkRGBA *default_color)
-{
- gint i;
-
- for (i = 0; i < 4; i++)
- if (unico_gdk_rgba_is_default (colors[i]))
- *colors[i] = *default_color;
-}
-
-/* set the border sides to 0 using hidden_side */
-static void
-hide_border_sides (GtkBorder *border,
- guint hidden_side)
-{
- if (hidden_side & SIDE_TOP)
- border->top = 0;
- if (hidden_side & SIDE_RIGHT)
- border->right = 0;
- if (hidden_side & SIDE_BOTTOM)
- border->bottom = 0;
- if (hidden_side & SIDE_LEFT)
- border->left = 0;
-}
-
-/* shrink coordinate using GtkBorder */
-static void
-shrink_with_border (GtkBorder *border,
- gdouble *x,
- gdouble *y,
- gdouble *width,
- gdouble *height)
-{
- *x += border->left;
- *y += border->top;
- *width -= border->left + border->right;
- *height -= border->top + border->bottom;
-}
-
-/* draw the background */
-static void
-draw_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GdkRGBA bg_color;
- GtkBorder border;
- GtkRoundedBox border_box;
- GtkStateFlags state;
- cairo_pattern_t *bg_pat;
- gdouble progress;
- gboolean running;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "background-image", &bg_pat,
- NULL);
- gtk_theming_engine_get_background_color (engine, state, &bg_color);
- gtk_theming_engine_get_border (engine, state, &border);
-
- hide_border_sides (&border, hidden_side);
-
- running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- /* clear cr if we can draw directly on the background */
- if (gtk_theming_engine_has_class (engine, "background"))
- {
- cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0); /* transparent */
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_paint (cr);
- }
-
- if (running)
- {
- GdkRGBA other_bg;
- GtkStateFlags other_state;
- cairo_pattern_t *new_pat = NULL;
- cairo_pattern_t *other_pat;
-
- if (state & GTK_STATE_FLAG_PRELIGHT)
- {
- other_state = state & ~(GTK_STATE_FLAG_PRELIGHT);
-
- /* useful math function to use for a pulse loop animation could be
- * progress = 1 - MAX (1 - fabs ((progress - 0.5)*2), 0);
- * but we need to handle the not-running case (once animation finished),
- * otherwise the last frame will be the PRELIGHT at full opacity. */
- progress = 1 - progress;
- }
- else
- other_state = state | GTK_STATE_FLAG_PRELIGHT;
-
- gtk_theming_engine_get (engine, other_state,
- "background-image", &other_pat,
- NULL);
- gtk_theming_engine_get_background_color (engine, other_state, &other_bg);
-
- if (bg_pat && other_pat)
- {
- /* two patterns */
- cairo_pattern_type_t type, other_type;
- gint n0, n1;
-
- cairo_pattern_get_color_stop_count (bg_pat, &n0);
- cairo_pattern_get_color_stop_count (other_pat, &n1);
- type = cairo_pattern_get_type (bg_pat);
- other_type = cairo_pattern_get_type (other_pat);
-
- if (type == other_type && n0 == n1)
- {
- /* two similar patterns, blend them point by point */
- gdouble offset0, red0, green0, blue0, alpha0;
- gdouble offset1, red1, green1, blue1, alpha1;
- gdouble x00, x01, y00, y01, x10, x11, y10, y11;
- gdouble r00, r01, r10, r11;
- gint i;
-
- if (type == CAIRO_PATTERN_TYPE_LINEAR)
- {
- cairo_pattern_get_linear_points (bg_pat, &x00, &y00, &x01, &y01);
- cairo_pattern_get_linear_points (other_pat, &x10, &y10, &x11, &y11);
-
- new_pat = cairo_pattern_create_linear (x00 + (x10 - x00) * progress,
- y00 + (y10 - y00) * progress,
- x01 + (x11 - x01) * progress,
- y01 + (y11 - y01) * progress);
- }
- else
- {
- cairo_pattern_get_radial_circles (bg_pat, &x00, &y00, &r00, &x01, &y01, &r01);
- cairo_pattern_get_radial_circles (other_pat, &x10, &y10, &r10, &x11, &y11, &r11);
-
- new_pat = cairo_pattern_create_radial (x00 + (x10 - x00) * progress,
- y00 + (y10 - y00) * progress,
- r00 + (r10 - r00) * progress,
- x01 + (x11 - x01) * progress,
- y01 + (y11 - y01) * progress,
- r01 + (r11 - r01) * progress);
- }
-
- cairo_pattern_set_filter (new_pat, CAIRO_FILTER_FAST);
- i = 0;
-
- while (i < n0 && i < n1)
- {
- cairo_pattern_get_color_stop_rgba (bg_pat, i,
- &offset0,
- &red0, &green0, &blue0,
- &alpha0);
- cairo_pattern_get_color_stop_rgba (other_pat, i,
- &offset1,
- &red1, &green1, &blue1,
- &alpha1);
- cairo_pattern_add_color_stop_rgba (new_pat,
- offset0 + ((offset1 - offset0) * progress),
- red0 + ((red1 - red0) * progress),
- green0 + ((green1 - green0) * progress),
- blue0 + ((blue1 - blue0) * progress),
- alpha0 + ((alpha1 - alpha0) * progress));
- i++;
- }
- }
- else
- {
- /* two different patterns, paint them with alpha */
- cairo_save (cr);
-
- cairo_reset_clip (cr);
- cairo_rectangle (cr, 0, 0, width, height);
- cairo_clip (cr);
-
- cairo_push_group (cr);
-
- cairo_scale (cr, width, height);
-
- cairo_set_source (cr, other_pat);
- cairo_paint_with_alpha (cr, progress);
-
- cairo_set_source (cr, bg_pat);
- cairo_paint_with_alpha (cr, 1.0 - progress);
-
- new_pat = cairo_pop_group (cr);
-
- cairo_restore (cr);
- }
- }
- else if (bg_pat || other_pat)
- {
- /* only one pattern, blend it with a color */
- const GdkRGBA *c;
- cairo_pattern_t *p;
- gdouble x0, y0, x1, y1, r0, r1;
- gint n, i;
-
- if (bg_pat)
- {
- p = bg_pat;
- c = &other_bg;
- progress = 1 - progress;
- }
- else
- {
- p = other_pat;
- c = &bg_color;
- }
-
- if (cairo_pattern_get_type (p) == CAIRO_PATTERN_TYPE_LINEAR)
- {
- cairo_pattern_get_linear_points (p, &x0, &y0, &x1, &y1);
- new_pat = cairo_pattern_create_linear (x0, y0, x1, y1);
- }
- else
- {
- cairo_pattern_get_radial_circles (p, &x0, &y0, &r0, &x1, &y1, &r1);
- new_pat = cairo_pattern_create_radial (x0, y0, r0, x1, y1, r1);
- }
-
- cairo_pattern_get_color_stop_count (p, &n);
-
- for (i = 0; i < n; i++)
- {
- gdouble red1, green1, blue1, alpha1;
- gdouble offset;
-
- cairo_pattern_get_color_stop_rgba (p, i,
- &offset,
- &red1, &green1, &blue1,
- &alpha1);
- cairo_pattern_add_color_stop_rgba (new_pat, offset,
- c->red + ((red1 - c->red) * progress),
- c->green + ((green1 - c->green) * progress),
- c->blue + ((blue1 - c->blue) * progress),
- c->alpha + ((alpha1 - c->alpha) * progress));
- }
- }
- else
- {
- /* just colors, create a new pattern blending them */
- new_pat = cairo_pattern_create_rgba (CLAMP (bg_color.red + ((other_bg.red - bg_color.red) * progress), 0, 1),
- CLAMP (bg_color.green + ((other_bg.green - bg_color.green) * progress), 0, 1),
- CLAMP (bg_color.blue + ((other_bg.blue - bg_color.blue) * progress), 0, 1),
- CLAMP (bg_color.alpha + ((other_bg.alpha - bg_color.alpha) * progress), 0, 1));
- }
-
- if (new_pat)
- {
- /* replace pattern to use */
- cairo_pattern_destroy (bg_pat);
- bg_pat = new_pat;
- }
-
- if (other_pat)
- cairo_pattern_destroy (other_pat);
- }
-
- /* create the path to fill */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- _gtk_rounded_box_shrink (&border_box, border.top, border.right, border.bottom, border.left);
- _gtk_rounded_box_path (&border_box, cr);
-
- if (bg_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, bg_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
- }
- else
- /* one color */
- gdk_cairo_set_source_rgba (cr, &bg_color);
-
- cairo_fill (cr);
-
- if (bg_pat)
- cairo_pattern_destroy (bg_pat);
-
- cairo_restore (cr);
-}
-
-/* draw the inner glow */
-static void
-draw_glow (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GdkRGBA *glow_color;
- GtkBorder border;
- GtkRoundedBox border_box, padding_box;
- GtkStateFlags state;
- cairo_t *cr_surface;
- cairo_surface_t *surface;
- gint bradius = 0;
- raico_blur_t* blur = NULL;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-glow-radius", &bradius,
- "-unico-glow-color", &glow_color,
- NULL);
-
- if (bradius <= 0)
- goto end_draw_glow;
-
- gtk_theming_engine_get_border (engine, state, &border);
-
- hide_border_sides (&border, hidden_side);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- /* create the path to clip */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- _gtk_rounded_box_shrink (&border_box, border.top, border.right, border.bottom, border.left);
- _gtk_rounded_box_path (&border_box, cr);
-
- cairo_clip (cr);
-
- /* create the surface to blur */
- surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
- width + bradius * 2,
- height + bradius * 2);
- cr_surface = cairo_create (surface);
-
- /* create the path on the surface to blur */
- _gtk_rounded_box_move (&border_box, bradius, bradius);
- padding_box = border_box;
- _gtk_rounded_box_shrink (&padding_box, border.top * 2, border.right * 2, border.bottom * 2, border.left * 2);
-
- cairo_set_fill_rule (cr_surface, CAIRO_FILL_RULE_EVEN_ODD);
-
- gdk_cairo_set_source_rgba (cr_surface, glow_color);
-
- _gtk_rounded_box_path (&border_box, cr_surface);
- _gtk_rounded_box_path (&padding_box, cr_surface);
- cairo_fill (cr_surface);
-
- /* create and apply raico blur */
- blur = raico_blur_create ();
- raico_blur_set_radius (blur, bradius);
- raico_blur_apply (blur, surface);
-
- /* paint the blurred surface to cr */
- cairo_set_source_surface (cr, surface, - bradius, - bradius);
- cairo_paint (cr);
-
- cairo_restore (cr);
-
- raico_blur_destroy(blur);
-
- cairo_surface_destroy (surface);
- cairo_destroy (cr_surface);
-
-end_draw_glow:
- gdk_rgba_free (glow_color);
-}
-
-/* draw a repeated texture */
-static void
-draw_texture (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GtkStateFlags state;
- GValue value = { 0, };
- cairo_pattern_t *texture = NULL;
- cairo_surface_t *surface = NULL;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get_property (engine, "-unico-background-texture", state, &value);
-
- if (!G_VALUE_HOLDS_BOXED (&value))
- return;
-
- texture = g_value_dup_boxed (&value);
- g_value_unset (&value);
-
- if (texture != NULL)
- cairo_pattern_get_surface (texture, &surface);
-
- if (surface != NULL)
- {
- GtkBorder border;
- GtkRoundedBox border_box;
- cairo_pattern_t *pat;
-
- gtk_theming_engine_get_border (engine, state, &border);
-
- hide_border_sides (&border, hidden_side);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- /* create the path to fill */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- _gtk_rounded_box_shrink (&border_box, border.top, border.right, border.bottom, border.left);
- _gtk_rounded_box_path (&border_box, cr);
-
- pat = cairo_pattern_create_for_surface (surface);
- cairo_pattern_set_extend (pat, CAIRO_EXTEND_REPEAT);
- cairo_set_source (cr, pat);
-
- cairo_fill (cr);
-
- cairo_restore (cr);
-
- cairo_pattern_destroy (pat);
- }
-
- if (texture != NULL)
- cairo_pattern_destroy (texture);
-}
-
-void
-unico_cairo_draw_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GtkBorder *outer_border;
- GtkStateFlags state;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
-
- hide_border_sides (outer_border, hidden_side);
-
- shrink_with_border (outer_border, &x, &y, &width, &height);
-
- /* first layer, background */
- draw_background (engine, cr,
- x, y,
- width, height,
- hidden_side, junction);
-
- /* second layer, glow */
- draw_glow (engine, cr,
- x, y,
- width, height,
- hidden_side, junction);
-
- /* third layer, texture */
- draw_texture (engine, cr,
- x, y,
- width, height,
- hidden_side, junction);
-
- gtk_border_free (outer_border);
-}
-
-/* shade a color */
-static void
-color_shade (const GdkRGBA *color,
- gdouble factor,
- GdkRGBA *color_return)
-{
- GtkSymbolicColor *literal, *shade;
-
- literal = gtk_symbolic_color_new_literal (color);
- shade = gtk_symbolic_color_new_shade (literal, factor);
- gtk_symbolic_color_unref (literal);
-
- gtk_symbolic_color_resolve (shade, NULL, color_return);
- gtk_symbolic_color_unref (shade);
-}
-
-/* draw the border */
-static void
-draw_border (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GdkRGBA *colors[4];
- GtkBorder border;
- GtkBorderStyle border_style;
- GtkRoundedBox border_box, padding_box;
- GtkStateFlags state;
- cairo_pattern_t *border_pat;
- gboolean running;
- gdouble progress;
- static const guint current_side[4] = { SIDE_TOP, SIDE_RIGHT, SIDE_BOTTOM, SIDE_LEFT };
- guint i, j;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "border-style", &border_style,
- "border-top-color", &colors[0],
- "border-right-color", &colors[1],
- "border-bottom-color", &colors[2],
- "border-left-color", &colors[3],
- "-unico-border-gradient", &border_pat,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- hide_border_sides (&border, hidden_side);
-
- running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- if (running)
- {
- GtkStateFlags other_state;
- cairo_pattern_t *new_pat = NULL;
- cairo_pattern_t *other_pat;
-
- if (state & GTK_STATE_FLAG_PRELIGHT)
- {
- other_state = state & ~(GTK_STATE_FLAG_PRELIGHT);
- progress = 1 - progress;
- }
- else
- other_state = state | GTK_STATE_FLAG_PRELIGHT;
-
- gtk_theming_engine_get (engine, other_state,
- "-unico-border-gradient", &other_pat,
- NULL);
-
- if (border_pat && other_pat)
- {
- /* two patterns */
- cairo_pattern_type_t type, other_type;
- gint n0, n1;
-
- cairo_pattern_get_color_stop_count (border_pat, &n0);
- cairo_pattern_get_color_stop_count (other_pat, &n1);
- type = cairo_pattern_get_type (border_pat);
- other_type = cairo_pattern_get_type (other_pat);
-
- if (type == other_type && n0 == n1)
- {
- /* two similar patterns, blend them point by point */
- gdouble offset0, red0, green0, blue0, alpha0;
- gdouble offset1, red1, green1, blue1, alpha1;
- gdouble x00, x01, y00, y01, x10, x11, y10, y11;
- gdouble r00, r01, r10, r11;
- gint i;
-
- if (type == CAIRO_PATTERN_TYPE_LINEAR)
- {
- cairo_pattern_get_linear_points (border_pat, &x00, &y00, &x01, &y01);
- cairo_pattern_get_linear_points (other_pat, &x10, &y10, &x11, &y11);
-
- new_pat = cairo_pattern_create_linear (x00 + (x10 - x00) * progress,
- y00 + (y10 - y00) * progress,
- x01 + (x11 - x01) * progress,
- y01 + (y11 - y01) * progress);
- }
- else
- {
- cairo_pattern_get_radial_circles (border_pat, &x00, &y00, &r00, &x01, &y01, &r01);
- cairo_pattern_get_radial_circles (other_pat, &x10, &y10, &r10, &x11, &y11, &r11);
-
- new_pat = cairo_pattern_create_radial (x00 + (x10 - x00) * progress,
- y00 + (y10 - y00) * progress,
- r00 + (r10 - r00) * progress,
- x01 + (x11 - x01) * progress,
- y01 + (y11 - y01) * progress,
- r01 + (r11 - r01) * progress);
- }
-
- cairo_pattern_set_filter (new_pat, CAIRO_FILTER_FAST);
- i = 0;
-
- while (i < n0 && i < n1)
- {
- cairo_pattern_get_color_stop_rgba (border_pat, i,
- &offset0,
- &red0, &green0, &blue0,
- &alpha0);
- cairo_pattern_get_color_stop_rgba (other_pat, i,
- &offset1,
- &red1, &green1, &blue1,
- &alpha1);
- cairo_pattern_add_color_stop_rgba (new_pat,
- offset0 + ((offset1 - offset0) * progress),
- red0 + ((red1 - red0) * progress),
- green0 + ((green1 - green0) * progress),
- blue0 + ((blue1 - blue0) * progress),
- alpha0 + ((alpha1 - alpha0) * progress));
- i++;
- }
- }
- else
- {
- /* two different patterns, paint them with alpha */
- cairo_save (cr);
-
- cairo_reset_clip (cr);
- cairo_rectangle (cr, 0, 0, width, height);
- cairo_clip (cr);
-
- cairo_push_group (cr);
-
- cairo_scale (cr, width, height);
-
- cairo_set_source (cr, other_pat);
- cairo_paint_with_alpha (cr, progress);
-
- cairo_set_source (cr, border_pat);
- cairo_paint_with_alpha (cr, 1.0 - progress);
-
- new_pat = cairo_pop_group (cr);
-
- cairo_restore (cr);
- }
- }
- else if (border_pat || other_pat)
- {
- /* one pattern, blend it with a color */
- const GdkRGBA *c;
- cairo_pattern_t *p;
- gdouble x0, y0, x1, y1, r0, r1;
- gint n, i;
-
- if (border_pat)
- {
- GdkRGBA other_color;
-
- gtk_theming_engine_get_border_color (engine, other_state, &other_color);
-
- p = border_pat;
- c = &other_color;
- progress = 1 - progress;
- }
- else
- {
- GdkRGBA border_color;
-
- gtk_theming_engine_get_border_color (engine, state, &border_color);
-
- p = other_pat;
- c = &border_color;
- }
-
- if (cairo_pattern_get_type (p) == CAIRO_PATTERN_TYPE_LINEAR)
- {
- cairo_pattern_get_linear_points (p, &x0, &y0, &x1, &y1);
- new_pat = cairo_pattern_create_linear (x0, y0, x1, y1);
- }
- else
- {
- cairo_pattern_get_radial_circles (p, &x0, &y0, &r0, &x1, &y1, &r1);
- new_pat = cairo_pattern_create_radial (x0, y0, r0, x1, y1, r1);
- }
-
- cairo_pattern_get_color_stop_count (p, &n);
-
- for (i = 0; i < n; i++)
- {
- gdouble red1, green1, blue1, alpha1;
- gdouble offset;
-
- cairo_pattern_get_color_stop_rgba (p, i,
- &offset,
- &red1, &green1, &blue1,
- &alpha1);
- cairo_pattern_add_color_stop_rgba (new_pat, offset,
- c->red + ((red1 - c->red) * progress),
- c->green + ((green1 - c->green) * progress),
- c->blue + ((blue1 - c->blue) * progress),
- c->alpha + ((alpha1 - c->alpha) * progress));
- }
- }
- else
- {
- /* just colors, create new colors blending them */
- GdkRGBA *other_colors[4];
-
- gtk_theming_engine_get (engine, other_state,
- "border-top-color", &other_colors[0],
- "border-right-color", &other_colors[1],
- "border-bottom-color", &other_colors[2],
- "border-left-color", &other_colors[3],
- NULL);
-
- for (i = 0; i < 4; i++)
- {
- colors[i]->red = CLAMP (colors[i]->red + ((other_colors[i]->red - colors[i]->red) * progress), 0, 1);
- colors[i]->green = CLAMP (colors[i]->green + ((other_colors[i]->green - colors[i]->green) * progress), 0, 1);
- colors[i]->blue = CLAMP (colors[i]->blue + ((other_colors[i]->blue - colors[i]->blue) * progress), 0, 1);
- colors[i]->alpha = CLAMP (colors[i]->alpha + ((other_colors[i]->alpha - colors[i]->alpha) * progress), 0, 1);
- gdk_rgba_free (other_colors[i]);
- }
- }
-
- if (new_pat)
- {
- /* replace pattern to use */
- cairo_pattern_destroy (border_pat);
- border_pat = new_pat;
- }
-
- if (other_pat)
- cairo_pattern_destroy (other_pat);
- }
-
- switch (border_style)
- {
- default:
- g_assert_not_reached ();
- case GTK_BORDER_STYLE_NONE:
- case GTK_BORDER_STYLE_SOLID:
- break;
- case GTK_BORDER_STYLE_INSET:
- color_shade (colors[1], 1.8, colors[1]);
- color_shade (colors[2], 1.8, colors[2]);
- break;
- case GTK_BORDER_STYLE_OUTSET:
- color_shade (colors[0], 1.8, colors[0]);
- color_shade (colors[3], 1.8, colors[3]);
- break;
- }
-
- /* create the path to fill */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- padding_box = border_box;
- _gtk_rounded_box_shrink (&padding_box, border.top, border.right, border.bottom, border.left);
-
- cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-
- switch (border_style)
- {
- default:
- g_assert_not_reached ();
- case GTK_BORDER_STYLE_NONE:
- break;
- case GTK_BORDER_STYLE_SOLID:
- case GTK_BORDER_STYLE_INSET:
- case GTK_BORDER_STYLE_OUTSET:
-
- if (border_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, border_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else if (gdk_rgba_equal (colors[0], colors[1]) &&
- gdk_rgba_equal (colors[0], colors[2]) &&
- gdk_rgba_equal (colors[0], colors[3]))
- {
- /* one color */
- gdk_cairo_set_source_rgba (cr, colors[0]);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else
- {
- for (i = 0; i < 4; i++)
- {
- /* different colors */
- if (hidden_side & current_side[i])
- continue;
-
- for (j = 0; j < 4; j++)
- {
- if (hidden_side & current_side[j])
- continue;
-
- if (i == j ||
- gdk_rgba_equal (colors[i], colors[j]))
- {
- /* we were already painted when i == j */
- if (i > j)
- break;
-
- if (j == 0)
- _gtk_rounded_box_path_top (&border_box, &padding_box, cr);
- else if (j == 1)
- _gtk_rounded_box_path_right (&border_box, &padding_box, cr);
- else if (j == 2)
- _gtk_rounded_box_path_bottom (&border_box, &padding_box, cr);
- else if (j == 3)
- _gtk_rounded_box_path_left (&border_box, &padding_box, cr);
- }
- }
- /* we were already painted when i == j */
- if (i > j)
- continue;
-
- gdk_cairo_set_source_rgba (cr, colors[i]);
-
- cairo_fill (cr);
- }
- }
- break;
- }
-
- cairo_restore (cr);
-
- if (border_pat)
- cairo_pattern_destroy (border_pat);
-
- for (i = 0; i < 4; i++)
- gdk_rgba_free (colors[i]);
-}
-
-/* draw the inner stroke */
-static void
-draw_inner_stroke (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GdkRGBA *colors[4];
- GdkRGBA *inner_stroke_color;
- GtkBorder *inner_border;
- GtkRoundedBox border_box, padding_box;
- GtkStateFlags state;
- cairo_pattern_t *inner_stroke_pat;
- static const guint current_side[4] = { SIDE_TOP, SIDE_RIGHT, SIDE_BOTTOM, SIDE_LEFT };
- guint i, j;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-inner-stroke-color", &inner_stroke_color,
- "-unico-inner-stroke-top-color", &colors[0],
- "-unico-inner-stroke-right-color", &colors[1],
- "-unico-inner-stroke-bottom-color", &colors[2],
- "-unico-inner-stroke-left-color", &colors[3],
- "-unico-inner-stroke-gradient", &inner_stroke_pat,
- "-unico-inner-stroke-width", &inner_border,
- NULL);
-
- hide_border_sides (inner_border, hidden_side);
-
- if (unico_gtk_border_is_zero (inner_border))
- goto end_draw_inner_stroke;
-
- apply_default_color (colors, inner_stroke_color);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- /* create the path to fill */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- padding_box = border_box;
- _gtk_rounded_box_shrink (&padding_box, inner_border->top,
- inner_border->right,
- inner_border->bottom,
- inner_border->left);
-
- cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-
- if (inner_stroke_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, inner_stroke_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else if (gdk_rgba_equal (colors[0], colors[1]) &&
- gdk_rgba_equal (colors[0], colors[2]) &&
- gdk_rgba_equal (colors[0], colors[3]))
- {
- /* one color */
- gdk_cairo_set_source_rgba (cr, colors[0]);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else
- {
- /* different colors */
- for (i = 0; i < 4; i++)
- {
- if (hidden_side & current_side[i])
- continue;
-
- for (j = 0; j < 4; j++)
- {
- if (hidden_side & current_side[j])
- continue;
-
- if (i == j ||
- gdk_rgba_equal (colors[i], colors[j]))
- {
- /* we were already painted when i == j */
- if (i > j)
- break;
-
- if (j == 0)
- _gtk_rounded_box_path_top (&border_box, &padding_box, cr);
- else if (j == 1)
- _gtk_rounded_box_path_right (&border_box, &padding_box, cr);
- else if (j == 2)
- _gtk_rounded_box_path_bottom (&border_box, &padding_box, cr);
- else if (j == 3)
- _gtk_rounded_box_path_left (&border_box, &padding_box, cr);
- }
- }
- /* we were already painted when i == j */
- if (i > j)
- continue;
-
- gdk_cairo_set_source_rgba (cr, colors[i]);
-
- cairo_fill (cr);
- }
- }
-
- cairo_restore (cr);
-
-end_draw_inner_stroke:
- gtk_border_free (inner_border);
-
- if (inner_stroke_pat != NULL)
- cairo_pattern_destroy (inner_stroke_pat);
-
- gdk_rgba_free (inner_stroke_color);
-
- for (i = 0; i < 4; i++)
- gdk_rgba_free (colors[i]);
-}
-
-/* draw the outer stroke */
-static void
-draw_outer_stroke (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GdkRGBA *outer_stroke_color;
- GdkRGBA *colors[4];
- GtkBorder *outer_border;
- GtkRoundedBox border_box, padding_box;
- GtkStateFlags state;
- cairo_pattern_t *outer_stroke_pat;
- static const guint current_side[4] = { SIDE_TOP, SIDE_RIGHT, SIDE_BOTTOM, SIDE_LEFT };
- guint i, j;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-color", &outer_stroke_color,
- "-unico-outer-stroke-top-color", &colors[0],
- "-unico-outer-stroke-right-color", &colors[1],
- "-unico-outer-stroke-bottom-color", &colors[2],
- "-unico-outer-stroke-left-color", &colors[3],
- "-unico-outer-stroke-gradient", &outer_stroke_pat,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
-
- hide_border_sides (outer_border, hidden_side);
-
- if (unico_gtk_border_is_zero (outer_border))
- goto end_draw_outer_stroke;
-
- apply_default_color (colors, outer_stroke_color);
-
- cairo_save (cr);
-
- cairo_translate (cr, x, y);
-
- /* create the path to fill */
- _gtk_rounded_box_init_rect (&border_box, 0, 0, width, height);
- _gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
- padding_box = border_box;
- _gtk_rounded_box_shrink (&padding_box, outer_border->top,
- outer_border->right,
- outer_border->bottom,
- outer_border->left);
-
- cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-
- if (outer_stroke_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, outer_stroke_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else if (gdk_rgba_equal (colors[0], colors[1]) &&
- gdk_rgba_equal (colors[0], colors[2]) &&
- gdk_rgba_equal (colors[0], colors[3]))
- {
- /* one color */
- gdk_cairo_set_source_rgba (cr, colors[0]);
-
- _gtk_rounded_box_path (&border_box, cr);
- _gtk_rounded_box_path (&padding_box, cr);
- cairo_fill (cr);
- }
- else
- {
- /* different colors */
- for (i = 0; i < 4; i++)
- {
- if (hidden_side & current_side[i])
- continue;
-
- for (j = 0; j < 4; j++)
- {
- if (hidden_side & current_side[j])
- continue;
-
- if (i == j ||
- gdk_rgba_equal (colors[i], colors[j]))
- {
- /* we were already painted when i == j */
- if (i > j)
- break;
-
- if (j == 0)
- _gtk_rounded_box_path_top (&border_box, &padding_box, cr);
- else if (j == 1)
- _gtk_rounded_box_path_right (&border_box, &padding_box, cr);
- else if (j == 2)
- _gtk_rounded_box_path_bottom (&border_box, &padding_box, cr);
- else if (j == 3)
- _gtk_rounded_box_path_left (&border_box, &padding_box, cr);
- }
- }
- /* we were already painted when i == j */
- if (i > j)
- continue;
-
- gdk_cairo_set_source_rgba (cr, colors[i]);
-
- cairo_fill (cr);
- }
- }
-
- cairo_restore (cr);
-
-end_draw_outer_stroke:
- gtk_border_free (outer_border);
-
- if (outer_stroke_pat != NULL)
- cairo_pattern_destroy (outer_stroke_pat);
-
- gdk_rgba_free (outer_stroke_color);
-
- for (i = 0; i < 4; i++)
- gdk_rgba_free (colors[i]);
-}
-
-void
-unico_cairo_draw_frame (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
-{
- GtkBorder border;
- GtkBorder *outer_border;
- GtkStateFlags state;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- hide_border_sides (&border, hidden_side);
- hide_border_sides (outer_border, hidden_side);
-
- if (!unico_gtk_border_is_zero (outer_border))
- {
- /* first layer, outer stroke */
- draw_outer_stroke (engine, cr,
- x, y,
- width, height,
- hidden_side, junction);
-
- shrink_with_border (outer_border, &x, &y, &width, &height);
- }
-
- /* second layer, inner stroke */
- if (width - (border.left + border.right) > 0 &&
- height - (border.top + border.bottom) > 0)
- draw_inner_stroke (engine, cr,
- x + border.left, y + border.top,
- width - (border.left + border.right), height - (border.top + border.bottom),
- hidden_side, junction);
-
- /* third layer, border */
- draw_border (engine, cr,
- x, y,
- width, height,
- hidden_side, junction);
-
- gtk_border_free (outer_border);
-}
-
-gboolean
-unico_cairo_draw_from_texture (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- GtkStateFlags state;
- GValue value = { 0, };
- cairo_pattern_t *texture = NULL;
- cairo_surface_t *surface = NULL;
- gboolean retval = FALSE;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get_property (engine, "background-image", state, &value);
-
- if (!G_VALUE_HOLDS_BOXED (&value))
- return FALSE;
-
- texture = g_value_dup_boxed (&value);
- g_value_unset (&value);
-
- if (texture != NULL)
- cairo_pattern_get_surface (texture, &surface);
-
- if (surface != NULL)
- {
- cairo_save (cr);
-
- cairo_scale (cr, width / cairo_image_surface_get_width (surface),
- height / cairo_image_surface_get_height (surface));
- cairo_set_source_surface (cr, surface, x, y);
-
- cairo_paint (cr);
-
- cairo_restore (cr);
-
- retval = TRUE;
- }
-
- if (texture != NULL)
- cairo_pattern_destroy (texture);
-
- return retval;
-}
-
void
unico_cairo_round_rect (cairo_t *cr,
gdouble x,
@@ -1257,7 +47,7 @@
else
{
cairo_new_sub_path (cr);
-
+
cairo_arc (cr, x + width - radius, y + radius, radius, - G_PI / 4, 0);
}
@@ -1352,71 +142,3 @@
height - line_width,
radius, sides, junction);
}
-
-void
-unico_cairo_set_source_border (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble width,
- gdouble height)
-{
- GdkRGBA border_color;
- GtkBorderStyle border_style;
- GtkStateFlags state;
- cairo_pattern_t *border_pat;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "border-style", &border_style,
- "-unico-border-gradient", &border_pat,
- NULL);
- gtk_theming_engine_get_border_color (engine, state, &border_color);
-
- if (border_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, border_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
- }
- else
- /* one color */
- gdk_cairo_set_source_rgba (cr, &border_color);
-
- if (border_pat != NULL)
- cairo_pattern_destroy (border_pat);
-}
-
-void
-unico_cairo_set_source_inner_stroke (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble width,
- gdouble height)
-{
- GdkRGBA *inner_stroke_color;
- GtkStateFlags state;
- cairo_pattern_t *inner_stroke_pat;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-inner-stroke-color", &inner_stroke_color,
- "-unico-inner-stroke-gradient", &inner_stroke_pat,
- NULL);
-
- if (inner_stroke_pat)
- {
- /* pattern */
- cairo_scale (cr, width, height);
- cairo_set_source (cr, inner_stroke_pat);
- cairo_scale (cr, 1.0 / width, 1.0 / height);
- }
- else
- /* one color */
- gdk_cairo_set_source_rgba (cr, inner_stroke_color);
-
- if (inner_stroke_pat != NULL)
- cairo_pattern_destroy (inner_stroke_pat);
-
- gdk_rgba_free (inner_stroke_color);
-}
=== modified file 'unico/unico-cairo-support.h'
--- unico/unico-cairo-support.h 2011-08-06 15:38:52 +0000
+++ unico/unico-cairo-support.h 2012-07-25 22:49:45 +0000
@@ -27,31 +27,6 @@
G_BEGIN_DECLS
-G_GNUC_INTERNAL void unico_cairo_draw_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction);
-
-G_GNUC_INTERNAL void unico_cairo_draw_frame (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction);
-
-G_GNUC_INTERNAL gboolean unico_cairo_draw_from_texture (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-
G_GNUC_INTERNAL void unico_cairo_round_rect (cairo_t *cr,
gdouble x,
gdouble y,
@@ -70,16 +45,6 @@
guint sides,
GtkJunctionSides junction);
-G_GNUC_INTERNAL void unico_cairo_set_source_border (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble width,
- gdouble height);
-
-G_GNUC_INTERNAL void unico_cairo_set_source_inner_stroke (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble width,
- gdouble height);
-
G_END_DECLS
#endif /* UNICO_CAIRO_SUPPORT_H */
=== modified file 'unico/unico-draw.c'
--- unico/unico-draw.c 2012-03-29 14:25:06 +0000
+++ unico/unico-draw.c 2012-07-25 22:49:45 +0000
@@ -28,16 +28,14 @@
#include "unico-draw.h"
#include "unico-support.h"
#include "unico-types.h"
-#include "gtkroundedboxprivate.h"
-/* draw a texture placed on the centroid */
static gboolean
-draw_centroid_texture (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
+draw_arrow_texture (GtkThemingEngine *engine,
+ cairo_t *cr,
+ gdouble angle,
+ gdouble x,
+ gdouble y,
+ gdouble size)
{
GtkStateFlags state;
GValue value = { 0, };
@@ -47,7 +45,7 @@
state = gtk_theming_engine_get_state (engine);
- gtk_theming_engine_get_property (engine, "-unico-centroid-texture", state, &value);
+ gtk_theming_engine_get_property (engine, "-unico-arrow-texture", state, &value);
if (!G_VALUE_HOLDS_BOXED (&value))
return FALSE;
@@ -62,8 +60,11 @@
{
cairo_save (cr);
- cairo_set_source_surface (cr, surface, (gint) (x + width / 2 - cairo_image_surface_get_width (surface) / 2),
- (gint) (y + height / 2 - cairo_image_surface_get_height (surface) / 2));
+ cairo_translate (cr, (gint) (x + size / 2), (gint) (y + size / 2));
+ cairo_rotate (cr, angle);
+
+ cairo_set_source_surface (cr, surface, - cairo_image_surface_get_width (surface) / 2,
+ - cairo_image_surface_get_height (surface) / 2);
cairo_paint (cr);
cairo_restore (cr);
@@ -78,18 +79,6 @@
}
static void
-unico_draw_activity (DRAW_ARGS)
-{
- /* playground for effects */
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-}
-
-static void
unico_draw_arrow (GtkThemingEngine *engine,
cairo_t *cr,
gdouble angle,
@@ -101,6 +90,9 @@
GdkRGBA color;
gdouble size_reduction = 4;
+ if (draw_arrow_texture (engine, cr, angle, x, y, size))
+ return;
+
state = gtk_theming_engine_get_state (engine);
gtk_theming_engine_get_color (engine, state, &color);
@@ -134,191 +126,6 @@
}
static void
-unico_draw_cell_background (DRAW_ARGS,
- GtkRegionFlags flags)
-{
- GtkJunctionSides junction;
- guint hidden_side;
-
- junction = GTK_JUNCTION_RIGHT | GTK_JUNCTION_LEFT;
-
- hidden_side = SIDE_RIGHT | SIDE_LEFT;
-
- if ((flags & GTK_REGION_FIRST) != 0)
- {
- junction &= ~(GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMLEFT);
- hidden_side &= ~(SIDE_LEFT);
- }
- if ((flags & GTK_REGION_LAST) != 0)
- {
- junction &= ~(GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMRIGHT);
- hidden_side &= ~(SIDE_RIGHT);
- }
-
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- hidden_side, junction);
-}
-
-static void
-unico_draw_cell_frame (DRAW_ARGS,
- GtkRegionFlags flags)
-{
- GtkJunctionSides junction;
- guint hidden_side;
-
- junction = GTK_JUNCTION_RIGHT | GTK_JUNCTION_LEFT;
-
- hidden_side = SIDE_RIGHT | SIDE_LEFT;
-
- if ((flags & GTK_REGION_FIRST) != 0)
- {
- junction &= ~(GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMLEFT);
- hidden_side &= ~(SIDE_LEFT);
- }
- if ((flags & GTK_REGION_LAST) != 0)
- {
- junction &= ~(GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMRIGHT);
- hidden_side &= ~(SIDE_RIGHT);
- }
-
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- hidden_side, junction);
-}
-
-static void
-unico_draw_check (DRAW_ARGS)
-{
- GtkStateFlags state;
- gboolean in_menu;
- gboolean draw_bullet, inconsistent;
-
- state = gtk_theming_engine_get_state (engine);
-
- in_menu = gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_MENUITEM);
- inconsistent = (state & GTK_STATE_FLAG_INCONSISTENT) != 0;
- draw_bullet = (state & GTK_STATE_FLAG_ACTIVE) != 0;
- draw_bullet |= inconsistent;
-
- if (!in_menu)
- {
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- }
-
- if (draw_bullet)
- {
- GdkRGBA *bullet_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-color", &bullet_color,
- NULL);
-
- cairo_translate (cr, x, y);
- cairo_scale (cr, width / 18.0, height / 18.0);
-
- if (inconsistent)
- {
- GdkRGBA *bullet_outline_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-outline-color", &bullet_outline_color,
- NULL);
-
- /* thick's outline */
- cairo_rectangle (cr, 3.5, 7, 11, 4);
-
- gdk_cairo_set_source_rgba (cr, bullet_outline_color);
- cairo_fill (cr);
-
- cairo_rectangle (cr, 4.5, 8, 9, 2);
-
- gdk_rgba_free (bullet_outline_color);
- }
- else
- {
- if (in_menu)
- cairo_translate (cr, 2.0, 3.0);
- else
- {
- GdkRGBA *bullet_outline_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-outline-color", &bullet_outline_color,
- NULL);
-
- /* thick's outline */
- cairo_move_to (cr, 5.0, 5.65);
- cairo_line_to (cr, 8.95, 9.57);
- cairo_line_to (cr, 16.0, 2.54);
- cairo_line_to (cr, 16.0, 8.36);
- cairo_line_to (cr, 10.6, 15.1);
- cairo_line_to (cr, 7.6, 15.1);
- cairo_line_to (cr, 2.95, 10.48);
- cairo_line_to (cr, 2.95, 7.65);
- cairo_close_path (cr);
-
- gdk_cairo_set_source_rgba (cr, bullet_outline_color);
- cairo_fill (cr);
-
- cairo_translate (cr, 4.0, 2.0);
-
- gdk_rgba_free (bullet_outline_color);
- }
-
- /* thick */
- cairo_move_to (cr, 0.0, 6.0);
- cairo_line_to (cr, 0.0, 8.0);
- cairo_line_to (cr, 4.0, 12.0);
- cairo_line_to (cr, 6.0, 12.0);
- cairo_line_to (cr, 15.0, 1.0);
- cairo_line_to (cr, 15.0, 0.0);
- cairo_line_to (cr, 14.0, 0.0);
- cairo_line_to (cr, 5.0, 9.0);
- cairo_line_to (cr, 1.0, 5.0);
- cairo_close_path (cr);
- }
-
- gdk_cairo_set_source_rgba (cr, bullet_color);
- cairo_fill (cr);
-
- gdk_rgba_free (bullet_color);
- }
-}
-
-static void
-unico_draw_common (DRAW_ARGS)
-{
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-}
-
-static void
-unico_draw_common_background (DRAW_ARGS)
-{
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-}
-
-static void
-unico_draw_common_frame (DRAW_ARGS)
-{
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-}
-
-static void
unico_draw_expander (DRAW_ARGS)
{
GtkStateFlags state;
@@ -359,113 +166,6 @@
}
static void
-unico_draw_extension (DRAW_ARGS,
- GtkPositionType gap_side)
-{
- GtkBorder border;
- GtkBorder *outer_border;
- GtkJunctionSides junction = 0;
- GtkStateFlags state;
- gboolean has_outer_stroke = FALSE;
- gdouble bg_offset = 0;
- guint hidden_side = 0;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- if (!unico_gtk_border_is_zero (outer_border))
- has_outer_stroke = TRUE;
-
- cairo_save (cr);
-
- /* FIXME doesn't work properly with not homogenuos border-width,
- * especially between tab and notebook.
- * I guess the issue comes from the fact draw_background
- * is looking at border dimensions while we're not,
- * or we're doing it wrong.
- * draw_background is looking at SIDE_BOTTOM and
- * sets border to 0 for this side */
- switch (gap_side)
- {
- case GTK_POS_TOP:
- junction = GTK_JUNCTION_TOP;
- hidden_side = SIDE_TOP;
-
- if (has_outer_stroke)
- {
- y -= outer_border->bottom;
- height += outer_border->bottom;
- }
-
- if ((state & GTK_STATE_FLAG_ACTIVE) != 0)
- bg_offset = border.bottom;
-
- cairo_translate (cr, x + width, y + height);
- cairo_rotate (cr, G_PI);
- break;
- default:
- case GTK_POS_BOTTOM:
- junction = GTK_JUNCTION_BOTTOM;
- hidden_side = SIDE_BOTTOM;
-
- if (has_outer_stroke)
- height += outer_border->top;
-
- if ((state & GTK_STATE_FLAG_ACTIVE) != 0)
- bg_offset = border.top;
-
- cairo_translate (cr, x, y);
- break;
- case GTK_POS_LEFT:
- junction = GTK_JUNCTION_LEFT;
- hidden_side = SIDE_LEFT;
-
- if (has_outer_stroke)
- {
- x -= outer_border->right;
- width += outer_border->right;
- }
-
- if ((state & GTK_STATE_FLAG_ACTIVE) != 0)
- bg_offset = border.right;
-
- cairo_translate (cr, x + width, y);
- cairo_rotate (cr, G_PI / 2);
- break;
- case GTK_POS_RIGHT:
- junction = GTK_JUNCTION_RIGHT;
- hidden_side = SIDE_RIGHT;
-
- if (has_outer_stroke)
- width += outer_border->left;
-
- if ((state & GTK_STATE_FLAG_ACTIVE) != 0)
- bg_offset = border.left;
-
- cairo_translate (cr, x, y + height);
- cairo_rotate (cr, - G_PI / 2);
- break;
- }
-
- if (gap_side == GTK_POS_TOP ||
- gap_side == GTK_POS_BOTTOM)
- unico_cairo_draw_background (engine, cr, 0, 0, width, height + bg_offset, SIDE_BOTTOM, GTK_JUNCTION_BOTTOM);
- else
- unico_cairo_draw_background (engine, cr, 0, 0, height, width + bg_offset, SIDE_BOTTOM, GTK_JUNCTION_BOTTOM);
- cairo_restore (cr);
-
- /* FIXME the frame on bottom bar has the wrong gradient,
- * while should be reflected */
- unico_cairo_draw_frame (engine, cr, x, y, width, height, hidden_side, junction);
-
- gtk_border_free (outer_border);
-}
-
-static void
unico_draw_focus (DRAW_ARGS)
{
GdkRGBA *fill_color, *border_color, *outer_stroke_color;
@@ -523,548 +223,11 @@
gdk_rgba_free (outer_stroke_color);
}
-static void
-unico_draw_frame_gap (DRAW_ARGS,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap)
-{
- GtkBorder border;
- GtkBorder *outer_border;
- GtkCssBorderCornerRadius *top_left_radius, *top_right_radius;
- GtkCssBorderCornerRadius *bottom_left_radius, *bottom_right_radius;
- GtkJunctionSides junction;
- GtkStateFlags state;
- gboolean has_outer_stroke = FALSE;
- gdouble x0, y0, x1, y1, xc, yc, wc, hc;
-
- xc = yc = wc = hc = 0;
-
- junction = gtk_theming_engine_get_junction_sides (engine);
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- /* Can't use border-radius as it's an int for
- * backwards compat */
- "border-top-left-radius", &top_left_radius,
- "border-top-right-radius", &top_right_radius,
- "border-bottom-right-radius", &bottom_right_radius,
- "border-bottom-left-radius", &bottom_left_radius,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- if (!unico_gtk_border_is_zero (outer_border))
- has_outer_stroke = TRUE;
-
- cairo_save (cr);
-
- switch (gap_side)
- {
- case GTK_POS_TOP:
- xc = x + xy0_gap + border.left;
- yc = y;
- wc = MAX (xy1_gap - xy0_gap - (border.left + border.right), 0);
- hc = border.top * 2;
-
- if (has_outer_stroke)
- {
- xc += outer_border->left;
- wc = MAX (xy1_gap - xy0_gap - (outer_border->left + outer_border->right) - (border.left + border.right), 0);
- hc += outer_border->top;
- }
-
- if (xy0_gap < _gtk_css_number_get (&top_left_radius->horizontal, width))
- junction |= GTK_JUNCTION_CORNER_TOPLEFT;
-
- if (xy1_gap > width - _gtk_css_number_get (&top_right_radius->horizontal, width))
- junction |= GTK_JUNCTION_CORNER_TOPRIGHT;
-
- break;
- default:
- case GTK_POS_BOTTOM:
- xc = x + xy0_gap + border.left;
- yc = y + height - border.bottom * 2;
- wc = MAX (xy1_gap - xy0_gap - (border.left + border.right), 0);
- hc = border.bottom * 2;
-
- if (has_outer_stroke)
- {
- xc += outer_border->left;
- yc -= outer_border->bottom;
- wc = MAX (xy1_gap - xy0_gap - (outer_border->left + outer_border->right) - (border.left + border.right), 0);
- hc += outer_border->bottom;
- }
-
- if (xy0_gap < _gtk_css_number_get (&bottom_left_radius->horizontal, width))
- junction |= GTK_JUNCTION_CORNER_BOTTOMLEFT;
-
- if (xy1_gap > width - _gtk_css_number_get (&bottom_right_radius->horizontal, width))
- junction |= GTK_JUNCTION_CORNER_BOTTOMRIGHT;
-
- break;
- case GTK_POS_LEFT:
- xc = x;
- yc = y + xy0_gap + border.top;
- wc = border.left * 2;
- hc = MAX (xy1_gap - xy0_gap - (border.top + border.bottom), 0);
-
- if (has_outer_stroke)
- {
- yc += outer_border->top;
- wc += outer_border->left;
- hc = MAX (xy1_gap - xy0_gap - (outer_border->top + outer_border->bottom) - (border.top + border.bottom), 0);
- }
-
- if (xy0_gap < _gtk_css_number_get (&top_left_radius->vertical, height))
- junction |= GTK_JUNCTION_CORNER_TOPLEFT;
-
- if (xy1_gap > height - _gtk_css_number_get (&bottom_left_radius->vertical, height))
- junction |= GTK_JUNCTION_CORNER_BOTTOMLEFT;
-
- break;
- case GTK_POS_RIGHT:
- xc = x + width - border.right * 2;
- yc = y + xy0_gap + border.top;
- wc = border.right * 2;
- hc = MAX (xy1_gap - xy0_gap - (border.top + border.bottom), 0);
-
- if (has_outer_stroke)
- {
- xc -= outer_border->right;
- yc += outer_border->top;
- wc += outer_border->right;
- hc = MAX (xy1_gap - xy0_gap - (outer_border->top + outer_border->bottom) - (border.top + border.bottom), 0);
- }
-
- if (xy0_gap < _gtk_css_number_get (&top_right_radius->vertical, height))
- junction |= GTK_JUNCTION_CORNER_TOPRIGHT;
-
- if (xy1_gap > height - _gtk_css_number_get (&bottom_right_radius->vertical, height))
- junction |= GTK_JUNCTION_CORNER_BOTTOMRIGHT;
-
- break;
- }
-
- /* clip the gap */
- cairo_clip_extents (cr, &x0, &y0, &x1, &y1);
- cairo_rectangle (cr, x0, y0, x1 - x0, yc - y0);
- cairo_rectangle (cr, x0, yc, xc - x0, hc);
- cairo_rectangle (cr, xc + wc, yc, x1 - (xc + wc), hc);
- cairo_rectangle (cr, x0, yc + hc, x1 - x0, y1 - (yc + hc));
- cairo_clip (cr);
-
- /* draw the frame, gap area will not be drawn */
- unico_cairo_draw_frame (engine, cr, x, y, width, height, 0, junction);
-
- cairo_restore (cr);
-
- g_free (top_left_radius);
- g_free (top_right_radius);
- g_free (bottom_right_radius);
- g_free (bottom_left_radius);
- gtk_border_free (outer_border);
-}
-
-static void
-unico_draw_grip (DRAW_ARGS)
-{
- GdkRGBA border_color;
- GdkRGBA *inner_stroke_color;
- GtkStateFlags state;
- gint lx, ly;
-
- if (draw_centroid_texture (engine, cr, x, y, width, height))
- return;
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-inner-stroke-color", &inner_stroke_color,
- NULL);
- gtk_theming_engine_get_border_color (engine, state, &border_color);
-
- for (ly = 0; ly < 4; ly++)
- {
- /* vertically, four rows of dots */
- for (lx = 0; lx <= ly; lx++)
- {
- /* horizontally */
- int ny = (3.5 - ly) * 3;
- int nx = lx * 3;
-
- gdk_cairo_set_source_rgba (cr, inner_stroke_color);
- cairo_rectangle (cr, x + width - nx - 1, y + height - ny - 1, 2, 2);
- cairo_fill (cr);
-
- gdk_cairo_set_source_rgba (cr, &border_color);
- cairo_rectangle (cr, x + width - nx - 1, y + height - ny - 1, 1, 1);
- cairo_fill (cr);
- }
- }
-
- gdk_rgba_free (inner_stroke_color);
-}
-
-static void
-unico_draw_handle (DRAW_ARGS)
-{
- GtkBorder border;
- GtkStateFlags state;
- gdouble line_width;
- gint i, bar_y, num_bars, bar_spacing, bar_width, bar_height;
-
- state = gtk_theming_engine_get_state (engine);
- gtk_theming_engine_get_border (engine, state, &border);
-
- unico_cairo_draw_background (engine, cr,
- x - border.left, y - border.top,
- width + border.left + border.right, height + border.top + border.bottom,
- 0, GTK_JUNCTION_NONE);
-
- if (draw_centroid_texture (engine, cr, x, y, width, height))
- return;
-
- unico_get_line_width (engine, &line_width);
-
- if (line_width < 1)
- return;
-
- bar_y = 1;
- num_bars = 3;
- bar_spacing = 3;
- bar_width = 3;
- bar_height = num_bars * bar_spacing * line_width;
-
- cairo_save (cr);
-
- cairo_translate (cr, x + (gint) (width / 2), y + (gint) (height / 2));
-
- if (height > width)
- cairo_translate (cr, - bar_width / 2 - 0.5, - bar_height / 2 + 0.5);
- else
- {
- cairo_translate (cr, - bar_height / 2 + 0.5, bar_width / 2 + 0.5);
- cairo_rotate (cr, - G_PI / 2);
- }
-
- for (i = 0; i < num_bars; i++)
- {
- /* draw bars */
- cairo_move_to (cr, 0, bar_y);
- cairo_line_to (cr, bar_width, bar_y);
- unico_cairo_set_source_border (engine, cr, bar_width, line_width);
- cairo_stroke (cr);
-
- cairo_move_to (cr, 0, bar_y + line_width);
- cairo_line_to (cr, bar_width, bar_y + line_width);
- unico_cairo_set_source_inner_stroke (engine, cr, bar_width, line_width);
- cairo_stroke (cr);
-
- bar_y += bar_spacing;
- }
-
- cairo_restore (cr);
-}
-
-static void
-unico_draw_line (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1)
-{
- /* line endings */
- if (y0 == y1)
- {
- y0 += 0.5;
- y1 += 0.5;
- x0 += 0.5;
- x1 -= 0.5;
- }
- else if (x0 == x1)
- {
- x0 += 0.5;
- x1 += 0.5;
- y0 += 0.5;
- y1 -= 0.5;
- }
-
- cairo_move_to (cr, x0, y0);
- cairo_line_to (cr, x1, y1);
- unico_cairo_set_source_border (engine, cr, MAX (x1 - x0, 1), MAX (y1 - y0, 1));
- cairo_stroke (cr);
-}
-
-static void
-unico_draw_notebook (DRAW_ARGS,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap)
-{
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- unico_draw_frame_gap (engine, cr,
- x, y, width, height,
- gap_side, xy0_gap, xy1_gap);
-}
-
-static void
-unico_draw_radio (DRAW_ARGS)
-{
- GtkStateFlags state;
- gboolean in_menu;
- gboolean draw_bullet, inconsistent;
-
- state = gtk_theming_engine_get_state (engine);
-
- in_menu = gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_MENUITEM);
- inconsistent = (state & GTK_STATE_FLAG_INCONSISTENT) != 0;
- draw_bullet = (state & GTK_STATE_FLAG_ACTIVE) != 0;
- draw_bullet |= inconsistent;
-
- if (!in_menu)
- {
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
- }
-
- if (draw_bullet)
- {
- GdkRGBA *bullet_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-color", &bullet_color,
- NULL);
-
- if (inconsistent)
- {
- GdkRGBA *bullet_outline_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-outline-color", &bullet_outline_color,
- NULL);
-
- /* bullet's outline */
- cairo_rectangle (cr, x + width / 2.0 - (width + height) / 4.0 + 3, y + height / 2.0 - 2,
- (width + height) / 4.0 + 2, 4);
-
- gdk_cairo_set_source_rgba (cr, bullet_outline_color);
- cairo_fill (cr);
-
- cairo_rectangle (cr, x + width / 2.0 - (width + height) / 4.0 + 4, y + height / 2.0 - 1,
- (width + height) / 4.0, 2);
-
- gdk_rgba_free (bullet_outline_color);
- }
- else
- {
- if (in_menu)
- cairo_arc (cr, x + width / 2.0, y + height / 2.0,
- (width + height) / 4.0 - 4, 0, G_PI * 2);
- else
- {
- GdkRGBA *bullet_outline_color;
-
- gtk_theming_engine_get (engine, state,
- "-unico-bullet-outline-color", &bullet_outline_color,
- NULL);
-
- /* bullet's outline */
- cairo_arc (cr, x + width / 2.0, y + height / 2.0,
- (width + height) / 4.0 - 4, 0, G_PI * 2);
- gdk_cairo_set_source_rgba (cr, bullet_outline_color);
- cairo_fill (cr);
-
- cairo_arc (cr, x + width / 2.0, y + height / 2.0,
- (width + height) / 4.0 - 5, 0, G_PI * 2);
-
- gdk_rgba_free (bullet_outline_color);
- }
- }
-
- /* bullet */
- gdk_cairo_set_source_rgba (cr, bullet_color);
- cairo_fill (cr);
-
- gdk_rgba_free (bullet_color);
- }
-}
-
-static void
-unico_draw_separator (DRAW_ARGS)
-{
- gdouble line_width;
-
- unico_get_line_width (engine, &line_width);
-
- if (line_width == 0)
- return;
-
- /* FIXME right code should be
- * if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_VERTICAL))
- * but doesn't work for separator tool item. */
- if (width > height)
- {
- cairo_move_to (cr, x, y + (gint) (height / 2) + line_width / 2);
- cairo_line_to (cr, x + width, y + (gint) (height / 2) + line_width / 2);
- unico_cairo_set_source_inner_stroke (engine, cr, width, line_width);
- cairo_stroke (cr);
-
- cairo_move_to (cr, x, y + (gint) (height / 2) - line_width / 2);
- cairo_line_to (cr, x + width, y + (gint) (height / 2) - line_width / 2);
- unico_cairo_set_source_border (engine, cr, width, line_width);
- cairo_stroke (cr);
- }
- else
- {
- cairo_move_to (cr, x + (gint) (width / 2) + line_width / 2, y);
- cairo_line_to (cr, x + (gint) (width / 2) + line_width / 2, y + height);
- unico_cairo_set_source_inner_stroke (engine, cr, line_width, height);
- cairo_stroke (cr);
-
- cairo_move_to (cr, x + (gint) (width / 2) - line_width / 2, y);
- cairo_line_to (cr, x + (gint) (width / 2) - line_width / 2, y + height);
- unico_cairo_set_source_border (engine, cr, line_width, height);
- cairo_stroke (cr);
- }
-}
-
-static void
-unico_draw_slider (DRAW_ARGS,
- GtkOrientation orientation)
-{
- /* use orientation, if needed */
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-
- draw_centroid_texture (engine, cr, x, y, width, height);
-
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, gtk_theming_engine_get_junction_sides (engine));
-}
-
-static void
-unico_draw_spinbutton_background (DRAW_ARGS)
-{
- GtkBorder border, *outer_border;
- GtkJunctionSides junction;
- GtkStateFlags state;
-
- junction = gtk_theming_engine_get_junction_sides (engine);
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- cairo_save (cr);
-
- cairo_rectangle (cr, x, y, width, height);
- cairo_clip (cr);
-
- if (!(junction & GTK_JUNCTION_CORNER_TOPRIGHT))
- {
- y = ceil (y);
- height = floor (height);
- height += border.bottom + outer_border->bottom;
- }
- else
- {
- y = floor (y);
- height = ceil (height);
- y -= outer_border->top;
- height += outer_border->bottom;
- }
-
- unico_cairo_draw_background (engine, cr,
- x, y, width, height,
- 0, junction);
-
- cairo_restore (cr);
-
- gtk_border_free (outer_border);
-}
-
-static void
-unico_draw_spinbutton_frame (DRAW_ARGS)
-{
- GtkBorder border, *outer_border;
- GtkJunctionSides junction;
- GtkStateFlags state;
-
- junction = gtk_theming_engine_get_junction_sides (engine);
-
- state = gtk_theming_engine_get_state (engine);
-
- gtk_theming_engine_get (engine, state,
- "-unico-outer-stroke-width", &outer_border,
- NULL);
- gtk_theming_engine_get_border (engine, state, &border);
-
- cairo_save (cr);
-
- cairo_rectangle (cr, x, y, width, height);
- cairo_clip (cr);
-
- if (!(junction & GTK_JUNCTION_CORNER_TOPRIGHT))
- {
- y = ceil (y);
- height = floor (height);
- height += border.bottom + outer_border->bottom;
- }
- else
- {
- y = floor (y);
- height = ceil (height);
- y -= outer_border->top;
- height += outer_border->bottom;
- }
-
- unico_cairo_draw_frame (engine, cr,
- x, y, width, height,
- 0, junction);
-
- cairo_restore (cr);
-
- gtk_border_free (outer_border);
-}
-
void
unico_register_style_default (UnicoStyleFunctions *functions)
{
g_assert (functions);
- functions->draw_activity = unico_draw_activity;
functions->draw_arrow = unico_draw_arrow;
- functions->draw_cell_background = unico_draw_cell_background;
- functions->draw_cell_frame = unico_draw_cell_frame;
- functions->draw_check = unico_draw_check;
- functions->draw_common = unico_draw_common;
- functions->draw_common_background = unico_draw_common_background;
- functions->draw_common_frame = unico_draw_common_frame;
functions->draw_expander = unico_draw_expander;
- functions->draw_extension = unico_draw_extension;
- functions->draw_focus = unico_draw_focus;
- functions->draw_frame_gap = unico_draw_frame_gap;
- functions->draw_grip = unico_draw_grip;
- functions->draw_handle = unico_draw_handle;
- functions->draw_line = unico_draw_line;
- functions->draw_notebook = unico_draw_notebook;
- functions->draw_radio = unico_draw_radio;
- functions->draw_separator = unico_draw_separator;
- functions->draw_slider = unico_draw_slider;
- functions->draw_spinbutton_background = unico_draw_spinbutton_background;
- functions->draw_spinbutton_frame = unico_draw_spinbutton_frame;
}
=== modified file 'unico/unico-engine.c'
--- unico/unico-engine.c 2011-07-28 09:12:33 +0000
+++ unico/unico-engine.c 2012-07-25 22:49:45 +0000
@@ -41,31 +41,6 @@
G_DEFINE_DYNAMIC_TYPE (UnicoEngine, unico_engine, GTK_TYPE_THEMING_ENGINE)
static void
-unico_engine_render_activity (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
- const GtkWidgetPath *path;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
- path = gtk_theming_engine_get_path (engine);
-
- if (gtk_widget_path_is_type (path, GTK_TYPE_SCALE))
- unico_trim_scale_allocation (engine, &x, &y, &width, &height);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_SPINNER))
- GTK_THEMING_ENGINE_CLASS (unico_engine_parent_class)->render_activity (engine, cr, x, y, width, height);
- else
- style_functions->draw_activity (engine, cr, x, y, width, height);
-}
-
-static void
unico_engine_render_arrow (GtkThemingEngine *engine,
cairo_t *cr,
gdouble angle,
@@ -83,61 +58,6 @@
}
static void
-unico_engine_render_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
- const GtkWidgetPath *path;
- GtkRegionFlags flags;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
- path = gtk_theming_engine_get_path (engine);
-
- if (gtk_widget_path_is_type (path, GTK_TYPE_SCALE) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_TROUGH))
- unico_trim_scale_allocation (engine, &x, &y, &width, &height);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_BUTTON) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_SPINBUTTON))
- style_functions->draw_spinbutton_background (engine, cr, x, y, width, height);
- else if (!gtk_widget_path_is_type (path, GTK_TYPE_ICON_VIEW) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_VIEW) &&
- gtk_theming_engine_has_region (engine, GTK_STYLE_REGION_COLUMN, &flags))
- style_functions->draw_cell_background (engine, cr, x, y, width, height, flags);
- else
- style_functions->draw_common_background (engine, cr, x, y, width, height);
-}
-
-static void
-unico_engine_render_check (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- if (!gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_MENUITEM))
- {
- if (unico_cairo_draw_from_texture (engine, cr, x, y, width, height))
- return;
- }
-
- style_functions->draw_check (engine, cr, x, y, width, height);
-}
-
-static void
unico_engine_render_expander (GtkThemingEngine *engine,
cairo_t *cr,
gdouble x,
@@ -154,182 +74,6 @@
style_functions->draw_expander (engine, cr, x, y, width, height);
}
-static void
-unico_engine_render_extension (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- style_functions->draw_extension (engine, cr, x, y, width, height, gap_side);
-}
-
-static void
-unico_engine_render_focus (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- style_functions->draw_focus (engine, cr, x, y, width, height);
-}
-
-static void
-unico_engine_render_frame (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
- const GtkWidgetPath *path;
- GtkRegionFlags flags;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
- path = gtk_theming_engine_get_path (engine);
-
- if (gtk_widget_path_is_type (path, GTK_TYPE_SCALE) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_TROUGH))
- unico_trim_scale_allocation (engine, &x, &y, &width, &height);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_SEPARATOR))
- style_functions->draw_separator (engine, cr, x, y, width, height);
- else if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_BUTTON) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_SPINBUTTON))
- style_functions->draw_spinbutton_frame (engine, cr, x, y, width, height);
- else if (!gtk_widget_path_is_type (path, GTK_TYPE_ICON_VIEW) &&
- gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_VIEW) &&
- gtk_theming_engine_has_region (engine, GTK_STYLE_REGION_COLUMN, &flags))
- style_functions->draw_cell_frame (engine, cr, x, y, width, height, flags);
- else
- style_functions->draw_common_frame (engine, cr, x, y, width, height);
-}
-
-static void
-unico_engine_render_frame_gap (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_NOTEBOOK))
- style_functions->draw_notebook (engine, cr, x, y, width, height, gap_side, xy0_gap, xy1_gap);
- else
- style_functions->draw_frame_gap (engine, cr, x, y, width, height, gap_side, xy0_gap, xy1_gap);
-}
-
-static void
-unico_engine_render_handle (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_GRIP))
- style_functions->draw_grip (engine, cr, x, y, width, height);
- else
- style_functions->draw_handle (engine, cr, x, y, width, height);
-}
-
-static void
-unico_engine_render_line (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- style_functions->draw_line (engine, cr, x0, y0, x1, y1);
-}
-
-static void
-unico_engine_render_option (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- if (!gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_MENUITEM))
- {
- if (unico_cairo_draw_from_texture (engine, cr, x, y, width, height))
- return;
- }
-
- style_functions->draw_radio (engine, cr, x, y, width, height);
-}
-
-static void
-unico_engine_render_slider (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkOrientation orientation)
-{
- UnicoStyleFunctions *style_functions;
-
- UNICO_CAIRO_INIT
-
- unico_lookup_functions (UNICO_ENGINE (engine), &style_functions);
-
- if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_SCALE))
- {
- if (unico_cairo_draw_from_texture (engine, cr, x, y, width, height))
- return;
- }
-
- style_functions->draw_slider (engine, cr, x, y, width, height, orientation);
-}
-
void
unico_engine_register_types (GTypeModule *module)
{
@@ -347,176 +91,14 @@
{
GtkThemingEngineClass *engine_class = GTK_THEMING_ENGINE_CLASS (klass);
- engine_class->render_activity = unico_engine_render_activity;
engine_class->render_arrow = unico_engine_render_arrow;
- engine_class->render_background = unico_engine_render_background;
- engine_class->render_check = unico_engine_render_check;
engine_class->render_expander = unico_engine_render_expander;
- engine_class->render_extension = unico_engine_render_extension;
- engine_class->render_focus = unico_engine_render_focus;
- engine_class->render_frame = unico_engine_render_frame;
- engine_class->render_frame_gap = unico_engine_render_frame_gap;
- engine_class->render_handle = unico_engine_render_handle;
- engine_class->render_line = unico_engine_render_line;
- engine_class->render_option = unico_engine_render_option;
- engine_class->render_slider = unico_engine_render_slider;
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("background-texture",
- "Background texture",
- "Background texture",
- CAIRO_GOBJECT_TYPE_PATTERN, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("border-gradient",
- "Border gradient",
- "Border gradient",
- CAIRO_GOBJECT_TYPE_PATTERN, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("bullet-color",
- "Bullet color",
- "Bullet color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("bullet-outline-color",
- "Bullet outline color",
- "Bullet outline color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("centroid-texture",
- "Centroid texture",
- "Centroid texture",
- CAIRO_GOBJECT_TYPE_PATTERN, 0));
-
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("focus-border-color",
- "Focus border color",
- "Focus border color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_int ("focus-border-radius",
- "Focus border radius",
- "Focus border radius",
- 0, G_MAXINT, 0, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("focus-fill-color",
- "Focus fill color",
- "Focus fill color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("focus-outer-stroke-color",
- "Focus outer stroke color",
- "Focus outer stroke color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_int ("glow-radius",
- "Glow radius",
- "Glow radius",
- 0, G_MAXINT, 0, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("glow-color",
- "Glow color",
- "Glow color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-color",
- "Inner stroke color",
- "Inner stroke color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-top-color",
- "Inner stroke top color",
- "Inner stroke top color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-right-color",
- "Inner stroke right color",
- "Inner stroke right color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-bottom-color",
- "Inner stroke bottom color",
- "Inner stroke bottom color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-left-color",
- "Inner stroke left color",
- "Inner stroke left color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-gradient",
- "Inner stroke gradient",
- "Inner stroke gradient",
- CAIRO_GOBJECT_TYPE_PATTERN, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("inner-stroke-width",
- "Inner stroke width",
- "Inner stroke width",
- GTK_TYPE_BORDER, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-color",
- "Outer stroke color",
- "Outer stroke color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-top-color",
- "Outer stroke top color",
- "Outer stroke top color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-right-color",
- "Outer stroke right color",
- "Outer stroke right color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-bottom-color",
- "Outer stroke bottom color",
- "Outer stroke bottom color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-left-color",
- "Outer stroke left color",
- "Outer stroke left color",
- GDK_TYPE_RGBA, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-gradient",
- "Outer stroke gradient",
- "Outer stroke gradient",
- CAIRO_GOBJECT_TYPE_PATTERN, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("outer-stroke-width",
- "Outer stroke width",
- "Outer stroke width",
- GTK_TYPE_BORDER, 0));
-
- gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
- g_param_spec_boxed ("text-shadow-color",
- "Text shadow color",
- "Text shadow color",
- GDK_TYPE_RGBA, 0));
+
+ gtk_theming_engine_register_property (UNICO_NAMESPACE, NULL,
+ g_param_spec_boxed ("arrow-texture",
+ "Arrow texture",
+ "Arrow texture",
+ CAIRO_GOBJECT_TYPE_PATTERN, 0));
}
static void
=== modified file 'unico/unico-types.h'
--- unico/unico-types.h 2012-02-08 12:54:39 +0000
+++ unico/unico-types.h 2012-07-25 22:49:45 +0000
@@ -32,63 +32,6 @@
G_BEGIN_DECLS
-/* for the order in arrays */
-typedef enum /*< skip >*/ {
- GTK_CSS_TOP,
- GTK_CSS_RIGHT,
- GTK_CSS_BOTTOM,
- GTK_CSS_LEFT
-} GtkCssSide;
-
-typedef enum /*< skip >*/ {
- GTK_CSS_TOP_LEFT,
- GTK_CSS_TOP_RIGHT,
- GTK_CSS_BOTTOM_RIGHT,
- GTK_CSS_BOTTOM_LEFT
-} GtkCssCorner;
-
-typedef enum /*< skip >*/ {
- /* CSS term: <number> */
- GTK_CSS_NUMBER,
- /* CSS term: <percentage> */
- GTK_CSS_PERCENT,
- /* CSS term: <length> */
- GTK_CSS_PX,
- GTK_CSS_PT,
- GTK_CSS_EM,
- GTK_CSS_EX,
- GTK_CSS_PC,
- GTK_CSS_IN,
- GTK_CSS_CM,
- GTK_CSS_MM,
- /* CSS term: <angle> */
- GTK_CSS_RAD,
- GTK_CSS_DEG,
- GTK_CSS_GRAD,
- GTK_CSS_TURN
-} GtkCssUnit;
-
-typedef struct _GtkCssNumber GtkCssNumber;
-typedef struct _GtkCssBorderCornerRadius GtkCssBorderCornerRadius;
-typedef struct _GtkCssBorderRadius GtkCssBorderRadius;
-
-struct _GtkCssNumber {
- gdouble value;
- GtkCssUnit unit;
-};
-
-struct _GtkCssBorderCornerRadius {
- GtkCssNumber horizontal;
- GtkCssNumber vertical;
-};
-
-struct _GtkCssBorderRadius {
- GtkCssBorderCornerRadius top_left;
- GtkCssBorderCornerRadius top_right;
- GtkCssBorderCornerRadius bottom_right;
- GtkCssBorderCornerRadius bottom_left;
-};
-
enum {
SIDE_LEFT = 1,
SIDE_BOTTOM = 1 << 1,
@@ -107,8 +50,6 @@
struct _UnicoStyleFunctions
{
- void (*draw_activity) (DRAW_ARGS);
-
void (*draw_arrow) (GtkThemingEngine *engine,
cairo_t *cr,
gdouble angle,
@@ -116,58 +57,7 @@
gdouble y,
gdouble size);
- void (*draw_cell_background) (DRAW_ARGS,
- GtkRegionFlags flags);
-
- void (*draw_cell_frame) (DRAW_ARGS,
- GtkRegionFlags flags);
-
- void (*draw_check) (DRAW_ARGS);
-
- void (*draw_common) (DRAW_ARGS);
-
- void (*draw_common_background) (DRAW_ARGS);
-
- void (*draw_common_frame) (DRAW_ARGS);
-
void (*draw_expander) (DRAW_ARGS);
-
- void (*draw_extension) (DRAW_ARGS,
- GtkPositionType gap_side);
-
- void (*draw_focus) (DRAW_ARGS);
-
- void (*draw_frame_gap) (DRAW_ARGS,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap);
-
- void (*draw_grip) (DRAW_ARGS);
-
- void (*draw_handle) (DRAW_ARGS);
-
- void (*draw_line) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1);
-
- void (*draw_notebook) (DRAW_ARGS,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap);
-
- void (*draw_radio) (DRAW_ARGS);
-
- void (*draw_separator) (DRAW_ARGS);
-
- void (*draw_slider) (DRAW_ARGS,
- GtkOrientation orientation);
-
- void (*draw_spinbutton_background) (DRAW_ARGS);
-
- void (*draw_spinbutton_frame) (DRAW_ARGS);
};
G_END_DECLS