summaryrefslogtreecommitdiff
path: root/gtk/gtkconstraint.h
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2019-04-09 15:33:52 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2019-06-30 23:42:44 +0100
commitcdf80f1d652114a6bb7c9a3d38adec61f8dbcabb (patch)
treec1cd3872541d8c1e27bc2e6cb5dd28b24697ae7d /gtk/gtkconstraint.h
parente7b2c530c512523242270caaaa8e0a15bf99e492 (diff)
downloadgtk+-cdf80f1d652114a6bb7c9a3d38adec61f8dbcabb.tar.gz
Add GtkConstraintLayout
A layout manager using GtkConstraintSolver to measure and allocate children.
Diffstat (limited to 'gtk/gtkconstraint.h')
-rw-r--r--gtk/gtkconstraint.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/gtk/gtkconstraint.h b/gtk/gtkconstraint.h
new file mode 100644
index 0000000000..1ca9fd7f5e
--- /dev/null
+++ b/gtk/gtkconstraint.h
@@ -0,0 +1,85 @@
+/* gtkconstraint.h: Constraint between two widgets
+ * Copyright 2019 GNOME Foundation
+ *
+ * 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Emmanuele Bassi
+ */
+
+#pragma once
+
+#include <gtk/gtktypes.h>
+#include <gtk/gtkenums.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_CONSTRAINT (gtk_constraint_get_type ())
+
+/**
+ * GtkConstraint:
+ *
+ * An object describing the relation between two widget attributes.
+ *
+ * All relations are in the form:
+ *
+ * |[<!-- language=plain -->
+ * target.attr_name = source.attr_name × multiplier + constant
+ * ]|
+ *
+ * A #GtkConstraint is immutable once it's created.
+ */
+GDK_AVAILABLE_IN_ALL
+G_DECLARE_FINAL_TYPE (GtkConstraint, gtk_constraint, GTK, CONSTRAINT, GObject)
+
+GDK_AVAILABLE_IN_ALL
+GtkConstraint * gtk_constraint_new (GtkWidget *target_widget,
+ GtkConstraintAttribute target_attribute,
+ GtkConstraintRelation relation,
+ GtkWidget *source_widget,
+ GtkConstraintAttribute source_attribute,
+ double multiplier,
+ double constant,
+ int strength);
+GDK_AVAILABLE_IN_ALL
+GtkConstraint * gtk_constraint_new_constant (GtkWidget *target_widget,
+ GtkConstraintAttribute target_attribute,
+ GtkConstraintRelation relation,
+ double constant,
+ int strength);
+
+GDK_AVAILABLE_IN_ALL
+GtkWidget * gtk_constraint_get_target_widget (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+GtkConstraintAttribute gtk_constraint_get_target_attribute (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+GtkWidget * gtk_constraint_get_source_widget (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+GtkConstraintAttribute gtk_constraint_get_source_attribute (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+GtkConstraintRelation gtk_constraint_get_relation (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+double gtk_constraint_get_multiplier (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+double gtk_constraint_get_constant (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+int gtk_constraint_get_strength (GtkConstraint *constraint);
+
+GDK_AVAILABLE_IN_ALL
+gboolean gtk_constraint_is_required (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+gboolean gtk_constraint_is_attached (GtkConstraint *constraint);
+GDK_AVAILABLE_IN_ALL
+gboolean gtk_constraint_is_constant (GtkConstraint *constraint);
+
+G_END_DECLS