[gtk/wip/otte/canvas: 30/36] canvas: CanvasSize => CanvasVector
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/otte/canvas: 30/36] canvas: CanvasSize => CanvasVector
- Date: Tue, 5 Jul 2022 05:41:42 +0000 (UTC)
commit 366ab8ca7c2c09890c00b8ee87a32c1e86f8867c
Author: Benjamin Otte <otte redhat com>
Date: Mon Jul 4 08:25:25 2022 +0200
canvas: CanvasSize => CanvasVector
unify the point and size objects.
demos/gtk-demo/canvas_intro.c | 5 +-
demos/gtk-demo/canvas_puzzle.c | 7 +-
gtk/gtk.h | 1 -
gtk/gtkcanvas.c | 5 +-
gtk/gtkcanvas.h | 2 +-
gtk/gtkcanvasbox.c | 6 +-
gtk/gtkcanvasbox.h | 4 +-
gtk/gtkcanvasitem.c | 12 ++-
gtk/gtkcanvasitemprivate.h | 3 -
gtk/gtkcanvassize.c | 195 -----------------------------------------
gtk/gtkcanvassize.h | 69 ---------------
gtk/gtkcanvasvector.c | 34 +++++++
gtk/gtkcanvasvector.h | 13 +++
gtk/gtktypes.h | 1 -
gtk/meson.build | 2 -
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/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',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]