summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2022-07-04 08:25:25 +0200
committerBenjamin Otte <otte@redhat.com>2022-07-05 07:38:32 +0200
commit366ab8ca7c2c09890c00b8ee87a32c1e86f8867c (patch)
tree61029036599db590372f789346fb6fcbb60e4c17
parent068d73f3aee960d1d3c6f74b89ec757891d94932 (diff)
downloadgtk+-366ab8ca7c2c09890c00b8ee87a32c1e86f8867c.tar.gz
canvas: CanvasSize => CanvasVector
unify the point and size objects.
-rw-r--r--demos/gtk-demo/canvas_intro.c5
-rw-r--r--demos/gtk-demo/canvas_puzzle.c7
-rw-r--r--gtk/gtk.h1
-rw-r--r--gtk/gtkcanvas.c5
-rw-r--r--gtk/gtkcanvas.h2
-rw-r--r--gtk/gtkcanvasbox.c6
-rw-r--r--gtk/gtkcanvasbox.h4
-rw-r--r--gtk/gtkcanvasitem.c12
-rw-r--r--gtk/gtkcanvasitemprivate.h3
-rw-r--r--gtk/gtkcanvassize.c195
-rw-r--r--gtk/gtkcanvassize.h69
-rw-r--r--gtk/gtkcanvasvector.c34
-rw-r--r--gtk/gtkcanvasvector.h13
-rw-r--r--gtk/gtktypes.h1
-rw-r--r--gtk/meson.build2
15 files changed, 69 insertions, 290 deletions
diff --git a/demos/gtk-demo/canvas_intro.c b/demos/gtk-demo/canvas_intro.c
index 2ab4974076..2ef1846321 100644
--- a/demos/gtk-demo/canvas_intro.c
+++ b/demos/gtk-demo/canvas_intro.c
@@ -15,7 +15,7 @@ bind_item (GtkListItemFactory *factory,
GtkCanvasItem *ci)
{
GtkCanvasVector *point;
- GtkCanvasSize *size;
+ const GtkCanvasVector *size;
GtkCanvasBox *box;
gtk_canvas_item_set_widget (ci, gtk_canvas_item_get_item (ci));
@@ -29,10 +29,9 @@ bind_item (GtkListItemFactory *factory,
point = gtk_canvas_vector_new_from_box (box, 0.5, 0.5);
gtk_canvas_box_free (box);
- size = gtk_canvas_size_new_measure_item (ci, GTK_CANVAS_ITEM_MEASURE_MIN_FOR_MIN);
+ size = gtk_canvas_vector_get_item_measure (ci, GTK_CANVAS_ITEM_MEASURE_MIN_FOR_MIN);
box = gtk_canvas_box_new (point, size, 0.5, 0.5);
gtk_canvas_vector_free (point);
- gtk_canvas_size_free (size);
gtk_canvas_item_set_bounds (ci, box);
gtk_canvas_box_free (box);
diff --git a/demos/gtk-demo/canvas_puzzle.c b/demos/gtk-demo/canvas_puzzle.c
index 09cb2a6eff..f1ee30703b 100644
--- a/demos/gtk-demo/canvas_puzzle.c
+++ b/demos/gtk-demo/canvas_puzzle.c
@@ -14,8 +14,7 @@ set_item_position (GtkCanvasItem *ci,
float x,
float y)
{
- GtkCanvasVector *point;
- GtkCanvasSize *size;
+ GtkCanvasVector *point, *size;
GtkCanvasBox *box, *viewport;
x = CLAMP (x, 0, 1);
@@ -29,10 +28,10 @@ set_item_position (GtkCanvasItem *ci,
point = gtk_canvas_vector_new_from_box (viewport, x, y);
gtk_canvas_box_free (viewport);
- size = gtk_canvas_size_new (0, 0);
+ size = gtk_canvas_vector_new (0, 0);
box = gtk_canvas_box_new (point, size, x, y);
gtk_canvas_vector_free (point);
- gtk_canvas_size_free (size);
+ gtk_canvas_vector_free (size);
gtk_canvas_item_set_bounds (ci, box);
gtk_canvas_box_free (box);
diff --git a/gtk/gtk.h b/gtk/gtk.h
index d534c33517..010d0fed01 100644
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
@@ -63,7 +63,6 @@
#include <gtk/gtkcanvasbox.h>
#include <gtk/gtkcanvasitem.h>
#include <gtk/gtkcanvasvector.h>
-#include <gtk/gtkcanvassize.h>
#include <gtk/gtkcellarea.h>
#include <gtk/gtkcellareabox.h>
#include <gtk/gtkcellareacontext.h>
diff --git a/gtk/gtkcanvas.c b/gtk/gtkcanvas.c
index 2b15c21c74..e638cff9af 100644
--- a/gtk/gtkcanvas.c
+++ b/gtk/gtkcanvas.c
@@ -23,7 +23,6 @@
#include "gtkcanvasbox.h"
#include "gtkcanvasitemprivate.h"
-#include "gtkcanvassize.h"
#include "gtkcanvasvectorprivate.h"
#include "gtkintl.h"
#include "gtklistitemfactory.h"
@@ -544,8 +543,8 @@ gtk_canvas_lookup_item (GtkCanvas *self,
return g_hash_table_lookup (self->item_lookup, item);
}
-const GtkCanvasSize *
+const GtkCanvasVector *
gtk_canvas_get_viewport_size (GtkCanvas *self)
{
- return (const GtkCanvasSize *) &self->viewport_size;
+ return &self->viewport_size;
}
diff --git a/gtk/gtkcanvas.h b/gtk/gtkcanvas.h
index da1ab2e210..75e8f8b093 100644
--- a/gtk/gtkcanvas.h
+++ b/gtk/gtkcanvas.h
@@ -54,7 +54,7 @@ GtkCanvasItem * gtk_canvas_lookup_item (GtkCanvas
gpointer item);
GDK_AVAILABLE_IN_ALL
-const GtkCanvasSize * gtk_canvas_get_viewport_size (GtkCanvas *self);
+const GtkCanvasVector * gtk_canvas_get_viewport_size (GtkCanvas *self);
G_END_DECLS
diff --git a/gtk/gtkcanvasbox.c b/gtk/gtkcanvasbox.c
index 7851d7b0fe..a5d2cb5cb8 100644
--- a/gtk/gtkcanvasbox.c
+++ b/gtk/gtkcanvasbox.c
@@ -130,7 +130,7 @@ gtk_canvas_box_new_points (const GtkCanvasVector *point1,
**/
GtkCanvasBox *
gtk_canvas_box_new (const GtkCanvasVector *point,
- const GtkCanvasSize *size,
+ const GtkCanvasVector *size,
float origin_x,
float origin_y)
{
@@ -207,12 +207,12 @@ gtk_canvas_box_get_point (const GtkCanvasBox *self)
return &self->point;
}
-const GtkCanvasSize *
+const GtkCanvasVector *
gtk_canvas_box_get_size (const GtkCanvasBox *self)
{
g_return_val_if_fail (self != NULL, NULL);
- return (GtkCanvasSize *) &self->size;
+ return &self->size;
}
void
diff --git a/gtk/gtkcanvasbox.h b/gtk/gtkcanvasbox.h
index 7101be12d5..34884e687d 100644
--- a/gtk/gtkcanvasbox.h
+++ b/gtk/gtkcanvasbox.h
@@ -43,7 +43,7 @@ void gtk_canvas_box_free (GtkCanvasBox
GDK_AVAILABLE_IN_ALL
const GtkCanvasVector * gtk_canvas_box_get_point (const GtkCanvasBox *self) G_GNUC_PURE;
GDK_AVAILABLE_IN_ALL
-const GtkCanvasSize * gtk_canvas_box_get_size (const GtkCanvasBox *self) G_GNUC_PURE;
+const GtkCanvasVector * gtk_canvas_box_get_size (const GtkCanvasBox *self) G_GNUC_PURE;
GDK_AVAILABLE_IN_ALL
void gtk_canvas_box_get_origin (const GtkCanvasBox *self,
float *x,
@@ -55,7 +55,7 @@ gboolean gtk_canvas_box_eval (const GtkCanvasBo
GDK_AVAILABLE_IN_ALL
GtkCanvasBox * gtk_canvas_box_new (const GtkCanvasVector *point,
- const GtkCanvasSize *size,
+ const GtkCanvasVector *size,
float origin_x,
float origin_y);
GDK_AVAILABLE_IN_ALL
diff --git a/gtk/gtkcanvasitem.c b/gtk/gtkcanvasitem.c
index 745057657f..05ec3845fa 100644
--- a/gtk/gtkcanvasitem.c
+++ b/gtk/gtkcanvasitem.c
@@ -325,21 +325,27 @@ gtk_canvas_item_has_allocation (GtkCanvasItem *self)
}
const GtkCanvasVector *
-gtk_canvas_item_get_measure_vec2 (GtkCanvasItem *self,
- GtkCanvasItemMeasurement measure)
+gtk_canvas_vector_get_item_measure (GtkCanvasItem *item,
+ GtkCanvasItemMeasure measure)
{
- return &self->size_vecs[measure];
+ g_return_val_if_fail (GTK_IS_CANVAS_ITEM (item), NULL);
+
+ return &item->size_vecs[measure];
}
const GtkCanvasBox *
gtk_canvas_box_get_item_bounds (GtkCanvasItem *item)
{
+ g_return_val_if_fail (GTK_IS_CANVAS_ITEM (item), NULL);
+
return &item->bounds_var;
}
const GtkCanvasBox *
gtk_canvas_box_get_item_allocation (GtkCanvasItem *item)
{
+ g_return_val_if_fail (GTK_IS_CANVAS_ITEM (item), NULL);
+
return &item->allocation_var;
}
diff --git a/gtk/gtkcanvasitemprivate.h b/gtk/gtkcanvasitemprivate.h
index 9e8eb6874c..cf1adbfc24 100644
--- a/gtk/gtkcanvasitemprivate.h
+++ b/gtk/gtkcanvasitemprivate.h
@@ -3,7 +3,6 @@
#include "gtkcanvasitem.h"
-#include "gtkcanvassize.h"
#include "gtkcanvasvectorprivate.h"
G_BEGIN_DECLS
@@ -18,8 +17,6 @@ void gtk_canvas_item_allocate_widget (GtkCanvasItem
float dx,
float dy);
gboolean gtk_canvas_item_has_allocation (GtkCanvasItem *self);
-const GtkCanvasVector * gtk_canvas_item_get_measure_vec2 (GtkCanvasItem *self,
- GtkCanvasItemMeasurement measure);
void gtk_canvas_item_clear_canvas (GtkCanvasItem *self);
diff --git a/gtk/gtkcanvassize.c b/gtk/gtkcanvassize.c
deleted file mode 100644
index 3da516faf7..0000000000
--- a/gtk/gtkcanvassize.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright © 2022 Benjamin Otte
- *
- * 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/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-
-/**
- * GtkCanvasSize:
- *
- * `GtkCanvasSize` describes a size in a `GtkCanvas`.
- */
-
-#include "config.h"
-
-#include "gtkcanvassize.h"
-
-#include "gtkcanvasboxprivate.h"
-#include "gtkcanvasitemprivate.h"
-#include "gtkcanvasvector.h"
-#include "gtkcanvasvectorprivate.h"
-
-G_DEFINE_BOXED_TYPE (GtkCanvasSize, gtk_canvas_size,
- gtk_canvas_size_copy,
- gtk_canvas_size_free)
-
-struct _GtkCanvasSize
-{
- GtkCanvasVector vec2;
-};
-
-static GtkCanvasSize *
-gtk_canvas_size_alloc (void)
-{
- return g_slice_new (GtkCanvasSize);
-}
-
-/**
- * gtk_canvas_size_new:
- * @width: width of the size
- * @height: height of the size
- *
- * Creates a new size with the given dimensions
- *
- * Returns: a new size
- **/
-GtkCanvasSize *
-gtk_canvas_size_new (float width,
- float height)
-{
- GtkCanvasSize *self;
-
- self = gtk_canvas_size_alloc ();
- gtk_canvas_vector_init_constant (&self->vec2, width, height);
-
- return self;
-}
-
-/**
- * gtk_canvas_size_new_from_box:
- * @box: a box
- *
- * Creates a size for the given box.
- *
- * Returns: a new size
- **/
-GtkCanvasSize *
-gtk_canvas_size_new_from_box (const GtkCanvasBox *box)
-{
- GtkCanvasSize *self;
-
- self = gtk_canvas_size_alloc ();
- gtk_canvas_vector_init_copy (&self->vec2, &box->size);
-
- return self;
-}
-
-/**
- * gtk_canvas_size_new_distance:
- * @from: point from where to compute the distance
- * @to: point to where to compute the distance
- *
- * Creates a size for the given distance. Note that both width and height
- * can be negative if the coordinate of @to is smaller than @from in the
- * corresponding dimension.
- *
- * Returns: a new size
- **/
-GtkCanvasSize *
-gtk_canvas_size_new_distance (const GtkCanvasVector *from,
- const GtkCanvasVector *to)
-{
- GtkCanvasSize *self;
- graphene_vec2_t minus_one;
-
- g_return_val_if_fail (from != NULL, NULL);
- g_return_val_if_fail (to != NULL, NULL);
-
- graphene_vec2_init (&minus_one, -1.f, -1.f);
-
- self = gtk_canvas_size_alloc ();
- gtk_canvas_vector_init_sum (&self->vec2,
- graphene_vec2_one (),
- from,
- &minus_one,
- to,
- NULL);
-
- return self;
-}
-
-/**
- * gtk_canvas_size_new_measure_item:
- * @item: the item
- * @measure: how to measure the item
- *
- * Measures the widget of @item with the given method to determine
- * a size.
- *
- * Returns: a new size
- **/
-GtkCanvasSize *
-gtk_canvas_size_new_measure_item (GtkCanvasItem *item,
- GtkCanvasItemMeasurement measure)
-{
- GtkCanvasSize *self;
-
- g_return_val_if_fail (GTK_IS_CANVAS_ITEM (item), NULL);
-
- self = gtk_canvas_size_alloc ();
- gtk_canvas_vector_init_copy (&self->vec2,
- gtk_canvas_item_get_measure_vec2 (item, measure));
-
- return self;
-}
-
-GtkCanvasSize *
-gtk_canvas_size_copy (const GtkCanvasSize *self)
-{
- GtkCanvasSize *copy;
-
- g_return_val_if_fail (self != NULL, NULL);
-
- copy = gtk_canvas_size_alloc ();
- gtk_canvas_vector_init_copy (&copy->vec2, &self->vec2);
-
- return copy;
-}
-
-void
-gtk_canvas_size_free (GtkCanvasSize *self)
-{
- g_return_if_fail (self != NULL);
-
- gtk_canvas_vector_finish (&self->vec2);
-
- g_slice_free (GtkCanvasSize, self);
-}
-
-gboolean
-gtk_canvas_size_eval (const GtkCanvasSize *self,
- float *width,
- float *height)
-{
- graphene_vec2_t vec2;
-
- g_return_val_if_fail (self != NULL, FALSE);
- g_return_val_if_fail (width != NULL, FALSE);
- g_return_val_if_fail (height != NULL, FALSE);
-
- if (!gtk_canvas_vector_eval (&self->vec2, &vec2))
- {
- *width = 0;
- *height = 0;
- return FALSE;
- }
-
- *width = graphene_vec2_get_x (&vec2);
- *height = graphene_vec2_get_y (&vec2);
- return TRUE;
-}
-
diff --git a/gtk/gtkcanvassize.h b/gtk/gtkcanvassize.h
deleted file mode 100644
index 26e5ef1733..0000000000
--- a/gtk/gtkcanvassize.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright © 2022 Benjamin Otte
- *
- * 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/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-
-#ifndef __GTK_CANVAS_SIZE_H__
-#define __GTK_CANVAS_SIZE_H__
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <gtk/gtktypes.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_CANVAS_SIZE (gtk_canvas_size_get_type ())
-
-GDK_AVAILABLE_IN_ALL
-GType gtk_canvas_size_get_type (void) G_GNUC_CONST;
-
-GDK_AVAILABLE_IN_ALL
-GtkCanvasSize * gtk_canvas_size_copy (const GtkCanvasSize *self);
-GDK_AVAILABLE_IN_ALL
-void gtk_canvas_size_free (GtkCanvasSize *self);
-
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_canvas_size_eval (const GtkCanvasSize *self,
- float *width,
- float *height) G_GNUC_WARN_UNUSED_RESULT;
-
-GDK_AVAILABLE_IN_ALL
-GtkCanvasSize * gtk_canvas_size_new (float width,
- float height);
-GDK_AVAILABLE_IN_ALL
-GtkCanvasSize * gtk_canvas_size_new_distance (const GtkCanvasVector *from,
- const GtkCanvasVector *to);
-GDK_AVAILABLE_IN_ALL
-GtkCanvasSize * gtk_canvas_size_new_from_box (const GtkCanvasBox *box);
-
-typedef enum {
- GTK_CANVAS_ITEM_MEASURE_MIN_FOR_MIN,
- GTK_CANVAS_ITEM_MEASURE_MIN_FOR_NAT,
- GTK_CANVAS_ITEM_MEASURE_NAT_FOR_MIN,
- GTK_CANVAS_ITEM_MEASURE_NAT_FOR_NAT
-} GtkCanvasItemMeasurement;
-
-GDK_AVAILABLE_IN_ALL
-GtkCanvasSize * gtk_canvas_size_new_measure_item (GtkCanvasItem *item,
- GtkCanvasItemMeasurement measure);
-
-G_END_DECLS
-
-#endif /* __GTK_SIZE_H__ */
diff --git a/gtk/gtkcanvasvector.c b/gtk/gtkcanvasvector.c
index 81b87c81fd..81009fcbdb 100644
--- a/gtk/gtkcanvasvector.c
+++ b/gtk/gtkcanvasvector.c
@@ -103,6 +103,40 @@ gtk_canvas_vector_new_from_box (const GtkCanvasBox *box,
return self;
}
+/**
+ * gtk_canvas_vector_new_distance:
+ * @from: point from where to compute the distance
+ * @to: point to where to compute the distance
+ *
+ * Creates a size for the given distance. Note that both width and height
+ * can be negative if the coordinate of @to is smaller than @from in the
+ * corresponding dimension.
+ *
+ * Returns: a new size
+ **/
+GtkCanvasVector *
+gtk_canvas_vector_new_distance (const GtkCanvasVector *from,
+ const GtkCanvasVector *to)
+{
+ GtkCanvasVector *self;
+ graphene_vec2_t minus_one;
+
+ g_return_val_if_fail (from != NULL, NULL);
+ g_return_val_if_fail (to != NULL, NULL);
+
+ graphene_vec2_init (&minus_one, -1.f, -1.f);
+
+ self = gtk_canvas_vector_alloc ();
+ gtk_canvas_vector_init_sum (self,
+ graphene_vec2_one (),
+ from,
+ &minus_one,
+ to,
+ NULL);
+
+ return self;
+}
+
GtkCanvasVector *
gtk_canvas_vector_copy (const GtkCanvasVector *self)
{
diff --git a/gtk/gtkcanvasvector.h b/gtk/gtkcanvasvector.h
index 3222dae8c8..bd031ecec9 100644
--- a/gtk/gtkcanvasvector.h
+++ b/gtk/gtkcanvasvector.h
@@ -48,10 +48,23 @@ GDK_AVAILABLE_IN_ALL
GtkCanvasVector * gtk_canvas_vector_new (float x,
float y);
GDK_AVAILABLE_IN_ALL
+GtkCanvasVector * gtk_canvas_vector_new_distance (const GtkCanvasVector *from,
+ const GtkCanvasVector *to);
+GDK_AVAILABLE_IN_ALL
GtkCanvasVector * gtk_canvas_vector_new_from_box (const GtkCanvasBox *box,
float origin_x,
float origin_y);
+typedef enum {
+ GTK_CANVAS_ITEM_MEASURE_MIN_FOR_MIN,
+ GTK_CANVAS_ITEM_MEASURE_MIN_FOR_NAT,
+ GTK_CANVAS_ITEM_MEASURE_NAT_FOR_MIN,
+ GTK_CANVAS_ITEM_MEASURE_NAT_FOR_NAT
+} GtkCanvasItemMeasure;
+
+GDK_AVAILABLE_IN_ALL
+const GtkCanvasVector * gtk_canvas_vector_get_item_measure (GtkCanvasItem *item,
+ GtkCanvasItemMeasure measure);
G_END_DECLS
#endif /* __GTK_VECTOR_H__ */
diff --git a/gtk/gtktypes.h b/gtk/gtktypes.h
index 72f36347a4..da949a6bd9 100644
--- a/gtk/gtktypes.h
+++ b/gtk/gtktypes.h
@@ -41,7 +41,6 @@ typedef struct _GtkCanvas GtkCanvas;
typedef struct _GtkCanvasBox GtkCanvasBox;
typedef struct _GtkCanvasItem GtkCanvasItem;
typedef struct _GtkCanvasVector GtkCanvasVector;
-typedef struct _GtkCanvasSize GtkCanvasSize;
typedef struct _GtkCssStyleChange GtkCssStyleChange;
typedef struct _GtkEventController GtkEventController;
typedef struct _GtkGesture GtkGesture;
diff --git a/gtk/meson.build b/gtk/meson.build
index f447ff26ed..594808de9e 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -187,7 +187,6 @@ gtk_public_sources = files([
'gtkcanvasbox.c',
'gtkcanvasitem.c',
'gtkcanvasvector.c',
- 'gtkcanvassize.c',
'gtkcellarea.c',
'gtkcellareabox.c',
'gtkcellareacontext.c',
@@ -483,7 +482,6 @@ gtk_public_headers = files([
'gtkcanvasbox.h',
'gtkcanvasitem.h',
'gtkcanvasvector.h',
- 'gtkcanvassize.h',
'gtkcenterbox.h',
'gtkcenterlayout.h',
'gtkcellarea.h',