1 /*   fstyle.h
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *            National Center for Biotechnology Information (NCBI)
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government do not place any restriction on its use or reproduction.
13 *  We would, however, appreciate having the NCBI and the author cited in
14 *  any work or product based on this material
15 *
16 *  Although all reasonable efforts have been taken to ensure the accuracy
17 *  and reliability of the software and data, the NLM and the U.S.
18 *  Government do not and cannot warrant the performance or results that
19 *  may be obtained by using this software or data. The NLM and the U.S.
20 *  Government disclaim all warranties, express or implied, including
21 *  warranties of performance, merchantability or fitness for any particular
22 *  purpose.
23 *
24 * ===========================================================================
25 *
26 * File Name:  fstyle.h
27 *
28 * Author:  Sergei Egorov, Alex Smirnov
29 *
30 * Version Creation Date:   9/23/94
31 *
32 * $Revision: 6.1 $
33 *
34 * File Description:
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date     Name        Description of modification
39 * -------  ----------  -----------------------------------------------------
40 *
41 * ==========================================================================
42 */
43 
44 #ifndef _FSTYLE_
45 #define _FSTYLE_
46 
47 /**************************************************************************/
48 /* INCLUDE */
49 /**************************************************************************/
50 #include <objfdef.h>
51 #include <sequtil.h>
52 #include <ncbidraw.h>
53 
54 /**************************************************************************/
55 /* DEFINES */
56 /**************************************************************************/
57 /* Parameter types: */
58 #define MSM_TRUEFALSE  0  /*Nlm_Boolean*/
59 #define MSM_COLOR      1  /*Nlm_Int4 R<<16 | G<<8 | B*/
60 #define MSM_LTYPE      2  /*Nlm_Int1*/
61 #define MSM_SHADING    3  /*Nlm_Int1*/
62 #define MSM_PENWIDTH   4  /*Nlm_Int1*/
63 #define MSM_NUM        5  /*Nlm_Int2*/
64 #define MSM_STYLE      6  /*Nlm_Int4*/
65 #define MSM_FONT       7  /*Nlm_FonT*/
66 #define MSM_HEIGHT     8  /*Nlm_Int4*/
67 #define MSM_STRING     9  /*Nlm_CharPtr*/
68 #define MSM_SCALE     10  /*Nlm_Int4*/
69 
70 /* Parameter class may be any feature type ( see objfdef.h ) or
71 one of the following macros: */
72 #define MSM_TOPSTYLE          0 /* top style */
73 #define MSM_GROUPS           -1 /* groups of features */
74 #define MSM_ALIGNMENT        -2 /* alignment */
75 #define MSM_CCOLOR           -3 /* cycle colors */
76 #define MSM_SEQUENCE         -4 /* sequence */
77 #define MSM_EXTRA_GENBANK    -5 /* extra genbank record in the display */
78 #define MSM_EXTRA_MEDLINE    -6 /* extra medline record in the display */
79 #define MSM_EXTRA_BOTH       -7 /* extra medline record in the display */
80 
81 /* Table of parameters
82 -------------------------------------------------------------------------------
83   Class:   |  Subclass: | TRUEFALSE    | SHADING      | STYLE        | STRING |
84            |            |    | COLOR   |    | PENWIDTH|    | FONT    |    |SCA|
85            |            |    |    | LTYPE   |    | NUM|    |    | HEIGHT  |LE |
86 -------------------------------------------------------------------------------
87 Any feature| SEGMENT    |    | *  |    | *  |    |    | *1 |    | *  |    |   |
88 (objfdef.h)| SEG_BORD   | *  | *  | *  |    | *  |    |    |    |    |    |   |
89            | FGAP       |    | *  | *  |    | *  |    | *2 |    |    |    |   |
90            | FLABEL     |    | *  |    |    |    |    | *3 | *  | *  |    |   |
91            | FGROUP     |    |    |    |    |    | *4 |    |    |    |    |   |
92            | FORDER     |    |    |    |    |    | *5 |    |    |    |    |   |
93            |            |    |    |    |    |    |    |    |    |    |    |   |
94  Any extra | SEGMENT    |    | *  |    | *  |    |    | *1 |    | *  |    |   |
95            | SEG_BORD   | *  | *  | *  |    | *  |    |    |    |    |    |   |
96            | FGAP       |    | *  | *  |    | *  |    | *2 |    |    |    |   |
97            | FLABEL     |    | *  |    |    |    |    | *3 | *  | *  |    |   |
98            |            |    |    |    |    |    |    |    |    |    |    |   |
99  SEQUENCE  | SEGMENT    |    | *  |    | *  |    |    | *6 |    | *  |    |   |
100            | SEG_BORD   | *  | *  | *  |    | *  |    |    |    |    |    |   |
101            | SLABEL     |    | *  |    |    |    |    | *7 | *  | *  |    |   |
102            |            |    |    |    |    |    |    |    |    |    |    |   |
103  TOPSTYLE  | NOSUBCLASS |    |    |    |    |    |    | *8 |    |    |    |   |
104            | SPACE      |    |    |    |    |    |    |    |    | *9 |    |   |
105            | ENDS       |    |    |    |    |    |    |    |    |    |    | * |
106            | LABEL      |    |    |    |    |    | *10| *15|    |    |    |   |
107            |            |    |    |    |    |    |    |    |    |    |    |   |
108  GROUPS    | NOSUBCLASS | *  | *  |    |    |    | *11|    | *  | *  |    |   |
109            |<group_num> | *  |    |    |    |    | *12| *16|    |    | *13|   |
110            |            |    |    |    |    |    |    |    |    |    |    |   |
111  ALIGMENT  | NOSUBCLASS |    |    |    |    |    |    | *14|    |    |    | * |
112            | ALINE      |    | *  | *  |    | *  |    |    |    |    |    |   |
113            |            |    |    |    |    |    |    |    |    |    |    |   |
114  CCOLOR    | NOSUBCLASS |    |    |    |    |    | *  |    |    |    |    |   |
115            |<color_num> |    | *  |    |    |    |    |    |    |    |    |   |
116 -------------------------------------------------------------------------------
117 */
118 
119 /* Parametr subclasses: */
120 #define MSM_NOSUBCLASS 0  /* unnamed subclass */
121 #define MSM_SEGMENT    1  /* feature of sequence segment */
122 #define MSM_SEG_BORD   2  /* segment border */
123 #define MSM_FGAP       3  /* feature gap */
124 #define MSM_FLABEL     4  /* feature label */
125 #define MSM_FGROUP     5  /* feature group */
126 #define MSM_FORDER     6  /* feature order */
127 #define MSM_SLABEL     4  /* sequence label */
128 #define MSM_SPACE      1  /* space between ... */
129 #define MSM_ENDS       2  /* sequence/feature ends */
130 #define MSM_LABEL      4  /* style of label */
131 #define MSM_ALINE      1  /* the line style of for alignment displayed in
132                              the MSM_FIX style */
133 
134 /* (*1) - feature segment style */
135 #define MSM_SEG_FORM         0xF  /* form of seqment: */
136 #define MSM_SEG_BOX          0       /* box */
137 #define MSM_SEG_LINE         1       /* line */
138 #define MSM_SEG_SYM_RECT     2       /* symbol rectangle */
139 #define MSM_SEG_SYM_DIAMOND  3       /* symbol diamond */
140 #define MSM_SEG_SYM_OVAL     4       /* symbol oval */
141 #define MSM_SEG_SYM_TRIANGLE 5       /* symbol triangle */
142 #define MSM_SEG_END          0xF0 /* end of segment: */
143 #define MSM_SEG_SHOWORIENT   0x10    /* show orientation */
144 #define MSM_SEG_SHOWTRUNC    0x20    /* show trancation */
145 
146 /* (*2) - gap style */
147 #define MSM_GAP_NONE      0       /* gap invisible */
148 #define MSM_GAP_LINE      1       /* show gap as line */
149 #define MSM_GAP_ANGLE     2       /* show gap as angle */
150 
151 /* (*3) - label style */
152 #define MSM_LABEL_NONE    255     /* no lables */
153 #define MSM_LABEL_TYPE    0       /* show type */
154 #define MSM_LABEL_CONTENT 1       /* show content */
155 #define MSM_LABEL_BOTH    2       /* show type:content */
156 #define MSM_LABEL_SUMMARY 3       /* show summary */
157 
158 /* (*4) - feature order - feature order in the group */
159 
160 /* (*5) - feature group - feature group number */
161 
162 /* (*6) - sequence segment style likes feature segment style but
163  the segment form can not be a symbol ( box or line only ) */
164 
165 /*(*7) - label type for sequences ( see file sequtil.h
166  for PRINTID_ options) */
167 
168 /* (*8) - "top" style */
169 #define MSM_STACKGENE     0x1
170 #define MSM_HISTORY       0x2
171 #define MSM_SEGMENTS      0x4
172 
173 /* (*9) - space between features */
174 
175 /* (*10) - maximumstring lenght */
176 
177 /* (*11) - total number of groups */
178 
179 /* (*12) - order number */
180 
181 /* (*13) - group name */
182 
183 /*(*14) - the style for the alignment*/
184 #define MSM_SEQHIST	1  /*show alignment as a history of a sequence*/
185 #define MSM_MPAIR	   2  /*multiple pairwise*/
186 #define MSM_MDIM	   3  /*true multiple alignment*/
187 #define MSM_FIXED	   4  /*the fixed stype*/
188 
189 /* (*15) lable layout */
190 #define MSM_LABEL_TOP      0
191 #define MSM_LABEL_BOTTOM   1
192 #define MSM_LABEL_LEFT     2
193 #define MSM_LABEL_RIGHT    3
194 
195 /* (*16) group layout */
196 #define MSM_SPREAD         0
197 #define MSM_COMPRESS       1
198 
199 /**************************************************************************/
200 /* FUNCTION PROTOTYPES */
201 /**************************************************************************/
202 #ifdef __cplusplus
203 extern "C" {
204 #endif
205 
206 extern void   LIBCALL     Nlm_InitMuskStyles   (void);
207 extern void   LIBCALL     Nlm_ExitMuskStyles   (void);
208 extern void   LIBCALL     Nlm_MuskStyleManager (void);
209 extern BigScalar   Nlm_GetMuskCParam    (Nlm_Int2 p_class, Nlm_Int2 p_subclass,
210                                          Nlm_Int2 p_type);
211 extern Nlm_Int2    Nlm_GetMuskTotalSt   (void);
212 extern Nlm_CharPtr Nlm_GetMuskStyleName (Nlm_Int2 styleNum);
213 extern Nlm_Int2    Nlm_GetMuskCurrentSt (void);
214 extern void        Nlm_SetMuskCurrentSt (Nlm_CharPtr name);
215 
216 extern Nlm_Int2    Nlm_CopyMuskStyle    (Nlm_CharPtr name, Nlm_Int2 styleNum);
217 extern Boolean     Nlm_DeleteMuskStyle  (Nlm_Int2 styleNum);
218 extern Boolean     Nlm_EditMuskStyle    (Nlm_Int2 styleNum);
219 extern void        Nlm_SetMuskCParamEd  (Nlm_Int2 p_class, Nlm_Int2 p_subclass,
220                                          Nlm_Int2 p_type, BigScalar val );
221 extern BigScalar   Nlm_GetMuskCParamEd  (Nlm_Int2 p_class, Nlm_Int2 p_subclass,
222                                          Nlm_Int2 p_type);
223 extern void        Nlm_FreeMuskStyleEd  (Nlm_Boolean save);
224 extern Nlm_FonT        Nlm_LoadMuskFont     ( Nlm_FontSpecPtr fsp, Int2 fnum, Int2Ptr fsize);
225 
226 #ifdef __cplusplus
227 }
228 #endif
229 
230 /**************************************************************************/
231 /* FUNCTION NAME DEFINITION */
232 /**************************************************************************/
233 #define InitMuskStyles    Nlm_InitMuskStyles
234 #define ExitMuskStyles    Nlm_ExitMuskStyles
235 #define MuskStyleManager  Nlm_MuskStyleManager
236 #define GetMuskCParam     Nlm_GetMuskCParam
237 #define GetMuskTotalSt    Nlm_GetMuskTotalSt
238 #define GetMuskStyleName  Nlm_GetMuskStyleName
239 #define GetMuskCurrentSt  Nlm_GetMuskCurrentSt
240 #define SetMuskCurrentSt  Nlm_SetMuskCurrentSt
241 
242 #endif /* _FSTYLE_ */
243 
244 /*END*/
245