Index: trunk/Ohana/src/kapa2/src/PDF_Objects.c
===================================================================
--- trunk/Ohana/src/kapa2/src/PDF_Objects.c	(revision 41326)
+++ trunk/Ohana/src/kapa2/src/PDF_Objects.c	(revision 41327)
@@ -85,7 +85,7 @@
   }
   // reset to default color and style
-  PrintIOBuffer (buffer, "[] 0 d\n");
-  PrintIOBuffer (buffer, "0.00 0.00 0.00 rg\n");
-  PrintIOBuffer (buffer, "0.00 0.00 0.00 RG\n");
+  // PrintIOBuffer (buffer, "[] 0 d\n");
+  // PrintIOBuffer (buffer, "0.00 0.00 0.00 rg\n");
+  // PrintIOBuffer (buffer, "0.00 0.00 0.00 RG\n");
 
   return (TRUE);
@@ -117,4 +117,5 @@
       break;
     case KAPA_LINE_SOLID: // no need to call 'd' as solid is the default
+      PrintIOBuffer (buffer, "[] 0 d\n");
     default:
       break;
@@ -129,6 +130,7 @@
 int PDF_ObjectsN (KapaGraphWidget *graph, Gobjects *object, IOBuffer *buffer) {
   
+  // AlphaSet emits a "q" whether or not there is a non-trivial alpha value
+  PDF_AlphaSet (object, buffer);
   PDF_LineStyle (graph, object, buffer);
-  PDF_AlphaSet (object, buffer);
 
   switch (object->style) {
@@ -163,4 +165,9 @@
   // this closes the graphic state generated by PDF_AlphaSet above
   PrintIOBuffer (buffer, "Q\n");
+
+  // reset to default color and style
+  // PrintIOBuffer (buffer, "[] 0 d\n");
+  // PrintIOBuffer (buffer, "0.00 0.00 0.00 rg\n");
+  // PrintIOBuffer (buffer, "0.00 0.00 0.00 RG\n");
 
   return (TRUE);
Index: trunk/Ohana/src/kapa2/src/PDF_PrintUtils.c
===================================================================
--- trunk/Ohana/src/kapa2/src/PDF_PrintUtils.c	(revision 41326)
+++ trunk/Ohana/src/kapa2/src/PDF_PrintUtils.c	(revision 41327)
@@ -114,4 +114,12 @@
 }
 
+typedef enum {
+  PDF_RAW_ENCODE,
+  PDF_ASCII_HEX,
+  PDF_ASCII_ADOBE,
+  PDF_ASCII_HEX_DEFLATE,
+  PDF_ASCII_ADOBE_DEFLATE,
+} PDF_Encoding_Mode;
+
 // This code needs to generate a stream
 int PDF_WriteStream (PDF_FILE *obj, IOBuffer *buffer) {
@@ -135,51 +143,57 @@
   }
 
-  // test compression of the stream:
-  if (1) {
-    // Deflate buffer.buffer
-    IOBuffer compressed;
-    PDF_BufferDeflate (&compressed, buffer);
-
-    if (0) {
-      IOBuffer iTest, oTest;
-      InitIOBuffer (&iTest, 8);
-      strcpy (iTest.buffer, "Lion");
-      iTest.Nbuffer = strlen(iTest.buffer);
-      fprintf (stderr, "%s\n", iTest.buffer);
-      PDF_ASCII85Encode (&oTest, &iTest);
-      fprintf (stderr, "%s\n", oTest.buffer);
+  // compression options:
+  PDF_Encoding_Mode mode = PDF_ASCII_ADOBE_DEFLATE;
+  // PDF_Encoding_Mode mode = PDF_RAW_ENCODE;
+  switch (mode) {
+    case PDF_ASCII_ADOBE: {
+      IOBuffer encode;
+      PDF_ASCII85Encode (&encode, buffer);
+
+      // Content Stream
+      PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCII85Decode] >> stream\n", objnum, encode.Nbuffer);
+      fwrite (encode.buffer, 1, encode.Nbuffer, obj->f);
+      break;
+    } 
+    case PDF_ASCII_ADOBE_DEFLATE: {
+      IOBuffer compressed;
+      PDF_BufferDeflate (&compressed, buffer);
+
+      IOBuffer encode;
+      PDF_ASCII85Encode (&encode, &compressed);
+
+      // Content Stream
+      PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCII85Decode /FlateDecode] >> stream\n", objnum, encode.Nbuffer);
+      fwrite (encode.buffer, 1, encode.Nbuffer, obj->f);
+      break;
+    } 
+    case PDF_ASCII_HEX: {
+      IOBuffer encode;
+      PDF_ASCIIHexEncode (&encode, buffer);
+
+      // Content Stream
+      PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCIIHexDecode] >> stream\n", objnum, encode.Nbuffer);
+      fwrite (encode.buffer, 1, encode.Nbuffer, obj->f);
+      break;
+    } 
+    case PDF_ASCII_HEX_DEFLATE: {
+      IOBuffer compressed;
+      PDF_BufferDeflate (&compressed, buffer);
+
+      IOBuffer encode;
+      PDF_ASCIIHexEncode (&encode, &compressed);
+
+      // Content Stream
+      PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCIIHexDecode /FlateDecode] >> stream\n", objnum, encode.Nbuffer);
+      fwrite (encode.buffer, 1, encode.Nbuffer, obj->f);
+      break;
+    } 
+    case PDF_RAW_ENCODE: {
+      PDF_Print (obj, objnum, "%d 0 obj << /Length %d >> stream\n", objnum, buffer->Nbuffer);
+      fwrite (buffer->buffer, 1, buffer->Nbuffer, obj->f);
+      break;
     }
-
-    if (0) { 
-      char quote[] = "Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.";
-      fprintf (stderr, "%d : %s\n", (int) strlen(quote), quote);
-      IOBuffer iTest, oTest;
-      InitIOBuffer (&iTest, strlen(quote) + 1);
-      strcpy (iTest.buffer, quote);
-      iTest.Nbuffer = strlen(iTest.buffer);
-      PDF_ASCII85Encode (&oTest, &iTest);
-      fprintf (stderr, "%s\n", oTest.buffer);
-      return FALSE;
-    }
-
-    // ASCIIHex encode
-    IOBuffer encode;
-    // XXX PDF_ASCIIHexEncode (&encode, buffer);
-    // PDF_ASCIIHexEncode (&encode, &compressed);
-    PDF_ASCII85Encode (&encode, &compressed);
-
-    // Content Stream
-    PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCII85Decode /FlateDecode] >> stream\n", objnum, encode.Nbuffer);
-    // PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCIIHexDecode /FlateDecode] >> stream\n", objnum, encode.Nbuffer);
-    // XXX PDF_Print (obj, objnum, "%d 0 obj << /Length %d /Filter [/ASCIIHexDecode] >> stream\n", objnum, encode.Nbuffer);
-    fwrite (encode.buffer, 1, encode.Nbuffer, obj->f);
-  } else {
-    // Content Stream
-    PDF_Print (obj, objnum, "%d 0 obj << /Length %d >> stream\n", objnum, buffer->Nbuffer);
-
-    // write stream here
-    // XXX check return to make sure all went to disk
-    fwrite (buffer->buffer, 1, buffer->Nbuffer, obj->f);
-  }
+  }
+  // XXX check fwrite return to make sure all went to disk
 
   fprintf (obj->f, "endstream endobj\n");
@@ -422,2 +436,30 @@
 // base85_init();
 // if (!base85_encode (output, Nout, (BASETYPE *) quote, 1)) { fprintf (stderr, "failure\n"); }
+
+// test compression of the stream:
+int PDF_Encode_Test () {
+
+  if (0) {
+    IOBuffer iTest, oTest;
+    InitIOBuffer (&iTest, 8);
+    strcpy (iTest.buffer, "Lion");
+    iTest.Nbuffer = strlen(iTest.buffer);
+    fprintf (stderr, "%s\n", iTest.buffer);
+    PDF_ASCII85Encode (&oTest, &iTest);
+    fprintf (stderr, "%s\n", oTest.buffer);
+  }
+
+  if (0) { 
+    char quote[] = "Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.";
+    fprintf (stderr, "%d : %s\n", (int) strlen(quote), quote);
+    IOBuffer iTest, oTest;
+    InitIOBuffer (&iTest, strlen(quote) + 1);
+    strcpy (iTest.buffer, quote);
+    iTest.Nbuffer = strlen(iTest.buffer);
+    PDF_ASCII85Encode (&oTest, &iTest);
+    fprintf (stderr, "%s\n", oTest.buffer);
+    return FALSE;
+  }
+  return TRUE;
+}
+
