source: josm/trunk/src/com/kitfox/svg/xml/Base64OutputStream.java@ 6002

Last change on this file since 6002 was 6002, checked in by Don-vip, 11 years ago

fix #8742 - update svgsalamander to release 0.1.18+patch (fix bug SVGSALAMANDER-26) -> allow to open more SVG files

  • Property svn:executable set to *
File size: 3.5 KB
Line 
1/*
2 * SVG Salamander
3 * Copyright (c) 2004, Mark McKay
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
9 *
10 * - Redistributions of source code must retain the above
11 * copyright notice, this list of conditions and the following
12 * disclaimer.
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials
16 * provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
29 * OF THE POSSIBILITY OF SUCH DAMAGE.
30 *
31 * Mark McKay can be contacted at mark@kitfox.com. Salamander and other
32 * projects can be found at http://www.kitfox.com
33 */
34
35package com.kitfox.svg.xml;
36
37import java.io.FilterOutputStream;
38import java.io.IOException;
39import java.io.OutputStream;
40
41/**
42 *
43 * @author kitfox
44 */
45public class Base64OutputStream extends FilterOutputStream
46{
47 int buf;
48 int numBytes;
49 int numChunks;
50
51 public Base64OutputStream(OutputStream out)
52 {
53 super(out);
54 }
55
56 public void flush() throws IOException
57 {
58 out.flush();
59 }
60
61 public void close() throws IOException
62 {
63 switch (numBytes)
64 {
65 case 1:
66 buf <<= 4;
67 out.write(getBase64Byte(1));
68 out.write(getBase64Byte(0));
69 out.write('=');
70 out.write('=');
71 break;
72 case 2:
73 buf <<= 2;
74 out.write(getBase64Byte(2));
75 out.write(getBase64Byte(1));
76 out.write(getBase64Byte(0));
77 out.write('=');
78 break;
79 case 3:
80 out.write(getBase64Byte(3));
81 out.write(getBase64Byte(2));
82 out.write(getBase64Byte(1));
83 out.write(getBase64Byte(0));
84 break;
85 default:
86 assert false;
87 }
88
89 out.close();
90 }
91
92 public void write(int b) throws IOException
93 {
94 buf = (buf << 8) | (0xff & b);
95 numBytes++;
96
97 if (numBytes == 3)
98 {
99 out.write(getBase64Byte(3));
100 out.write(getBase64Byte(2));
101 out.write(getBase64Byte(1));
102 out.write(getBase64Byte(0));
103
104 numBytes = 0;
105 numChunks++;
106 if (numChunks == 16)
107 {
108// out.write('\r');
109// out.write('\n');
110 numChunks = 0;
111 }
112 }
113 }
114
115 public byte getBase64Byte(int index)
116 {
117 return Base64Util.encodeByte((buf >> (index * 6)) & 0x3f);
118 }
119}
Note: See TracBrowser for help on using the repository browser.