source: branches/alilink/WINDOW/aw_xfig.hxx

Last change on this file was 16768, checked in by westram, 7 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1// =============================================================== //
2//                                                                 //
3//   File      : aw_xfig.hxx                                       //
4//   Purpose   :                                                   //
5//                                                                 //
6//   Institute of Microbiology (Technical University Munich)       //
7//   http://www.arb-home.de/                                       //
8//                                                                 //
9// =============================================================== //
10
11#ifndef AW_XFIG_HXX
12#define AW_XFIG_HXX
13
14#ifndef AW_BASE_HXX
15#include "aw_base.hxx"
16#endif
17#ifndef ARBDB_BASE_H
18#include <arbdb_base.h>
19#endif
20#ifndef ARBTOOLS_H
21#include <arbtools.h>
22#endif
23
24
25const int XFIG_DEFAULT_FONT_WIDTH  = 8;
26const int XFIG_DEFAULT_FONT_HEIGHT = 13;
27
28const int MAX_LINE_WIDTH  = 20;
29const int MAX_XFIG_LENGTH = 100000;
30
31class AW_device;
32
33char *aw_get_font_from_xfig(int fontnr);
34
35struct AW_xfig_line {
36    struct AW_xfig_line *next;
37
38    short x0, y0;
39    short x1, y1;
40    short color;
41    int   gc;
42};
43
44struct AW_xfig_text {
45    struct AW_xfig_text *next;
46
47    short    x, y;
48    short    pix_len;
49    char    *text;
50    AW_font  font;
51    short    fontsize;
52    int      center;
53    short    color;
54    int      gc;
55};
56
57struct AW_xfig_pos {
58    short x, y;
59    int   center;
60};
61
62class AW_xfig : virtual Noncopyable {
63    void calc_scaling(int font_width, int font_height);
64
65    void init(int font_width, int font_height) {
66        text        = NULp;
67        at_pos_hash = NULp;
68
69        memset(line, 0, sizeof(line));
70
71        minx = 0; maxx = 0; centerx = 0;
72        miny = 0; maxy = 0; centery = 0;
73
74        size_x = size_y = 0;
75
76        calc_scaling(font_width, font_height);
77    }
78
79public:
80    struct AW_xfig_text *text;
81    struct AW_xfig_line *line[MAX_LINE_WIDTH];
82
83    GB_HASH *at_pos_hash;                         // hash table for named positions
84
85    int minx, miny;
86    int maxx, maxy;
87    int size_x, size_y;
88    int centerx, centery;
89
90    double font_scale;
91    double dpi_scale;
92
93    AW_xfig(const char *filename, int font_width, int font_height);
94    AW_xfig(int font_width, int font_height);      // creates an empty drawing area
95
96    ~AW_xfig();
97    void print(AW_device *device); // you can scale it
98    void create_gcs(AW_device *device, int screen_depth); // create the gcs
99
100    void add_line(int x1, int y1, int x2, int y2, int width); // add a line to xfig
101};
102
103
104/* xfig format ::
105
106text::
107
1084 0 font(-1== default) fontsize depth color  ?? angle justified(4=left) flags width x y text^A
109
110lines::
111
1122 art depth width color ....
113x y x y 9999 9999
114
115*/
116
117#else
118#error aw_xfig.hxx included twice
119#endif // AW_XFIG_HXX
Note: See TracBrowser for help on using the repository browser.