ui-toolbar.o: ui-toolbar.c ui-toolbar.h
gcc -c ui-toolbar.c $(GTK)
+
+ui-drawing.o: ui-drawing.c ui-drawing.h
+ gcc -c ui-drawing.c $(GTK)
+
--- /dev/null
+GTK = `pkg-config --cflags --libs gtk+-2.0`
+
+topng: topng.c
+ gcc topng.c -o topng $(GTK)
+
+topdf: topdf.c
+ gcc topdf.c -o topdf $(GTK)
+
+togtk:
+ gcc togtk.c -o togtk $(GTK)
+
--- /dev/null
+#include <cairo.h>
+#include <gtk/gtk.h>
+
+static gboolean
+on_expose_event(GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer data)
+{
+ cairo_t *cr;
+
+ cr = gdk_cairo_create(widget->window);
+
+ cairo_set_source_rgb(cr, 255, 255, 255);
+ cairo_rectangle(cr, 0, 0, 400, 90);
+ cairo_fill(cr);
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size(cr, 40.0);
+
+ cairo_move_to(cr, 10.0, 50.0);
+ cairo_show_text(cr, "Disziplin ist Macht.");
+
+ cairo_destroy(cr);
+
+ return FALSE;
+}
+
+int
+main (int argc, char *argv[])
+{
+
+ GtkWidget *window;
+
+ gtk_init(&argc, &argv);
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ g_signal_connect(window, "expose-event",
+ G_CALLBACK (on_expose_event), NULL);
+ g_signal_connect(window, "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
+
+ gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+ gtk_window_set_default_size(GTK_WINDOW(window), 400, 90);
+ gtk_widget_set_app_paintable(window, TRUE);
+
+ gtk_widget_show_all(window);
+
+ gtk_main();
+
+ return 0;
+}
+
--- /dev/null
+#include <cairo/cairo.h>
+#include <cairo/cairo-pdf.h>
+
+int main() {
+
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ surface = cairo_pdf_surface_create("pdffile.pdf", 504, 648);
+ cr = cairo_create(surface);
+
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size (cr, 40.0);
+
+ cairo_move_to(cr, 10.0, 50.0);
+ cairo_show_text(cr, "Disziplin ist Macht.");
+
+ cairo_show_page(cr);
+
+ cairo_surface_destroy(surface);
+ cairo_destroy(cr);
+
+ return 0;
+}
+
--- /dev/null
+#include <cairo.h>
+
+int main (int argc, char *argv[])
+{
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 390, 60);
+ cr = cairo_create(surface);
+
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size(cr, 40.0);
+
+ cairo_move_to(cr, 10.0, 50.0);
+ cairo_show_text(cr, "Disziplin ist Macht.");
+
+ cairo_surface_write_to_png(surface, "image.png");
+
+ cairo_destroy(cr);
+ cairo_surface_destroy(surface);
+
+ return 0;
+}
+
#include "ui-menu.h"
#include "ui-toolbar.h"
+#include "ui-drawing.h"
GdkPixbuf *create_pixbuf (const gchar * filename)
{
toolbar = generate_toolbar ();
gtk_box_pack_start (GTK_BOX (container), toolbar, FALSE, FALSE, 0);
- darea = gtk_drawing_area_new();
+ //darea = get_drawing_area();
+ darea = gtk_scrolled_window_new(NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (darea), get_drawing_area(800, 450));
gtk_container_add (GTK_CONTAINER (container), darea);
gtk_widget_show_all (window);
--- /dev/null
+#include <stdio.h>
+#include <cairo.h>
+#include <gtk/gtk.h>
+
+#include "ui-drawing.h"
+
+gboolean
+on_expose_cb(GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer data)
+{
+ cairo_t *cr;
+ int width, height;
+ char *text = "TBO rulz!";
+ cairo_text_extents_t extents;
+ int *size = (int *) data;
+
+ width = size[0];
+ height = size[1];
+
+ cr = gdk_cairo_create(GTK_LAYOUT (widget)->bin_window);
+
+ cairo_set_source_rgb(cr, 1, 1, 1);
+ cairo_rectangle(cr, 0, 0, size[0], size[1]);
+ cairo_fill(cr);
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_rectangle (cr, 0, 0, size[0], size[1]);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_select_font_face(cr, "Courier", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size(cr, 90.0);
+
+ cairo_text_extents(cr, text, &extents);
+ cairo_move_to(cr, (width-extents.width)/2, (height+extents.height)/2);
+
+ cairo_show_text(cr, text);
+
+ cairo_destroy(cr);
+
+ return FALSE;
+}
+
+gboolean
+on_move_cb (GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer data)
+{
+ printf ("move\n");
+}
+
+gboolean
+on_click_cb (GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer data)
+{
+ printf ("click\n");
+}
+
+GtkWidget *
+get_drawing_area (int width, int height)
+{
+
+ GtkWidget *drawing;
+ static int size[2];
+
+ size[0] = width;
+ size[1] = height;
+
+ drawing = gtk_layout_new(NULL, NULL);
+ gtk_layout_set_size(GTK_LAYOUT (drawing), size[0], size[1]);
+
+ g_signal_connect(drawing, "expose-event",
+ G_CALLBACK (on_expose_cb), (gpointer) size);
+
+ gtk_widget_add_events (drawing, GDK_BUTTON_PRESS_MASK |
+ GDK_POINTER_MOTION_MASK);
+
+ g_signal_connect (drawing, "button_press_event",
+ G_CALLBACK (on_click_cb), NULL);
+
+ g_signal_connect (drawing, "motion_notify_event",
+ G_CALLBACK (on_move_cb), (gpointer) size);
+
+ return drawing;
+}
+
--- /dev/null
+#ifndef __UI_DRAWING_
+#define __UI_DRAWING_
+
+#include <gtk/gtk.h>
+#include <cairo.h>
+
+
+gboolean on_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
+gboolean on_move_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
+gboolean on_click_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
+GtkWidget * get_drawing_area (int width, int height);
+
+#endif