source: branches/profile/PROBE_DESIGN/SaiProbeVisualization.hxx

Last change on this file was 11126, checked in by westram, 10 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1#ifndef SAIPROBEVISUALIZATION_HXX
2#define SAIPROBEVISUALIZATION_HXX
3
4#ifndef _GLIBCXX_CCTYPE
5#include <cctype>
6#endif
7#ifndef _GLIBCXX_VECTOR
8#include <vector>
9#endif
10#ifndef AWT_CANVAS_HXX
11#include <awt_canvas.hxx>
12#endif
13
14#define sai_assert(cond) arb_assert(cond)
15
16#define AWAR_SPV_SAI_2_PROBE "sai_visualize/sai_2_probe"
17#define AWAR_SPV_DISP_SAI    "sai_visualize/disp_sai"
18#define AWAR_SPV_SAI_COLOR   "sai_visualize/probeSai/color_0"
19
20#define AWAR_SPV_DB_FIELD_NAME   "sai_visualize/db_field_name"
21#define AWAR_SPV_DB_FIELD_WIDTH  "sai_visualize/db_field_width"
22#define AWAR_SPV_ACI_COMMAND     "sai_visualize/aci_command"
23#define AWAR_SPV_SELECTED_PROBE  "sai_visualize/selected_probe"
24
25#define SAI_CLR_COUNT 10
26
27enum {
28    PROBE,
29    PROBE_PREFIX,
30    PROBE_SUFFIX
31};
32
33enum {
34    SAI_GC_HIGHLIGHT,  SAI_GC_HIGHLIGHT_FONT  = SAI_GC_HIGHLIGHT,
35    SAI_GC_FOREGROUND, SAI_GC_FOREGROUND_FONT = SAI_GC_FOREGROUND,
36    SAI_GC_PROBE,      SAI_GC_PROBE_FONT      = SAI_GC_PROBE,
37
38    SAI_GC_0,  SAI_GC_1,  SAI_GC_2,  SAI_GC_3,  SAI_GC_4,
39    SAI_GC_5,  SAI_GC_6,  SAI_GC_7,  SAI_GC_8,  SAI_GC_9,
40
41    SAI_GC_MAX
42};
43
44// global data for interaction with probe match result list:
45
46class saiProbeData : virtual Noncopyable {
47    char   *probeTarget;
48    size_t  probeTargetLen;
49    char   *headline;           // needed for ProbeMatchParser
50
51public:
52
53    std::vector<const char*> probeSpecies;
54    std::vector<const char*> probeSeq;
55
56    saiProbeData() : probeTarget(strdup("<notarget>")), probeTargetLen(0), headline(0) {}
57    ~saiProbeData() {
58        free(probeTarget);
59        free(headline);
60    }
61
62    const char *getProbeTarget() const {
63        sai_assert(probeTarget); // always need a target
64        return probeTarget;
65    }
66    size_t getProbeTargetLen() const {
67        return probeTargetLen;
68    }
69    const char *getHeadline() const { return headline; }
70
71    void setProbeTarget(const char *target) {
72        sai_assert(target);
73        free(probeTarget);
74        unsigned int len = strlen(target);
75        char temp[len]; temp[len] = '\0';
76        for (unsigned int i = 0; i < len; i++) {
77            temp[i] = toupper(target[i]);  // converting the Bases to Upper case
78        }
79        probeTarget    = strdup(temp);
80        probeTargetLen = strlen(probeTarget);
81    }
82    void setHeadline(const char *hline) {
83        sai_assert(hline);
84        freedup(headline, hline);
85    }
86};
87
88struct SAI_graphic : public AWT_nonDB_graphic, virtual Noncopyable {
89    GBDATA     *gb_main;
90    AW_root    *aw_root;
91
92    SAI_graphic(AW_root *aw_root, GBDATA *gb_main);
93    ~SAI_graphic() OVERRIDE;
94
95    AW_gc_manager init_devices(AW_window *, AW_device *, AWT_canvas *scr) OVERRIDE;
96
97    void show(AW_device *device) OVERRIDE;
98    void info(AW_device *device, AW_pos x, AW_pos y, AW_clicked_line *cl, AW_clicked_text *ct) OVERRIDE;
99    void handle_command(AW_device *device, AWT_graphic_event& event) OVERRIDE;
100    void paint(AW_device *device);
101
102};
103
104AW_window *createSaiProbeMatchWindow(AW_root *awr, GBDATA *gb_main);
105void transferProbeData(saiProbeData *spd);
106
107#else
108#error SaiProbeVisualization.hxx included twice
109#endif
110
Note: See TracBrowser for help on using the repository browser.