~ubuntu-branches/ubuntu/raring/boxshade/raring-proposed

« back to all changes in this revision

Viewing changes to .pc/kickOutGets.patch/dv_rtf.c

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Tille, David Paleino, Andreas Tille
  • Date: 2011-01-14 08:27:01 UTC
  • Revision ID: james.westby@ubuntu.com-20110114082701-etwd13n9n7nz8h78
Tags: 3.3.1-5
[ David Paleino ]
* Removed myself from Uploaders

[ Andreas Tille ]
* debian/control
  - Standards-Version: 3.9.1 (no changes needed)
  - Debhelper 7
  - Fix spelling of Debian Med in maintainer address
* debian/rules: s/dh_clean -k/dh_prep/
* debian/source/format: 3.0 (quilt)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "dv_all.h"
 
2
 
 
3
/*----------------------------------------*/
 
4
/*   RTF  specific section                */
 
5
/*----------------------------------------*/
 
6
 
 
7
typedef struct rtfrecord {
 
8
  int bgnd, fgnd;
 
9
} rtfrecord;
 
10
 
 
11
static rtfrecord rtfrec[5];   /*RTF-specifics*/
 
12
static int rtfcell;
 
13
 
 
14
static void menu_rtf(rtfrecord *rtfrec, BOOL *lc, char *txt, char *parstring)
 
15
{
 
16
  char code;
 
17
  char instring[41];
 
18
 
 
19
  if (interactflag) {
 
20
    printf("\n-------------------------------------------------------------\n"
 
21
           "Enter the text attributes for printing of ***>%s<*** residues:\n", txt);
 
22
    printf("First choose the color/gray-value of the letter ***>background<***\n"
 
23
           "Different letters specify different colors,\n"
 
24
           "!! Background colors are not supported on most RTF-programs !!\n"
 
25
           "(R) red     (G) green   (B) blue   (C) cyan\n"
 
26
           "(M) magenta (Y) yellow  (K) black  (W) white\n"
 
27
           "(D) dark gray    (L) light gray\n\n"
 
28
           "choose from  RGBCMYKWDL ( * %c * ) : ", parstring[0]);
 
29
    Fgets(instring, 41, stdin);
 
30
  } else
 
31
    *instring = '\0';
 
32
  if (*instring == '\0')
 
33
    code = parstring[0];
 
34
  else
 
35
    code = instring[0];
 
36
  code = toupper(code);
 
37
  if (strchr("RGBCMYKWDL", code) == NULL)
 
38
    code = 'W';
 
39
  switch (code) {
 
40
    case 'R': rtfrec->bgnd = 2; break;
 
41
    case 'G': rtfrec->bgnd = 3; break;
 
42
    case 'B': rtfrec->bgnd = 4; break;
 
43
    case 'C': rtfrec->bgnd = 5; break;
 
44
    case 'M': rtfrec->bgnd = 6; break;
 
45
    case 'Y': rtfrec->bgnd = 7; break;
 
46
    case 'K': rtfrec->bgnd = 0; break;
 
47
    case 'W': rtfrec->bgnd = 1; break;
 
48
    case 'D': rtfrec->bgnd = 8; break;
 
49
    case 'L': rtfrec->bgnd = 9; break;
 
50
  }
 
51
  if (interactflag) {
 
52
    printf("\n\nNow choose the color/gray-value of the letter ***>foreground<***\n"
 
53
           "lowercase choices mean lowercase letters in the sequence:\n"
 
54
           "(R) red     (G) green   (B) blue   (C) cyan\n"
 
55
           "(M) magenta (Y) yellow  (K) black  (W) white\n"
 
56
           "(D) dark gray    (L) light gray\n\n"
 
57
           "choose from  RrGgBbCcMmYyKkWwDdLl ( * %c * ) : ", parstring[1]);
 
58
    Fgets(instring, 41, stdin);
 
59
  } else
 
60
    *instring = '\0';
 
61
  if (*instring == '\0')
 
62
    code = parstring[1];
 
63
  else
 
64
    code = instring[0];
 
65
  if (strchr("RGBCMYKWDL", code) == NULL)
 
66
    code = 'K';
 
67
  *lc = islower(code);
 
68
  code = toupper(code);
 
69
  switch (code) {
 
70
    case 'R': rtfrec->fgnd = 2; break;
 
71
    case 'G': rtfrec->fgnd = 3; break;
 
72
    case 'B': rtfrec->fgnd = 4; break;
 
73
    case 'C': rtfrec->fgnd = 5; break;
 
74
    case 'M': rtfrec->fgnd = 6; break;
 
75
    case 'Y': rtfrec->fgnd = 7; break;
 
76
    case 'K': rtfrec->fgnd = 0; break;
 
77
    case 'W': rtfrec->fgnd = 1; break;
 
78
    case 'D': rtfrec->fgnd = 8; break;
 
79
    case 'L': rtfrec->fgnd = 9; break;
 
80
  }
 
81
}
 
82
 
 
83
 
 
84
static void ask_rtf(void)
 
85
{
 
86
  char parstring[6];
 
87
  char instring[41];
 
88
 
 
89
  if (interactflag)
 
90
    printf("-------------------------------------------------------------\n");
 
91
 
 
92
  term_par("RTF");
 
93
  Fgets(parstring, 6, parfile);
 
94
  parstring[2] = '\0';
 
95
  menu_rtf(rtfrec, lc, "different", parstring);
 
96
  Fgets(parstring, 6, parfile);
 
97
  parstring[2] = '\0';
 
98
  menu_rtf(&rtfrec[1], &lc[1], "identical", parstring);
 
99
  Fgets(parstring, 6, parfile);
 
100
  parstring[2] = '\0';
 
101
  if (simflag)
 
102
    menu_rtf(&rtfrec[2], &lc[2], "similar", parstring);
 
103
  else {
 
104
    rtfrec[2] = rtfrec[0];
 
105
    lc[2] = lc[0];
 
106
  }
 
107
  Fgets(parstring, 6, parfile);
 
108
  parstring[2] = '\0';
 
109
  if (globalflag)
 
110
    menu_rtf(&rtfrec[3], &lc[3], "conserved", parstring);
 
111
  else {
 
112
    rtfrec[3] = rtfrec[1];
 
113
    lc[3] = lc[1];
 
114
  }
 
115
  rtfrec[4].bgnd = 1;
 
116
  rtfrec[4].fgnd = 0;
 
117
  lc[4] = FALSE;
 
118
  fscanf(parfile, "%d%*[^\n]", &rtfcell);
 
119
  getc(parfile);
 
120
  if (interactflag) {
 
121
    do {
 
122
      printf("Character size in Points ( * %2d * ) : ", rtfcell);
 
123
      Fgets(instring, 41, stdin);
 
124
      if (*instring != '\0')
 
125
        rtfcell = str2int((void *)instring);
 
126
    } while (rtfcell < 1 || rtfcell > 40);
 
127
  }
 
128
  if (!cloutflag) {
 
129
    printf("filename for RTF-output  : ");
 
130
    gets(outname);
 
131
  }
 
132
}
 
133
 
 
134
 
 
135
static void RTFinit(double *xpos, double *ypos) {
 
136
  dev_minx = 0.0;
 
137
  dev_miny = 1.0;
 
138
  dev_maxx = 10480.0;
 
139
  dev_maxy = 15000.0;
 
140
  dev_xsize = rtfcell * 120.0 / 10;
 
141
  dev_ysize = rtfcell * 20.0;
 
142
  *xpos = dev_minx;
 
143
  *ypos = dev_maxy;
 
144
  assert(outopen(&outfile, outname) != NULL);
 
145
  uwriteln(&outfile, "{\\rtf1\\ansi\\deff0");
 
146
  uwriteln(&outfile, "{\\fonttbl{\\f0\\fmodern Courier New;}}");
 
147
  uwriteln(&outfile, "{\\info{\\author BOXSHADE}}");
 
148
  uwriteln(&outfile, "{\\colortbl\n"
 
149
                     "\\red0\\green0\\blue0;"
 
150
                     "\\red255\\green255\\blue255;"
 
151
                     "\\red255\\green0\\blue0;"
 
152
                     "\\red0\\green255\\blue0;"
 
153
                     "\\red0\\green0\\blue255;"
 
154
                     "\\red0\\green255\\blue255;"
 
155
                     "\\red255\\green0\\blue255;"
 
156
                     "\\red255\\green255\\blue0;"
 
157
                     "\\red128\\green128\\blue128;"
 
158
                     "\\red192\\green192\\blue192;}");
 
159
  uwriteln(&outfile, "\\paperw11880\\paperh16820\\margl1000\\margr500");
 
160
  uwriteln(&outfile, "\\margt910\\margb910\\sectd\\cols1\\pard\\plain");
 
161
  uwriteln(&outfile, "\\fs%d", rtfcell * 2);
 
162
}
 
163
 
 
164
static void RTFsetcolor(int colno) {
 
165
  uwriteln(&outfile, "");
 
166
  fprintf(outfile.f, "\\highlight%d\\cf%d ",
 
167
                   rtfrec[colno].bgnd, rtfrec[colno].fgnd);
 
168
}
 
169
 
 
170
static void RTFcharout(char c, double *xpos, double *ypos) {
 
171
  putc(c, outfile.f);
 
172
  *xpos += dev_xsize;
 
173
}
 
174
 
 
175
static void RTFnewline(double *xpos, double *ypos) {
 
176
  uwriteln(&outfile, "\n\\highlight%d\\cf%d \\line",
 
177
                         rtfrec[0].bgnd, rtfrec[0].fgnd);
 
178
  *xpos = dev_minx;
 
179
  *ypos -= dev_ysize;
 
180
}
 
181
 
 
182
static void RTFnewpage(double *xpos, double *ypos) {
 
183
  uwriteln(&outfile, "\\page");
 
184
  *xpos = dev_minx;
 
185
  *ypos = dev_miny;
 
186
}
 
187
 
 
188
static void RTFexit(void) {
 
189
  uwriteln(&outfile, "}");
 
190
  if (outfile.f != NULL)
 
191
    fclose(outfile.f);
 
192
  outfile.f = NULL;
 
193
}
 
194
 
 
195
 
 
196
GraphicsDevice Rtf = {
 
197
  "RTF",
 
198
  ask_rtf,
 
199
  RTFinit,
 
200
  RTFsetcolor,
 
201
  RTFcharout,
 
202
  GenericStringOut,
 
203
  RTFnewline,
 
204
  RTFnewpage,
 
205
  RTFexit
 
206
};