in src/main/java/org/apache/xmlgraphics/util/io/Base64EncodeStream.java [176:243]
void encodeFromArray(byte[] data, int offset, int len)
throws IOException {
byte a;
byte b;
byte c;
if (len == 0) {
return;
}
// System.out.println("atomLen: " + atomLen +
// " len: " + len +
// " offset: " + offset);
if (atomLen != 0) {
switch(atomLen) {
case 1:
atom[1] = data[offset++];
len--;
atomLen++;
if (len == 0) {
return;
}
atom[2] = data[offset++];
len--;
atomLen++;
break;
case 2:
atom[2] = data[offset++];
len--;
atomLen++;
break;
default:
}
encodeAtom();
}
while (len >= 3) {
a = data[offset++];
b = data[offset++];
c = data[offset++];
encodeBuf[0] = PEM_ARRAY[((a >>> 2) & 0x3F)];
encodeBuf[1] = PEM_ARRAY[(((a << 4) & 0x30) | ((b >>> 4) & 0x0F))];
encodeBuf[2] = PEM_ARRAY[(((b << 2) & 0x3C) | ((c >>> 6) & 0x03))];
encodeBuf[3] = PEM_ARRAY[c & 0x3F];
out.write(encodeBuf);
lineLen += 4;
if (lineLen == 64) {
out.println();
lineLen = 0;
}
len -= 3;
}
switch (len) {
case 1:
atom[0] = data[offset];
break;
case 2:
atom[0] = data[offset];
atom[1] = data[offset + 1];
break;
default:
}
atomLen = len;
}