275 lines
6.8 KiB
C
275 lines
6.8 KiB
C
|
/*
|
||
|
|
||
|
Copyright (c) 1990,1991,1992 Steven Smith at the Harvard Genome Laboratory.
|
||
|
All rights reserved.
|
||
|
*/
|
||
|
|
||
|
#include <xview/font.h>
|
||
|
#include <xview/scrollbar.h>
|
||
|
#include <xview/xview.h>
|
||
|
|
||
|
#define TRUTH 1
|
||
|
#define JUSTICE 2
|
||
|
#define BEAUTY 3
|
||
|
|
||
|
/*
|
||
|
* Edit modes
|
||
|
*/
|
||
|
|
||
|
#define INSERT 0
|
||
|
#define CHECK 1
|
||
|
|
||
|
/*
|
||
|
* Cursor directions
|
||
|
*/
|
||
|
#define RIGHT 1
|
||
|
#define LEFT 0
|
||
|
#define UP 0
|
||
|
#define DOWN 1
|
||
|
|
||
|
#ifndef TRUE
|
||
|
#define TRUE 1
|
||
|
#define FALSE 0
|
||
|
#endif
|
||
|
|
||
|
#define GBUFSIZ 512
|
||
|
#define MAX_NA_DISPLAY_WIDTH 1024
|
||
|
#define MAX_NA_DISPLAY_HEIGHT 1024
|
||
|
#define MAX_STARTUP_CANVAS_HEIGHT 512
|
||
|
#define grey_height 8
|
||
|
#define grey_width 8
|
||
|
|
||
|
/*
|
||
|
* Definable dialog types
|
||
|
*/
|
||
|
#define TEXTFIELD 0x1
|
||
|
#define SLIDER 0x2
|
||
|
#define CHOOSER 0x3
|
||
|
#define CHOICE_MENU 0x4
|
||
|
#define CHOICE_LIST 0x5
|
||
|
|
||
|
/*
|
||
|
* File Formats
|
||
|
*/
|
||
|
#define GDE 0x100
|
||
|
#define GENBANK 0x101
|
||
|
#define NA_FLAT 0x102
|
||
|
#define COLORMASK 0x103
|
||
|
#define STATUS_FILE 0x104
|
||
|
|
||
|
/*
|
||
|
* Protection bits
|
||
|
*/
|
||
|
|
||
|
#define PROT_BASE_CHANGES 0x1 /* Allow base changes */
|
||
|
#define PROT_GREY_SPACE 0x2 /* Allow greyspace modification */
|
||
|
#define PROT_WHITE_SPACE 0x4 /* Allow whitespace modification */
|
||
|
#define PROT_TRANSLATION 0x8 /* Allow translation */
|
||
|
#define PROT_REORIENTATION 0x10 /* Allow reorientation */
|
||
|
|
||
|
|
||
|
/*
|
||
|
* File loading methods (must be 'OR/AND' able)
|
||
|
*/
|
||
|
|
||
|
#define NONE 0x0
|
||
|
#define DESTROY 0x1
|
||
|
#define LOAD 0x2
|
||
|
#define SAVE 0x4
|
||
|
#define SELECTED 0x8
|
||
|
#define ALL 0x10
|
||
|
#define SELECT_REGION 0x20
|
||
|
#define SELECT_ONE 0x30
|
||
|
|
||
|
/*
|
||
|
* Sequence DISPLAY Types
|
||
|
*/
|
||
|
#define NASEQ_ALIGN 0x201
|
||
|
#define NASEQ 0x202
|
||
|
|
||
|
/*
|
||
|
* Sequence Data Types
|
||
|
*/
|
||
|
#define DNA 0x300
|
||
|
#define RNA 0x301
|
||
|
#define TEXT 0x302
|
||
|
#define MASK 0x303
|
||
|
#define PROTEIN 0x304
|
||
|
/*
|
||
|
* extended sequence attributes (true/false)
|
||
|
*/
|
||
|
|
||
|
#define IS_5_TO_3 0x01 /* 5prime to 3 prime */
|
||
|
#define IS_3_TO_5 0x02 /* 3 prime to 5 prime */
|
||
|
#define IS_CIRCULAR 0x04 /* circular dna */
|
||
|
#define IS_PRIMARY 0x10 /* on the primary strand */
|
||
|
#define IS_SECONDARY 0x20 /* on the secondary strand */
|
||
|
#define IS_MODIFIED 0x40 /* modification flag */
|
||
|
#define IS_ORIG_PRIMARY 0x80 /* Original sequence was primary */
|
||
|
#define IS_ORIG_SECONDARY 0x100 /* Original sequence was secondary */
|
||
|
#define IS_ORIG_5_TO_3 0x200 /* Original sequence was 5_to_3 */
|
||
|
#define IS_ORIG_3_TO_5 0x400 /* Original sequence was 3_to_5 */
|
||
|
|
||
|
#ifdef HGL
|
||
|
#define DEFAULT_X_ATTR 0
|
||
|
#else
|
||
|
#define DEFAULT_X_ATTR IS_5_TO_3+IS_PRIMARY;
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Other display attributed
|
||
|
*/
|
||
|
#define INVERTED 1
|
||
|
#define VSCROLL_LOCK 2
|
||
|
#define KEYCLICKS 4
|
||
|
#define GDE_MESSAGE_PANEL 8
|
||
|
|
||
|
/*
|
||
|
* Coloring Methods
|
||
|
*/
|
||
|
#define COLOR_MONO 0x40 /* no color, simple black and white */
|
||
|
#define COLOR_LOOKUP 0x41 /* Use a simple value->color lookup */
|
||
|
#define COLOR_ALN_MASK 0x42 /* The alignment has a column by column color
|
||
|
mask associated with it */
|
||
|
#define COLOR_SEQ_MASK 0x43 /* Each sequence has a color mask*/
|
||
|
#define COLOR_STRAND 0x44 /* Color based on original strandedness*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Data types
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int *valu;
|
||
|
} NumList;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
int yy;
|
||
|
int mm;
|
||
|
int dd;
|
||
|
int hr;
|
||
|
int mn;
|
||
|
int sc;
|
||
|
} origin,modify;
|
||
|
} TimeStamp;
|
||
|
|
||
|
typedef unsigned char NA_Base;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
char *name;
|
||
|
int type;
|
||
|
NumList *list;
|
||
|
int listlen;
|
||
|
int maxlen;
|
||
|
} GMask;
|
||
|
|
||
|
|
||
|
typedef struct NA_SeqStruct
|
||
|
{
|
||
|
char id[80]; /* sequence id (ACCESSION)*/
|
||
|
char seq_name[80]; /* Sequence name (ORGANISM) */
|
||
|
char short_name[32]; /* Name (LOCUS) */
|
||
|
char barcode[80];
|
||
|
char contig[80];
|
||
|
char membrane[80];
|
||
|
char description[80]; /* Description (DEFINITION)*/
|
||
|
char authority[80]; /* Author (or creator) */
|
||
|
char *comments; /* Stuff we can't parse */
|
||
|
int comments_len, comments_maxlen;
|
||
|
|
||
|
NA_Base *sequence; /* List of bases */
|
||
|
TimeStamp t_stamp; /* Time stamp of origin/modification */
|
||
|
Mask *mask; /* List of masks(analysis/display) */
|
||
|
int offset; /* offset into alignment (left white)
|
||
|
space */
|
||
|
int seqlen; /* Number of elements in sequence[] */
|
||
|
int seqmaxlen; /* Size sequence[] (for mem alloc) */
|
||
|
unsigned int protect; /* Protection mask */
|
||
|
int attr; /* Extended attributes */
|
||
|
int groupid; /* group id */
|
||
|
int *col_lut; /* character to color LUT */
|
||
|
struct NA_SeqStruct *groupb; /* Group link backward */
|
||
|
struct NA_SeqStruct *groupf; /* Group link forward */
|
||
|
int *cmask; /* color mask */
|
||
|
int selected; /* Selection flag */
|
||
|
int subselected; /* Sub selection flag */
|
||
|
int format; /* default file format */
|
||
|
int elementtype; /* what type of data are being aligned*/
|
||
|
char *baggage; /* unformatted comments*/
|
||
|
int baggage_len,
|
||
|
baggage_maxlen;
|
||
|
int *tmatrix; /* translation matrix (code->char) */
|
||
|
int *rmatrix; /* reverse translation matrix
|
||
|
(char->code)*/
|
||
|
} NA_Sequence;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
char *id; /* Alignment ID */
|
||
|
char *description; /* Description of the alignment*/
|
||
|
char *authority; /* Who generated the alignment*/
|
||
|
int *cmask; /* color mask */
|
||
|
int cmask_offset; /* color mask offset */
|
||
|
int cmask_len; /* color mask length */
|
||
|
int ref; /* reference sequence */
|
||
|
int numelements; /* number of data elements */
|
||
|
int maxnumelements; /* maximum number of data elements */
|
||
|
int nummasks; /* number of masks */
|
||
|
int maxlen; /* Maximum length of alignment */
|
||
|
int rel_offset; /* add this to every sequence offset */
|
||
|
/* to orient it back to 0 */
|
||
|
Mask *mask; /* masks */
|
||
|
NA_Sequence *element; /* alignment elements */
|
||
|
int numgroups; /* number of groups */
|
||
|
NA_Sequence **group; /* link to array of pointers into
|
||
|
each group */
|
||
|
char *na_ddata; /* display data */
|
||
|
int format; /* default file format */
|
||
|
char *selection_mask; /* Sub sequence selection mask */
|
||
|
int selection_mask_len; /* Sub selection mask length */
|
||
|
int min_subselect; /* Leftmost coord of selection mask */
|
||
|
} NA_Alignment;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int font_dx; /* width of a character in this font*/
|
||
|
int font_dy; /* height of a character in this font*/
|
||
|
int wid,ht; /* width and height of edit win (in
|
||
|
characters */
|
||
|
int top_seq; /* Top sequence index shown */
|
||
|
int lft_pos; /* Leftmost column (in alignment
|
||
|
position coords) */
|
||
|
int color_type; /* Method of manipulating colors
|
||
|
(See above) */
|
||
|
int depth; /* number of color bits available */
|
||
|
int num_colors; /* Actual number of colors used */
|
||
|
int *palette; /* palette for display */
|
||
|
int *col_lut; /* character to color LUT */
|
||
|
int black,white; /* color indicies for blk,wht */
|
||
|
int cursor_x,cursor_y; /* Current cursor positions */
|
||
|
int position; /* Current position minus whitespace */
|
||
|
int *jumptbl; /* the jump table for fast access
|
||
|
into the sequence data */
|
||
|
int jtsize; /* its length */
|
||
|
NA_Alignment *aln; /* Pointer to the actual data set
|
||
|
(the alignment */
|
||
|
Xv_font font; /* The default font */
|
||
|
Canvas seq_can,nam_can; /* ties to the canvas for screen
|
||
|
updates. */
|
||
|
Window seq_x,nam_x; /* X versions of the above */
|
||
|
int use_repeat; /* Number keys set repeat count*/
|
||
|
|
||
|
} NA_DisplayData;
|
||
|
|
||
|
|
||
|
#define getcmask(a,b) (b < ((a)->offset))?0:((a)->cmask[(b-(a)->offset)])
|
||
|
|
||
|
#include "functions.h"
|