[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: gaf.git: branch: master updated (1.5.1-20081221-172-g700d5c0)



The branch, master has been updated
       via  700d5c08aa33009128491007ff4d3f6e91ce0489 (commit)
      from  02fa8f658d315796df7c6ab8790e5310e8548d37 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 libgeda/configure.ac.in                    |    2 +-
 libgeda/include/Makefile.am                |   20 ++++++++++----------
 libgeda/include/{ => libgeda}/colors.h     |    0 
 libgeda/include/{ => libgeda}/defines.h    |    0 
 libgeda/include/{ => libgeda}/funcs.h      |    0 
 libgeda/include/{ => libgeda}/geda_list.h  |    0 
 libgeda/include/{ => libgeda}/globals.h    |    0 
 libgeda/include/{ => libgeda}/libgeda.h    |    0 
 libgeda/include/{ => libgeda}/o_types.h    |    0 
 libgeda/include/{ => libgeda}/papersizes.h |    0 
 libgeda/include/{ => libgeda}/prototype.h  |    0 
 libgeda/include/{ => libgeda}/struct.h     |    0 
 libgeda/src/Makefile.am                    |    2 +-
 13 files changed, 12 insertions(+), 12 deletions(-)
 rename libgeda/include/{ => libgeda}/colors.h (100%)
 rename libgeda/include/{ => libgeda}/defines.h (100%)
 rename libgeda/include/{ => libgeda}/funcs.h (100%)
 rename libgeda/include/{ => libgeda}/geda_list.h (100%)
 rename libgeda/include/{ => libgeda}/globals.h (100%)
 rename libgeda/include/{ => libgeda}/libgeda.h (100%)
 rename libgeda/include/{ => libgeda}/o_types.h (100%)
 rename libgeda/include/{ => libgeda}/papersizes.h (100%)
 rename libgeda/include/{ => libgeda}/prototype.h (100%)
 rename libgeda/include/{ => libgeda}/struct.h (100%)


=================
 Commit Messages
=================

commit 700d5c08aa33009128491007ff4d3f6e91ce0489
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Sat Jan 10 22:54:09 2009 +0000

    libgeda: Move include files to be compatible with non-installed build
    
    By placing public libgeda include files in a directory libgeda/*, it is
    possible to point the rest of the suite's builds to include that directly.

:100644 100644 4ae3413... c2e8443... M	libgeda/configure.ac.in
:100644 100644 000b9ee... 8f5a078... M	libgeda/include/Makefile.am
:100644 000000 4338412... 0000000... D	libgeda/include/colors.h
:100644 000000 581cfe4... 0000000... D	libgeda/include/defines.h
:100644 000000 b6b2fbd... 0000000... D	libgeda/include/funcs.h
:100644 000000 78a3d1c... 0000000... D	libgeda/include/geda_list.h
:100644 000000 963bda8... 0000000... D	libgeda/include/globals.h
:100644 000000 a7483ed... 0000000... D	libgeda/include/libgeda.h
:000000 100644 0000000... 4338412... A	libgeda/include/libgeda/colors.h
:000000 100644 0000000... 581cfe4... A	libgeda/include/libgeda/defines.h
:000000 100644 0000000... b6b2fbd... A	libgeda/include/libgeda/funcs.h
:000000 100644 0000000... 78a3d1c... A	libgeda/include/libgeda/geda_list.h
:000000 100644 0000000... 963bda8... A	libgeda/include/libgeda/globals.h
:000000 100644 0000000... a7483ed... A	libgeda/include/libgeda/libgeda.h
:000000 100644 0000000... 0ff2e4f... A	libgeda/include/libgeda/o_types.h
:000000 100644 0000000... 919149c... A	libgeda/include/libgeda/papersizes.h
:000000 100644 0000000... d1d2a8f... A	libgeda/include/libgeda/prototype.h
:000000 100644 0000000... b29634a... A	libgeda/include/libgeda/struct.h
:100644 000000 0ff2e4f... 0000000... D	libgeda/include/o_types.h
:100644 000000 919149c... 0000000... D	libgeda/include/papersizes.h
:100644 000000 d1d2a8f... 0000000... D	libgeda/include/prototype.h
:100644 000000 b29634a... 0000000... D	libgeda/include/struct.h
:100644 100644 5b04947... 7c4bf99... M	libgeda/src/Makefile.am

=========
 Changes
=========

commit 700d5c08aa33009128491007ff4d3f6e91ce0489
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Sat Jan 10 22:54:09 2009 +0000

    libgeda: Move include files to be compatible with non-installed build
    
    By placing public libgeda include files in a directory libgeda/*, it is
    possible to point the rest of the suite's builds to include that directly.

diff --git a/libgeda/configure.ac.in b/libgeda/configure.ac.in
index 4ae3413..c2e8443 100644
--- a/libgeda/configure.ac.in
+++ b/libgeda/configure.ac.in
@@ -1,6 +1,6 @@
 # Process this file with autoconf to produce a configure script.
 AC_INIT
-AC_CONFIG_SRCDIR([include/libgeda.h])
+AC_CONFIG_SRCDIR([src/libgeda.c])
 AC_PREREQ(2.54)
 
 PACKAGE=libgeda
diff --git a/libgeda/include/Makefile.am b/libgeda/include/Makefile.am
index 000b9ee..8f5a078 100644
--- a/libgeda/include/Makefile.am
+++ b/libgeda/include/Makefile.am
@@ -2,16 +2,16 @@
 
 libgedaincludedir = $(includedir)/libgeda
 libgedainclude_HEADERS = \
-	colors.h \
-	defines.h \
-	funcs.h \
-	geda_list.h \
-	globals.h \
-	libgeda.h \
-	o_types.h \
-	papersizes.h \
-	prototype.h \
-	struct.h
+	libgeda/colors.h \
+	libgeda/defines.h \
+	libgeda/funcs.h \
+	libgeda/geda_list.h \
+	libgeda/globals.h \
+	libgeda/libgeda.h \
+	libgeda/o_types.h \
+	libgeda/papersizes.h \
+	libgeda/prototype.h \
+	libgeda/struct.h
 
 noinst_HEADERS = \
 	gettext_priv.h \
diff --git a/libgeda/include/colors.h b/libgeda/include/colors.h
deleted file mode 100644
index 4338412..0000000
--- a/libgeda/include/colors.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's Library 
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*! \file colors.h
- *  \brief define some constants for the colors
- */
-
-#ifndef _COLORS_H_INCL
-#define _COLORS_H_INCL
-
-#define BACKGROUND_COLOR                0
-#define PIN_COLOR                       1
-#define NET_ENDPOINT_COLOR              2
-#define GRAPHIC_COLOR                   3
-#define NET_COLOR                       4
-#define ATTRIBUTE_COLOR                 5
-#define LOGIC_BUBBLE_COLOR              6
-#define DOTS_GRID_COLOR                 7
-#define DETACHED_ATTRIBUTE_COLOR        8
-#define TEXT_COLOR                      9
-#define BUS_COLOR                       10
-#define SELECT_COLOR                    11
-#define BOUNDINGBOX_COLOR               12
-#define ZOOM_BOX_COLOR                  13
-#define STROKE_COLOR                    14
-#define LOCK_COLOR 	                15
-#define OUTPUT_BACKGROUND_COLOR         16     
-#define FREESTYLE1_COLOR         	17     
-#define FREESTYLE2_COLOR         	18     
-#define FREESTYLE3_COLOR         	19     
-#define FREESTYLE4_COLOR         	20     
-#define JUNCTION_COLOR         		21     
-#define MESH_GRID_MAJOR_COLOR           22
-#define MESH_GRID_MINOR_COLOR           23
-
-#define OVERRIDE_NET_COLOR              4
-#define OVERRIDE_PIN_COLOR              1
-#define OVERRIDE_BUS_COLOR              10
-
-#define DEFAULT_COLOR                   3
-
-#endif
diff --git a/libgeda/include/defines.h b/libgeda/include/defines.h
deleted file mode 100644
index 581cfe4..0000000
--- a/libgeda/include/defines.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's Library
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*! \file defines.h
- *  \brief global libgeda definitions
- */
-
-#ifndef _DEFINES_H_INCL
-#define _DEFINES_H_INCL
-
-/* Current schematic/symbol file format */
-#define FILEFORMAT_VERSION     2
-
-/* release version which had file format changes */
-/* New file format changes after 20030921 use the above version */
-/* and not these #defines anymore. */
-#define VERSION_20000220 20000220
-#define VERSION_20000704 20000704
-#define VERSION_20020825 20020825
-#define VERSION_20030921 20030921
-/* 20030921 wasn't a real version, just a MinGW test version, but it is */
-/* out there */
-
-/* Set this string to something interesting to create a custom */
-/* version of gEDA/gaf.  This string is prepended to all messages that */
-/* output the program's version output.  You would set this if you are */
-/* creating a specific custom version of gEDA/gaf.  */
-/* For example, if you set this string to "FIX-", the resulting output is:  */
-/* FIX-1.0.0.20060906. */
-#define PREPEND_VERSION_STRING ""
-
-/* for color mechanism used in gschem */
-#define MAX_COLORS 25
-
-/* X's obsession with *64 */
-#define FULL_CIRCLE 360*64
-
-/* for show_name_value in st_objects */
-#define SHOW_NAME_VALUE         0
-#define SHOW_VALUE              1
-#define SHOW_NAME               2
-#define LEAVE_NAME_VALUE_ALONE  -1
-
-/* for visibility in st_objects */
-#define INVISIBLE               0
-#define VISIBLE                 1
-#define LEAVE_VISIBILITY_ALONE -1
-
-/* For pin and net styles */
-#define THIN            0     
-#define THICK           1
-
-/* various thicknesses (in mils) */
-#define LINE_WIDTH	10
-#define NET_WIDTH	10
-#define PIN_WIDTH_NET	10
-#define BUS_WIDTH	30
-#define PIN_WIDTH_BUS	30
-
-/* various visual cue sizes (in mils) */
-#define CUE_BOX_SIZE 		30
-#define JUNCTION_CUE_SIZE_NET	50
-#define JUNCTION_CUE_SIZE_BUS	30
-#define PIN_CUE_SIZE_NET	30
-#define PIN_CUE_SIZE_BUS	50
-
-/* For text location on component not found graphics */
-#define NOT_FOUND_TEXT_X	100
-#define NOT_FOUND_TEXT_Y	100
-
-#undef max
-#define max(a,b) ((a) > (b) ? (a) : (b))
-
-#undef min
-#define min(a,b) ((a) < (b) ? (a) : (b)) 
-
-/* for s_clib_getfilename() */
-#define OPEN_DIR	0
-#define READ_DIR	1
-#define CLOSE_DIR	2
-#define SET_COUNT	3
-
-/* for s_slib_search() */
-#define SLIB_SEARCH_START	0
-#define SLIB_SEARCH_NEXT	1
-#define SLIB_SEARCH_DONE	2
-
-/* for text alignment */
-/*   2 -- 5 -- 8  */
-/*   |    |    |  */
-/*   1 -- 4 -- 7  */
-/*   |    |    |  */
-/*   0 -- 3 -- 6  */
-#define LOWER_LEFT	0
-#define MIDDLE_LEFT	1
-#define UPPER_LEFT	2
-#define LOWER_MIDDLE	3
-#define MIDDLE_MIDDLE	4
-#define UPPER_MIDDLE	5
-#define LOWER_RIGHT	6
-#define MIDDLE_RIGHT	7
-#define UPPER_RIGHT	8
-
-/* one character string used to calculate tab's width */
-/* Warning: it MUST be a string. */
-#define TAB_CHAR_MODEL "b"
-
-/* multi text line spacing (multipled times character height) */
-#define LINE_SPACING    2.0
-
-/* The conn modes for type */
-#define CONN_NULL               0
-#define CONN_ENDPOINT		1
-#define CONN_MIDPOINT		2
-
-/* used by world_tiles to set the size of the array */
-#define MAX_TILES_X		10
-#define MAX_TILES_Y		10
-
-/* used for undo_savestate flag */
-#define UNDO_ALL		0
-#define UNDO_VIEWPORT_ONLY	1
-
-/* These are for where status information goes */
-#define LOG_WINDOW		0
-#define STDOUT_TTY		1
-#define BOTH_LOGWIN_STDOUT	2
-
-/* list copying flags */
-#define NORMAL_FLAG		0
-#define SELECTION_FLAG		1
-
-/* hierarchy loading flags */
-#define HIERARCHY_NORMAL_LOAD   0
-#define HIERARCHY_FORCE_LOAD    1
-
-/* hierarchy traversing flags */
-#define HIERARCHY_NODUPS (1<<0)
-#define HIERARCHY_POSTORDER (1<<1)
-#define HIERARCHY_INNERLOOP (1<<7)
-
-#define MILS_PER_INCH		1000 
-
-/* for text_output */
-#define VECTOR_FONTS		0
-#define PS_FONTS		1
-
-/* for print dialog box */
-#define EXTENTS			0
-#define WINDOW			1
-#define EXTENTS_NOMARGINS	2
-
-/* for output-capstyle */ 
-#define BUTT_CAP 		0
-#define ROUND_CAP 		1
-#define SQUARE_CAP 		2
-
-/* for print dialog box */
-#define LANDSCAPE		0
-#define PORTRAIT 		1
-
-/* for type to s_cue_output_all */
-#define POSTSCRIPT		0
-#define PNG			1
-
-/* for o_net_orientation */
-#define NEITHER			0
-#define HORIZONTAL		1
-#define VERTICAL		2
-#define HORIZONTAL_ABOVE	3
-#define HORIZONTAL_BELOW	4
-#define VERTICAL_LEFT		5
-#define VERTICAL_RIGHT		6
-
-/* for pin_type */
-#define PIN_TYPE_NET		0
-#define PIN_TYPE_BUS		1
-
-/* gnetlist: hierarchy_*_order */
-#define APPEND			0
-#define PREPEND			1
-
-/* gnetlist: netlist_mode */
-#define gEDA			0
-#define SPICE			1
-#define TANGO			2
-
-/* gnetlist: net-naming-priority */
-#define NETATTRIB_ATTRIBUTE	0
-#define NETNAME_ATTRIBUTE	1
-
-/* gschcheck: Error types */
-#define NO_ERR                  0
-#define FLOAT_NET               1
-#define FLOAT_PIN               2
-#define DUP_NET_NAME            4
-
-/* Max level of symlinks */
-#define MAX_LINK_LEVEL 256
-
-#if defined(__MINGW32__) && !defined(M_PI)
-#define M_PI  3.14159265358979323846
-#endif
-
-/* Logs a normal message. */
-#define s_log_message g_message
-
-/* Backup filename creation string */
-#define AUTOSAVE_BACKUP_FILENAME_STRING "#%s#"
-
-/* These permission bits are absent on MinGW */
-#ifndef S_IWGRP
-# define S_IWGRP 0
-#endif
-#ifndef S_IWOTH
-# define S_IWOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IRWXG
-# define S_IRWXG 0
-#endif
-
-
-/* Used by the rc loading mechanism */
-#define RETURN_G_RC_MODE(rc, var, size) \
-  return g_rc_mode_general(mode,        \
-                           (rc),        \
-                           &(var),      \
-                           mode_table,  \
-                           size)
-
-
-#endif /* !_DEFINES_H_INCL */
diff --git a/libgeda/include/funcs.h b/libgeda/include/funcs.h
deleted file mode 100644
index b6b2fbd..0000000
--- a/libgeda/include/funcs.h
+++ /dev/null
@@ -1,17 +0,0 @@
-extern void (*arc_draw_func)();
-extern void (*box_draw_func)();
-extern void (*picture_draw_func)();
-extern void (*circle_draw_func)();
-extern void (*complex_draw_func)();
-extern void (*line_draw_func)();
-extern void (*net_draw_func)();
-extern void (*bus_draw_func)();
-extern void (*text_draw_func)();
-extern void (*pin_draw_func)();
-extern void (*path_draw_func)();
-extern void (*select_func)();
-extern void (*x_log_update_func)();
-/* load_newer_backup_func is called if an autosave backup file is found
-   when loading a new schematic. It should ask the user what to do, and
-   return TRUE if the backup file should be loaded, or FALSE otherwise */
-extern int (*load_newer_backup_func)();
diff --git a/libgeda/include/geda_list.h b/libgeda/include/geda_list.h
deleted file mode 100644
index 78a3d1c..0000000
--- a/libgeda/include/geda_list.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * gschem - gEDA Schematic Capture
- * Copyright (C) 1998-2004 Ales V. Hvezda
- * Copyright (C) 2007-2008 Peter Clifton
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#ifndef __GEDA_LIST_H__
-#define __GEDA_LIST_H__
-
-#define GEDA_TYPE_LIST            (geda_list_get_type())
-#define GEDA_LIST(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), GEDA_TYPE_LIST, GedaList))
-#define GEDA_LIST_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  GEDA_TYPE_LIST, GedaListClass))
-#define GEDA_IS_LIST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), GEDA_TYPE_LIST))
-#define GEDA_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  GEDA_TYPE_LIST))
-#define GEDA_LIST_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  GEDA_TYPE_LIST, GedaListClass))
-
-
-typedef struct _GedaList      GedaList;
-typedef struct _GedaListClass GedaListClass;
-
-struct _GedaList {
-  GObject parent;
-  GList *glist;
-};
-
-struct _GedaListClass {
-  GObjectClass parent;
-};
-
-GType geda_list_get_type (void);
-
-/* It would be nice to add const qualifiers to some of these, but GLib
- * is buggy in this respect, and doesn't have const where necessary. */
-GedaList *geda_list_new( void );
-void geda_list_add( GedaList *list, gpointer item );
-void geda_list_add_glist( GedaList *list, GList *items );
-void geda_list_remove( GedaList *list, gpointer item );
-/*void geda_list_remove_glist( GedaList *list, GList *items ); */ /* Undemanded as yet */
-void geda_list_remove_all( GedaList *list );
-
-/*const GList *geda_list_get_glist( GedaList *list ); */
-#define geda_list_get_glist(list) (list->glist)
-
-#endif /* __GEDA_LIST_H__ */
-
diff --git a/libgeda/include/globals.h b/libgeda/include/globals.h
deleted file mode 100644
index 963bda8..0000000
--- a/libgeda/include/globals.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's library
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*! \file globals.h
- *  \brief global libgeda variables
- */
-
-#ifndef _GLOBALS_H_INCL
-#define _GLOBALS_H_INCL
-
-extern int do_logging;
-extern int logging_dest;
-
-/* Size of a tab in characters */
-extern int tab_in_chars;
-
-#endif
diff --git a/libgeda/include/libgeda.h b/libgeda/include/libgeda.h
deleted file mode 100644
index a7483ed..0000000
--- a/libgeda/include/libgeda.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's Library
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef LIBGEDA_H
-#define LIBGEDA_H
-
-#include <glib.h>
-
-#include <stdio.h>
-#include <libguile.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include <libgeda/defines.h>
-#include <libgeda/struct.h>
-#include <libgeda/globals.h>
-#include <libgeda/o_types.h>
-#include <libgeda/funcs.h>
-#include <libgeda/colors.h>
-#include <libgeda/papersizes.h>
-#include <libgeda/prototype.h>
-#include <libgeda/geda_list.h>
-
-#endif
diff --git a/libgeda/include/libgeda/colors.h b/libgeda/include/libgeda/colors.h
new file mode 100644
index 0000000..4338412
--- /dev/null
+++ b/libgeda/include/libgeda/colors.h
@@ -0,0 +1,58 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's Library 
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*! \file colors.h
+ *  \brief define some constants for the colors
+ */
+
+#ifndef _COLORS_H_INCL
+#define _COLORS_H_INCL
+
+#define BACKGROUND_COLOR                0
+#define PIN_COLOR                       1
+#define NET_ENDPOINT_COLOR              2
+#define GRAPHIC_COLOR                   3
+#define NET_COLOR                       4
+#define ATTRIBUTE_COLOR                 5
+#define LOGIC_BUBBLE_COLOR              6
+#define DOTS_GRID_COLOR                 7
+#define DETACHED_ATTRIBUTE_COLOR        8
+#define TEXT_COLOR                      9
+#define BUS_COLOR                       10
+#define SELECT_COLOR                    11
+#define BOUNDINGBOX_COLOR               12
+#define ZOOM_BOX_COLOR                  13
+#define STROKE_COLOR                    14
+#define LOCK_COLOR 	                15
+#define OUTPUT_BACKGROUND_COLOR         16     
+#define FREESTYLE1_COLOR         	17     
+#define FREESTYLE2_COLOR         	18     
+#define FREESTYLE3_COLOR         	19     
+#define FREESTYLE4_COLOR         	20     
+#define JUNCTION_COLOR         		21     
+#define MESH_GRID_MAJOR_COLOR           22
+#define MESH_GRID_MINOR_COLOR           23
+
+#define OVERRIDE_NET_COLOR              4
+#define OVERRIDE_PIN_COLOR              1
+#define OVERRIDE_BUS_COLOR              10
+
+#define DEFAULT_COLOR                   3
+
+#endif
diff --git a/libgeda/include/libgeda/defines.h b/libgeda/include/libgeda/defines.h
new file mode 100644
index 0000000..581cfe4
--- /dev/null
+++ b/libgeda/include/libgeda/defines.h
@@ -0,0 +1,254 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's Library
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*! \file defines.h
+ *  \brief global libgeda definitions
+ */
+
+#ifndef _DEFINES_H_INCL
+#define _DEFINES_H_INCL
+
+/* Current schematic/symbol file format */
+#define FILEFORMAT_VERSION     2
+
+/* release version which had file format changes */
+/* New file format changes after 20030921 use the above version */
+/* and not these #defines anymore. */
+#define VERSION_20000220 20000220
+#define VERSION_20000704 20000704
+#define VERSION_20020825 20020825
+#define VERSION_20030921 20030921
+/* 20030921 wasn't a real version, just a MinGW test version, but it is */
+/* out there */
+
+/* Set this string to something interesting to create a custom */
+/* version of gEDA/gaf.  This string is prepended to all messages that */
+/* output the program's version output.  You would set this if you are */
+/* creating a specific custom version of gEDA/gaf.  */
+/* For example, if you set this string to "FIX-", the resulting output is:  */
+/* FIX-1.0.0.20060906. */
+#define PREPEND_VERSION_STRING ""
+
+/* for color mechanism used in gschem */
+#define MAX_COLORS 25
+
+/* X's obsession with *64 */
+#define FULL_CIRCLE 360*64
+
+/* for show_name_value in st_objects */
+#define SHOW_NAME_VALUE         0
+#define SHOW_VALUE              1
+#define SHOW_NAME               2
+#define LEAVE_NAME_VALUE_ALONE  -1
+
+/* for visibility in st_objects */
+#define INVISIBLE               0
+#define VISIBLE                 1
+#define LEAVE_VISIBILITY_ALONE -1
+
+/* For pin and net styles */
+#define THIN            0     
+#define THICK           1
+
+/* various thicknesses (in mils) */
+#define LINE_WIDTH	10
+#define NET_WIDTH	10
+#define PIN_WIDTH_NET	10
+#define BUS_WIDTH	30
+#define PIN_WIDTH_BUS	30
+
+/* various visual cue sizes (in mils) */
+#define CUE_BOX_SIZE 		30
+#define JUNCTION_CUE_SIZE_NET	50
+#define JUNCTION_CUE_SIZE_BUS	30
+#define PIN_CUE_SIZE_NET	30
+#define PIN_CUE_SIZE_BUS	50
+
+/* For text location on component not found graphics */
+#define NOT_FOUND_TEXT_X	100
+#define NOT_FOUND_TEXT_Y	100
+
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b)) 
+
+/* for s_clib_getfilename() */
+#define OPEN_DIR	0
+#define READ_DIR	1
+#define CLOSE_DIR	2
+#define SET_COUNT	3
+
+/* for s_slib_search() */
+#define SLIB_SEARCH_START	0
+#define SLIB_SEARCH_NEXT	1
+#define SLIB_SEARCH_DONE	2
+
+/* for text alignment */
+/*   2 -- 5 -- 8  */
+/*   |    |    |  */
+/*   1 -- 4 -- 7  */
+/*   |    |    |  */
+/*   0 -- 3 -- 6  */
+#define LOWER_LEFT	0
+#define MIDDLE_LEFT	1
+#define UPPER_LEFT	2
+#define LOWER_MIDDLE	3
+#define MIDDLE_MIDDLE	4
+#define UPPER_MIDDLE	5
+#define LOWER_RIGHT	6
+#define MIDDLE_RIGHT	7
+#define UPPER_RIGHT	8
+
+/* one character string used to calculate tab's width */
+/* Warning: it MUST be a string. */
+#define TAB_CHAR_MODEL "b"
+
+/* multi text line spacing (multipled times character height) */
+#define LINE_SPACING    2.0
+
+/* The conn modes for type */
+#define CONN_NULL               0
+#define CONN_ENDPOINT		1
+#define CONN_MIDPOINT		2
+
+/* used by world_tiles to set the size of the array */
+#define MAX_TILES_X		10
+#define MAX_TILES_Y		10
+
+/* used for undo_savestate flag */
+#define UNDO_ALL		0
+#define UNDO_VIEWPORT_ONLY	1
+
+/* These are for where status information goes */
+#define LOG_WINDOW		0
+#define STDOUT_TTY		1
+#define BOTH_LOGWIN_STDOUT	2
+
+/* list copying flags */
+#define NORMAL_FLAG		0
+#define SELECTION_FLAG		1
+
+/* hierarchy loading flags */
+#define HIERARCHY_NORMAL_LOAD   0
+#define HIERARCHY_FORCE_LOAD    1
+
+/* hierarchy traversing flags */
+#define HIERARCHY_NODUPS (1<<0)
+#define HIERARCHY_POSTORDER (1<<1)
+#define HIERARCHY_INNERLOOP (1<<7)
+
+#define MILS_PER_INCH		1000 
+
+/* for text_output */
+#define VECTOR_FONTS		0
+#define PS_FONTS		1
+
+/* for print dialog box */
+#define EXTENTS			0
+#define WINDOW			1
+#define EXTENTS_NOMARGINS	2
+
+/* for output-capstyle */ 
+#define BUTT_CAP 		0
+#define ROUND_CAP 		1
+#define SQUARE_CAP 		2
+
+/* for print dialog box */
+#define LANDSCAPE		0
+#define PORTRAIT 		1
+
+/* for type to s_cue_output_all */
+#define POSTSCRIPT		0
+#define PNG			1
+
+/* for o_net_orientation */
+#define NEITHER			0
+#define HORIZONTAL		1
+#define VERTICAL		2
+#define HORIZONTAL_ABOVE	3
+#define HORIZONTAL_BELOW	4
+#define VERTICAL_LEFT		5
+#define VERTICAL_RIGHT		6
+
+/* for pin_type */
+#define PIN_TYPE_NET		0
+#define PIN_TYPE_BUS		1
+
+/* gnetlist: hierarchy_*_order */
+#define APPEND			0
+#define PREPEND			1
+
+/* gnetlist: netlist_mode */
+#define gEDA			0
+#define SPICE			1
+#define TANGO			2
+
+/* gnetlist: net-naming-priority */
+#define NETATTRIB_ATTRIBUTE	0
+#define NETNAME_ATTRIBUTE	1
+
+/* gschcheck: Error types */
+#define NO_ERR                  0
+#define FLOAT_NET               1
+#define FLOAT_PIN               2
+#define DUP_NET_NAME            4
+
+/* Max level of symlinks */
+#define MAX_LINK_LEVEL 256
+
+#if defined(__MINGW32__) && !defined(M_PI)
+#define M_PI  3.14159265358979323846
+#endif
+
+/* Logs a normal message. */
+#define s_log_message g_message
+
+/* Backup filename creation string */
+#define AUTOSAVE_BACKUP_FILENAME_STRING "#%s#"
+
+/* These permission bits are absent on MinGW */
+#ifndef S_IWGRP
+# define S_IWGRP 0
+#endif
+#ifndef S_IWOTH
+# define S_IWOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IRWXG
+# define S_IRWXG 0
+#endif
+
+
+/* Used by the rc loading mechanism */
+#define RETURN_G_RC_MODE(rc, var, size) \
+  return g_rc_mode_general(mode,        \
+                           (rc),        \
+                           &(var),      \
+                           mode_table,  \
+                           size)
+
+
+#endif /* !_DEFINES_H_INCL */
diff --git a/libgeda/include/libgeda/funcs.h b/libgeda/include/libgeda/funcs.h
new file mode 100644
index 0000000..b6b2fbd
--- /dev/null
+++ b/libgeda/include/libgeda/funcs.h
@@ -0,0 +1,17 @@
+extern void (*arc_draw_func)();
+extern void (*box_draw_func)();
+extern void (*picture_draw_func)();
+extern void (*circle_draw_func)();
+extern void (*complex_draw_func)();
+extern void (*line_draw_func)();
+extern void (*net_draw_func)();
+extern void (*bus_draw_func)();
+extern void (*text_draw_func)();
+extern void (*pin_draw_func)();
+extern void (*path_draw_func)();
+extern void (*select_func)();
+extern void (*x_log_update_func)();
+/* load_newer_backup_func is called if an autosave backup file is found
+   when loading a new schematic. It should ask the user what to do, and
+   return TRUE if the backup file should be loaded, or FALSE otherwise */
+extern int (*load_newer_backup_func)();
diff --git a/libgeda/include/libgeda/geda_list.h b/libgeda/include/libgeda/geda_list.h
new file mode 100644
index 0000000..78a3d1c
--- /dev/null
+++ b/libgeda/include/libgeda/geda_list.h
@@ -0,0 +1,60 @@
+/* gEDA - GPL Electronic Design Automation
+ * gschem - gEDA Schematic Capture
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ * Copyright (C) 2007-2008 Peter Clifton
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#ifndef __GEDA_LIST_H__
+#define __GEDA_LIST_H__
+
+#define GEDA_TYPE_LIST            (geda_list_get_type())
+#define GEDA_LIST(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), GEDA_TYPE_LIST, GedaList))
+#define GEDA_LIST_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  GEDA_TYPE_LIST, GedaListClass))
+#define GEDA_IS_LIST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), GEDA_TYPE_LIST))
+#define GEDA_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  GEDA_TYPE_LIST))
+#define GEDA_LIST_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  GEDA_TYPE_LIST, GedaListClass))
+
+
+typedef struct _GedaList      GedaList;
+typedef struct _GedaListClass GedaListClass;
+
+struct _GedaList {
+  GObject parent;
+  GList *glist;
+};
+
+struct _GedaListClass {
+  GObjectClass parent;
+};
+
+GType geda_list_get_type (void);
+
+/* It would be nice to add const qualifiers to some of these, but GLib
+ * is buggy in this respect, and doesn't have const where necessary. */
+GedaList *geda_list_new( void );
+void geda_list_add( GedaList *list, gpointer item );
+void geda_list_add_glist( GedaList *list, GList *items );
+void geda_list_remove( GedaList *list, gpointer item );
+/*void geda_list_remove_glist( GedaList *list, GList *items ); */ /* Undemanded as yet */
+void geda_list_remove_all( GedaList *list );
+
+/*const GList *geda_list_get_glist( GedaList *list ); */
+#define geda_list_get_glist(list) (list->glist)
+
+#endif /* __GEDA_LIST_H__ */
+
diff --git a/libgeda/include/libgeda/globals.h b/libgeda/include/libgeda/globals.h
new file mode 100644
index 0000000..963bda8
--- /dev/null
+++ b/libgeda/include/libgeda/globals.h
@@ -0,0 +1,33 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's library
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*! \file globals.h
+ *  \brief global libgeda variables
+ */
+
+#ifndef _GLOBALS_H_INCL
+#define _GLOBALS_H_INCL
+
+extern int do_logging;
+extern int logging_dest;
+
+/* Size of a tab in characters */
+extern int tab_in_chars;
+
+#endif
diff --git a/libgeda/include/libgeda/libgeda.h b/libgeda/include/libgeda/libgeda.h
new file mode 100644
index 0000000..a7483ed
--- /dev/null
+++ b/libgeda/include/libgeda/libgeda.h
@@ -0,0 +1,39 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's Library
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef LIBGEDA_H
+#define LIBGEDA_H
+
+#include <glib.h>
+
+#include <stdio.h>
+#include <libguile.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+#include <libgeda/defines.h>
+#include <libgeda/struct.h>
+#include <libgeda/globals.h>
+#include <libgeda/o_types.h>
+#include <libgeda/funcs.h>
+#include <libgeda/colors.h>
+#include <libgeda/papersizes.h>
+#include <libgeda/prototype.h>
+#include <libgeda/geda_list.h>
+
+#endif
diff --git a/libgeda/include/libgeda/o_types.h b/libgeda/include/libgeda/o_types.h
new file mode 100644
index 0000000..0ff2e4f
--- /dev/null
+++ b/libgeda/include/libgeda/o_types.h
@@ -0,0 +1,54 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's Library
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _O_TYPES_H_INCL
+#define _O_TYPES_H_INCL
+
+/* Object types */
+/* Object types are also available in scheme */
+/* If there is any addition, add them also in g_register.c 
+   (function g_register_libgeda_vars) */
+#define OBJ_LINE        'L'
+#define OBJ_PATH        'H'
+#define OBJ_BOX         'B'
+#define OBJ_PICTURE     'G'
+#define OBJ_CIRCLE      'V'
+#define OBJ_NET         'N'
+#define OBJ_BUS         'U'
+#define OBJ_COMPLEX     'C'
+#define OBJ_TEXT        'T'
+#define OBJ_PIN         'P'
+#define OBJ_ARC         'A' 
+#define OBJ_PLACEHOLDER 'X'  /* added 1.19.2005 by SDB to prevent
+			      * deletion of unfound symbol files */
+
+
+#define STARTATTACH_ATTR	'{'	
+#define ENDATTACH_ATTR		'}'	
+#define START_EMBEDDED		'['	
+#define END_EMBEDDED		']'	
+
+/* font stuff */
+#define INFO_FONT         'F' 
+#define VERSION_CHAR      'v' 
+
+/* misc stuff */
+#define COMMENT         '#' 
+
+#endif
diff --git a/libgeda/include/libgeda/papersizes.h b/libgeda/include/libgeda/papersizes.h
new file mode 100644
index 0000000..919149c
--- /dev/null
+++ b/libgeda/include/libgeda/papersizes.h
@@ -0,0 +1,38 @@
+/* gEDA - GPL Electronic Design Automation
+ * gschem - gEDA Schematic Capture
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ */
+
+/* this file is no longer used */
+
+#define MILS_PER	1000
+#define BORDER 		1000	
+/* if you change this one you must recalc correction factors */
+/* perhaps we will do this in the code ! */
+
+/* To calculate the correction factor for each: */
+/* if calcaspect < required_aspect : */
+/* 	Width_correction = (width+border) - (height+border)*1.3333 */
+/* else */
+/* 	Height_correction = ((width+border)/1.3333) - (height+border) */
+
+
+#define WIDTH_A		11*MILS_PER+BORDER+667
+#define HEIGHT_A	8.5*MILS_PER+BORDER
+
+#define WIDTH_B		17*MILS_PER+BORDER
+#define HEIGHT_B	11*MILS_PER+BORDER+1500
+
+#define WIDTH_C		22*MILS_PER+BORDER+1000
+#define HEIGHT_C	17*MILS_PER+BORDER
+
+#define WIDTH_D		34*MILS_PER+BORDER
+#define HEIGHT_D	22*MILS_PER+BORDER+3250
+
+#define WIDTH_E		44*MILS_PER+BORDER+1667
+#define HEIGHT_E	34*MILS_PER+BORDER
+
diff --git a/libgeda/include/libgeda/prototype.h b/libgeda/include/libgeda/prototype.h
new file mode 100644
index 0000000..d1d2a8f
--- /dev/null
+++ b/libgeda/include/libgeda/prototype.h
@@ -0,0 +1,476 @@
+
+/* a_basic.c */
+const gchar *o_file_format_header();
+gchar *o_save_buffer(TOPLEVEL *toplevel);
+int o_save(TOPLEVEL *toplevel, const char *filename);
+GList *o_read_buffer(TOPLEVEL *toplevel, GList *object_list, char *buffer, const int size, const char *name);
+GList *o_read(TOPLEVEL *toplevel, GList *object_list, char *filename, GError **err);
+void o_scale(TOPLEVEL *toplevel, GList *list, int x_scale, int y_scale);
+
+/* f_basic.c */
+gchar *f_get_autosave_filename (const gchar *filename);
+gboolean f_has_active_autosave (const gchar *filename, GError **err);
+int f_open(TOPLEVEL *toplevel, const gchar *filename, GError **err);
+int f_open_flags(TOPLEVEL *toplevel, const gchar *filename,
+                 const gint flags, GError **err);
+void f_close(TOPLEVEL *toplevel);
+void f_save_close(TOPLEVEL *toplevel, char *filename);
+int f_save(TOPLEVEL *toplevel, const char *filename);
+gchar *f_normalize_filename (const gchar *filename, GError **error);
+char *follow_symlinks (const gchar *filename, GError **error);
+
+/* f_print.c */
+int f_print_file (TOPLEVEL *toplevel, const char *filename);
+int f_print_command (TOPLEVEL *toplevel, const char *command);
+int f_print_stream(TOPLEVEL *toplevel, FILE *fp);
+void f_print_set_type(TOPLEVEL *toplevel, int type);
+
+/* g_basic.c */
+SCM g_scm_eval_protected (SCM exp, SCM module_or_state);
+SCM g_scm_eval_string_protected (SCM str);
+SCM g_scm_c_eval_string_protected (const gchar *str);
+int g_read_file(const gchar *filename);
+
+/* g_rc.c */
+SCM g_rc_mode_general(SCM scmmode, const char *rc_name, int *mode_var, 
+                      const vstbl_entry *table, int table_size);
+gint g_rc_parse_general(TOPLEVEL *toplevel,
+                        const gchar *fname, 
+                        const gchar *ok_msg, const gchar *err_msg);
+const char *g_rc_parse_path(void);
+gint g_rc_parse_system_rc(TOPLEVEL *toplevel, const gchar *rcname);
+gint g_rc_parse_home_rc(TOPLEVEL *toplevel, const gchar *rcname);
+gint g_rc_parse_local_rc(TOPLEVEL *toplevel, const gchar *rcname);
+void g_rc_parse(TOPLEVEL *toplevel, const gchar* rcname,
+                const gchar* specified_rc_filename);
+gint g_rc_parse_specified_rc(TOPLEVEL *toplevel, const gchar *rcfilename);
+
+/* g_smob.c */
+SCM g_make_attrib_smob(TOPLEVEL *curr_w, OBJECT *curr_attr);
+SCM g_set_attrib_value_internal(SCM attrib_smob, SCM scm_value, TOPLEVEL **world, OBJECT **o_attrib, char *new_string[]);
+gboolean g_get_data_from_object_smob(SCM object_smob, TOPLEVEL **toplevel, 
+				     OBJECT **object);
+SCM g_make_object_smob(TOPLEVEL *curr_w, OBJECT *object);
+SCM g_get_object_attributes(SCM object_smob);
+SCM g_make_page_smob(TOPLEVEL *curr_w, PAGE *page);
+gboolean g_get_data_from_page_smob(SCM object_smob, TOPLEVEL **toplevel, 
+				   PAGE **object);
+
+/* i_vars.c */
+void i_vars_libgeda_set(TOPLEVEL *toplevel);
+void i_vars_libgeda_freenames();
+
+/* gdk-pixbuf-hacks.c */
+GdkPixbuf *gdk_pixbuf_rotate (GdkPixbuf *pixbuf, guint angle);
+void gdk_pixbuf_add (GdkPixbuf *pixbuf, int offset_x, int offset_y, GdkPixbuf *pixbuf_to_add);
+GdkPixbuf *gdk_pixbuf_mirror_flip(GdkPixbuf *src, gint mirror, gint flip);
+
+/* libgeda.c */
+void libgeda_init(void);
+
+/* m_basic.c */
+void set_window(TOPLEVEL *toplevel, PAGE *page, int xmin, int xmax, int ymin, int ymax);
+void rotate_point(int x, int y, int angle, int *newx, int *newy);
+void rotate_point_90(int x, int y, int angle, int *newx, int *newy);
+void PAPERSIZEtoWORLD(int width, int height, int border, int *right, int *bottom);
+
+/* m_hatch.c */
+void m_hatch_box(BOX *box, gint angle, gint pitch, GArray *lines);
+void m_hatch_circle(CIRCLE *circle, gint angle, gint pitch, GArray *lines);
+void m_hatch_path(PATH *path, gint angle, gint pitch, GArray *lines);
+
+/* m_polygon.c */
+void m_polygon_append_bezier(GArray *points, BEZIER *bezier, int segments);
+void m_polygon_append_point(GArray *points, int x, int y);
+
+
+/* o_arc_basic.c */
+OBJECT *o_arc_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int radius, int start_angle, int end_angle);
+OBJECT *o_arc_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_arc_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_arc_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+void o_arc_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_arc_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+
+/* o_attrib.c */
+OBJECT *o_attrib_search(GList *list, OBJECT *item);
+void o_attrib_add(TOPLEVEL *toplevel, OBJECT *object, OBJECT *item);
+void o_attrib_free(TOPLEVEL *toplevel, OBJECT *current);
+gboolean o_attrib_is_attached (TOPLEVEL *toplevel, OBJECT *attrib, OBJECT *object);
+void o_attrib_attach(TOPLEVEL *toplevel, OBJECT *attrib, OBJECT *object, int set_color);
+void o_attrib_attach_list(TOPLEVEL *toplevel, GList *attr_list, OBJECT *object, int set_color);
+void o_attrib_free_all(TOPLEVEL *toplevel, GList *list);
+void o_attrib_print(GList *attributes);
+void o_attrib_remove(GList **list, OBJECT *remove);
+gboolean o_attrib_get_name_value (const gchar *string, gchar **name_ptr, gchar **value_ptr);
+void o_attrib_set_color(TOPLEVEL *toplevel, GList *attributes);
+char *o_attrib_search_name(const GList *list, char *name, int counter);
+OBJECT *o_attrib_search_string_list(GList *list, char *string);
+char *o_attrib_search_string_partial(OBJECT *object, char *search_for, int counter);
+OBJECT *o_attrib_search_string_single(OBJECT *object, char *search_for);
+OBJECT *o_attrib_search_attrib_value(GList *list, char *value, char *name, int counter);
+char *o_attrib_search_attrib_name(GList *list, char *name, int counter);
+char *o_attrib_search_toplevel(const GList *list, char *name, int counter);
+char *o_attrib_search_name_single(OBJECT *object, char *name, OBJECT **return_found);
+char *o_attrib_search_name_single_count(OBJECT *object, char *name, int counter);
+char *o_attrib_search_slot(OBJECT *object, OBJECT **return_found);
+char *o_attrib_search_numslots(OBJECT *object, OBJECT **return_found);
+char *o_attrib_search_default_slot(OBJECT *object);
+OBJECT *o_attrib_search_pinseq(GList *list, int pin_number);
+char *o_attrib_search_slotdef(OBJECT *object, int slotnumber);
+char *o_attrib_search_component(OBJECT *object, char *name);
+void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT *object);
+void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT *original, OBJECT *target);
+char *o_attrib_search_toplevel_all(GedaPageList *page_list, char *name);
+OBJECT **o_attrib_return_attribs(OBJECT *object);
+void o_attrib_free_returned(OBJECT **found_objects);
+
+/* o_basic.c */
+int inside_region(int xmin, int ymin, int xmax, int ymax, int x, int y);
+void o_recalc_single_object(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_recalc_object_glist(TOPLEVEL *toplevel, GList *object_glist);
+void o_set_line_options(TOPLEVEL *toplevel, OBJECT *o_current, OBJECT_END end, OBJECT_TYPE type, int width, int length, int space);
+gboolean o_get_line_options(OBJECT *object, OBJECT_END *end, OBJECT_TYPE *type, int *width, int *length, int *space);
+void o_set_fill_options(TOPLEVEL *toplevel, OBJECT *o_current, OBJECT_FILLING type, int width, int pitch1, int angle1, int pitch2, int angle2);
+gboolean o_get_fill_options(OBJECT *object, OBJECT_FILLING *type, int *width, int *pitch1, int *angle1, int *pitch2, int *angle2);
+gboolean o_get_position(TOPLEVEL *toplevel, gint *x, gint *y, OBJECT *object);
+void o_translate_world (TOPLEVEL *toplevel, gint dx, gint dy, OBJECT *object);
+void o_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+double o_shortest_distance(OBJECT *object, int x, int y);
+
+/* o_box_basic.c */
+OBJECT *o_box_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
+OBJECT *o_box_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_box_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_box_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+void o_box_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_box_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+
+/* o_bus_basic.c */
+OBJECT *o_bus_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2, int bus_ripper_direction);
+void o_bus_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+OBJECT *o_bus_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_bus_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_bus_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+int o_bus_orientation(OBJECT *object);
+void o_bus_consolidate_lowlevel(OBJECT *object, OBJECT *del_object, int orient);
+int o_bus_consolidate_segments(TOPLEVEL *toplevel, OBJECT *object);
+void o_bus_consolidate(TOPLEVEL *toplevel);
+void o_bus_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+
+/* o_circle_basic.c */
+int dist(int x1, int y1, int x2, int y2);
+OBJECT *o_circle_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int radius);
+OBJECT *o_circle_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_circle_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_circle_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+void o_circle_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_circle_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+
+/* o_complex_basic.c */
+int world_get_single_object_bounds(TOPLEVEL *toplevel, OBJECT *o_current,
+			      int *rleft, int *rtop, 
+			      int *rright, int *rbottom);
+int world_get_object_glist_bounds(TOPLEVEL *toplevel, const GList *o_list,
+			     int *left, int *top, 
+			     int *right, int *bottom);
+int o_complex_is_embedded(OBJECT *o_current);
+GList *o_complex_get_toplevel_attribs (TOPLEVEL *toplevel, const GList *obj_list);
+GList *o_complex_get_promotable (TOPLEVEL *toplevel, OBJECT *object, int detach);
+GList *o_complex_promote_attribs (TOPLEVEL *toplevel, OBJECT *object);
+void o_complex_remove_promotable_attribs (TOPLEVEL *toplevel, OBJECT *object);
+OBJECT *o_complex_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int angle, int mirror, const CLibSymbol *clib_sym, const gchar *basename, int selectable);
+OBJECT *o_complex_new_embedded(TOPLEVEL *toplevel, char type, int color, int x, int y, int angle, int mirror, const gchar *basename, int selectable);
+void o_complex_set_filename(TOPLEVEL *toplevel, const char *basename);
+void o_complex_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+OBJECT *o_complex_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+OBJECT *o_complex_copy_embedded(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_complex_set_color(GList *prim_objs, int color);
+void o_complex_set_color_single(OBJECT *o_current, int color);
+void o_complex_set_color_save(GList *list, int color);
+void o_complex_unset_color(GList *list);
+void o_complex_unset_color_single(OBJECT *o_current);
+void o_complex_set_saved_color_only(GList *list, int color);
+OBJECT *o_complex_return_nth_pin(GList *list, int counter);
+void o_complex_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_complex_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+OBJECT *o_complex_return_pin_object(OBJECT *object, char *pin);
+int  o_complex_count_pins(OBJECT *object);
+void o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object);
+
+/* o_embed.c */
+void o_embed(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_unembed(TOPLEVEL *toplevel, OBJECT *o_current);
+
+/* o_line_basic.c */
+OBJECT *o_line_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
+OBJECT *o_line_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_line_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_line_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+void o_line_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_line_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+void o_line_scale_world(TOPLEVEL *toplevel, int x_scale, int y_scale, OBJECT *object);
+double o_line_length(OBJECT *object);
+
+/* o_list.c */
+OBJECT *o_object_copy(TOPLEVEL *toplevel, OBJECT *selected, int flag);
+GList *o_glist_copy_all(TOPLEVEL *toplevel, const GList *src_list, GList *dest_list, int flag);
+void o_glist_translate_world(TOPLEVEL *toplevel, int dx, int dy, const GList *list);
+void o_glist_rotate_world(TOPLEVEL *toplevel, int x, int y, int angle, const GList *list);
+void o_glist_mirror_world(TOPLEVEL *toplevel, int x, int y, const GList *list);
+
+/* o_net_basic.c */
+OBJECT *o_net_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
+void o_net_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+OBJECT *o_net_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_net_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_net_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+int o_net_orientation(OBJECT *object);
+void o_net_consolidate_lowlevel(OBJECT *object, OBJECT *del_object, int orient);
+int o_net_consolidate_nomidpoint(OBJECT *object, int x, int y);
+int o_net_consolidate_segments(TOPLEVEL *toplevel, OBJECT *object);
+void o_net_consolidate(TOPLEVEL *toplevel);
+void o_net_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+
+/* o_path_basic.c */
+OBJECT *o_path_new(TOPLEVEL *toplevel, char type, int color, const char *path_string);
+OBJECT *o_path_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_path_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_path_translate_world(TOPLEVEL *toplevel, int x, int y, OBJECT *object);
+void o_path_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_path_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+
+/* o_picture.c */
+OBJECT *o_picture_new(TOPLEVEL *toplevel, GdkPixbuf *pixbuf,
+                      gchar *file_content, gsize file_length, char *filename,
+                      double ratio, char type,
+                      int x1, int y1, int x2, int y2, int angle, char mirrored,
+                      char embedded);
+void o_picture_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_picture_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle,OBJECT *object);
+void o_picture_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+void o_picture_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+OBJECT *o_picture_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+guint8 *o_picture_rgb_data(GdkPixbuf *image);
+guint8 *o_picture_mask_data(GdkPixbuf *image);
+void o_picture_embed(TOPLEVEL *toplevel, OBJECT *object);
+void o_picture_unembed(TOPLEVEL *toplevel, OBJECT *object);
+GdkPixbuf *o_picture_pixbuf_from_buffer (gchar *file_content, gsize file_length, GError **err);
+
+/* o_pin_basic.c */
+OBJECT *o_pin_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2, int pin_type, int whichend);
+void o_pin_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
+OBJECT *o_pin_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_pin_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_pin_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+void o_pin_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
+void o_pin_update_whichend(TOPLEVEL *toplevel, GList *object_list, int num_pins);
+void o_pin_set_type(OBJECT *o_current, int pin_type);
+/* o_selection.c */
+SELECTION *o_selection_new( void );
+void o_selection_add(SELECTION *selection, OBJECT *o_selected);
+void o_selection_print_all(const SELECTION *selection);
+void o_selection_remove(SELECTION *selection, OBJECT *o_selected);
+void o_selection_select(OBJECT *object, int color); /* DEPRECATED */
+void o_selection_unselect(OBJECT *object);          /* DEPRECATED */
+
+/* o_text_basic.c */
+void o_text_init(void);
+void o_text_print_set(void);
+GList *o_text_load_font(TOPLEVEL *toplevel, gunichar needed_char);
+int o_text_num_lines(const char *string);
+int o_text_height(const char *string, int size);
+int o_text_width(TOPLEVEL *toplevel, char *string, int size);
+GList *o_text_create_string(TOPLEVEL *toplevel, char *string, int size, int color, int x, int y, int alignment, int angle);
+OBJECT *o_text_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int alignment, int angle, const char *string, int size, int visibility, int show_name_value);
+void o_text_set_info_font(char buf[]);
+void o_text_recreate(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_text_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *o_current);
+OBJECT *o_text_copy(TOPLEVEL *toplevel, OBJECT *o_current);
+void o_text_freeallfonts(TOPLEVEL *toplevel);
+void o_text_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
+void o_text_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
+void o_text_set_string(TOPLEVEL *toplevel, OBJECT *obj, const gchar *new_string);
+const gchar *o_text_get_string(TOPLEVEL *toplevel, OBJECT *obj);
+void o_text_set_rendered_bounds_func (TOPLEVEL *toplevel, RenderedBoundsFunc func, void *user_data);
+/* s_attrib.c */
+int s_attrib_add_entry(char *new_attrib);
+void s_attrib_print(void);
+int s_attrib_uniq(char *name);
+void s_attrib_free(void);
+void s_attrib_init(void);
+char *s_attrib_get(int counter);
+
+/* s_basic.c */
+void error_if_called(void);
+void exit_if_null(void *ptr);
+OBJECT *s_basic_init_object(OBJECT *new_node, int type, char const *name);
+OBJECT *s_basic_new_object(int type, char const *prefix);
+void print_struct_forw(GList *list);
+void print_struct(OBJECT *ptr);
+void s_delete_object(TOPLEVEL *toplevel, OBJECT *o_current);
+void s_delete_object_glist(TOPLEVEL *toplevel, GList *list);
+char *remove_nl(char *string);
+char *remove_last_nl(char *string);
+gchar *s_expand_env_variables (const gchar *string);
+
+/* s_clib.c */
+void s_clib_free (void);
+GList *s_clib_get_sources (const gboolean sorted);
+const CLibSource *s_clib_get_source_by_name (const gchar *name);
+void s_clib_refresh ();
+const CLibSource *s_clib_add_directory (const gchar *directory, 
+					const gchar *name);
+const CLibSource *s_clib_add_command (const gchar *list_cmd,
+                                      const gchar *get_cmd,
+				      const gchar *name);
+const CLibSource *s_clib_add_scm (SCM listfunc, SCM getfunc, 
+				  const gchar *name);
+const gchar *s_clib_source_get_name (const CLibSource *source);
+GList *s_clib_source_get_symbols (const CLibSource *source);
+const gchar *s_clib_symbol_get_name (const CLibSymbol *symbol);
+gchar *s_clib_symbol_get_filename (const CLibSymbol *symbol);
+const CLibSource *s_clib_symbol_get_source (const CLibSymbol *symbol);
+gchar *s_clib_symbol_get_data (const CLibSymbol *symbol);
+GList *s_clib_search (const gchar *pattern, const CLibSearchMode mode);
+void s_clib_flush_search_cache ();
+void s_clib_flush_symbol_cache ();
+const CLibSymbol *s_clib_get_symbol_by_name (const gchar *name);
+gchar *s_clib_symbol_get_data_by_name (const gchar *name);
+GList *s_toplevel_get_symbols (const TOPLEVEL *toplevel);
+
+/* s_color.c */
+void s_color_map_defaults (COLOR *map);
+gboolean s_color_rgba_decode (const gchar *rgba,
+                              guchar *r, guchar *g, guchar *b, guchar *a);
+gchar *s_color_rgba_encode (guint8 r, guint8 g, guint8 b, guint8 a);
+SCM s_color_map_to_scm (const COLOR *map);
+void s_color_map_from_scm (COLOR *map, SCM lst, const char *scheme_proc_name);
+
+/* s_conn.c */
+CONN *s_conn_return_new(OBJECT *other_object, int type, int x, int y, int whichone, int other_whichone);
+int s_conn_uniq(GList *conn_list, CONN *input_conn);
+int s_conn_remove_other(TOPLEVEL *toplevel, OBJECT *other_object, OBJECT *to_remove);
+void s_conn_remove_object(TOPLEVEL *toplevel, OBJECT *to_remove);
+OBJECT *s_conn_check_midpoint(OBJECT *o_current, int x, int y);
+void s_conn_update_object(TOPLEVEL *toplevel, OBJECT *object);
+void s_conn_print(GList *conn_list);
+int s_conn_net_search(OBJECT* new_net, int whichone, GList * conn_list);
+GList *s_conn_return_others(GList *input_list, OBJECT *object);
+
+/* s_cue.c */
+void s_cue_postscript_fillbox(TOPLEVEL *toplevel, FILE *fp, int x, int y);
+void s_cue_postscript_junction (TOPLEVEL *toplevel, FILE *fp, int x, int y, int bus_involved);
+void s_cue_output_all(TOPLEVEL *toplevel, const GList *obj_list, FILE *fp, int type);
+void s_cue_output_lowlevel(TOPLEVEL *toplevel, OBJECT *object, int whichone, FILE *fp, int output_type);
+void s_cue_output_lowlevel_midpoints(TOPLEVEL *toplevel, OBJECT *object, FILE *fp, int output_type);
+void s_cue_output_single(TOPLEVEL *toplevel, OBJECT *object, FILE *fp, int type);
+
+/* s_hierarchy.c */
+int s_hierarchy_down_schematic_single(TOPLEVEL *toplevel, const gchar *filename, PAGE *parent, int page_control, int flag);
+void s_hierarchy_down_symbol (TOPLEVEL *toplevel, const CLibSymbol *symbol, PAGE *parent);
+PAGE *s_hierarchy_find_up_page(GedaPageList *page_list, PAGE *current_page);
+GList* s_hierarchy_traversepages(TOPLEVEL *toplevel, gint flags);
+gint s_hierarchy_print_page(PAGE *p_current, void * data);
+PAGE *s_hierarchy_find_prev_page(GedaPageList *page_list, PAGE *current_page);
+PAGE *s_hierarchy_find_next_page(GedaPageList *page_list, PAGE *current_page);
+
+/* s_log.c */
+void s_log_init (const gchar *filename);
+void s_log_close (void);
+gchar *s_log_read (void);
+
+/* s_menu.c */
+int s_menu_return_num(void);
+SCM s_menu_return_entry(int index, char **menu_name);
+int s_menu_add_entry(char *new_menu, SCM menu_items);
+void s_menu_print(void);
+void s_menu_free(void);
+void s_menu_init(void);
+
+/* s_page.c */
+PAGE *s_page_new (TOPLEVEL *toplevel, const gchar *filename);
+void s_page_delete (TOPLEVEL *toplevel, PAGE *page);
+void s_page_delete_list(TOPLEVEL *toplevel);
+void s_page_goto (TOPLEVEL *toplevel, PAGE *p_new);
+PAGE *s_page_search (TOPLEVEL *toplevel, const gchar *filename);
+PAGE *s_page_search_by_page_id (GedaPageList *list, int pid);
+void s_page_print_all (TOPLEVEL *toplevel);
+gint s_page_save_all (TOPLEVEL *toplevel);
+gboolean s_page_check_changed (GedaPageList *list);
+void s_page_clear_changed (GedaPageList *list);
+void s_page_autosave_init(TOPLEVEL *toplevel);
+gint s_page_autosave (TOPLEVEL *toplevel);
+void s_page_append (PAGE *page, OBJECT *object);
+void s_page_append_list (PAGE *page, GList *obj_list);
+void s_page_remove (PAGE *page, OBJECT *object);
+void s_page_delete_objects (TOPLEVEL *toplevel, PAGE *page);
+const GList *s_page_objects (PAGE *page);
+GList *s_page_objects_in_region (TOPLEVEL *toplevel, PAGE *page, int min_x, int min_y, int max_x, int max_y);
+GList *s_page_objects_in_regions (TOPLEVEL *toplevel, PAGE *page, BOX *rects, int n_rects);
+
+/* s_papersizes.c */
+int s_papersizes_add_entry(char *new_papersize, int width, int height);
+void s_papersizes_print(void);
+int s_papersizes_uniq(char *name);
+void s_papersizes_free(void);
+void s_papersizes_init(void);
+char *s_papersizes_get(int counter);
+void s_papersizes_get_size(char *string, int *width, int *height);
+
+/* s_path.c */
+PATH *s_path_parse (const char *path_str);
+char *s_path_string_from_path (const PATH *path);
+
+/* s_project.c */
+TOPLEVEL *s_toplevel_new (void);
+void s_toplevel_delete (TOPLEVEL *toplevel);
+
+/* s_slib.c */
+int s_slib_add_entry(char *new_path);
+int s_slib_search_for_dirname(char *dir_name);
+char *s_slib_search_dirs(const char *basename);
+char *s_slib_search_lowlevel(const char *basename);
+char *s_slib_getbasename(const char *rawname);
+char *s_slib_search(const char *filename, int flag);
+char *s_slib_search_single(const char *filename);
+void s_slib_free(void);
+void s_slib_init(void);
+char *s_slib_getdir(int index);
+char *s_slib_getfiles(char *directory, int flag);
+void s_slib_print(void);
+int s_slib_uniq(char *path);
+void s_slib_print_dirs(void);
+
+/* s_stretch.c */
+GList *s_stretch_add(GList *list, OBJECT *object, CONN *connection, int whichone);
+GList *s_stretch_remove(GList *list, OBJECT *object);
+void s_stretch_print_all(GList *list);
+void s_stretch_destroy_all(GList *list);
+
+/* s_tile.c */
+void s_tile_init(TOPLEVEL *toplevel, PAGE *p_current);
+void s_tile_add_object(TOPLEVEL *toplevel, OBJECT *object);
+void s_tile_remove_object(OBJECT *object);
+void s_tile_update_object(TOPLEVEL *toplevel, OBJECT *object);
+GList *s_tile_get_objectlists(TOPLEVEL *toplevel, int world_x1, int world_y1, int world_x2, int world_y2);
+void s_tile_print(TOPLEVEL *toplevel);
+void s_tile_free_all(PAGE *p_current);
+
+/* s_undo.c */
+UNDO *s_undo_return_tail(UNDO *head);
+UNDO *s_undo_return_head(UNDO *tail);
+UNDO *s_undo_new_head(void);
+void s_undo_destroy_head(UNDO *u_head);
+UNDO *s_undo_add(UNDO *head, int type, char *filename, GList *object_list, int left, int top, int right, int bottom, int page_control, int up);
+void s_undo_print_all(UNDO *head);
+void s_undo_destroy_all(TOPLEVEL *toplevel, UNDO *head);
+void s_undo_remove(TOPLEVEL *toplevel, UNDO *head, UNDO *u_tos);
+void s_undo_remove_rest(TOPLEVEL *toplevel, UNDO *head);
+int s_undo_levels(UNDO *head);
+void s_undo_init(PAGE *p_current);
+void s_undo_free_all(TOPLEVEL *toplevel, PAGE *p_current);
+
+/* u_basic.c */
+char *u_basic_breakup_string(char *string, char delimiter, int count);
diff --git a/libgeda/include/libgeda/struct.h b/libgeda/include/libgeda/struct.h
new file mode 100644
index 0000000..b29634a
--- /dev/null
+++ b/libgeda/include/libgeda/struct.h
@@ -0,0 +1,692 @@
+/* gEDA - GPL Electronic Design Automation
+ * libgeda - gEDA's Library
+ * Copyright (C) 1998-2004 Ales V. Hvezda
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef STRUCT_H
+#define STRUCT_H
+
+#include <glib.h>  /* Include needed to make GList work. */
+
+/* Wrappers around a new list mechanism */
+typedef struct _GedaList SELECTION;
+typedef struct _GedaList GedaPageList;
+
+/* gschem structures (gschem) */
+typedef struct st_complex COMPLEX;
+typedef struct st_line LINE;
+typedef struct st_path_section PATH_SECTION;
+typedef struct st_path PATH;
+typedef struct st_circle CIRCLE;
+typedef struct st_arc ARC;
+typedef struct st_box BOX;
+typedef struct st_picture PICTURE;
+typedef struct st_text TEXT;
+typedef struct st_point sPOINT;
+typedef struct st_transform TRANSFORM;
+typedef struct st_bezier BEZIER;
+
+typedef struct st_object OBJECT;
+typedef struct st_page PAGE;
+typedef struct st_toplevel TOPLEVEL;
+typedef struct st_color COLOR;
+typedef struct st_undo UNDO;
+typedef struct st_tile TILE;
+typedef struct st_bounds BOUNDS;
+
+typedef struct st_conn CONN;
+typedef struct st_bus_ripper BUS_RIPPER;
+
+/* Used when you move objects and you want the nets/pins to stretch */
+typedef struct st_stretch STRETCH;
+
+/* netlist structures (gnetlist) */
+typedef struct st_netlist NETLIST;
+typedef struct st_cpinlist CPINLIST;
+typedef struct st_net NET;
+
+/* sch check structures (gschcheck) */
+typedef struct st_schcheck SCHCHECK;
+typedef struct st_chkerrs CHKERRS;
+
+/* Managed text buffers */
+typedef struct _TextBuffer TextBuffer;
+
+/* Component library objects */
+typedef struct _CLibSource CLibSource;
+typedef struct _CLibSymbol CLibSymbol;
+
+/* Component library search modes */
+typedef enum { CLIB_EXACT=0, CLIB_GLOB } CLibSearchMode;
+
+/* f_open behaviour flags.  See documentation for f_open_flags() in
+   f_basic.c. */
+typedef enum { F_OPEN_RC           = 1,
+               F_OPEN_CHECK_BACKUP = 2,
+               F_OPEN_RESTORE_CWD  = 4,
+} FOpenFlags;
+
+/*! \brief line end style for an open line of an object */
+typedef enum {END_NONE, END_SQUARE, END_ROUND} OBJECT_END;
+
+/*! \brief line style of lines, rect, circles, arcs */
+typedef enum {TYPE_SOLID, TYPE_DOTTED, TYPE_DASHED, TYPE_CENTER, TYPE_PHANTOM, TYPE_ERASE} OBJECT_TYPE;
+
+/*! \brief fill style of objects like cirle, rect, path */
+typedef enum {FILLING_HOLLOW, FILLING_FILL, FILLING_MESH, FILLING_HATCH, FILLING_VOID} OBJECT_FILLING;
+
+struct st_line {
+  int x[2];
+  int y[2];
+};
+
+struct st_point {
+  gint x;
+  gint y;
+};
+
+#define LINE_END1 0
+#define LINE_END2 1
+
+typedef enum {
+    PATH_MOVETO,
+    PATH_MOVETO_OPEN,
+    PATH_CURVETO,
+    PATH_LINETO,
+    PATH_END
+} PATH_CODE;
+
+struct st_path_section {
+  PATH_CODE code;
+  int x1;
+  int y1;
+  int x2;
+  int y2;
+  int x3;
+  int y3;
+};
+
+struct st_path {
+  PATH_SECTION *sections; /* Bezier path segments  */
+  int num_sections;       /* Number with data      */
+  int num_sections_max;   /* Number allocated      */
+};
+
+struct st_arc {
+  int x, y; /* world */
+
+  int width;
+  int height;
+
+  int start_angle;
+  int end_angle;
+};
+
+#define ARC_CENTER 0
+#define ARC_RADIUS 1
+#define ARC_START_ANGLE 2
+#define ARC_END_ANGLE 3
+
+struct st_bezier {
+  int x[4];
+  int y[4];
+};
+
+struct st_box {
+  /* upper is considered the origin */
+  int upper_x, upper_y; /* world */	
+  int lower_x, lower_y;
+
+};
+
+#define BOX_UPPER_LEFT 0
+#define BOX_LOWER_RIGHT 1
+#define BOX_UPPER_RIGHT 2
+#define BOX_LOWER_LEFT 3
+
+struct st_picture {
+  GdkPixbuf *original_picture;
+  GdkPixbuf *displayed_picture;
+  gchar *file_content;
+  gsize file_length;
+
+  double ratio;
+  char *filename;
+  int angle;
+  char mirrored;
+  char embedded;
+
+  /* upper is considered the origin */
+  int upper_x, upper_y; /* world */	
+  int lower_x, lower_y;
+
+};
+
+#define PICTURE_UPPER_LEFT 0
+#define PICTURE_LOWER_RIGHT 1
+#define PICTURE_UPPER_RIGHT 2
+#define PICTURE_LOWER_LEFT 3
+
+
+struct st_text {
+  int x, y;		/* world origin */
+
+  char *string;			/* text stuff */
+  char *disp_string;
+  int length;
+  int size;
+  int alignment;	
+  int displayed_width;
+  int displayed_height;
+  int angle;
+
+  GList *prim_objs;
+};
+
+struct st_complex {
+  int x, y;		/* world origin */
+
+  int angle;				/* orientation, only multiples
+                                         * of 90 degrees allowed */   
+  /* in degrees */
+  int mirror;
+
+  GList *prim_objs;			/* Primitive objects */
+  /* objects which make up the */
+  /* complex */
+};
+
+struct st_circle {
+  int center_x, center_y; /* world */
+  int radius;
+};
+
+#define CIRCLE_CENTER 0
+#define CIRCLE_RADIUS 1
+
+struct st_object {
+  int type;				/* Basic information */
+  int sid;
+  char *name;
+
+  int w_top;				/* Bounding box information */
+  int w_left;				/* in world coords */
+  int w_right;
+  int w_bottom;
+  gboolean w_bounds_valid;
+
+  COMPLEX *complex;
+  LINE *line; 
+  CIRCLE *circle; 
+  ARC *arc;
+  BOX *box;
+  TEXT *text;
+  PICTURE *picture;
+  PATH *path;
+
+  GList *tiles;			/* tiles */
+
+  GList *conn_list;			/* List of connections */
+  /* to and from this object */
+
+  /* every graphical primitive have more or less the same options. */
+  /* depending on its nature a primitive is concerned with one or more */
+  /* of these fields. If not, value must be ignored. */
+  OBJECT_END line_end;
+  OBJECT_TYPE line_type;
+  int line_width;
+  int line_space;
+  int line_length;
+
+  OBJECT_FILLING fill_type;
+  int fill_width;
+  int fill_angle1, fill_pitch1;
+  int fill_angle2, fill_pitch2;
+
+  gboolean complex_embedded;                    /* is embedded component? */
+  gchar *complex_basename;              /* Component Library Symbol name */
+  OBJECT *complex_parent;		/* Complex parent object pointer */
+  /* used only in complex head nodes */
+
+  /* unused for now */
+  void (*action_func)();			/* Execute function */
+
+  void (*sel_func)();			/* Selected function */
+  void (*draw_func)();			/* Draw function */
+
+  int color; 				/* Which color */
+  int saved_color; 			/* Saved color */
+  int dont_redraw;			/* Flag to skip redrawing */
+  int selected;				/* object selected flag */
+  int locked_color; 			/* Locked color (used to save */
+  /* the object's real color */
+  /* when the object is locked) */
+
+  /* controls which direction bus rippers go */
+  /* it is either 0 for un-inited, */
+  /* 1 for right, -1 for left (horizontal bus) */
+  /* 1 for up, -1 for down (vertial bus) */
+  int bus_ripper_direction;             /* only valid on buses */
+
+
+  int font_text_size;			/* used only with fonts defs */
+  GList *font_prim_objs;			/* used only with fonts defs */
+
+  int whichend;    /* for pins only, either 0 or 1 */
+  int pin_type;    /* for pins only, either NET or BUS */
+
+  GList *attribs;       /* attribute stuff */
+  int show_name_value;
+  int visibility;
+  OBJECT *attached_to;  /* when object is an attribute */
+  OBJECT *copied_to;    /* used when copying attributes */
+
+}; 
+
+
+/*! \brief Structure for connections between OBJECTs
+ *
+ * The st_conn structure contains a single connection
+ * to another object.
+ * The connection system in s_conn.c uses this struct
+ */
+struct st_conn {
+  /*! \brief The "other" object connected to this one */
+  OBJECT *other_object;
+  /*! \brief type of connection. Always in reference to how the "other"
+    object is connected to the current one */
+  int type;
+  /*! \brief x coord of the connection position */
+  int x;
+  /*! \brief y coord of the connection position */
+  int y;		
+  /*! \brief which endpoint of the current object caused this connection */
+  int whichone;
+  /*! \brief which endpoint of the "other" object caused this connection */
+  int other_whichone;
+};
+
+/* this structure is used in gschem to add rippers when drawing nets */
+/* it is never stored in any object, it is only temporary */
+struct st_bus_ripper
+{
+  int x[2];
+  int y[2];
+};
+
+struct st_stretch
+{
+  OBJECT *object;
+  CONN *connection;
+
+  int whichone;
+};
+
+struct st_bounds {
+  gint min_x;
+  gint min_y;
+  gint max_x;
+  gint max_y;
+};
+
+/** A structure to store a 2D affine transform.
+ *
+ *  The transforms get stored in a 3x3 matrix. Code assumes the bottom row to
+ *  remain constant at [0 0 1].
+ */
+struct st_transform {
+  gdouble m[2][3];    /* m[row][column] */
+};
+
+struct st_undo {
+
+  /* one of these is used, depending on if you are doing in-memory */
+  /* or file based undo state saving */	
+  char *filename;
+  GList *object_list;
+
+  /* either UNDO_ALL or UNDO_VIEWPORT_ONLY */
+  int type;
+
+  /* viewport information */
+  int left, top, right, bottom;
+
+  /* up and down the hierarchy */
+  int up;
+  /* used to control which pages are viewable when moving around */
+  int page_control;
+
+  UNDO *prev;
+  UNDO *next;
+};
+
+
+/*! \brief structure to split a page into tiles
+ *  
+ *  This structure is used to track objects that are inside
+ *  a smaller TILE of o a page.
+ *  See s_tile.c for further informations.
+ */
+struct st_tile {
+  GList *objects;
+
+  int top, left, right, bottom;
+};
+
+struct st_page {
+
+  int pid;
+
+  GList *_object_list;
+  SELECTION *selection_list; /* new selection mechanism */
+  GList *place_list;
+  OBJECT *object_lastplace; /* the last found item */
+  GList *stretch_list;
+
+  char *page_filename; 
+  int CHANGED;			/* changed flag */
+  /*int zoom_factor; no longer used*/
+  int left, right, top, bottom;		/* World coord limits */
+  double coord_aspectratio;		/* Real worldcoords ratio (?) */
+
+  float to_screen_x_constant;
+  float to_screen_y_constant;
+
+  float to_world_x_constant;
+  float to_world_y_constant;
+
+  TILE world_tiles[MAX_TILES_X][MAX_TILES_Y];
+
+  /* Undo/Redo Stacks and pointers */	
+  /* needs to go into page mechanism actually */
+  UNDO *undo_bottom;	
+  UNDO *undo_current;
+  UNDO *undo_tos; 	/* Top Of Stack */
+
+  /* up and down the hierarchy */
+  /* this holds the pid of the parent page */
+  int up;
+  /* int down; not needed */
+
+  /* used to control which pages are viewable when moving around */
+  int page_control;
+
+  /* backup variables */
+  GTimeVal last_load_or_save_time;
+  char saved_since_first_loaded;
+  gint ops_since_last_backup;
+  gchar do_autosave_backup;
+
+  /* Function which asks the user wether to load a newer backup file */
+  int (*load_newer_backup_func)();
+
+};
+
+/*! \brief different kind of snapping mechanisms used in TOPLEVEL */
+typedef enum {SNAP_OFF, SNAP_GRID, SNAP_RESNAP, SNAP_STATE_COUNT} SNAP_STATE;
+
+/*! \brief Type of callback function for calculating text bounds */
+typedef int(*RenderedBoundsFunc)(void *, OBJECT *, int *, int *, int *, int *);
+
+struct st_toplevel {
+
+  /* have to decided on component list stuff */
+  /* if it should go in here or not */
+  /* leave outside for now */
+
+  GList *RC_list;                       /* List of RC files which have been read in. */
+
+  char *untitled_name;			/* untitled sch basename */
+  char *font_directory; 		/* path of the vector fonts */
+  char *scheme_directory; 		/* path of the scheme scripts */
+  char *bitmap_directory; 		/* path of the bitmaps */
+
+  int init_left, init_right; 		/* Starting values for above */
+  int init_top, init_bottom; 
+
+  int width, height;			/* height, width of window */
+
+  /*! \brief whether and how to snap to the current grid */
+  SNAP_STATE snap;
+
+  int override_color;			/* used in doing selections */
+
+  int last_ps_color;                    /* used in print code */
+
+  int DONT_REDRAW;			/* misc flags */
+  int ADDING_SEL;
+
+  /* page system */
+  PAGE *page_current;
+  GedaPageList *pages;
+
+  /* show_hidden_text is used to control which text is hidden in gschem */
+  int show_hidden_text;
+
+  GList* major_changed_refdes;          /* A list of all refdes's that have */
+                                        /* major symbol version changes */
+
+  /* backup variables */
+  int auto_save_interval;
+  gint auto_save_timeout;
+
+  /* used by math funcs for the snapping */
+  int snap_size;		
+
+  /* BLOCK SET IN GSCHEM, BUT USED IN LIBGEDA - NEEDS A RETHINK */
+  int background_color;
+  int override_net_color;
+  int override_bus_color;
+  int override_pin_color;
+  int pin_style;
+  int net_style;
+  int bus_style;
+  int line_style;
+  /* END BLOCK - ALTHOUGH THERE ARE MORE CASES! */
+
+  /* controls whether objects are clipped */
+  int object_clipping; 
+
+  /* controls how text is printed (vector / PS font) */ 
+  int text_output; 
+
+  /* either landscape or portrait */
+  int print_orientation; 
+
+  /* either TRUE or FALSE (color or no color) */
+  int image_color; 
+
+  /* either TRUE or FALSE (color or no color) */
+  int print_color; 
+
+  /* color used color ouput for background */ 
+  int print_color_background;
+
+  /* setpagedevice orientation option enable (TRUE or FALSE) */
+  int setpagedevice_orientation;
+
+  /* setpagedevice pagesize option enable (TRUE or FALSE) */
+  int setpagedevice_pagesize;
+
+  /* The name of the prolog file to paste into the Postscript output */
+  char *postscript_prolog;
+
+  /* Use this as a scaling factor for the output font */
+  float postscript_font_scale;
+
+  /* controls if the net consolidation code is used */ 
+  int net_consolidate; 
+
+  /*controls if attribute promotion happens */
+  int attribute_promotion; 
+
+  /* controls if invisible attribs are promoted */
+  int promote_invisible; 
+
+  /* controls if invisible attribs are kept and not deleted */
+  int keep_invisible;   
+
+  /* either window or limits */
+  int print_output_type;
+
+  /* BUTT, ROUND, SQUARE caps */
+  int print_output_capstyle;		
+
+  /* landscape printing only */
+  int paper_width, paper_height;
+
+  /* filename of the bus ripper component if set above */
+  char *bus_ripper_symname;
+
+  /* controls if the whole bounding box is used in the auto whichend code */
+  int force_boundingbox;
+
+  /* controls the threshold (in lines of text) when the multi-line text */
+  /* output font is forced to vector */
+  int print_vector_threshold;
+
+  /* List of attributes to always promote */
+  GList *always_promote_attributes;
+
+  /* gnetlist specific */
+  int net_naming_priority;
+  int hierarchy_traversal;
+  int hierarchy_uref_mangle;
+  int hierarchy_netname_mangle;
+  int hierarchy_netattrib_mangle;
+  char *hierarchy_uref_separator;
+  char *hierarchy_netname_separator;
+  char *hierarchy_netattrib_separator;
+  int hierarchy_netattrib_order;
+  int hierarchy_netname_order;
+  int hierarchy_uref_order;
+  char *unnamed_netname;
+  char *unnamed_busname;
+
+  /* Callback function for calculating text bounds */
+  RenderedBoundsFunc rendered_text_bounds_func;
+  void *rendered_text_bounds_data;
+};
+
+/* structures below are for gnetlist */
+
+/* for every component in the object database */
+struct st_netlist {
+
+  int nlid;
+
+  char *component_uref;
+
+  OBJECT *object_ptr;
+
+  CPINLIST *cpins;		
+
+  char *hierarchy_tag;
+  int composite_component;
+
+  NETLIST *prev;
+  NETLIST *next;
+};
+
+
+/* for every pin on a component */
+struct st_cpinlist {
+  int plid;
+  int type;                             /* PIN_TYPE_NET or PIN_TYPE_BUS */
+
+  char *pin_number;
+  char *net_name;			/* this is resolved at very end */
+  char *pin_label;
+
+  NET *nets;
+
+  CPINLIST *prev;
+  CPINLIST *next;
+};
+
+/* the net run connected to a pin */
+struct st_net {
+
+  int nid;
+
+  int net_name_has_priority;
+  char *net_name;
+  char *pin_label;
+
+  char *connected_to; /* new to replace above */
+
+  NET *prev;
+  NET *next;
+};
+
+/* By Jamil Khatib */
+/* typedef struct st_chkerrs CHKERRS; */
+
+/* Schem check struct */
+struct st_schcheck {
+  int no_errors;                /* No of Errors */
+  int no_warnings;              /* No of Warinings */
+
+  CHKERRS * sheet_errs;
+
+  CHKERRS *float_nets;           /* Header of the list of floating nets */
+  int net_errs;                 /* No of floating nets */
+
+  OBJECT *float_pins;           /* Header of List of floating pins*/
+  int pin_errs;                 /* No of floating pins */
+
+  int net_names;                /* No of mismatched net names */
+};
+
+
+struct st_chkerrs{
+
+  OBJECT * err_obj;
+  CHKERRS * next;
+
+};
+
+
+
+struct st_color {
+  guint8 r, g, b, a;
+  gboolean enabled;
+};
+
+
+struct st_attrib_smob {
+  TOPLEVEL *world;   /* We need this when updating schematic */
+  OBJECT   *attribute;
+};
+
+struct st_object_smob {
+  TOPLEVEL *world;   /* We need this when updating schematic */
+  OBJECT   *object;
+};
+
+struct st_page_smob {
+  TOPLEVEL *world;   /* We need this when updating schematic */
+  PAGE   *page;
+};
+
+/* used by the rc loading mechanisms */
+typedef struct {
+  int   m_val;
+  char *m_str;
+} vstbl_entry;
+
+#endif
diff --git a/libgeda/include/o_types.h b/libgeda/include/o_types.h
deleted file mode 100644
index 0ff2e4f..0000000
--- a/libgeda/include/o_types.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's Library
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _O_TYPES_H_INCL
-#define _O_TYPES_H_INCL
-
-/* Object types */
-/* Object types are also available in scheme */
-/* If there is any addition, add them also in g_register.c 
-   (function g_register_libgeda_vars) */
-#define OBJ_LINE        'L'
-#define OBJ_PATH        'H'
-#define OBJ_BOX         'B'
-#define OBJ_PICTURE     'G'
-#define OBJ_CIRCLE      'V'
-#define OBJ_NET         'N'
-#define OBJ_BUS         'U'
-#define OBJ_COMPLEX     'C'
-#define OBJ_TEXT        'T'
-#define OBJ_PIN         'P'
-#define OBJ_ARC         'A' 
-#define OBJ_PLACEHOLDER 'X'  /* added 1.19.2005 by SDB to prevent
-			      * deletion of unfound symbol files */
-
-
-#define STARTATTACH_ATTR	'{'	
-#define ENDATTACH_ATTR		'}'	
-#define START_EMBEDDED		'['	
-#define END_EMBEDDED		']'	
-
-/* font stuff */
-#define INFO_FONT         'F' 
-#define VERSION_CHAR      'v' 
-
-/* misc stuff */
-#define COMMENT         '#' 
-
-#endif
diff --git a/libgeda/include/papersizes.h b/libgeda/include/papersizes.h
deleted file mode 100644
index 919149c..0000000
--- a/libgeda/include/papersizes.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * gschem - gEDA Schematic Capture
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- */
-
-/* this file is no longer used */
-
-#define MILS_PER	1000
-#define BORDER 		1000	
-/* if you change this one you must recalc correction factors */
-/* perhaps we will do this in the code ! */
-
-/* To calculate the correction factor for each: */
-/* if calcaspect < required_aspect : */
-/* 	Width_correction = (width+border) - (height+border)*1.3333 */
-/* else */
-/* 	Height_correction = ((width+border)/1.3333) - (height+border) */
-
-
-#define WIDTH_A		11*MILS_PER+BORDER+667
-#define HEIGHT_A	8.5*MILS_PER+BORDER
-
-#define WIDTH_B		17*MILS_PER+BORDER
-#define HEIGHT_B	11*MILS_PER+BORDER+1500
-
-#define WIDTH_C		22*MILS_PER+BORDER+1000
-#define HEIGHT_C	17*MILS_PER+BORDER
-
-#define WIDTH_D		34*MILS_PER+BORDER
-#define HEIGHT_D	22*MILS_PER+BORDER+3250
-
-#define WIDTH_E		44*MILS_PER+BORDER+1667
-#define HEIGHT_E	34*MILS_PER+BORDER
-
diff --git a/libgeda/include/prototype.h b/libgeda/include/prototype.h
deleted file mode 100644
index d1d2a8f..0000000
--- a/libgeda/include/prototype.h
+++ /dev/null
@@ -1,476 +0,0 @@
-
-/* a_basic.c */
-const gchar *o_file_format_header();
-gchar *o_save_buffer(TOPLEVEL *toplevel);
-int o_save(TOPLEVEL *toplevel, const char *filename);
-GList *o_read_buffer(TOPLEVEL *toplevel, GList *object_list, char *buffer, const int size, const char *name);
-GList *o_read(TOPLEVEL *toplevel, GList *object_list, char *filename, GError **err);
-void o_scale(TOPLEVEL *toplevel, GList *list, int x_scale, int y_scale);
-
-/* f_basic.c */
-gchar *f_get_autosave_filename (const gchar *filename);
-gboolean f_has_active_autosave (const gchar *filename, GError **err);
-int f_open(TOPLEVEL *toplevel, const gchar *filename, GError **err);
-int f_open_flags(TOPLEVEL *toplevel, const gchar *filename,
-                 const gint flags, GError **err);
-void f_close(TOPLEVEL *toplevel);
-void f_save_close(TOPLEVEL *toplevel, char *filename);
-int f_save(TOPLEVEL *toplevel, const char *filename);
-gchar *f_normalize_filename (const gchar *filename, GError **error);
-char *follow_symlinks (const gchar *filename, GError **error);
-
-/* f_print.c */
-int f_print_file (TOPLEVEL *toplevel, const char *filename);
-int f_print_command (TOPLEVEL *toplevel, const char *command);
-int f_print_stream(TOPLEVEL *toplevel, FILE *fp);
-void f_print_set_type(TOPLEVEL *toplevel, int type);
-
-/* g_basic.c */
-SCM g_scm_eval_protected (SCM exp, SCM module_or_state);
-SCM g_scm_eval_string_protected (SCM str);
-SCM g_scm_c_eval_string_protected (const gchar *str);
-int g_read_file(const gchar *filename);
-
-/* g_rc.c */
-SCM g_rc_mode_general(SCM scmmode, const char *rc_name, int *mode_var, 
-                      const vstbl_entry *table, int table_size);
-gint g_rc_parse_general(TOPLEVEL *toplevel,
-                        const gchar *fname, 
-                        const gchar *ok_msg, const gchar *err_msg);
-const char *g_rc_parse_path(void);
-gint g_rc_parse_system_rc(TOPLEVEL *toplevel, const gchar *rcname);
-gint g_rc_parse_home_rc(TOPLEVEL *toplevel, const gchar *rcname);
-gint g_rc_parse_local_rc(TOPLEVEL *toplevel, const gchar *rcname);
-void g_rc_parse(TOPLEVEL *toplevel, const gchar* rcname,
-                const gchar* specified_rc_filename);
-gint g_rc_parse_specified_rc(TOPLEVEL *toplevel, const gchar *rcfilename);
-
-/* g_smob.c */
-SCM g_make_attrib_smob(TOPLEVEL *curr_w, OBJECT *curr_attr);
-SCM g_set_attrib_value_internal(SCM attrib_smob, SCM scm_value, TOPLEVEL **world, OBJECT **o_attrib, char *new_string[]);
-gboolean g_get_data_from_object_smob(SCM object_smob, TOPLEVEL **toplevel, 
-				     OBJECT **object);
-SCM g_make_object_smob(TOPLEVEL *curr_w, OBJECT *object);
-SCM g_get_object_attributes(SCM object_smob);
-SCM g_make_page_smob(TOPLEVEL *curr_w, PAGE *page);
-gboolean g_get_data_from_page_smob(SCM object_smob, TOPLEVEL **toplevel, 
-				   PAGE **object);
-
-/* i_vars.c */
-void i_vars_libgeda_set(TOPLEVEL *toplevel);
-void i_vars_libgeda_freenames();
-
-/* gdk-pixbuf-hacks.c */
-GdkPixbuf *gdk_pixbuf_rotate (GdkPixbuf *pixbuf, guint angle);
-void gdk_pixbuf_add (GdkPixbuf *pixbuf, int offset_x, int offset_y, GdkPixbuf *pixbuf_to_add);
-GdkPixbuf *gdk_pixbuf_mirror_flip(GdkPixbuf *src, gint mirror, gint flip);
-
-/* libgeda.c */
-void libgeda_init(void);
-
-/* m_basic.c */
-void set_window(TOPLEVEL *toplevel, PAGE *page, int xmin, int xmax, int ymin, int ymax);
-void rotate_point(int x, int y, int angle, int *newx, int *newy);
-void rotate_point_90(int x, int y, int angle, int *newx, int *newy);
-void PAPERSIZEtoWORLD(int width, int height, int border, int *right, int *bottom);
-
-/* m_hatch.c */
-void m_hatch_box(BOX *box, gint angle, gint pitch, GArray *lines);
-void m_hatch_circle(CIRCLE *circle, gint angle, gint pitch, GArray *lines);
-void m_hatch_path(PATH *path, gint angle, gint pitch, GArray *lines);
-
-/* m_polygon.c */
-void m_polygon_append_bezier(GArray *points, BEZIER *bezier, int segments);
-void m_polygon_append_point(GArray *points, int x, int y);
-
-
-/* o_arc_basic.c */
-OBJECT *o_arc_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int radius, int start_angle, int end_angle);
-OBJECT *o_arc_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_arc_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_arc_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-void o_arc_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_arc_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-
-/* o_attrib.c */
-OBJECT *o_attrib_search(GList *list, OBJECT *item);
-void o_attrib_add(TOPLEVEL *toplevel, OBJECT *object, OBJECT *item);
-void o_attrib_free(TOPLEVEL *toplevel, OBJECT *current);
-gboolean o_attrib_is_attached (TOPLEVEL *toplevel, OBJECT *attrib, OBJECT *object);
-void o_attrib_attach(TOPLEVEL *toplevel, OBJECT *attrib, OBJECT *object, int set_color);
-void o_attrib_attach_list(TOPLEVEL *toplevel, GList *attr_list, OBJECT *object, int set_color);
-void o_attrib_free_all(TOPLEVEL *toplevel, GList *list);
-void o_attrib_print(GList *attributes);
-void o_attrib_remove(GList **list, OBJECT *remove);
-gboolean o_attrib_get_name_value (const gchar *string, gchar **name_ptr, gchar **value_ptr);
-void o_attrib_set_color(TOPLEVEL *toplevel, GList *attributes);
-char *o_attrib_search_name(const GList *list, char *name, int counter);
-OBJECT *o_attrib_search_string_list(GList *list, char *string);
-char *o_attrib_search_string_partial(OBJECT *object, char *search_for, int counter);
-OBJECT *o_attrib_search_string_single(OBJECT *object, char *search_for);
-OBJECT *o_attrib_search_attrib_value(GList *list, char *value, char *name, int counter);
-char *o_attrib_search_attrib_name(GList *list, char *name, int counter);
-char *o_attrib_search_toplevel(const GList *list, char *name, int counter);
-char *o_attrib_search_name_single(OBJECT *object, char *name, OBJECT **return_found);
-char *o_attrib_search_name_single_count(OBJECT *object, char *name, int counter);
-char *o_attrib_search_slot(OBJECT *object, OBJECT **return_found);
-char *o_attrib_search_numslots(OBJECT *object, OBJECT **return_found);
-char *o_attrib_search_default_slot(OBJECT *object);
-OBJECT *o_attrib_search_pinseq(GList *list, int pin_number);
-char *o_attrib_search_slotdef(OBJECT *object, int slotnumber);
-char *o_attrib_search_component(OBJECT *object, char *name);
-void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT *object);
-void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT *original, OBJECT *target);
-char *o_attrib_search_toplevel_all(GedaPageList *page_list, char *name);
-OBJECT **o_attrib_return_attribs(OBJECT *object);
-void o_attrib_free_returned(OBJECT **found_objects);
-
-/* o_basic.c */
-int inside_region(int xmin, int ymin, int xmax, int ymax, int x, int y);
-void o_recalc_single_object(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_recalc_object_glist(TOPLEVEL *toplevel, GList *object_glist);
-void o_set_line_options(TOPLEVEL *toplevel, OBJECT *o_current, OBJECT_END end, OBJECT_TYPE type, int width, int length, int space);
-gboolean o_get_line_options(OBJECT *object, OBJECT_END *end, OBJECT_TYPE *type, int *width, int *length, int *space);
-void o_set_fill_options(TOPLEVEL *toplevel, OBJECT *o_current, OBJECT_FILLING type, int width, int pitch1, int angle1, int pitch2, int angle2);
-gboolean o_get_fill_options(OBJECT *object, OBJECT_FILLING *type, int *width, int *pitch1, int *angle1, int *pitch2, int *angle2);
-gboolean o_get_position(TOPLEVEL *toplevel, gint *x, gint *y, OBJECT *object);
-void o_translate_world (TOPLEVEL *toplevel, gint dx, gint dy, OBJECT *object);
-void o_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-double o_shortest_distance(OBJECT *object, int x, int y);
-
-/* o_box_basic.c */
-OBJECT *o_box_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
-OBJECT *o_box_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_box_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_box_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-void o_box_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_box_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-
-/* o_bus_basic.c */
-OBJECT *o_bus_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2, int bus_ripper_direction);
-void o_bus_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-OBJECT *o_bus_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_bus_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_bus_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-int o_bus_orientation(OBJECT *object);
-void o_bus_consolidate_lowlevel(OBJECT *object, OBJECT *del_object, int orient);
-int o_bus_consolidate_segments(TOPLEVEL *toplevel, OBJECT *object);
-void o_bus_consolidate(TOPLEVEL *toplevel);
-void o_bus_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-
-/* o_circle_basic.c */
-int dist(int x1, int y1, int x2, int y2);
-OBJECT *o_circle_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int radius);
-OBJECT *o_circle_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_circle_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_circle_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-void o_circle_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_circle_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-
-/* o_complex_basic.c */
-int world_get_single_object_bounds(TOPLEVEL *toplevel, OBJECT *o_current,
-			      int *rleft, int *rtop, 
-			      int *rright, int *rbottom);
-int world_get_object_glist_bounds(TOPLEVEL *toplevel, const GList *o_list,
-			     int *left, int *top, 
-			     int *right, int *bottom);
-int o_complex_is_embedded(OBJECT *o_current);
-GList *o_complex_get_toplevel_attribs (TOPLEVEL *toplevel, const GList *obj_list);
-GList *o_complex_get_promotable (TOPLEVEL *toplevel, OBJECT *object, int detach);
-GList *o_complex_promote_attribs (TOPLEVEL *toplevel, OBJECT *object);
-void o_complex_remove_promotable_attribs (TOPLEVEL *toplevel, OBJECT *object);
-OBJECT *o_complex_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int angle, int mirror, const CLibSymbol *clib_sym, const gchar *basename, int selectable);
-OBJECT *o_complex_new_embedded(TOPLEVEL *toplevel, char type, int color, int x, int y, int angle, int mirror, const gchar *basename, int selectable);
-void o_complex_set_filename(TOPLEVEL *toplevel, const char *basename);
-void o_complex_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-OBJECT *o_complex_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-OBJECT *o_complex_copy_embedded(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_complex_set_color(GList *prim_objs, int color);
-void o_complex_set_color_single(OBJECT *o_current, int color);
-void o_complex_set_color_save(GList *list, int color);
-void o_complex_unset_color(GList *list);
-void o_complex_unset_color_single(OBJECT *o_current);
-void o_complex_set_saved_color_only(GList *list, int color);
-OBJECT *o_complex_return_nth_pin(GList *list, int counter);
-void o_complex_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_complex_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-OBJECT *o_complex_return_pin_object(OBJECT *object, char *pin);
-int  o_complex_count_pins(OBJECT *object);
-void o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object);
-
-/* o_embed.c */
-void o_embed(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_unembed(TOPLEVEL *toplevel, OBJECT *o_current);
-
-/* o_line_basic.c */
-OBJECT *o_line_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
-OBJECT *o_line_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_line_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_line_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-void o_line_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_line_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-void o_line_scale_world(TOPLEVEL *toplevel, int x_scale, int y_scale, OBJECT *object);
-double o_line_length(OBJECT *object);
-
-/* o_list.c */
-OBJECT *o_object_copy(TOPLEVEL *toplevel, OBJECT *selected, int flag);
-GList *o_glist_copy_all(TOPLEVEL *toplevel, const GList *src_list, GList *dest_list, int flag);
-void o_glist_translate_world(TOPLEVEL *toplevel, int dx, int dy, const GList *list);
-void o_glist_rotate_world(TOPLEVEL *toplevel, int x, int y, int angle, const GList *list);
-void o_glist_mirror_world(TOPLEVEL *toplevel, int x, int y, const GList *list);
-
-/* o_net_basic.c */
-OBJECT *o_net_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2);
-void o_net_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-OBJECT *o_net_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_net_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_net_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-int o_net_orientation(OBJECT *object);
-void o_net_consolidate_lowlevel(OBJECT *object, OBJECT *del_object, int orient);
-int o_net_consolidate_nomidpoint(OBJECT *object, int x, int y);
-int o_net_consolidate_segments(TOPLEVEL *toplevel, OBJECT *object);
-void o_net_consolidate(TOPLEVEL *toplevel);
-void o_net_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-
-/* o_path_basic.c */
-OBJECT *o_path_new(TOPLEVEL *toplevel, char type, int color, const char *path_string);
-OBJECT *o_path_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_path_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_path_translate_world(TOPLEVEL *toplevel, int x, int y, OBJECT *object);
-void o_path_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_path_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-
-/* o_picture.c */
-OBJECT *o_picture_new(TOPLEVEL *toplevel, GdkPixbuf *pixbuf,
-                      gchar *file_content, gsize file_length, char *filename,
-                      double ratio, char type,
-                      int x1, int y1, int x2, int y2, int angle, char mirrored,
-                      char embedded);
-void o_picture_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_picture_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle,OBJECT *object);
-void o_picture_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-void o_picture_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-OBJECT *o_picture_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-guint8 *o_picture_rgb_data(GdkPixbuf *image);
-guint8 *o_picture_mask_data(GdkPixbuf *image);
-void o_picture_embed(TOPLEVEL *toplevel, OBJECT *object);
-void o_picture_unembed(TOPLEVEL *toplevel, OBJECT *object);
-GdkPixbuf *o_picture_pixbuf_from_buffer (gchar *file_content, gsize file_length, GError **err);
-
-/* o_pin_basic.c */
-OBJECT *o_pin_new(TOPLEVEL *toplevel, char type, int color, int x1, int y1, int x2, int y2, int pin_type, int whichend);
-void o_pin_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *object);
-OBJECT *o_pin_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_pin_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_pin_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-void o_pin_modify(TOPLEVEL *toplevel, OBJECT *object, int x, int y, int whichone);
-void o_pin_update_whichend(TOPLEVEL *toplevel, GList *object_list, int num_pins);
-void o_pin_set_type(OBJECT *o_current, int pin_type);
-/* o_selection.c */
-SELECTION *o_selection_new( void );
-void o_selection_add(SELECTION *selection, OBJECT *o_selected);
-void o_selection_print_all(const SELECTION *selection);
-void o_selection_remove(SELECTION *selection, OBJECT *o_selected);
-void o_selection_select(OBJECT *object, int color); /* DEPRECATED */
-void o_selection_unselect(OBJECT *object);          /* DEPRECATED */
-
-/* o_text_basic.c */
-void o_text_init(void);
-void o_text_print_set(void);
-GList *o_text_load_font(TOPLEVEL *toplevel, gunichar needed_char);
-int o_text_num_lines(const char *string);
-int o_text_height(const char *string, int size);
-int o_text_width(TOPLEVEL *toplevel, char *string, int size);
-GList *o_text_create_string(TOPLEVEL *toplevel, char *string, int size, int color, int x, int y, int alignment, int angle);
-OBJECT *o_text_new(TOPLEVEL *toplevel, char type, int color, int x, int y, int alignment, int angle, const char *string, int size, int visibility, int show_name_value);
-void o_text_set_info_font(char buf[]);
-void o_text_recreate(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_text_translate_world(TOPLEVEL *toplevel, int dx, int dy, OBJECT *o_current);
-OBJECT *o_text_copy(TOPLEVEL *toplevel, OBJECT *o_current);
-void o_text_freeallfonts(TOPLEVEL *toplevel);
-void o_text_rotate_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, int angle, OBJECT *object);
-void o_text_mirror_world(TOPLEVEL *toplevel, int world_centerx, int world_centery, OBJECT *object);
-void o_text_set_string(TOPLEVEL *toplevel, OBJECT *obj, const gchar *new_string);
-const gchar *o_text_get_string(TOPLEVEL *toplevel, OBJECT *obj);
-void o_text_set_rendered_bounds_func (TOPLEVEL *toplevel, RenderedBoundsFunc func, void *user_data);
-/* s_attrib.c */
-int s_attrib_add_entry(char *new_attrib);
-void s_attrib_print(void);
-int s_attrib_uniq(char *name);
-void s_attrib_free(void);
-void s_attrib_init(void);
-char *s_attrib_get(int counter);
-
-/* s_basic.c */
-void error_if_called(void);
-void exit_if_null(void *ptr);
-OBJECT *s_basic_init_object(OBJECT *new_node, int type, char const *name);
-OBJECT *s_basic_new_object(int type, char const *prefix);
-void print_struct_forw(GList *list);
-void print_struct(OBJECT *ptr);
-void s_delete_object(TOPLEVEL *toplevel, OBJECT *o_current);
-void s_delete_object_glist(TOPLEVEL *toplevel, GList *list);
-char *remove_nl(char *string);
-char *remove_last_nl(char *string);
-gchar *s_expand_env_variables (const gchar *string);
-
-/* s_clib.c */
-void s_clib_free (void);
-GList *s_clib_get_sources (const gboolean sorted);
-const CLibSource *s_clib_get_source_by_name (const gchar *name);
-void s_clib_refresh ();
-const CLibSource *s_clib_add_directory (const gchar *directory, 
-					const gchar *name);
-const CLibSource *s_clib_add_command (const gchar *list_cmd,
-                                      const gchar *get_cmd,
-				      const gchar *name);
-const CLibSource *s_clib_add_scm (SCM listfunc, SCM getfunc, 
-				  const gchar *name);
-const gchar *s_clib_source_get_name (const CLibSource *source);
-GList *s_clib_source_get_symbols (const CLibSource *source);
-const gchar *s_clib_symbol_get_name (const CLibSymbol *symbol);
-gchar *s_clib_symbol_get_filename (const CLibSymbol *symbol);
-const CLibSource *s_clib_symbol_get_source (const CLibSymbol *symbol);
-gchar *s_clib_symbol_get_data (const CLibSymbol *symbol);
-GList *s_clib_search (const gchar *pattern, const CLibSearchMode mode);
-void s_clib_flush_search_cache ();
-void s_clib_flush_symbol_cache ();
-const CLibSymbol *s_clib_get_symbol_by_name (const gchar *name);
-gchar *s_clib_symbol_get_data_by_name (const gchar *name);
-GList *s_toplevel_get_symbols (const TOPLEVEL *toplevel);
-
-/* s_color.c */
-void s_color_map_defaults (COLOR *map);
-gboolean s_color_rgba_decode (const gchar *rgba,
-                              guchar *r, guchar *g, guchar *b, guchar *a);
-gchar *s_color_rgba_encode (guint8 r, guint8 g, guint8 b, guint8 a);
-SCM s_color_map_to_scm (const COLOR *map);
-void s_color_map_from_scm (COLOR *map, SCM lst, const char *scheme_proc_name);
-
-/* s_conn.c */
-CONN *s_conn_return_new(OBJECT *other_object, int type, int x, int y, int whichone, int other_whichone);
-int s_conn_uniq(GList *conn_list, CONN *input_conn);
-int s_conn_remove_other(TOPLEVEL *toplevel, OBJECT *other_object, OBJECT *to_remove);
-void s_conn_remove_object(TOPLEVEL *toplevel, OBJECT *to_remove);
-OBJECT *s_conn_check_midpoint(OBJECT *o_current, int x, int y);
-void s_conn_update_object(TOPLEVEL *toplevel, OBJECT *object);
-void s_conn_print(GList *conn_list);
-int s_conn_net_search(OBJECT* new_net, int whichone, GList * conn_list);
-GList *s_conn_return_others(GList *input_list, OBJECT *object);
-
-/* s_cue.c */
-void s_cue_postscript_fillbox(TOPLEVEL *toplevel, FILE *fp, int x, int y);
-void s_cue_postscript_junction (TOPLEVEL *toplevel, FILE *fp, int x, int y, int bus_involved);
-void s_cue_output_all(TOPLEVEL *toplevel, const GList *obj_list, FILE *fp, int type);
-void s_cue_output_lowlevel(TOPLEVEL *toplevel, OBJECT *object, int whichone, FILE *fp, int output_type);
-void s_cue_output_lowlevel_midpoints(TOPLEVEL *toplevel, OBJECT *object, FILE *fp, int output_type);
-void s_cue_output_single(TOPLEVEL *toplevel, OBJECT *object, FILE *fp, int type);
-
-/* s_hierarchy.c */
-int s_hierarchy_down_schematic_single(TOPLEVEL *toplevel, const gchar *filename, PAGE *parent, int page_control, int flag);
-void s_hierarchy_down_symbol (TOPLEVEL *toplevel, const CLibSymbol *symbol, PAGE *parent);
-PAGE *s_hierarchy_find_up_page(GedaPageList *page_list, PAGE *current_page);
-GList* s_hierarchy_traversepages(TOPLEVEL *toplevel, gint flags);
-gint s_hierarchy_print_page(PAGE *p_current, void * data);
-PAGE *s_hierarchy_find_prev_page(GedaPageList *page_list, PAGE *current_page);
-PAGE *s_hierarchy_find_next_page(GedaPageList *page_list, PAGE *current_page);
-
-/* s_log.c */
-void s_log_init (const gchar *filename);
-void s_log_close (void);
-gchar *s_log_read (void);
-
-/* s_menu.c */
-int s_menu_return_num(void);
-SCM s_menu_return_entry(int index, char **menu_name);
-int s_menu_add_entry(char *new_menu, SCM menu_items);
-void s_menu_print(void);
-void s_menu_free(void);
-void s_menu_init(void);
-
-/* s_page.c */
-PAGE *s_page_new (TOPLEVEL *toplevel, const gchar *filename);
-void s_page_delete (TOPLEVEL *toplevel, PAGE *page);
-void s_page_delete_list(TOPLEVEL *toplevel);
-void s_page_goto (TOPLEVEL *toplevel, PAGE *p_new);
-PAGE *s_page_search (TOPLEVEL *toplevel, const gchar *filename);
-PAGE *s_page_search_by_page_id (GedaPageList *list, int pid);
-void s_page_print_all (TOPLEVEL *toplevel);
-gint s_page_save_all (TOPLEVEL *toplevel);
-gboolean s_page_check_changed (GedaPageList *list);
-void s_page_clear_changed (GedaPageList *list);
-void s_page_autosave_init(TOPLEVEL *toplevel);
-gint s_page_autosave (TOPLEVEL *toplevel);
-void s_page_append (PAGE *page, OBJECT *object);
-void s_page_append_list (PAGE *page, GList *obj_list);
-void s_page_remove (PAGE *page, OBJECT *object);
-void s_page_delete_objects (TOPLEVEL *toplevel, PAGE *page);
-const GList *s_page_objects (PAGE *page);
-GList *s_page_objects_in_region (TOPLEVEL *toplevel, PAGE *page, int min_x, int min_y, int max_x, int max_y);
-GList *s_page_objects_in_regions (TOPLEVEL *toplevel, PAGE *page, BOX *rects, int n_rects);
-
-/* s_papersizes.c */
-int s_papersizes_add_entry(char *new_papersize, int width, int height);
-void s_papersizes_print(void);
-int s_papersizes_uniq(char *name);
-void s_papersizes_free(void);
-void s_papersizes_init(void);
-char *s_papersizes_get(int counter);
-void s_papersizes_get_size(char *string, int *width, int *height);
-
-/* s_path.c */
-PATH *s_path_parse (const char *path_str);
-char *s_path_string_from_path (const PATH *path);
-
-/* s_project.c */
-TOPLEVEL *s_toplevel_new (void);
-void s_toplevel_delete (TOPLEVEL *toplevel);
-
-/* s_slib.c */
-int s_slib_add_entry(char *new_path);
-int s_slib_search_for_dirname(char *dir_name);
-char *s_slib_search_dirs(const char *basename);
-char *s_slib_search_lowlevel(const char *basename);
-char *s_slib_getbasename(const char *rawname);
-char *s_slib_search(const char *filename, int flag);
-char *s_slib_search_single(const char *filename);
-void s_slib_free(void);
-void s_slib_init(void);
-char *s_slib_getdir(int index);
-char *s_slib_getfiles(char *directory, int flag);
-void s_slib_print(void);
-int s_slib_uniq(char *path);
-void s_slib_print_dirs(void);
-
-/* s_stretch.c */
-GList *s_stretch_add(GList *list, OBJECT *object, CONN *connection, int whichone);
-GList *s_stretch_remove(GList *list, OBJECT *object);
-void s_stretch_print_all(GList *list);
-void s_stretch_destroy_all(GList *list);
-
-/* s_tile.c */
-void s_tile_init(TOPLEVEL *toplevel, PAGE *p_current);
-void s_tile_add_object(TOPLEVEL *toplevel, OBJECT *object);
-void s_tile_remove_object(OBJECT *object);
-void s_tile_update_object(TOPLEVEL *toplevel, OBJECT *object);
-GList *s_tile_get_objectlists(TOPLEVEL *toplevel, int world_x1, int world_y1, int world_x2, int world_y2);
-void s_tile_print(TOPLEVEL *toplevel);
-void s_tile_free_all(PAGE *p_current);
-
-/* s_undo.c */
-UNDO *s_undo_return_tail(UNDO *head);
-UNDO *s_undo_return_head(UNDO *tail);
-UNDO *s_undo_new_head(void);
-void s_undo_destroy_head(UNDO *u_head);
-UNDO *s_undo_add(UNDO *head, int type, char *filename, GList *object_list, int left, int top, int right, int bottom, int page_control, int up);
-void s_undo_print_all(UNDO *head);
-void s_undo_destroy_all(TOPLEVEL *toplevel, UNDO *head);
-void s_undo_remove(TOPLEVEL *toplevel, UNDO *head, UNDO *u_tos);
-void s_undo_remove_rest(TOPLEVEL *toplevel, UNDO *head);
-int s_undo_levels(UNDO *head);
-void s_undo_init(PAGE *p_current);
-void s_undo_free_all(TOPLEVEL *toplevel, PAGE *p_current);
-
-/* u_basic.c */
-char *u_basic_breakup_string(char *string, char delimiter, int count);
diff --git a/libgeda/include/struct.h b/libgeda/include/struct.h
deleted file mode 100644
index b29634a..0000000
--- a/libgeda/include/struct.h
+++ /dev/null
@@ -1,692 +0,0 @@
-/* gEDA - GPL Electronic Design Automation
- * libgeda - gEDA's Library
- * Copyright (C) 1998-2004 Ales V. Hvezda
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef STRUCT_H
-#define STRUCT_H
-
-#include <glib.h>  /* Include needed to make GList work. */
-
-/* Wrappers around a new list mechanism */
-typedef struct _GedaList SELECTION;
-typedef struct _GedaList GedaPageList;
-
-/* gschem structures (gschem) */
-typedef struct st_complex COMPLEX;
-typedef struct st_line LINE;
-typedef struct st_path_section PATH_SECTION;
-typedef struct st_path PATH;
-typedef struct st_circle CIRCLE;
-typedef struct st_arc ARC;
-typedef struct st_box BOX;
-typedef struct st_picture PICTURE;
-typedef struct st_text TEXT;
-typedef struct st_point sPOINT;
-typedef struct st_transform TRANSFORM;
-typedef struct st_bezier BEZIER;
-
-typedef struct st_object OBJECT;
-typedef struct st_page PAGE;
-typedef struct st_toplevel TOPLEVEL;
-typedef struct st_color COLOR;
-typedef struct st_undo UNDO;
-typedef struct st_tile TILE;
-typedef struct st_bounds BOUNDS;
-
-typedef struct st_conn CONN;
-typedef struct st_bus_ripper BUS_RIPPER;
-
-/* Used when you move objects and you want the nets/pins to stretch */
-typedef struct st_stretch STRETCH;
-
-/* netlist structures (gnetlist) */
-typedef struct st_netlist NETLIST;
-typedef struct st_cpinlist CPINLIST;
-typedef struct st_net NET;
-
-/* sch check structures (gschcheck) */
-typedef struct st_schcheck SCHCHECK;
-typedef struct st_chkerrs CHKERRS;
-
-/* Managed text buffers */
-typedef struct _TextBuffer TextBuffer;
-
-/* Component library objects */
-typedef struct _CLibSource CLibSource;
-typedef struct _CLibSymbol CLibSymbol;
-
-/* Component library search modes */
-typedef enum { CLIB_EXACT=0, CLIB_GLOB } CLibSearchMode;
-
-/* f_open behaviour flags.  See documentation for f_open_flags() in
-   f_basic.c. */
-typedef enum { F_OPEN_RC           = 1,
-               F_OPEN_CHECK_BACKUP = 2,
-               F_OPEN_RESTORE_CWD  = 4,
-} FOpenFlags;
-
-/*! \brief line end style for an open line of an object */
-typedef enum {END_NONE, END_SQUARE, END_ROUND} OBJECT_END;
-
-/*! \brief line style of lines, rect, circles, arcs */
-typedef enum {TYPE_SOLID, TYPE_DOTTED, TYPE_DASHED, TYPE_CENTER, TYPE_PHANTOM, TYPE_ERASE} OBJECT_TYPE;
-
-/*! \brief fill style of objects like cirle, rect, path */
-typedef enum {FILLING_HOLLOW, FILLING_FILL, FILLING_MESH, FILLING_HATCH, FILLING_VOID} OBJECT_FILLING;
-
-struct st_line {
-  int x[2];
-  int y[2];
-};
-
-struct st_point {
-  gint x;
-  gint y;
-};
-
-#define LINE_END1 0
-#define LINE_END2 1
-
-typedef enum {
-    PATH_MOVETO,
-    PATH_MOVETO_OPEN,
-    PATH_CURVETO,
-    PATH_LINETO,
-    PATH_END
-} PATH_CODE;
-
-struct st_path_section {
-  PATH_CODE code;
-  int x1;
-  int y1;
-  int x2;
-  int y2;
-  int x3;
-  int y3;
-};
-
-struct st_path {
-  PATH_SECTION *sections; /* Bezier path segments  */
-  int num_sections;       /* Number with data      */
-  int num_sections_max;   /* Number allocated      */
-};
-
-struct st_arc {
-  int x, y; /* world */
-
-  int width;
-  int height;
-
-  int start_angle;
-  int end_angle;
-};
-
-#define ARC_CENTER 0
-#define ARC_RADIUS 1
-#define ARC_START_ANGLE 2
-#define ARC_END_ANGLE 3
-
-struct st_bezier {
-  int x[4];
-  int y[4];
-};
-
-struct st_box {
-  /* upper is considered the origin */
-  int upper_x, upper_y; /* world */	
-  int lower_x, lower_y;
-
-};
-
-#define BOX_UPPER_LEFT 0
-#define BOX_LOWER_RIGHT 1
-#define BOX_UPPER_RIGHT 2
-#define BOX_LOWER_LEFT 3
-
-struct st_picture {
-  GdkPixbuf *original_picture;
-  GdkPixbuf *displayed_picture;
-  gchar *file_content;
-  gsize file_length;
-
-  double ratio;
-  char *filename;
-  int angle;
-  char mirrored;
-  char embedded;
-
-  /* upper is considered the origin */
-  int upper_x, upper_y; /* world */	
-  int lower_x, lower_y;
-
-};
-
-#define PICTURE_UPPER_LEFT 0
-#define PICTURE_LOWER_RIGHT 1
-#define PICTURE_UPPER_RIGHT 2
-#define PICTURE_LOWER_LEFT 3
-
-
-struct st_text {
-  int x, y;		/* world origin */
-
-  char *string;			/* text stuff */
-  char *disp_string;
-  int length;
-  int size;
-  int alignment;	
-  int displayed_width;
-  int displayed_height;
-  int angle;
-
-  GList *prim_objs;
-};
-
-struct st_complex {
-  int x, y;		/* world origin */
-
-  int angle;				/* orientation, only multiples
-                                         * of 90 degrees allowed */   
-  /* in degrees */
-  int mirror;
-
-  GList *prim_objs;			/* Primitive objects */
-  /* objects which make up the */
-  /* complex */
-};
-
-struct st_circle {
-  int center_x, center_y; /* world */
-  int radius;
-};
-
-#define CIRCLE_CENTER 0
-#define CIRCLE_RADIUS 1
-
-struct st_object {
-  int type;				/* Basic information */
-  int sid;
-  char *name;
-
-  int w_top;				/* Bounding box information */
-  int w_left;				/* in world coords */
-  int w_right;
-  int w_bottom;
-  gboolean w_bounds_valid;
-
-  COMPLEX *complex;
-  LINE *line; 
-  CIRCLE *circle; 
-  ARC *arc;
-  BOX *box;
-  TEXT *text;
-  PICTURE *picture;
-  PATH *path;
-
-  GList *tiles;			/* tiles */
-
-  GList *conn_list;			/* List of connections */
-  /* to and from this object */
-
-  /* every graphical primitive have more or less the same options. */
-  /* depending on its nature a primitive is concerned with one or more */
-  /* of these fields. If not, value must be ignored. */
-  OBJECT_END line_end;
-  OBJECT_TYPE line_type;
-  int line_width;
-  int line_space;
-  int line_length;
-
-  OBJECT_FILLING fill_type;
-  int fill_width;
-  int fill_angle1, fill_pitch1;
-  int fill_angle2, fill_pitch2;
-
-  gboolean complex_embedded;                    /* is embedded component? */
-  gchar *complex_basename;              /* Component Library Symbol name */
-  OBJECT *complex_parent;		/* Complex parent object pointer */
-  /* used only in complex head nodes */
-
-  /* unused for now */
-  void (*action_func)();			/* Execute function */
-
-  void (*sel_func)();			/* Selected function */
-  void (*draw_func)();			/* Draw function */
-
-  int color; 				/* Which color */
-  int saved_color; 			/* Saved color */
-  int dont_redraw;			/* Flag to skip redrawing */
-  int selected;				/* object selected flag */
-  int locked_color; 			/* Locked color (used to save */
-  /* the object's real color */
-  /* when the object is locked) */
-
-  /* controls which direction bus rippers go */
-  /* it is either 0 for un-inited, */
-  /* 1 for right, -1 for left (horizontal bus) */
-  /* 1 for up, -1 for down (vertial bus) */
-  int bus_ripper_direction;             /* only valid on buses */
-
-
-  int font_text_size;			/* used only with fonts defs */
-  GList *font_prim_objs;			/* used only with fonts defs */
-
-  int whichend;    /* for pins only, either 0 or 1 */
-  int pin_type;    /* for pins only, either NET or BUS */
-
-  GList *attribs;       /* attribute stuff */
-  int show_name_value;
-  int visibility;
-  OBJECT *attached_to;  /* when object is an attribute */
-  OBJECT *copied_to;    /* used when copying attributes */
-
-}; 
-
-
-/*! \brief Structure for connections between OBJECTs
- *
- * The st_conn structure contains a single connection
- * to another object.
- * The connection system in s_conn.c uses this struct
- */
-struct st_conn {
-  /*! \brief The "other" object connected to this one */
-  OBJECT *other_object;
-  /*! \brief type of connection. Always in reference to how the "other"
-    object is connected to the current one */
-  int type;
-  /*! \brief x coord of the connection position */
-  int x;
-  /*! \brief y coord of the connection position */
-  int y;		
-  /*! \brief which endpoint of the current object caused this connection */
-  int whichone;
-  /*! \brief which endpoint of the "other" object caused this connection */
-  int other_whichone;
-};
-
-/* this structure is used in gschem to add rippers when drawing nets */
-/* it is never stored in any object, it is only temporary */
-struct st_bus_ripper
-{
-  int x[2];
-  int y[2];
-};
-
-struct st_stretch
-{
-  OBJECT *object;
-  CONN *connection;
-
-  int whichone;
-};
-
-struct st_bounds {
-  gint min_x;
-  gint min_y;
-  gint max_x;
-  gint max_y;
-};
-
-/** A structure to store a 2D affine transform.
- *
- *  The transforms get stored in a 3x3 matrix. Code assumes the bottom row to
- *  remain constant at [0 0 1].
- */
-struct st_transform {
-  gdouble m[2][3];    /* m[row][column] */
-};
-
-struct st_undo {
-
-  /* one of these is used, depending on if you are doing in-memory */
-  /* or file based undo state saving */	
-  char *filename;
-  GList *object_list;
-
-  /* either UNDO_ALL or UNDO_VIEWPORT_ONLY */
-  int type;
-
-  /* viewport information */
-  int left, top, right, bottom;
-
-  /* up and down the hierarchy */
-  int up;
-  /* used to control which pages are viewable when moving around */
-  int page_control;
-
-  UNDO *prev;
-  UNDO *next;
-};
-
-
-/*! \brief structure to split a page into tiles
- *  
- *  This structure is used to track objects that are inside
- *  a smaller TILE of o a page.
- *  See s_tile.c for further informations.
- */
-struct st_tile {
-  GList *objects;
-
-  int top, left, right, bottom;
-};
-
-struct st_page {
-
-  int pid;
-
-  GList *_object_list;
-  SELECTION *selection_list; /* new selection mechanism */
-  GList *place_list;
-  OBJECT *object_lastplace; /* the last found item */
-  GList *stretch_list;
-
-  char *page_filename; 
-  int CHANGED;			/* changed flag */
-  /*int zoom_factor; no longer used*/
-  int left, right, top, bottom;		/* World coord limits */
-  double coord_aspectratio;		/* Real worldcoords ratio (?) */
-
-  float to_screen_x_constant;
-  float to_screen_y_constant;
-
-  float to_world_x_constant;
-  float to_world_y_constant;
-
-  TILE world_tiles[MAX_TILES_X][MAX_TILES_Y];
-
-  /* Undo/Redo Stacks and pointers */	
-  /* needs to go into page mechanism actually */
-  UNDO *undo_bottom;	
-  UNDO *undo_current;
-  UNDO *undo_tos; 	/* Top Of Stack */
-
-  /* up and down the hierarchy */
-  /* this holds the pid of the parent page */
-  int up;
-  /* int down; not needed */
-
-  /* used to control which pages are viewable when moving around */
-  int page_control;
-
-  /* backup variables */
-  GTimeVal last_load_or_save_time;
-  char saved_since_first_loaded;
-  gint ops_since_last_backup;
-  gchar do_autosave_backup;
-
-  /* Function which asks the user wether to load a newer backup file */
-  int (*load_newer_backup_func)();
-
-};
-
-/*! \brief different kind of snapping mechanisms used in TOPLEVEL */
-typedef enum {SNAP_OFF, SNAP_GRID, SNAP_RESNAP, SNAP_STATE_COUNT} SNAP_STATE;
-
-/*! \brief Type of callback function for calculating text bounds */
-typedef int(*RenderedBoundsFunc)(void *, OBJECT *, int *, int *, int *, int *);
-
-struct st_toplevel {
-
-  /* have to decided on component list stuff */
-  /* if it should go in here or not */
-  /* leave outside for now */
-
-  GList *RC_list;                       /* List of RC files which have been read in. */
-
-  char *untitled_name;			/* untitled sch basename */
-  char *font_directory; 		/* path of the vector fonts */
-  char *scheme_directory; 		/* path of the scheme scripts */
-  char *bitmap_directory; 		/* path of the bitmaps */
-
-  int init_left, init_right; 		/* Starting values for above */
-  int init_top, init_bottom; 
-
-  int width, height;			/* height, width of window */
-
-  /*! \brief whether and how to snap to the current grid */
-  SNAP_STATE snap;
-
-  int override_color;			/* used in doing selections */
-
-  int last_ps_color;                    /* used in print code */
-
-  int DONT_REDRAW;			/* misc flags */
-  int ADDING_SEL;
-
-  /* page system */
-  PAGE *page_current;
-  GedaPageList *pages;
-
-  /* show_hidden_text is used to control which text is hidden in gschem */
-  int show_hidden_text;
-
-  GList* major_changed_refdes;          /* A list of all refdes's that have */
-                                        /* major symbol version changes */
-
-  /* backup variables */
-  int auto_save_interval;
-  gint auto_save_timeout;
-
-  /* used by math funcs for the snapping */
-  int snap_size;		
-
-  /* BLOCK SET IN GSCHEM, BUT USED IN LIBGEDA - NEEDS A RETHINK */
-  int background_color;
-  int override_net_color;
-  int override_bus_color;
-  int override_pin_color;
-  int pin_style;
-  int net_style;
-  int bus_style;
-  int line_style;
-  /* END BLOCK - ALTHOUGH THERE ARE MORE CASES! */
-
-  /* controls whether objects are clipped */
-  int object_clipping; 
-
-  /* controls how text is printed (vector / PS font) */ 
-  int text_output; 
-
-  /* either landscape or portrait */
-  int print_orientation; 
-
-  /* either TRUE or FALSE (color or no color) */
-  int image_color; 
-
-  /* either TRUE or FALSE (color or no color) */
-  int print_color; 
-
-  /* color used color ouput for background */ 
-  int print_color_background;
-
-  /* setpagedevice orientation option enable (TRUE or FALSE) */
-  int setpagedevice_orientation;
-
-  /* setpagedevice pagesize option enable (TRUE or FALSE) */
-  int setpagedevice_pagesize;
-
-  /* The name of the prolog file to paste into the Postscript output */
-  char *postscript_prolog;
-
-  /* Use this as a scaling factor for the output font */
-  float postscript_font_scale;
-
-  /* controls if the net consolidation code is used */ 
-  int net_consolidate; 
-
-  /*controls if attribute promotion happens */
-  int attribute_promotion; 
-
-  /* controls if invisible attribs are promoted */
-  int promote_invisible; 
-
-  /* controls if invisible attribs are kept and not deleted */
-  int keep_invisible;   
-
-  /* either window or limits */
-  int print_output_type;
-
-  /* BUTT, ROUND, SQUARE caps */
-  int print_output_capstyle;		
-
-  /* landscape printing only */
-  int paper_width, paper_height;
-
-  /* filename of the bus ripper component if set above */
-  char *bus_ripper_symname;
-
-  /* controls if the whole bounding box is used in the auto whichend code */
-  int force_boundingbox;
-
-  /* controls the threshold (in lines of text) when the multi-line text */
-  /* output font is forced to vector */
-  int print_vector_threshold;
-
-  /* List of attributes to always promote */
-  GList *always_promote_attributes;
-
-  /* gnetlist specific */
-  int net_naming_priority;
-  int hierarchy_traversal;
-  int hierarchy_uref_mangle;
-  int hierarchy_netname_mangle;
-  int hierarchy_netattrib_mangle;
-  char *hierarchy_uref_separator;
-  char *hierarchy_netname_separator;
-  char *hierarchy_netattrib_separator;
-  int hierarchy_netattrib_order;
-  int hierarchy_netname_order;
-  int hierarchy_uref_order;
-  char *unnamed_netname;
-  char *unnamed_busname;
-
-  /* Callback function for calculating text bounds */
-  RenderedBoundsFunc rendered_text_bounds_func;
-  void *rendered_text_bounds_data;
-};
-
-/* structures below are for gnetlist */
-
-/* for every component in the object database */
-struct st_netlist {
-
-  int nlid;
-
-  char *component_uref;
-
-  OBJECT *object_ptr;
-
-  CPINLIST *cpins;		
-
-  char *hierarchy_tag;
-  int composite_component;
-
-  NETLIST *prev;
-  NETLIST *next;
-};
-
-
-/* for every pin on a component */
-struct st_cpinlist {
-  int plid;
-  int type;                             /* PIN_TYPE_NET or PIN_TYPE_BUS */
-
-  char *pin_number;
-  char *net_name;			/* this is resolved at very end */
-  char *pin_label;
-
-  NET *nets;
-
-  CPINLIST *prev;
-  CPINLIST *next;
-};
-
-/* the net run connected to a pin */
-struct st_net {
-
-  int nid;
-
-  int net_name_has_priority;
-  char *net_name;
-  char *pin_label;
-
-  char *connected_to; /* new to replace above */
-
-  NET *prev;
-  NET *next;
-};
-
-/* By Jamil Khatib */
-/* typedef struct st_chkerrs CHKERRS; */
-
-/* Schem check struct */
-struct st_schcheck {
-  int no_errors;                /* No of Errors */
-  int no_warnings;              /* No of Warinings */
-
-  CHKERRS * sheet_errs;
-
-  CHKERRS *float_nets;           /* Header of the list of floating nets */
-  int net_errs;                 /* No of floating nets */
-
-  OBJECT *float_pins;           /* Header of List of floating pins*/
-  int pin_errs;                 /* No of floating pins */
-
-  int net_names;                /* No of mismatched net names */
-};
-
-
-struct st_chkerrs{
-
-  OBJECT * err_obj;
-  CHKERRS * next;
-
-};
-
-
-
-struct st_color {
-  guint8 r, g, b, a;
-  gboolean enabled;
-};
-
-
-struct st_attrib_smob {
-  TOPLEVEL *world;   /* We need this when updating schematic */
-  OBJECT   *attribute;
-};
-
-struct st_object_smob {
-  TOPLEVEL *world;   /* We need this when updating schematic */
-  OBJECT   *object;
-};
-
-struct st_page_smob {
-  TOPLEVEL *world;   /* We need this when updating schematic */
-  PAGE   *page;
-};
-
-/* used by the rc loading mechanisms */
-typedef struct {
-  int   m_val;
-  char *m_str;
-} vstbl_entry;
-
-#endif
diff --git a/libgeda/src/Makefile.am b/libgeda/src/Makefile.am
index 5b04947..7c4bf99 100644
--- a/libgeda/src/Makefile.am
+++ b/libgeda/src/Makefile.am
@@ -69,7 +69,7 @@ libgeda_la_SOURCES = \
 	s_undo.c \
 	u_basic.c
 
-INCLUDES = -I$(top_srcdir)/include @LIBGEDA_CFLAGS@
+INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/include/libgeda @LIBGEDA_CFLAGS@
 DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
 libgeda_la_LDFLAGS = @LIBTOOL_FLAGS@ @LIBGEDA_LDFLAGS@
 LIBTOOL=@LIBTOOL@ --silent




_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs