From 84361f7a9e03f76e7ea90f48239825dc5bca07e9 Mon Sep 17 00:00:00 2001 From: neoraider Date: Thu, 21 Jun 2007 19:52:03 +0000 Subject: zoomedit: Added level editor zoomedit. --- draw.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 draw.c (limited to 'draw.c') diff --git a/draw.c b/draw.c new file mode 100644 index 0000000..11840ee --- /dev/null +++ b/draw.c @@ -0,0 +1,86 @@ +#include "draw.h" +#include "level.h" +#include +#include + + +static double scale = 100.0; +static double xTranslate = 0.0, yTranslate = 0.0; + +static void room2path(cairo_t *cr, ROOM *room) { + int i; + + + if(room->nVertices == 0) return; + + cairo_move_to(cr, room->vertices[0].x, room->vertices[0].y); + + for(i = 1; i < room->nVertices; i++) + cairo_line_to(cr, room->vertices[i].x, room->vertices[i].y); + + cairo_close_path(cr); +} + +gboolean drawTopView(GtkWidget *widget, GdkEventExpose *event, gpointer data) { + VERTEX vertices[4] = {{-1,-1}, {-1,1}, {1,1}, {1,-1}}; + ROOM room = {sizeof(vertices)/sizeof(vertices[0]), vertices}; + LEVEL lvl = {1, &room}; + cairo_t *cr; + int i; + + + cr = gdk_cairo_create(widget->window); + + cairo_rectangle(cr, event->area.x, event->area.y, event->area.width, event->area.height); + cairo_clip(cr); + + cairo_translate(cr, getImageWidth()/2-xTranslate, getImageHeight()/2-yTranslate); + cairo_scale(cr, scale, scale); + + cairo_set_line_width(cr, 1.0/scale); + + for(i = 0; i < lvl.nRooms; i++) + room2path(cr, &lvl.rooms[i]); + + cairo_set_source_rgba(cr, 0.0, 0.7, 1.0, 0.3); + cairo_fill_preserve(cr); + + cairo_set_source_rgba(cr, 0.0, 0.7, 1.0, 0.7); + cairo_stroke(cr); + + cairo_destroy (cr); + + return FALSE; +} + +double getScale() { + return scale; +} + +void setScale(double s) { + scale = s; +} + +double getImageWidth() { + return 5*scale; +} + +double getImageHeight() { + return 5*scale; +} + +double getXTranslate() { + return xTranslate; +} + +void setXTranslate(double x) { + xTranslate = x; +} + +double getYTranslate() { + return yTranslate; +} + +void setYTranslate(double y) { + yTranslate = y; +} -- cgit v1.2.3