Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:13.1:Update
unico
unico-bnc813150-gtk-theming-engine-crash.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor