diff --git a/.gitattributes b/.gitattributes
index d1a52fb07cb7296162ae0f47692c3f9e22415ad7..79c0f9ed2fc0c3dd0db07eb534234f7fc06526b8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -183,6 +183,7 @@ testfont binary
 /src/modules/Image/pattern.c foreign_ident
 /src/modules/Image/pnm.c foreign_ident
 /src/modules/Image/polyfill.c foreign_ident
+/src/modules/Image/polygon.c foreign_ident
 /src/modules/Image/togif.c foreign_ident
 /src/modules/Image/x.c foreign_ident
 /src/modules/MIME/Makefile.in foreign_ident
diff --git a/src/modules/Image/polygon.c b/src/modules/Image/polygon.c
new file mode 100644
index 0000000000000000000000000000000000000000..3f033cfc354ec1e14e7c146c36ce324547b93535
--- /dev/null
+++ b/src/modules/Image/polygon.c
@@ -0,0 +1,104 @@
+#include "global.h"
+#include <config.h>
+
+/* $Id: polygon.c,v 1.1 1998/05/21 13:01:48 grubba Exp $ */
+
+/*
+**! module Image
+**! note
+**!	$Id: polygon.c,v 1.1 1998/05/21 13:01:48 grubba Exp $
+**! class polygon
+**!
+**!	This object keep polygon information,
+**!	for quick polygon operations.
+**!
+**! see also: Image, Image.image, Image.image->polyfill
+*/
+
+#undef COLORTABLE_DEBUG
+#undef COLORTABLE_REDUCE_DEBUG
+
+RCSID("$Id: polygon.c,v 1.1 1998/05/21 13:01:48 grubba Exp $");
+
+#include <math.h> 
+
+#include "config.h"
+
+#include "stralloc.h"
+#include "pike_macros.h"
+#include "object.h"
+#include "constants.h"
+#include "interpret.h"
+#include "svalue.h"
+#include "array.h"
+#include "threads.h"
+#include "builtin_functions.h"
+
+#include "image.h"
+#include "polygon.h"
+#include "dmalloc.h"
+
+struct program *image_polygon_program;
+extern struct program *image_program;
+
+
+#ifdef THIS
+#undef THIS /* Needed for NT */
+#endif
+#define THIS ((struct polygon *)(fp->current_storage))
+#define THISOBJ (fp->current_object)
+
+/***************** init & exit *********************************/
+
+static void free_polygon_struct(struct polygon *nct)
+{
+}
+
+static void polygon_init_stuff(struct polygon *nct)
+{
+}
+
+static void init_polygon_struct(struct object *obj)
+{
+   polygon_init_stuff(THIS);
+}
+
+static void exit_polygon_struct(struct object *obj)
+{
+   free_polygon_struct(THIS);
+}
+
+/***************** internal stuff ******************************/
+
+/***************** called stuff ********************************/
+
+static void image_polygon_create(INT32 args)
+{
+}
+
+/***************** global init etc *****************************/
+
+void init_polygon_programs(void)
+{
+   start_new_program();
+   add_storage(sizeof(struct polygon));
+
+   set_init_callback(init_polygon_struct);
+   set_exit_callback(exit_polygon_struct);
+
+   add_function("create",image_polygon_create,
+		"function(object|array(int|float) ...:void)",0);
+
+   image_polygon_program=end_program();
+   add_program_constant("polygon",image_polygon_program, 0);
+}
+
+void exit_polygon(void) 
+{
+  if(image_polygon_program)
+  {
+    free_program(image_polygon_program);
+    image_polygon_program=0;
+  }
+}
+
diff --git a/src/modules/Image/polygon.h b/src/modules/Image/polygon.h
new file mode 100644
index 0000000000000000000000000000000000000000..dcee2f3af62498163acd093eb52da6246d1a8e1b
--- /dev/null
+++ b/src/modules/Image/polygon.h
@@ -0,0 +1,21 @@
+
+#ifdef PCOORD
+#undef PCOORD
+#endif
+#ifdef PFLOAT
+#undef PFLOAT
+#endif
+
+#define PCOORD struct polygon_coord
+#define PFLOAT double
+
+struct polygon_coord { PFLOAT x,y; };
+
+struct polygon
+{
+   PCOORD min,max;
+};
+
+
+void init_polygon_programs(void);
+void exit_polygon(void);