import org.apache.fop.pdf.PDFStream;
import org.apache.fop.pdf.ASCII85Filter;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

class FOPTest extends PDFStream
{
   public static void main(String args[])
      throws Exception
   {
      FOPTest test = new FOPTest(1);
      test.test1();
      test.test2();
   }

   public FOPTest(int number)
   {
      super(number);
   }

   private byte[] wordToByteArray(long word)
   {
      byte b1 = (byte) ((word >> 24) & 0xFF);
      byte b2 = (byte) ((word >> 16) & 0xFF);
      byte b3 = (byte) ((word >>  8) & 0xFF);
      byte b4 = (byte) ((word      ) & 0xFF);
      return new byte[] {b1, b2, b3, b4};
   }

   public void test1()
   {
      ASCII85Filter filter = new ASCII85Filter();

      long[] values = new long[] {0xD83545ABL, 0xE775E7B9L};
      for (int n = 0; n < values.length; n++)
      {
         System.out.println("In: 0x" + Long.toString(values[n], 16).toUpperCase());
         byte[] dataIn = wordToByteArray(values[n]);
         byte[] dataOut = filter.encode(dataIn);
         for (int i = 0; i < dataOut.length; i++)
         {
            System.out.print(Integer.toString(dataOut[i], 16).toUpperCase() + " ");
         }
         System.out.println("");
      }
   }
   
   public void test2()
      throws Exception
   {
      InputStream img = FOPTest.class.getResourceAsStream("ariblk.ttf");
      ByteArrayOutputStream data = new ByteArrayOutputStream(img.available());
      byte[] buf = new byte[1024];
      int len = img.read(buf);
      while (len != -1)
      {
         data.write(buf, 0, len);
         len = img.read(buf);
      }

      setData(data.toByteArray());
      addDefaultFilters();
      addFilter(new ASCII85Filter());

      ByteArrayOutputStream out = new ByteArrayOutputStream();
      len = output(out);
      System.out.println("Length: " + len);
      //System.out.println(new String(out.toByteArray()));
   }
}

