~ubuntu-branches/ubuntu/jaunty/texlive-bin/jaunty-security

« back to all changes in this revision

Viewing changes to build/TeX/libs/freetype2/src/pcf/pcfutil.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Preining
  • Date: 2008-06-26 23:14:59 UTC
  • mfrom: (2.1.30 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080626231459-y02rjsrgtafu83yr
Tags: 2007.dfsg.2-3
add missing source roadmap.fig of roadmap.eps in fontinst documentation
(Closes: #482915) (urgency medium due to RC bug)
(new patch add-missing-fontinst-source)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 
3
 
Copyright 1990, 1994, 1998  The Open Group
4
 
 
5
 
All Rights Reserved.
6
 
 
7
 
The above copyright notice and this permission notice shall be included in
8
 
all copies or substantial portions of the Software.
9
 
 
10
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
13
 
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
14
 
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
15
 
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
 
 
17
 
Except as contained in this notice, the name of The Open Group shall not be
18
 
used in advertising or otherwise to promote the sale, use or other dealings
19
 
in this Software without prior written authorization from The Open Group.
20
 
 
21
 
*/
22
 
/* $XFree86: xc/lib/font/util/utilbitmap.c,v 1.3 1999/08/22 08:58:58 dawes Exp $ */
23
 
 
24
 
/*
25
 
 * Author:  Keith Packard, MIT X Consortium
26
 
 */
27
 
 
28
 
 
29
 
#include <ft2build.h>
30
 
#include "pcfutil.h"
31
 
 
32
 
 
33
 
  /* Utility functions for reformatting font bitmaps */
34
 
 
35
 
  static const unsigned char  _reverse_byte[0x100] =
36
 
  {
37
 
    0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
38
 
    0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
39
 
    0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
40
 
    0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
41
 
    0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
42
 
    0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
43
 
    0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
44
 
    0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
45
 
    0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
46
 
    0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
47
 
    0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
48
 
    0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
49
 
    0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
50
 
    0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
51
 
    0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
52
 
    0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
53
 
    0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
54
 
    0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
55
 
    0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
56
 
    0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
57
 
    0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
58
 
    0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
59
 
    0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
60
 
    0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
61
 
    0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
62
 
    0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
63
 
    0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
64
 
    0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
65
 
    0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
66
 
    0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
67
 
    0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
68
 
    0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
69
 
  };
70
 
 
71
 
  /*
72
 
   *  Invert bit order within each BYTE of an array.
73
 
   */
74
 
 
75
 
  void
76
 
  BitOrderInvert( unsigned char*  buf,
77
 
                  int             nbytes )
78
 
  {
79
 
    const unsigned char*  rev = _reverse_byte;
80
 
 
81
 
 
82
 
    for ( ; --nbytes >= 0; buf++ )
83
 
      *buf = rev[*buf];
84
 
  }
85
 
 
86
 
 
87
 
  /*
88
 
   *  Invert byte order within each 16-bits of an array.
89
 
   */
90
 
 
91
 
  void
92
 
  TwoByteSwap( unsigned char*  buf,
93
 
               int             nbytes )
94
 
  {
95
 
    unsigned char  c;
96
 
 
97
 
 
98
 
    for ( ; nbytes > 0; nbytes -= 2, buf += 2 )
99
 
    {
100
 
      c      = buf[0];
101
 
      buf[0] = buf[1];
102
 
      buf[1] = c;
103
 
    }
104
 
  }
105
 
 
106
 
  /*
107
 
   *  Invert byte order within each 32-bits of an array.
108
 
   */
109
 
 
110
 
  void
111
 
  FourByteSwap( unsigned char*  buf,
112
 
                int             nbytes )
113
 
  {
114
 
    unsigned char  c;
115
 
 
116
 
 
117
 
    for ( ; nbytes > 0; nbytes -= 4, buf += 4 )
118
 
    {
119
 
      c      = buf[0];
120
 
      buf[0] = buf[3];
121
 
      buf[3] = c;
122
 
 
123
 
      c      = buf[1];
124
 
      buf[1] = buf[2];
125
 
      buf[2] = c;
126
 
    }
127
 
  }
128
 
 
129
 
 
130
 
  /*
131
 
   *  Repad a bitmap.
132
 
   */
133
 
 
134
 
  int
135
 
  RepadBitmap( char*         pSrc,
136
 
               char*         pDst,
137
 
               unsigned int  srcPad,
138
 
               unsigned int  dstPad,
139
 
               int           width,
140
 
               int           height )
141
 
  {
142
 
    int   srcWidthBytes, dstWidthBytes;
143
 
    int   row, col;
144
 
    char  *pTmpSrc, *pTmpDst;
145
 
 
146
 
 
147
 
    switch ( srcPad )
148
 
    {
149
 
    case 1:
150
 
      srcWidthBytes = ( width + 7 ) >> 3;
151
 
      break;
152
 
 
153
 
    case 2:
154
 
      srcWidthBytes = ( ( width + 15 ) >> 4 ) << 1;
155
 
      break;
156
 
 
157
 
    case 4:
158
 
      srcWidthBytes = ( ( width + 31 ) >> 5 ) << 2;
159
 
      break;
160
 
 
161
 
    case 8:
162
 
      srcWidthBytes = ( ( width + 63 ) >> 6 ) << 3;
163
 
      break;
164
 
 
165
 
    default:
166
 
      return 0;
167
 
    }
168
 
 
169
 
    switch ( dstPad )
170
 
    {
171
 
    case 1:
172
 
      dstWidthBytes = ( width + 7 ) >> 3;
173
 
      break;
174
 
 
175
 
    case 2:
176
 
      dstWidthBytes = ( ( width + 15 ) >> 4 ) << 1;
177
 
      break;
178
 
 
179
 
    case 4:
180
 
      dstWidthBytes = ( ( width + 31 ) >> 5 ) << 2;
181
 
      break;
182
 
 
183
 
    case 8:
184
 
      dstWidthBytes = ( ( width + 63 ) >> 6 ) << 3;
185
 
      break;
186
 
 
187
 
    default:
188
 
      return 0;
189
 
    }
190
 
 
191
 
    width = srcWidthBytes;
192
 
    if ( width > dstWidthBytes )
193
 
      width = dstWidthBytes;
194
 
 
195
 
    pTmpSrc= pSrc;
196
 
    pTmpDst= pDst;
197
 
 
198
 
    for ( row = 0; row < height; row++ )
199
 
    {
200
 
      for ( col = 0; col < width; col++ )
201
 
        *pTmpDst++ = *pTmpSrc++;
202
 
 
203
 
      while ( col < dstWidthBytes )
204
 
      {
205
 
        *pTmpDst++ = '\0';
206
 
        col++;
207
 
      }
208
 
      pTmpSrc += srcWidthBytes - width;
209
 
    }
210
 
 
211
 
    return dstWidthBytes * height;
212
 
  }
213
 
 
214
 
 
215
 
/* END */