File: seqscrl.c

package info (click to toggle)
ncbi-tools6 6.1.20170106%2Bdfsg1-0%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 464,012 kB
  • sloc: ansic: 1,474,200; pascal: 6,740; cpp: 6,248; xml: 3,390; sh: 1,979; perl: 1,084; csh: 508; makefile: 432; ruby: 93; lisp: 81
file content (136 lines) | stat: -rw-r--r-- 3,358 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <seqscrl.h>

extern SeqScrollDataPtr SeqScrollDataNew (Int4 scrnum)
{
  SeqScrollDataPtr  ssdp;
  Int4              i;

  if ((ssdp = (SeqScrollDataPtr) MemNew (sizeof (SeqScrollData))) != NULL)
  {
    ssdp->br = NULL;
    ssdp->pc = NULL;
    ssdp->curval = 0;
    ssdp->minval = 0;
    ssdp->maxval = 100;
    ssdp->bsp = NULL;
    ssdp->gvp = NULL;
    ssdp->scr = (FloatHiPtr) MemNew (sizeof (FloatHi) * scrnum);
    ssdp->res = (CharPtr) MemNew (sizeof (Char) * scrnum);
    ssdp->filtertype = 0;
    ssdp->next = NULL;
    for (i = 0; i < scrnum; i++)
    {
      ssdp->scr[i] = 0.0;
      ssdp->res[i] = ' ';
    }
  }
  return ssdp;
}

/* all pointers to structures are handled by others */

extern SeqScrollDataPtr SeqScrollDataFree (SeqScrollDataPtr ssdp)
{
  SeqScrollDataPtr snext;

  while (ssdp != NULL)
  {
    snext = ssdp->next;
    ssdp->next = NULL;
    ssdp->br = NULL;
    ssdp->pc = NULL;
    ssdp->bsp = NULL;
    ssdp->gvp = NULL;
    ssdp->scr = (FloatHiPtr) MemFree (ssdp->scr);
    ssdp->res = (CharPtr) MemFree (ssdp->res);
    (SeqScrollDataPtr) MemFree (ssdp);
    ssdp = snext;
  }
  return ssdp;
}

static void ScrollBarScrollProc (BaR b, GraphiC g, Int2 new, Int2 old)
{
  SeqScrollDataPtr  ssdp;
  Int2              curval;
  Char              buf[8];

  ssdp = (SeqScrollDataPtr) GetObjectExtra (b);
  if (ssdp == NULL || ssdp->pc == NULL)
    return;

  curval = (Int2) (((ssdp->maxval-ssdp->minval) - new) + ssdp->minval);
  sprintf (buf, "%3d", curval);
  SetTitle (ssdp->pc, buf);
  ssdp->curval = curval;
  return;
}

static void ScrollTextScrollProc (TexT t)
{
  SeqScrollDataPtr  ssdp;
  Int2              curval;
  Char              buf[8];

  ssdp = (SeqScrollDataPtr) GetObjectExtra (t);
  if (ssdp == NULL || ssdp->pc == NULL || ssdp->br == NULL)
    return;

  GetTitle (ssdp->pc, buf, sizeof (buf));
  StrToInt (buf, &curval);
  if (curval > ssdp->maxval)
    curval = ssdp->maxval;
  if (curval < ssdp->minval)
    curval = ssdp->minval;
/*
  sprintf (buf, "%3d", curval);
  SetTitle (ssdp->pc, buf);
*/
  CorrectBarValue (ssdp->br, (ssdp->maxval-ssdp->minval)
                                  -(curval-ssdp->minval));
  ssdp->curval = curval;
  return;
}

extern void TextScrollWindowNew (SeqScrollDataPtr ssdp, GrouP g)
{
  Char              buf[8];

  ssdp->pc = DialogText (g, "", 2, ScrollTextScrollProc);
  SetObjectExtra (ssdp->pc, ssdp, NULL);
  ssdp->br = ScrollBar (g, 0, 2, ScrollBarScrollProc);
  SetObjectExtra (ssdp->br, ssdp, NULL);
  CorrectBarMax (ssdp->br, ssdp->maxval-ssdp->minval);
  CorrectBarValue (ssdp->br, (ssdp->maxval-ssdp->minval)
                            -(ssdp->curval-ssdp->minval));
  sprintf (buf, "%3d", ssdp->curval);
  SetTitle (ssdp->pc, buf);
  return;
}

extern void AddScrollControl (SeqScrollDataPtr PNTR ssdp, GrouP g,
                              Int2 cur, Int2 min, Int2 max,
                              Int4 score_number)
{
  SeqScrollDataPtr  ssdpcur, ssdpnext;

  if ((ssdpnext = SeqScrollDataNew (score_number)) == NULL)
    return;
  ssdpnext->curval = cur;
  ssdpnext->minval = min;
  ssdpnext->maxval = max;
  TextScrollWindowNew (ssdpnext, g);

  if (*ssdp == NULL)
  {
    *ssdp = ssdpnext;
  }
  else
  {
    ssdpcur = *ssdp;
    while (ssdpcur->next != NULL)
      ssdpcur = ssdpcur->next;
    ssdpcur->next = ssdpnext;
  }
  return;
}