From b3308bf5f9df067575390f7cd4ef8bc0b33552c5 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Fri, 3 Jun 2016 00:04:03 -0400
Subject: [PATCH] Vanilla 0.47 backport 5: g_canvas.h

---
 pd/src/g_canvas.h | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h
index cd38af65d..7af9a17a3 100644
--- a/pd/src/g_canvas.h
+++ b/pd/src/g_canvas.h
@@ -213,6 +213,8 @@ struct _glist
     unsigned int gl_goprect:1;      /* draw rectangle for graph-on-parent */
     unsigned int gl_isgraph:1;      /* show as graph on parent */
     unsigned int gl_hidetext:1;     /* hide object-name + args when doing graph on parent */
+    unsigned int gl_private:1;      /* private flag used in x_scalar.c */
+    unsigned int gl_isclone:1;      /* exists as part of a clone object */
     unsigned int gl_gop_initialized:1;     /* used for tagged moving of gop-ed objects to avoid redundant reinit */
     //global preset array pointer
     t_preset_hub *gl_phub;
@@ -248,8 +250,9 @@ extern t_class *message_class;
 
 #define DT_FLOAT 0
 #define DT_SYMBOL 1
-#define DT_LIST 2
+#define DT_TEXT 2
 #define DT_ARRAY 3
+#define DT_LIST 4
 
 typedef struct _dataslot
 {
@@ -568,6 +571,10 @@ EXTERN t_gobj *canvas_findhitbox(t_canvas *x, int xpos, int ypos,
 EXTERN int canvas_setdeleting(t_canvas *x, int flag);
 EXTERN int canvas_hasarray(t_canvas *x);
 
+#define LB_LOAD 0       /* "loadbang" actions - 0 for original meaning */
+#define LB_INIT 1       /* loaded but not yet connected to parent patch */
+#define LB_CLOSE 2      /* about to close */
+
 /* ---- for parsing @pd_extra and other sys paths in filenames  --------------------- */
 
 EXTERN void sys_expandpathelems(const char *name, const char *result);
@@ -590,6 +597,23 @@ EXTERN int canvas_isconnected (t_canvas *x,
     t_text *ob1, int n1, t_text *ob2, int n2);
 EXTERN void canvas_selectinrect(t_canvas *x, int lox, int loy, int hix, int hiy);
 
+EXTERN t_glist *pd_checkglist(t_pd *x);
+
+/* a function that gets called for each path by canvas_path_iterate
+ * if the function returns 0, the iteration is terminated;
+ * <path> pointer to the path
+ * <data> is the pointer given to canvas_path_iterate()
+ * <ce> is a pointer to the canvas-environment that provided <path> in its
+ * search-path (or NULL)
+ */
+typedef int (*t_canvas_path_iterator)(const char *path, void *user_data);
+/*
+ * iterate over all search-paths for <x> calling <fun> with the user-supplied
+ * <data>
+ * iteration stops once all paths are exhausted or calling <fun> returned 0.
+ */
+EXTERN int canvas_path_iterate(t_canvas *x, t_canvas_path_iterator fun,
+    void *user_data);
 
 /* ---- functions on canvasses as objects  --------------------- */
 
@@ -613,6 +637,8 @@ EXTERN t_garray *graph_array(t_glist *gl, t_symbol *s, int argc, t_atom *argv);
 EXTERN t_array *array_new(t_symbol *templatesym, t_gpointer *parent);
 EXTERN void array_resize(t_array *x, int n);
 EXTERN void array_free(t_array *x);
+EXTERN void array_redraw(t_array *a, t_glist *glist);
+EXTERN void array_resize_and_redraw(t_array *array, t_glist *glist, int n);
 int array_joc; /* for "jump on click" array inside a graph */
 
 /* --------------------- gpointers and stubs ---------------- */
@@ -777,6 +803,9 @@ void canvas_getscroll (t_canvas *x);
 
 /* --------------------------------------------------------------------- */
 
+/*-------------  g_clone.c ------------- */
+extern t_class *clone_class;
+
 #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
 }
 #endif
-- 
GitLab