Changeset 9 in projects


Ignore:
Timestamp:
Aug 29, 2008, 1:24:03 AM (11 years ago)
Author:
sven
Message:
  • Recreated Makefiles in visualisator/ and puncher/
  • All /visualisator/ sources now compile with -Wall compiler flag
  • The basic /puncher/ sources compile with -Wall, too.
  • Added Readme for schriften/

Current development is now focussed at /puncher/frontend.gtk.c.

-- Sven @ workstation

Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • puncher/Makefile

    r5 r9  
    1 GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0`
    2 VISUALISATION=../visualisator
    3 BACKEND=$(VISUALISATION)/lochstreifen.c $(VISUALISATION)/gtkpapertape.c
    41
    5 all: gtk
     2CFLAGS = -Wall
    63
    7 gtk: gtk-frontend.c $(BACKEND)
    8         gcc -o gtkprogram $(GTKFLAGS) gtk-frontend.c $(BACKEND)
     4# Visualisation files
     5VISUALISATION_DIR = ../visualisator
     6VISUALISATION_FILES = $(VISUALISATION_DIR)/gtkpapertape.o $(VISUALISATION_DIR)/lochstreifen.o
    97
    10 # WINDOWS: mingw braucht dort ERST cflags, dann C source, dann
    11 # LINKER flags, vgl.
    12 # http://www.math.nagoya-u.ac.jp/~garrigue/soft/olabl/lablgtk-list/old/413.txt
    13 windows: gtk-frontend.c $(BACKEND)
    14         gcc `pkg-config --cflags gtk+-2.0` -o gtkprogram gtk-frontend.c $(BACKEND) `pkg-config --libs gtk+-2.0`
     8GTK_CFLAGS = `pkg-config --cflags gtk+-2.0`
     9GTK_LFLAGS = `pkg-config --libs gtk+-2.0`
    1510
    16 # temp mal dazu
    17 linux-driver:
    18         gcc -o setoff-strobe setoff-strobe.c
    19         gcc -o puncher puncher.c -lm
     11# complete binaries:
     12all: cli gtk
     13
     14cli: frontend.cli.o backend.dummy.o
     15        gcc $(GTK_LFLAGS) -o $@ $^
     16
     17gtk: frontend.gtk.o backend.dummy.o
     18        gcc $(GTK_LFLAGS) -o $@ $^ $(VISUALISATION_FILES)
     19
     20# frontends:
     21frontend.cli.o: frontend.cli.c backend.h
     22        gcc $(CFLAGS) -c frontend.cli.c
     23
     24frontend.gtk.o: frontend.gtk.c backend.h visualisator
     25# zunaechst kein -Wall (CFLAGS) waehrend entwicklung:
     26        gcc $(GTK_CFLAGS) -c frontend.gtk.c
     27
     28.PHONY: visualisator
     29visualisator:
     30        $(MAKE) -C $(VISUALISATION_DIR) gtkpapertape.o
     31
     32# backends:
     33backend.dummy.o: backend.dummy.c backend.h
     34        gcc $(CFLAGS) -c backend.dummy.c
     35
     36backend.linux.o: backend.linux.c backend.h
     37        gcc $(CFLAGS) -c backend.linux.c
     38
     39
     40# clean
     41clean:
     42        rm *.o cli gtk
  • puncher/backend.dummy.c

    r8 r9  
    99#include <stdio.h>
    1010#include <stdlib.h>
     11#include <unistd.h> /* usleep! Unix! Not cross platform! */
    1112#include "backend.h"
    1213
     
    2021    printf("[dummy backend] punching 0x%x\n", byte);
    2122    usleep (20*1000); // 20ms
     23    return 0;
    2224}
    2325
    2426int puncher_backend_destroy(PuncherBackend* c) {
    2527    printf("[dummy backend] finishing backend...\n");
     28    return 0;
    2629}
  • puncher/backend.linux.c

    r8 r9  
    9696         **/
    9797        static unsigned char mask = PARPORT_CONTROL_STROBE;
    98         DPRINTF("Setting null mask to control pins (strobe,etc.)...\n");
     98        PUNCHER_BACKEND_DPRINTF("Setting null mask to control pins (strobe,etc.)...\n");
    9999        if(ioctl(c->parport_fd, PPWCONTROL, &mask)) {
    100100                perror("backend emergency exit: null mask");
     
    231231               
    232232                //usleep(10000); // 20ms was
    233                 /* Der Komplettintervall betraegt 13.33 Microsekunden -
     233                 * Der Komplettintervall betraegt 13.33 Microsekunden -
    234234                 * 10ms ist vielleicht angemessen
    235235                 * */
  • puncher/frontend.cli.c

    r8 r9  
    2020#include <stdio.h>
    2121#include <stdlib.h>
    22 #include <unistd.h> /* Problematisch auf Windows! */
     22#include <unistd.h> /* Problematisch auf Windows! (opterr, optarg, etc.) */
     23#include <sys/time.h> /* gettimeofday -- unheimlich problematisch auf windows! */
    2324#include <errno.h>
    2425#include <stdarg.h> /* var argument list */
  • puncher/frontend.gtk.c

    r8 r9  
    66 *
    77 * started at 14.06.2008
    8  * (c) Sven
     8 * (c) Copyright 2008 Sven Köppel
    99 *
    1010 *
     
    3333        } state;
    3434       
     35        /* The holy backend: */
     36        PuncherBackend *backend;
     37       
    3538        /* Various GtkWidgets: */
    3639        GtkWidget *progress_bar;                // The GtkProgressBar
     
    6871
    6972gboolean progress_update_time();
     73gboolean puncher_frontend_punch_loop();
    7074
    7175void puncher_frontend_prepare(GtkWidget *window) {
     
    165169                gtk_paper_tape_set_highlight(d.papertape, x, TRUE); // TRUE: Abhängig von Checkbox!
    166170                UPDATE_GTK_GUI;
    167                 punch_byte(d.data[x]);
     171                puncher_backend_write_byte(d.backend, d.data[x]);
    168172                d.punched++;
    169173        }
     
    251255
    252256void puncher_frontend_quit_application(GtkWidget *window, gpointer *nada) {
    253         puncher_backend_finish();
     257        puncher_backend_destroy(d.backend);
    254258        exit(0);
    255259        // on window close: manage punching interaction!!
     
    366370               
    367371                gtk_container_add(GTK_CONTAINER(button_box), d.button_start);
    368                 g_signal_connect(G_OBJECT(d.button_start), "clicked", G_CALLBACK(gui_puncher_start), NULL);
     372                g_signal_connect(G_OBJECT(d.button_start), "clicked", G_CALLBACK(puncher_frontend_puncher_start), NULL);
    369373                gtk_container_add(GTK_CONTAINER(button_box), d.button_pause);
    370374                gtk_container_add(GTK_CONTAINER(button_box), d.button_stop);
     
    404408        }
    405409        // end of parsing command options
    406 
     410       
     411        // showing the main window
    407412        gtk_widget_show_all(window);
     413       
     414        // Initialisation of the backend
     415        d.backend = puncher_backend_new(1);
     416       
     417        if(!d.backend) {
     418                perror("backend init");
     419                GtkWidget *error;
     420                error = gtk_message_dialog_new (GTK_WINDOW(window),
     421                        GTK_DIALOG_DESTROY_WITH_PARENT,
     422                        GTK_MESSAGE_ERROR,
     423                        GTK_BUTTONS_OK,
     424                        "Error while initializing backend! Quitting!",
     425                        "dumy");
     426                gtk_dialog_run (GTK_DIALOG (error));
     427                gtk_widget_destroy (error);
     428                return 1;
     429        }
     430
    408431        gtk_main();
    409432        return 0;
  • visualisator/Makefile

    r3 r9  
    11
    2 CAIROFLAGS=`pkg-config --cflags --libs cairo`
    3 GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0`
    4 # GTK nutzt Cairo, daher brauchts nicht $(CAIROFLAGS) $(GTKFLAGS) in
    5 # einem gcc-Aufruf
     2CFLAGS       = -Wall
     3CAIRO_CFLAGS = `pkg-config --cflags cairo`
     4GTK_CFLAGS   = `pkg-config --cflags gtk+-2.0`
     5CAIRO_LFLAGS = `pkg-config --libs cairo`
     6GTK_LFLAGS   = `pkg-config --libs gtk+-2.0`
     7# GTK uses Cairo, therefore $(GTK_FLAGS) doesn't need $(CAIRO_FLAGS), too
    68
    7 BACKEND=lochstreifen.c
     9all: cli gtk
    810
    9 all: cmd gtk
     11cli: cli.c lochstreifen.o
     12        gcc $(CFLAGS) $(CAIRO_LFLAGS) $(CAIRO_CFLAGS) -o cli lochstreifen.o cli.c
    1013
    11 cmd: create-image.c $(BACKEND)
    12         gcc -o binary $(CAIROFLAGS) create-image.c $(BACKEND)
    13        
    14 gtk: gtk.c $(BACKEND)
    15         gcc -o gtkprogram $(GTKFLAGS) gtkpapertape.c gtk.c $(BACKEND)
     14# cli was formerly:
     15#cmd: create-image.c $(BACKEND)
     16#       gcc -o binary $(CAIROFLAGS) create-image.c $(BACKEND)
     17
     18gtk: gtk.c gtkpapertape.o
     19        gcc $(CFLAGS) $(GTK_LFLAGS) $(GTK_CFLAGS) -o gtk gtkpapertape.o lochstreifen.o gtk.c
    1620
    1721
     22gtkpapertape.o: lochstreifen.o gtkpapertape.c gtkpapertape.h
     23        gcc $(CFLAGS) $(GTK_CFLAGS) -c gtkpapertape.c
     24
     25lochstreifen.o: lochstreifen.c lochstreifen.h
     26        gcc $(CFLAGS) $(CAIRO_CFLAGS) -c lochstreifen.c
     27
     28clean:
     29        rm *.o gtk cli
  • visualisator/cli.c

    r6 r9  
    112112    // erst mal schauen, ob ne schoene Raute da ist und auf Laenge (entsprechendes Format)
    113113    if(string[0] != '#' || (len != 4 && len != 5 && len != 7 && len != 9)) {
    114         fprintf(stderr, "Bad color: %s -- colors shall have format #RGB or #RRGGBB or #RGBA or #RRGGBBAA\n", string, len);
     114        fprintf(stderr, "Bad color: %s -- colors shall have format #RGB or #RRGGBB or #RGBA or #RRGGBBAA\n", string);
    115115        exit(1);
    116116    }
     
    257257}; // static struct argp
    258258
    259 cairo_status_t* lochstreifen_out_closure(void *closure, unsigned char *data, unsigned int length) {
     259cairo_status_t lochstreifen_out_closure(void *closure, unsigned char *data, unsigned int length) {
    260260    // einfach nur in das uebergebene Dateihandle schreiben
    261261    fwrite(data, length, 1, (FILE *)closure);
     
    342342    } else if(surface_type == 1) { // SVG
    343343        surface = (cairo_surface_t *)cairo_svg_surface_create_for_stream(
    344             lochstreifen_out_closure, out,
     344            (cairo_write_func_t)lochstreifen_out_closure, out,
    345345            (double)lochstreifen_get_width(l),
    346346            (double)lochstreifen_get_height(l));
  • visualisator/gtk.c

    r6 r9  
    5454        if(gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) {
    5555                char *filename;
    56                 FILE *file;
    5756
    5857                filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (chooser));
    5958                if(filename == NULL) {
    60                         g_printf(_("No file selected to open.\n"));
     59                        printf(_("No file selected to open.\n"));
    6160                        gtk_widget_destroy(GTK_WIDGET(chooser));
    6261                        return FALSE;
     
    7372
    7473int main(int argc, char *argv[]) {
    75         GtkWidget *window, *mainbox, *statusbar;
     74        GtkWidget *window, *mainbox;
    7675        GtkPaperTape *papertape;
    7776        gtk_init(&argc, &argv);
     
    147146                GError *error = NULL;
    148147                GOptionContext *context;
    149                 byte_t show_mystart = 0; // eigene Startprozedur anzeigen?
     148                // (noch?) nicht genutzt:
     149                //byte_t show_mystart = 0; // eigene Startprozedur anzeigen?
    150150                GOptionEntry option_entries[] = {
    151151                        { "filename", 'f', 0, G_OPTION_ARG_FILENAME, &filename, _("file to open"), NULL },
  • visualisator/gtkpapertape.c

    r6 r9  
    2626#include <stdlib.h>
    2727#include "gtkpapertape.h"
     28#include "lochstreifen.h"
    2829#include <gtk/gtk.h>
    2930#include <math.h>
     
    109110gboolean gtk_paper_tape_null_bytes_dialog(GtkWidget *menu_widget, GtkPaperTape *papertape);
    110111void gtk_paper_tape_scroll_to(GtkPaperTape* papertape, int byte_number);
     112
     113int fast_get_dpi();
    111114
    112115
     
    337340                gtk_paper_tape_message(d->papertape, "Export abgebrochen!");
    338341                gtk_widget_destroy(chooser);
    339                 return;
     342                return FALSE; // return value eh nicht wichtig weil aufgerufen von mainloop
    340343        }
    341344
     
    385388        cairo_destroy(cr);
    386389        g_free(filename);
     390        return FALSE; /* return value not interesting cause mainloop. */
    387391} //gtk_paper_tape_export
    388392
     
    395399         *
    396400         **/
    397         GtkWidget *dialog, *table, *input_start, *input_end, *label;
     401        GtkWidget *dialog, *input_start, *input_end, *label;
    398402        GtkWidget *box;
    399403       
     
    439443                gtk_paper_tape_message(papertape, "Anzahl der Nullbytes wurde nicht veraendert.");
    440444        gtk_widget_destroy (dialog);
     445        return FALSE; /* return value interessiert eh niemanden. */
    441446}
    442447
     
    454459        GError *err;
    455460
    456         ret = g_file_get_contents(filename, &data, &length, &err);
     461        ret = g_file_get_contents(filename, &data, (gsize*)&length, &err);
    457462
    458463        if(ret == FALSE) {
     
    759764        //printf("%s\n", cairo_status_to_string(cairo_pattern_status(*target)));
    760765
    761         GdkColor *g = color_cairo2gdk(*target);
     766        //GdkColor *g = color_cairo2gdk(*target);
    762767        //printf("Farben zurueck: R=%d G=%d B=%d\n", g->red, g->green, g->blue);
    763768        //gtk_color_button_get_alpha(GTK_COLOR_BUTTON(widget)) / 65535);
     
    782787         *
    783788         **/
    784         gchar *msg;
    785         int x,y,byte;
     789        int byte;
    786790       
    787791        // wait 4 seconds after an "important" message before spamming the
    788792        // statusbar with the mouse-on-byte-x informations
    789793        if(papertape->last_statusbar_update != NULL &&
    790                 g_timer_elapsed(papertape->last_statusbar_update, NULL) < 4) return;
     794                g_timer_elapsed(papertape->last_statusbar_update, NULL) < 4) return FALSE; /* return value egal */
    791795       
    792796        // flush statusbar for every case
     
    872876        // geht nicht:
    873877        //g_signal_emit_by_name(lochstreifen_widget, "motion-notify-event"); // Mauszeigerbewegung simulieren => Statuszeile updaten
     878        return FALSE; // return value egal
    874879}
    875880
     
    902907        //l = (LOCHSTREIFEN *)data;
    903908       
    904         printf("%d Neuzeichnen: x|y = (%d|%d), width*height = %d * %d\n", TIME,
     909        printf("%d Neuzeichnen: x|y = (%d|%d), width*height = %d * %d\n", (int)TIME,
    905910                                event->area.x, event->area.y,
    906911                                event->area.width, event->area.height);
     
    10621067    if(screen == NULL) {
    10631068        printf("Konnte GdkScreen zwecks DPI-Auslesung nicht erkennen!\n");
    1064         return;
     1069        return -1;
    10651070    }
    10661071
     
    10681073    if(dpi < 0) {
    10691074        printf("Screenresolution (%f) nicht feststellbar\n", dpi);
    1070         return;
     1075        return -1;
    10711076    }
    10721077    return (int)rint(dpi); // noch sauber runden.
  • visualisator/gtkpapertape.h

    r6 r9  
    113113void gtk_paper_tape_set_null_bytes(GtkPaperTape *papertape, int beginning, int end);
    114114
     115gboolean gtk_paper_tape_read_from_file(GtkPaperTape* papertape, char *filename);
     116GtkWidget *gtk_paper_tape_get_whole_box(GtkPaperTape *papertape);
     117
    115118G_END_DECLS
    116119
  • visualisator/lochstreifen.c

    r3 r9  
    101101     // gsize *length
    102102
    103      char buf[4096];
     103     byte_t buf[4096];
    104104     size_t bytes; // gerade eben eingelesene bytes
    105      char *str = NULL;
     105     byte_t *str = NULL;
    106106     size_t total_bytes = 0;     // alle bis jetzt eingelesenen bytes
    107107     size_t total_allocated = 0;
    108      char *tmp; // fuers realloc
     108     byte_t *tmp; // fuers realloc
    109109
    110110     while(!feof(stream)) {
     
    138138     //str[total_bytes] = '\0'; // wenns ein string wäre.
    139139
    140      *content = str;
     140     *content = str; // WAS: *content = str.
    141141
    142142     return total_bytes;
     
    204204    l->only_width = width;
    205205    l->only_height = height;
     206    return 0; // could make void.
    206207}
    207208
     
    212213    l->only_width = 0;
    213214    l->only_height = 0;
     215    return 0; // yeah, void would be correct.
    214216}
    215217
  • visualisator/lochstreifen.h

    r3 r9  
    33** Lochstreifen-Visualisieren-Projekt
    44*/
    5 #include <cairo.h> // cairo_t unten
     5#ifndef __LOCHSTREIFEN_H__
     6#define __LOCHSTREIFEN_H__
     7
     8#include <cairo-svg.h> // cairo_t unten
    69
    710#define byte_t unsigned char
     
    8184int lochstreifen_get_orientation(LOCHSTREIFEN *l);
    8285int lochstreifen_byte_by_coordinate(LOCHSTREIFEN *l, int x, int y);
     86int lochstreifen_flush_only_start_area(LOCHSTREIFEN *l);
     87void lochstreifen_set_highlight(LOCHSTREIFEN* l, int byte_number);
     88int lochstreifen_coordinate_by_byte(LOCHSTREIFEN *l, int byte);
     89int lochstreifen_set_only_start_area(LOCHSTREIFEN *l, int x, int y, int width, int height);
     90
     91#endif /* __LOCHSTREIFEN_H__ */
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License