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 move_cursor; // only needed for editing in consensus
63 extern bool DRAW;
64 
65 // globally used defines and flags
66 
67 #define INFINITE -1
68 
69 #define SLIDER_OFFSET 5
70 
71 // these are recommended for accessing ED4_extension:
72 #define X_POS 0
73 #define Y_POS 1
74 #define WIDTH 0
75 #define HEIGHT 1
76 
77 // size of some display elements:
78 #define BRACKET_WIDTH 11
79 #define SPACER_HEIGHT 5
80 #define SPACER_NOCONS_HEIGHT 15 // height of spacer at top of group (used if consensus is hidden and group is folded)
81 #define SEQUENCE_INFO_WIDTH 50 // default width of ED4_sequence_info_terminal (overridden via ref-terminal)
82 #define TREE_TERMINAL_WIDTH 100 // some default-width (used for ED4_line_terminal only; @@@ has no noteable effect)
83 
84 #define COLUMN_STAT_ROW_HEIGHT(font_height) (2.2*(font_height)) // each row contains 2 sub-rows (plus some xtra space)
85 #define COLUMN_STAT_ROWS 4
86 
87 #define MAX_POSSIBLE_SEQ_LENGTH 100000000
88 
89 #define MAXWINDOWS 5
90 
91 #define AWAR_EDIT_MODE "tmp/edit4/edit_mode"
92 #define AWAR_INSERT_MODE "tmp/edit4/insert_mode"
93 #define AWAR_EDIT_SECURITY_LEVEL "tmp/edit4/security_level"
94 #define AWAR_EDIT_SECURITY_LEVEL_ALIGN "tmp/edit4/security_level_align"
95 #define AWAR_EDIT_SECURITY_LEVEL_CHANGE "tmp/edit4/security_level_change"
96 #define AWAR_EDIT_CONFIGURATION "tmp/edit4/configuration"
97 
98 #define AWAR_EDIT_SEQ_POSITION "tmp/edit4/jump_to_position%d" // used to create ED4_window.awar_path_for_cursor[]
99 #define AWAR_EDIT_ECOLI_POSITION "tmp/edit4/cursor_ref_ecoli%d" // used to create ED4_window.awar_path_for_Ecoli[]
100 #define AWAR_EDIT_BASE_POSITION "tmp/edit4/cursor_to_basepos%d" // used to create ED4_window.awar_path_for_basePos[]
101 #define AWAR_EDIT_IUPAC "tmp/edit4/iupac%d" // used to create ED4_window.awar_path_for_IUPAC[]
102 #define AWAR_EDIT_HELIXNR "tmp/edit4/helixnr%d" // used to create ED4_window.awar_path_for_helixNr[]
103 
104 #define AWAR_FIELD_CHOSEN "tmp/edit4/field_chosen" // used for field selection box
105 
106 #define AWAR_EDIT_TITLE_MODE "edit4/title_mode"
107 #define AWAR_EDIT_HELIX_SPACING "edit4/helix_add_spacing"
108 #define AWAR_EDIT_TERMINAL_SPACING "edit4/terminal_add_spacing"
109 
110 #define CHARACTEROFFSET 5 // spacer-width left of text-terminal
111 
112 #define NAME_BUFFERSIZE 100 // size of buffer used to build terminal/manager IDs
113 
114 typedef long ED4_index;
115 
116 #define ED4_SCROLL_OVERLAP 20 // 15 Pixels overlap
117 
118 
119 enum ED4_level { // has to contain bit values
121  LEV_NONE = 0,
122  LEV_ROOT = 0x1,
123  LEV_DEVICE = 0x2,
124  LEV_AREA = 0x4,
126  LEV_SPECIES = 0x10,
128  LEV_SEQUENCE = 0x40,
129  LEV_TREE = 0x80,
133  LEV_ORF = 0x800,
134  LEV_SPACER = 0x1000,
135  LEV_LINE = 0x2000,
136  LEV_MULTI_NAME = 0x4000,
138  LEV_GROUP = 0x10000,
139  LEV_ROOTGROUP = 0x20000,
140  LEV_BRACKET = 0x40000,
141  LEV_PURE_TEXT = 0x80000,
142  LEV_COL_STAT = 0x100000,
143  LEV_FLAG_HEADER = 0x200000,
144  LEV_FLAG = 0x400000,
145 };
146 
150 };
151 
152 
158 };
159 
161  ED4_R_OK = 0,
166 };
167 
173 };
174 
181  PROP_DYNA_RESIZE = 0x10, // if set => allowed to resize dynamically (static_prop => object type is capable; auto-copied to dynamic_prop)
184  PROP_MOVABLE = 0x80,
185  PROP_IS_HANDLE = 0x100,
187  // PROP_ = 0x400,
188  // PROP_ = 0x800,
189  PROP_IS_FOLDED = 0x1000, // Flag whether group is folded or not
190  PROP_CONSENSUS_RELEVANT = 0x2000, // contains information relevant for consensus
191  PROP_ALIGNMENT_DATA = 0x4000, // contains aligned data (also SAIs)
192 };
193 
200 };
201 
203  ED4_U_UP = 0,
205 };
206 
211 };
212 
216 };
217 
226 };
227 
232 };
233 
234 
235 class ED4_base;
236 class ED4_terminal;
237 class ED4_species_name_terminal;
238 
240  ED4_base *object; // object to be moved
241  AW_pos end_x, end_y; // position to move to
242  ED4_movemode mode; // move mode
243  ED4_level preferred_parent; // level to move to
244 };
245 
251 
252  ED4_species_name_terminal *object;
253 };
254 
255 
256 
257 struct ED4_extension { // contains info about graphical properties
258  AW_pos position[2]; // upper left corner (pos_x, pos_y) in relation to parent
259  // !!! WARNING: This is a hack!!! Every time you change 'position' you HAVE TO call ED4_base::touch_world_cache() !!!
260 
261  AW_pos size[2]; // width and height
262  ED4_index y_folded; // remember old position of consensus when folding group
263 
264  AW::Vector get_size() const { return AW::Vector(size[WIDTH], size[HEIGHT]); }
265  AW::Vector get_parent_offset() const { return AW::Vector(position[X_POS], position[Y_POS]); }
266 
267  bool set_size_does_change(int idx, AW_pos value) {
268  // returns true if changed
269  e4_assert(idx == WIDTH || idx == HEIGHT);
270  if (size[idx] != value) {
271  size[idx] = value;
272  return true;
273  }
274  return false;
275  }
276 
277 #if defined(IMPLEMENT_DUMP)
278  void dump(size_t indent) const;
279 #endif // IMPLEMENT_DUMP
280 };
281 
283  bool scroll;
284  long old_x;
285  long old_y;
286 
287  ED4_scroll_picture() : scroll(false), old_x(0), old_y(0) {}
288 };
289 
291  ED4_JUMP_CENTERED, // centers the cursor
292  ED4_JUMP_KEEP_VISIBLE, // keeps the cursor visible (keeps a fixed margin)
293  ED4_JUMP_KEEP_POSITION, // paint cursor at previous position
294 };
295 
299  char *string; // pointer to consensus; only if editing the consensus
300  long char_position; // screen position after cursor
301 
302  bool rightward; // contains direction of editing (0 = leftward, 1 = rightward)
303 
305 
306  bool is_sequence; // ==1 -> special handling for sequences
307  bool cannot_handle; // if TRUE then cannot edit
308 
311 
312  long out_seq_position; // sequence position (after editing)
313 
314  char *out_string; // nur falls new malloc
315 
316  int repeat_count; // only for keystrokes: contains # of times key should be repeated
317 
318  ED4_terminal *working_terminal; // this contains the terminal
319 };
320 
321 
322 struct ED4_update_info { // if you add new elements, please ensure to initialize them in ED4_base::ED4_base()
323  unsigned int resize : 1;
324  unsigned int refresh : 1;
325  unsigned int clear_at_refresh : 1;
326  unsigned int linked_to_folding_line : 1;
329  unsigned int refresh_vertical_scrolling : 1;
330  unsigned int delete_requested : 1;
331  unsigned int update_requested : 1;
332 
333  void set_clear_at_refresh(int value) {
334  clear_at_refresh = value;
335  }
336  void set_refresh(int value) {
337  refresh = value;
338  }
339  void set_resize(int value) {
340  resize = value;
341  }
342 
343 #if defined(IMPLEMENT_DUMP)
344  void dump(size_t indent) const;
345 #endif // IMPLEMENT_DUMP
346 };
347 
348 struct ED4_coords {
350  top_area_y,
352 
355 
356  window_width, // of whole window (top and middle area and ... )
357  window_height, // of whole window (top and middle area and ... )
358 
359  window_upper_clip_point, // absolute coordinate of upper visible clipping point in middle area
360  window_lower_clip_point, // absolute coordinate of lower visible clipping point in middle area
361  window_left_clip_point, // absolute coordinate of left visible clipping point in top and middle area
362  window_right_clip_point; // absolute coordinate of right visible clipping point in top and middle area
363 
364  void clear() {
365  top_area_x = 0;
366  top_area_y = 0;
367  top_area_height = 0;
368 
369  middle_area_x = 0;
370  middle_area_y = 0;
371 
372  window_width = 0;
373  window_height = 0;
374 
375  window_upper_clip_point = 0;
376  window_lower_clip_point = 0;
377  window_left_clip_point = 0;
378  window_right_clip_point = 0;
379  }
380 };
381 
382 #else
383 #error ed4_defs.hxx included twice
384 #endif
ED4_update_flag
Definition: ed4_defs.hxx:202
void set_resize(int value)
Definition: ed4_defs.hxx:339
ED4_movemode mode
Definition: ed4_defs.hxx:242
ED4_EDITMODE
Definition: ed4_defs.hxx:30
size_t not_found_counter
Definition: ED4_main.cxx:62
ED4_terminal * working_terminal
Definition: ed4_defs.hxx:318
long char_position
Definition: ed4_defs.hxx:300
AW_pos size[2]
Definition: ed4_defs.hxx:261
ED4_EDITMODE mode
Definition: ed4_defs.hxx:304
ED4_direction
Definition: ed4_defs.hxx:228
long window_height
Definition: ed4_defs.hxx:349
bool DRAW
Definition: ED4_main.cxx:69
ED4_level preferred_parent
Definition: ed4_defs.hxx:243
int MAXNAME_WIDTH
Definition: ED4_main.cxx:56
ED4_datamode
Definition: ed4_defs.hxx:147
#define e4_assert(bed)
Definition: ed4_defs.hxx:22
char * out_string
Definition: ed4_defs.hxx:314
AW_pos drag_off_y
Definition: ed4_defs.hxx:247
ED4_species_name_terminal * object
Definition: ed4_defs.hxx:252
bool refresh_needed
Definition: ed4_defs.hxx:310
AW_pos actual_width
Definition: ed4_defs.hxx:249
#define Y_POS
Definition: ed4_defs.hxx:73
long top_area_height
Definition: ed4_defs.hxx:349
ED4_root * ED4_ROOT
Definition: ED4_main.cxx:48
ED4_AREA_LEVEL
Definition: ed4_defs.hxx:168
ED4_movemode
Definition: ed4_defs.hxx:153
long ED4_counter
Definition: ED4_main.cxx:60
bool cannot_handle
Definition: ed4_defs.hxx:307
AW::Vector get_size() const
Definition: ed4_defs.hxx:264
ED4_level
Definition: ed4_defs.hxx:119
double AW_pos
Definition: aw_base.hxx:29
ED4_consensus
Definition: ed4_defs.hxx:213
int ED4_COORDINATE
Definition: ed4_defs.hxx:26
int SEQ_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:53
unsigned int clear_at_refresh
Definition: ed4_defs.hxx:325
char * string
Definition: ed4_defs.hxx:299
ED4_returncode
Definition: ed4_defs.hxx:160
long window_upper_clip_point
Definition: ed4_defs.hxx:349
ED4_index y_folded
Definition: ed4_defs.hxx:262
bool is_sequence
Definition: ed4_defs.hxx:306
long window_lower_clip_point
Definition: ed4_defs.hxx:349
#define X_POS
Definition: ed4_defs.hxx:72
void set_refresh(int value)
Definition: ed4_defs.hxx:336
ED4_border_flag
Definition: ed4_defs.hxx:207
long top_area_y
Definition: ed4_defs.hxx:349
#define false
Definition: ureadseq.h:13
unsigned int linked_to_folding_line
Definition: ed4_defs.hxx:326
#define WIDTH
Definition: ed4_defs.hxx:74
AW_event event
Definition: ed4_defs.hxx:297
long out_seq_position
Definition: ed4_defs.hxx:312
ED4_aa_seq_flag
Definition: ed4_defs.hxx:218
int FLAG_WIDTH
Definition: ED4_main.cxx:58
bool set_size_does_change(int idx, AW_pos value)
Definition: ed4_defs.hxx:267
ED4_base * object
Definition: ed4_defs.hxx:240
unsigned int refresh_horizontal_scrolling
Definition: ed4_defs.hxx:328
GBS_strstruct * not_found_message
Definition: ED4_main.cxx:63
AW::Vector get_parent_offset() const
Definition: ed4_defs.hxx:265
unsigned int update_requested
Definition: ed4_defs.hxx:331
unsigned int delete_requested
Definition: ed4_defs.hxx:330
AW_pos drag_old_y
Definition: ed4_defs.hxx:248
int TERMINAL_HEIGHT
Definition: ED4_main.cxx:50
long middle_area_y
Definition: ed4_defs.hxx:349
Definition: ed4_defs.hxx:246
ED4_CursorJumpType
Definition: ed4_defs.hxx:290
AW_pos position[2]
Definition: ed4_defs.hxx:258
int MAXSEQUENCECHARACTERLENGTH
Definition: ED4_main.cxx:55
unsigned int refresh
Definition: ed4_defs.hxx:324
long window_width
Definition: ed4_defs.hxx:349
AW_pos drag_old_x
Definition: ed4_defs.hxx:248
AW_pos drag_off_x
Definition: ed4_defs.hxx:247
Definition: output.h:122
GBDATA * gb_data
Definition: ed4_defs.hxx:298
ED4_CursorJumpType cursor_jump
Definition: ed4_defs.hxx:309
long awar_edit_rightward
Definition: ED4_main.cxx:67
bool move_cursor
Definition: ED4_main.cxx:68
long middle_area_x
Definition: ed4_defs.hxx:349
ED4_properties
Definition: ed4_defs.hxx:175
long window_right_clip_point
Definition: ed4_defs.hxx:349
AW_pos end_x
Definition: ed4_defs.hxx:241
long max_seq_terminal_length
Definition: ED4_main.cxx:65
unsigned int resize
Definition: ed4_defs.hxx:323
long top_area_x
Definition: ed4_defs.hxx:349
unsigned int refresh_vertical_scrolling
Definition: ed4_defs.hxx:329
void clear()
Definition: ed4_defs.hxx:364
AW_pos end_y
Definition: ed4_defs.hxx:241
ED4_cursor_move
Definition: ed4_defs.hxx:194
int INFO_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:52
long window_left_clip_point
Definition: ed4_defs.hxx:349
int MAXINFO_WIDTH
Definition: ED4_main.cxx:57
void set_clear_at_refresh(int value)
Definition: ed4_defs.hxx:333
ED4_EDITMODE awar_edit_mode
Definition: ED4_main.cxx:66
#define HEIGHT
Definition: ed4_defs.hxx:75
int old_event_y
Definition: ed4_defs.hxx:250
AW_pos actual_height
Definition: ed4_defs.hxx:249
long ED4_index
Definition: ed4_defs.hxx:114
static Score ** U
Definition: align.cxx:67
unsigned int linked_to_scrolled_rectangle
Definition: ed4_defs.hxx:327