Statistics
| Revision:

svn-gvsig-desktop / tags / Root_CqCMSDvp / libraries / libCq CMS for java.old / src / org / cresques / px / dxf / DxfConvTexts.java @ 1732

History | View | Annotate | Download (3.07 KB)

1
/*
2
 * Created on 09-sep-2004
3
 *
4
 * TODO To change the template for this generated file go to
5
 * Window - Preferences - Java - Code Style - Code Templates
6
 */
7
package org.cresques.px.dxf;
8

    
9
import java.text.StringCharacterIterator;
10

    
11
/**
12
 * @author jmorell
13
 *
14
 * TODO To change the template for this generated type comment go to
15
 * Window - Preferences - Java - Code Style - Code Templates
16
 */
17
public class DxfConvTexts {
18
        public static String ConvertText(String s) {
19
                
20
        StringCharacterIterator stringcharacteriterator = new StringCharacterIterator(s);
21
        StringBuffer stringbuffer = new StringBuffer();
22
        int ai[] = new int[s.length()];
23
        int i = 0;
24
        int j = 0;
25
        for(char c = stringcharacteriterator.first(); c != '\uFFFF'; c = stringcharacteriterator.next())
26
            if(c == '%')
27
            {
28
                c = stringcharacteriterator.next();
29
                if(c != '%')
30
                {
31
                    stringbuffer.append('%');
32
                    c = stringcharacteriterator.previous();
33
                } else
34
                {
35
                    c = stringcharacteriterator.next();
36
                    switch(c)
37
                    {
38
                    case 37: // '%'
39
                        stringbuffer.append('%');
40
                        break;
41

    
42
                    case 80: // 'P'
43
                    case 112: // 'p'
44
                        stringbuffer.append('\361');
45
                        break;
46

    
47
                    case 67: // 'C'
48
                    case 99: // 'c'
49
                        stringbuffer.append('\355');
50
                        break;
51

    
52
                    case 68: // 'D'
53
                    case 100: // 'd'
54
                        stringbuffer.append('\u00b0');
55
                        break;
56

    
57
                    case 85: // 'U'
58
                    case 117: // 'u'
59
                        ai[stringbuffer.length()] ^= 1;
60
                        i++;
61
                        break;
62

    
63
                    case 79: // 'O'
64
                    case 111: // 'o'
65
                        ai[stringbuffer.length()] ^= 2;
66
                        j++;
67
                        break;
68

    
69
                    default:
70
                        if(c >= '0' && c <= '9')
71
                        {
72
                            int k = 3;
73
                            char c1 = (char)(c - 48);
74
                            for(c = stringcharacteriterator.next(); c >= '0' && c <= '9' && --k > 0; c = stringcharacteriterator.next())
75
                                c1 = (char)(10 * c1 + (c - 48));
76

    
77
                            stringbuffer.append(c1);
78
                        }
79
                        c = stringcharacteriterator.previous();
80
                        break;
81
                    }
82
                }
83
            } else
84
            if(c == '^')
85
            {
86
                c = stringcharacteriterator.next();
87
                if(c == ' ')
88
                    stringbuffer.append('^');
89
            } else
90
            {
91
                stringbuffer.append(c);
92
            }
93
        s = Unicode.char2DOS437(stringbuffer, 2, '?');
94

    
95
                
96
                String ss = s;
97
                return ss;
98
        }
99

    
100
}