1 5 6 package org.w3c.tidy; 7 8 33 34 import java.io.IOException ; 35 36 public class OutImpl extends Out 37 { 38 39 public OutImpl() 40 { 41 this.out = null; 42 } 43 44 public void outc(byte c) { 45 outc(((int)c) & 0xFF); } 47 48 49 public void outc(int c) 50 { 51 int ch; 52 53 try { 54 if (this.encoding == Configuration.UTF8) 55 { 56 if (c < 128) 57 this.out.write(c); 58 else if (c <= 0x7FF) 59 { 60 ch = (0xC0 | (c >> 6)); this.out.write(ch); 61 ch = (0x80 | (c & 0x3F)); this.out.write(ch); 62 } 63 else if (c <= 0xFFFF) 64 { 65 ch = (0xE0 | (c >> 12)); this.out.write(ch); 66 ch = (0x80 | ((c >> 6) & 0x3F)); this.out.write(ch); 67 ch = (0x80 | (c & 0x3F)); this.out.write(ch); 68 } 69 else if (c <= 0x1FFFFF) 70 { 71 ch = (0xF0 | (c >> 18)); this.out.write(ch); 72 ch = (0x80 | ((c >> 12) & 0x3F)); this.out.write(ch); 73 ch = (0x80 | ((c >> 6) & 0x3F)); this.out.write(ch); 74 ch = (0x80 | (c & 0x3F)); this.out.write(ch); 75 } 76 else 77 { 78 ch = (0xF8 | (c >> 24)); this.out.write(ch); 79 ch = (0x80 | ((c >> 18) & 0x3F)); this.out.write(ch); 80 ch = (0x80 | ((c >> 12) & 0x3F)); this.out.write(ch); 81 ch = (0x80 | ((c >> 6) & 0x3F)); this.out.write(ch); 82 ch = (0x80 | (c & 0x3F)); this.out.write(ch); 83 } 84 } 85 else if (this.encoding == Configuration.ISO2022) 86 { 87 if (c == 0x1b) 88 this.state = StreamIn.FSM_ESC; 89 else 90 { 91 switch (this.state) 92 { 93 case StreamIn.FSM_ESC: 94 if (c == '$') 95 this.state = StreamIn.FSM_ESCD; 96 else if (c == '(') 97 this.state = StreamIn.FSM_ESCP; 98 else 99 this.state = StreamIn.FSM_ASCII; 100 break; 101 102 case StreamIn.FSM_ESCD: 103 if (c == '(') 104 this.state = StreamIn.FSM_ESCDP; 105 else 106 this.state = StreamIn.FSM_NONASCII; 107 break; 108 109 case StreamIn.FSM_ESCDP: 110 this.state = StreamIn.FSM_NONASCII; 111 break; 112 113 case StreamIn.FSM_ESCP: 114 this.state = StreamIn.FSM_ASCII; 115 break; 116 117 case StreamIn.FSM_NONASCII: 118 c &= 0x7F; 119 break; 120 } 121 } 122 123 this.out.write(c); 124 } 125 else 126 this.out.write(c); 127 } 128 catch (IOException e) { 129 System.err.println("OutImpl.outc: " + e.toString()); 130 } 131 } 132 133 public void newline() 134 { 135 try { 136 this.out.write(nlBytes); 137 this.out.flush(); 138 } 139 catch (IOException e) { 140 System.err.println("OutImpl.newline: " + e.toString()); 141 } 142 } 143 144 private static final byte[] nlBytes = 145 (System.getProperty("line.separator")).getBytes(); 146 147 }; 148 149 | Popular Tags |