ARB
ed4_defs.hxx
Go to the documentation of this file.
1 #ifndef ED4_DEFS_HXX
2 #define ED4_DEFS_HXX
3 
4 #ifndef AW_COLOR_GROUPS_HXX
5 #include <aw_color_groups.hxx>
6 #endif
7 #ifndef AW_WINDOW_HXX
8 #include <aw_window.hxx>
9 #endif
10 #ifndef AW_POSITION_HXX
11 #include <aw_position.hxx>
12 #endif
13 #ifndef ARBDB_BASE_H
14 #include <arbdb_base.h>
15 #endif
16 
17 #if defined(DEBUG)
18 // #define TRACE_REFRESH
19 // #define TRACE_JUMPS
20 #endif
21 
22 #define e4_assert(bed) arb_assert(bed)
23 
24 class ED4_root;
25 class ED4_database;
27 
28 typedef int ED4_COORDINATE;
29 
31  AD_ALIGN, // add & remove of . possible (default)
32  AD_NOWRITE, // no edits allowed
34  AD_REPLACE, // all edits (overwrite)
35  AD_INSERT // all edits (insert)
36 };
37 
38 
39 // global variables
40 extern ED4_root *ED4_ROOT;
41 
42 extern int INFO_TERM_TEXT_YOFFSET;
43 extern int SEQ_TERM_TEXT_YOFFSET;
44 
45 extern int TERMINAL_HEIGHT; // standard terminal height (sequences, name, info, etc..)
46 extern int MAXSEQUENCECHARACTERLENGTH; // greatest # of characters in a sequence string terminal
47 extern int MAXNAME_WIDTH; // max. pixel width of ED4_species_name_terminal (effective width also depends on group-nesting)
48 extern int MAXINFO_WIDTH; // pixel width used to display sequence info ("CONS", "4data", etc.)
49 extern int FLAG_WIDTH; // pixel width used to display species flags (and its header)
50 
51 extern long ED4_counter;
52 
53 // use ED4_init_notFoundMessage and ED4_finish_and_show_notFoundMessage to
54 // modify the following elements
55 #define MAX_SHOWN_MISSING_SPECIES 200U // limit no of missing species/data printed into not_found_message
56 extern size_t not_found_counter; // nr of species which haven't been found
57 extern GBS_strstruct *not_found_message; // error message containing (some) missing/unloadable species
58 
59 extern long max_seq_terminal_length; // global maximum of sequence terminal length
61 extern long awar_edit_rightward; // 0 = leftward, 1 = rightward
62 extern bool DRAW;
63 
64 // globally used defines and flags
65 
66 #define INFINITE -1
67 
68 #define SLIDER_OFFSET 5
69 
70 // these are recommended for accessing ED4_extension:
71 #define X_POS 0
72 #define Y_POS 1
73 #define WIDTH 0
74 #define HEIGHT 1
75 
76 // size of some display elements:
77 #define BRACKET_WIDTH 11
78 #define SPACER_HEIGHT 5
79 #define SPACER_NOCONS_HEIGHT 15 // height of spacer at top of group (used if consensus is hidden and group is folded)
80 #define SEQUENCE_INFO_WIDTH 50 // default width of ED4_sequence_info_terminal (overridden via ref-terminal)
81 #define TREE_TERMINAL_WIDTH 100 // some default-width (used for ED4_line_terminal only; @@@ has no noteable effect)
82 
83 #define COLUMN_STAT_ROW_HEIGHT(font_height) (2.2*(font_height)) // each row contains 2 sub-rows (plus some xtra space)
84 #define COLUMN_STAT_ROWS 4
85 
86 #define MAX_POSSIBLE_SEQ_LENGTH 100000000
87 
88 #define MAXWINDOWS 5
89 
90 #define AWAR_EDIT_MODE "tmp/edit4/edit_mode"
91 #define AWAR_INSERT_MODE "tmp/edit4/insert_mode"
92 #define AWAR_EDIT_SECURITY_LEVEL "tmp/edit4/security_level"
93 #define AWAR_EDIT_SECURITY_LEVEL_ALIGN "tmp/edit4/security_level_align"
94 #define AWAR_EDIT_SECURITY_LEVEL_CHANGE "tmp/edit4/security_level_change"
95 #define AWAR_EDIT_CONFIGURATION "tmp/edit4/configuration"
96 
97 #define AWAR_EDIT_SEQ_POSITION "tmp/edit4/jump_to_position%d" // used to create ED4_window.awar_path_for_cursor[]
98 #define AWAR_EDIT_ECOLI_POSITION "tmp/edit4/cursor_ref_ecoli%d" // used to create ED4_window.awar_path_for_Ecoli[]
99 #define AWAR_EDIT_BASE_POSITION "tmp/edit4/cursor_to_basepos%d" // used to create ED4_window.awar_path_for_basePos[]
100 #define AWAR_EDIT_IUPAC "tmp/edit4/iupac%d" // used to create ED4_window.awar_path_for_IUPAC[]
101 #define AWAR_EDIT_HELIXNR "tmp/edit4/helixnr%d" // used to create ED4_window.awar_path_for_helixNr[]
102 
103 #define AWAR_FIELD_CHOSEN "tmp/edit4/field_chosen" // used for field selection box
104 
105 #define AWAR_EDIT_TITLE_MODE "edit4/title_mode"
106 #define AWAR_EDIT_HELIX_SPACING "edit4/helix_add_spacing"
107 #define AWAR_EDIT_TERMINAL_SPACING "edit4/terminal_add_spacing"
108 
109 #define CHARACTEROFFSET 5 // spacer-width left of text-terminal
110 
111 #define NAME_BUFFERSIZE 100 // size of buffer used to build terminal/manager IDs
112 
113 typedef long ED4_index;
114 
115 #define ED4_SCROLL_OVERLAP 20 // 15 Pixels overlap
116 
117 
118 enum ED4_level { // has to contain bit values
120  LEV_NONE = 0,
121  LEV_ROOT = 0x1,
122  LEV_DEVICE = 0x2,
123  LEV_AREA = 0x4,
125  LEV_SPECIES = 0x10,
127  LEV_SEQUENCE = 0x40,
128  LEV_TREE = 0x80,
132  LEV_ORF = 0x800,
133  LEV_SPACER = 0x1000,
134  LEV_LINE = 0x2000,
135  LEV_MULTI_NAME = 0x4000,
137  LEV_GROUP = 0x10000,
138  LEV_ROOTGROUP = 0x20000,
139  LEV_BRACKET = 0x40000,
140  LEV_PURE_TEXT = 0x80000,
141  LEV_COL_STAT = 0x100000,
142  LEV_FLAG_HEADER = 0x200000,
143  LEV_FLAG = 0x400000,
144 };
145 
149 };
150 
151 
157 };
158 
160  ED4_R_OK = 0,
165 };
166 
172 };
173 
180  PROP_DYNA_RESIZE = 0x10, // if set => allowed to resize dynamically (static_prop => object type is capable; auto-copied to dynamic_prop)
183  PROP_MOVABLE = 0x80,
184  PROP_IS_HANDLE = 0x100,
186  // PROP_ = 0x400,
187  // PROP_ = 0x800,
188  PROP_IS_FOLDED = 0x1000, // Flag whether group is folded or not
189  PROP_CONSENSUS_RELEVANT = 0x2000, // contains information relevant for consensus
190  PROP_ALIGNMENT_DATA = 0x4000, // contains aligned data (also SAIs)
191 };
192 
199 };
200 
202  ED4_U_UP = 0,
204 };
205 
210 };
211 
215 };
216 
225 };
226 
231 };
232 
233 
234 class ED4_base;
235 class ED4_terminal;
236 class ED4_species_name_terminal;
237 
239  ED4_base *object; // object to be moved
240  AW_pos end_x, end_y; // position to move to
241  ED4_movemode mode; // move mode
242  ED4_level preferred_parent; // level to move to
243 };
244 
246  ED4_species_name_terminal *object;
247 };
248 
249 
250 
251 struct ED4_extension { // contains info about graphical properties
252  AW_pos position[2]; // upper left corner (pos_x, pos_y) in relation to parent
253  // !!! WARNING: This is a hack!!! Every time you change 'position' you HAVE TO call ED4_base::touch_world_cache() !!!
254 
255  AW_pos size[2]; // width and height
256  ED4_index y_folded; // remember old position of consensus when folding group
257 
258  AW::Vector get_size() const { return AW::Vector(size[WIDTH], size[HEIGHT]); }
259  AW::Vector get_parent_offset() const { return AW::Vector(position[X_POS], position[Y_POS]); }
260 
261  bool set_size_does_change(int idx, AW_pos value) {
262  // returns true if changed
263  e4_assert(idx == WIDTH || idx == HEIGHT);
264  if (size[idx] != value) {
265  size[idx] = value;
266  return true;
267  }
268  return false;
269  }
270 
271 #if defined(IMPLEMENT_DUMP)
272  void dump(size_t indent) const;
273 #endif // IMPLEMENT_DUMP
274 };
275 
277  bool scroll;
278  long old_x;
279  long old_y;
280 
281  ED4_scroll_picture() : scroll(false), old_x(0), old_y(0) {}
282 };
283 
285  ED4_JUMP_CENTERED, // centers the cursor
286  ED4_JUMP_KEEP_VISIBLE, // keeps the cursor visible (keeps a fixed margin)
287  ED4_JUMP_KEEP_POSITION, // paint cursor at previous position
288 };
289 
290 struct ED4_update_info { // if you add new elements, please ensure to initialize them in ED4_base::ED4_base()
291  unsigned int resize : 1;
292  unsigned int refresh : 1;
293  unsigned int clear_at_refresh : 1;
294  unsigned int linked_to_folding_line : 1;
297  unsigned int refresh_vertical_scrolling : 1;
298  unsigned int delete_requested : 1;
299  unsigned int update_requested : 1;
300 
301  void set_clear_at_refresh(int value) {
302  clear_at_refresh = value;
303  }
304  void set_refresh(int value) {
305  refresh = value;
306  }
307  void set_resize(int value) {
308  resize = value;
309  }
310 
311 #if defined(IMPLEMENT_DUMP)
312  void dump(size_t indent) const;
313 #endif // IMPLEMENT_DUMP
314 };
315 
316 struct ED4_coords {
318  top_area_y,
320 
323 
324  window_width, // of whole window (top and middle area and ... )
325  window_height, // of whole window (top and middle area and ... )
326 
327  window_upper_clip_point, // absolute coordinate of upper visible clipping point in middle area
328  window_lower_clip_point, // absolute coordinate of lower visible clipping point in middle area
329  window_left_clip_point, // absolute coordinate of left visible clipping point in top and middle area
330  window_right_clip_point; // absolute coordinate of right visible clipping point in top and middle area
331 
332  void clear() {
333  top_area_x = 0;
334  top_area_y = 0;
335  top_area_height = 0;
336 
337  middle_area_x = 0;
338  middle_area_y = 0;
339 
340  window_width = 0;
341  window_height = 0;
342 
343  window_upper_clip_point = 0;
344  window_lower_clip_point = 0;
345  window_left_clip_point = 0;
346  window_right_clip_point = 0;
347  }
348 };
349 
350 #else
351 #error ed4_defs.hxx included twice
352 #endif
ED4_update_flag
Definition: ed4_defs.hxx:201
void set_resize(int value)
Definition: ed4_defs.hxx:307
ED4_movemode mode
Definition: ed4_defs.hxx:241
ED4_EDITMODE
Definition: ed4_defs.hxx:30
size_t not_found_counter
Definition: ED4_main.cxx:63
AW_pos size[2]
Definition: ed4_defs.hxx:255
ED4_direction
Definition: ed4_defs.hxx:227
long window_height
Definition: ed4_defs.hxx:317
bool DRAW
Definition: ED4_main.cxx:69
ED4_level preferred_parent
Definition: ed4_defs.hxx:242
int MAXNAME_WIDTH
Definition: ED4_main.cxx:57
ED4_datamode
Definition: ed4_defs.hxx:146
#define e4_assert(bed)
Definition: ed4_defs.hxx:22
#define Y_POS
Definition: ed4_defs.hxx:72
long top_area_height
Definition: ed4_defs.hxx:317
ED4_root * ED4_ROOT
Definition: ED4_main.cxx:49
ED4_AREA_LEVEL
Definition: ed4_defs.hxx:167
ED4_species_name_terminal * object
Definition: ed4_defs.hxx:246
ED4_movemode
Definition: ed4_defs.hxx:152
long ED4_counter
Definition: ED4_main.cxx:61
Definition: ed4_defs.hxx:245
AW::Vector get_size() const
Definition: ed4_defs.hxx:258
ED4_level
Definition: ed4_defs.hxx:118
double AW_pos
Definition: aw_base.hxx:29
ED4_consensus
Definition: ed4_defs.hxx:212
int ED4_COORDINATE
Definition: ed4_defs.hxx:26
int SEQ_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:54
unsigned int clear_at_refresh
Definition: ed4_defs.hxx:293
ED4_returncode
Definition: ed4_defs.hxx:159
long window_upper_clip_point
Definition: ed4_defs.hxx:317
ED4_index y_folded
Definition: ed4_defs.hxx:256
long window_lower_clip_point
Definition: ed4_defs.hxx:317
#define X_POS
Definition: ed4_defs.hxx:71
void set_refresh(int value)
Definition: ed4_defs.hxx:304
ED4_border_flag
Definition: ed4_defs.hxx:206
long top_area_y
Definition: ed4_defs.hxx:317
#define false
Definition: ureadseq.h:13
unsigned int linked_to_folding_line
Definition: ed4_defs.hxx:294
#define WIDTH
Definition: ed4_defs.hxx:73
ED4_aa_seq_flag
Definition: ed4_defs.hxx:217
int FLAG_WIDTH
Definition: ED4_main.cxx:59
bool set_size_does_change(int idx, AW_pos value)
Definition: ed4_defs.hxx:261
ED4_base * object
Definition: ed4_defs.hxx:239
unsigned int refresh_horizontal_scrolling
Definition: ed4_defs.hxx:296
GBS_strstruct * not_found_message
Definition: ED4_main.cxx:64
AW::Vector get_parent_offset() const
Definition: ed4_defs.hxx:259
unsigned int update_requested
Definition: ed4_defs.hxx:299
unsigned int delete_requested
Definition: ed4_defs.hxx:298
int TERMINAL_HEIGHT
Definition: ED4_main.cxx:51
long middle_area_y
Definition: ed4_defs.hxx:317
ED4_CursorJumpType
Definition: ed4_defs.hxx:284
AW_pos position[2]
Definition: ed4_defs.hxx:252
int MAXSEQUENCECHARACTERLENGTH
Definition: ED4_main.cxx:56
unsigned int refresh
Definition: ed4_defs.hxx:292
long window_width
Definition: ed4_defs.hxx:317
Definition: output.h:122
long awar_edit_rightward
Definition: ED4_main.cxx:68
long middle_area_x
Definition: ed4_defs.hxx:317
ED4_properties
Definition: ed4_defs.hxx:174
long window_right_clip_point
Definition: ed4_defs.hxx:317
AW_pos end_x
Definition: ed4_defs.hxx:240
long max_seq_terminal_length
Definition: ED4_main.cxx:66
unsigned int resize
Definition: ed4_defs.hxx:291
long top_area_x
Definition: ed4_defs.hxx:317
unsigned int refresh_vertical_scrolling
Definition: ed4_defs.hxx:297
void clear()
Definition: ed4_defs.hxx:332
AW_pos end_y
Definition: ed4_defs.hxx:240
ED4_cursor_move
Definition: ed4_defs.hxx:193
int INFO_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:53
long window_left_clip_point
Definition: ed4_defs.hxx:317
int MAXINFO_WIDTH
Definition: ED4_main.cxx:58
void set_clear_at_refresh(int value)
Definition: ed4_defs.hxx:301
ED4_EDITMODE awar_edit_mode
Definition: ED4_main.cxx:67
#define HEIGHT
Definition: ed4_defs.hxx:74
long ED4_index
Definition: ed4_defs.hxx:113
static Score ** U
Definition: align.cxx:67
unsigned int linked_to_scrolled_rectangle
Definition: ed4_defs.hxx:295