source: projects/visualisator/lochstreifen.h @ 9

Last change on this file since 9 was 9, checked in by sven, 11 years ago
  • 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

File size: 4.0 KB
Line 
1/*
2** Allgemeine Headerfile fuer das
3** Lochstreifen-Visualisieren-Projekt
4*/
5#ifndef __LOCHSTREIFEN_H__
6#define __LOCHSTREIFEN_H__
7
8#include <cairo-svg.h> // cairo_t unten
9
10#define byte_t unsigned char
11#define LOCHSTREIFEN struct lochstreifen
12
13// Die Lochstreifenstruktur, die alle relevanten Daten enthaelt
14struct lochstreifen {
15    /* Daten, die der Lochstreifen enthaelt: */
16    int data_length; // Länge des Datenarrays, rechnend ab 1 (wie argc)
17    byte_t *data;    // Datenarray
18
19    int empty_start; // wie viele 0bytes vorne
20    int empty_end; // wie viele 0bytes hinten
21
22    /* Konstanten zum Aussehen des Lochstreifens
23       Referenzeinheit ist d, daraus wird alles berechnet,
24       siehe lochstreifen_set_d
25    */
26    int d; // Durchmesser eines Loches
27    int bspace;  // Abstand der Bytes voneinander (Reihen)
28    int hspace;  // Abstand der Loecher in der Bytereihe
29    int padding; // Abstand Löcher <=> Lochstreifenrand
30    int df; // Durchmesser Lochfuehrungsloch
31    int fspace; // Breite der Lochfuehrungs"nut"
32    int margin; // Abstand um Lochstreifen herum (an allen Seiten)
33    int abriss; // Länge der Abrisse an Start/Ende (halbe Höhe vom Lochstreifen)
34
35    /* Farben, in denen der Lochstreifen gehalten ist */
36    cairo_pattern_t *hintergrund, *streifenbg, *punched, *notpunched, *fuehrung;
37    // Farben um Lochstreifen, Lochstreifen, Loecher, Nicht-Loecher, Fuehrung
38    // siehe zum Setzen: lochstreifen_set_color oder per Cairo-Funktion fuer
39    // komplexere Loesungen. Bei NULL wird die Komponente nicht gezeichnet!
40
41    /* Drehungen und co, nicht direkt veraendern, sonst stimmt die vorberechnete
42       Hoehe/Breite nicht mehr mit den realen Werten ueberein. */
43    //cairo_matrix_t transformation;
44    // Das folgende koennte man natuerlich effizienter Speichern, aber egal.
45    int drehung; // 0-3, jeweils 45°-Schritte im Uhrzeigersinn
46    int spiegelung_hor; // horizontale Spiegelung != 0 == ja
47    int spiegelung_ver; // vertikale Spiegelung != 0 == ja
48
49    /* Nur bestimmte rechteckige Bereiche zeichnen -- dies wird massgeblich vom
50       GTK-Interface benutzt */
51    int only_start_x; // Die angegebenen Punkte
52    int only_start_y; // spannen ein Rechteck auf. In grober
53    int only_width;   // Naeherung wird nur in diesem Bereich
54    int only_height;  // gezeichnet.
55
56
57    /* Feature: Ein bestimmtes Byte hervorheben */
58    int highlight_byte; // Nummer des Bytes (von 0)
59    cairo_pattern_t *highlight_color; // Farben => wenn NULL, kein Highlight
60
61    /* Debugausgaben machen => wenn debug != 0 ist! */
62    byte_t debug;
63};
64
65/* lochstreifen.c */
66// allgemeine Zusatzfunktion, kein Bezug
67int file_get_contents(FILE *stream, byte_t **content);
68
69// Lochstreifenfunktionen, siehe Dokumentation in c-File
70LOCHSTREIFEN *lochstreifen_new();
71void lochstreifen_set_data(LOCHSTREIFEN *l, int data_length, byte_t *data, int empty_start, int empty_end);
72void lochstreifen_set_d(LOCHSTREIFEN *l, int d);
73void lochstreifen_set_d_by_width(LOCHSTREIFEN *l, int width);
74void lochstreifen_set_d_by_height(LOCHSTREIFEN *l, int height);
75int lochstreifen_get_width(LOCHSTREIFEN *l);
76int lochstreifen_get_height(LOCHSTREIFEN *l);
77int lochstreifen_set_draw_only_area(LOCHSTREIFEN *l, int x, int y, int width, int height);
78int lochstreifen_flush_draw_only_area(LOCHSTREIFEN *l);
79void lochstreifen_set_color(cairo_pattern_t *color, byte_t red, byte_t green, byte_t blue, byte_t alpha);
80//void lochstreifen_rotate(LOCHSTREIFEN *l);
81//void lochstreifen_spiegel(LOCHSTREIFEN *l, byte_t horizontal);
82void lochstreifen_set_direction(LOCHSTREIFEN *l, int drehung, int spiegelung_hor, int spiegelung_ver);
83void lochstreifen_draw(LOCHSTREIFEN *l, cairo_t *cr);
84int lochstreifen_get_orientation(LOCHSTREIFEN *l);
85int 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 TracBrowser for help on using the repository browser.
© 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