]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/pdf/streams/streams.factor
pdf: heuristic for dealing with table wrapping.
[factor.git] / extra / pdf / streams / streams.factor
index 5abcf26d168f70e2978ff8ad3e2b4b55fb938f9c..9c9d5869cacf60853c94ab908613a5d85fee95ee 100644 (file)
@@ -17,10 +17,10 @@ IN: pdf.streams
 PRIVATE>
 
 
-TUPLE: pdf-writer style data ;
+TUPLE: pdf-writer data ;
 
 : new-pdf-writer ( class -- pdf-writer )
-    new H{ } >>style V{ } clone >>data ;
+    new V{ } clone >>data ;
 
 : <pdf-writer> ( -- pdf-writer )
     pdf-writer new-pdf-writer ;
@@ -33,8 +33,7 @@ TUPLE: pdf-sub-stream < pdf-writer parent ;
 : new-pdf-sub-stream ( style stream class -- stream )
     new-pdf-writer
         swap >>parent
-        swap >>style
-    dup parent>> style>> '[ _ swap assoc-union ] change-style ;
+    swap <style-stream> ;
 
 TUPLE: pdf-block-stream < pdf-sub-stream ;
 
@@ -42,32 +41,25 @@ M: pdf-block-stream dispose
     [ data>> ] [ parent>> ] bi
     [ data>> push-all ] [ stream-nl ] bi ;
 
-TUPLE: pdf-span-stream < pdf-sub-stream ;
-
-M: pdf-span-stream dispose
-    [ data>> ] [ parent>> data>> ] bi push-all ;
-
-
 
 ! Stream protocol
 
 M: pdf-writer stream-flush drop ;
 
 M: pdf-writer stream-write1
-    dup style>> '[ 1string _ <text> ] [ data>> ] bi* push ;
+    [ 1string f <text> ] [ data>> ] bi* push ;
 
 M: pdf-writer stream-write
-    dup style>> '[ _ string>texts ] [ data>> ] bi* push-all ;
+    [ f string>texts ] [ data>> ] bi* push-all ;
 
 M: pdf-writer stream-format
-    swap [ dup style>> ] dip assoc-union
-    '[ _ string>texts ] [ data>> ] bi* push-all ;
+    [ string>texts ] [ data>> ] bi* push-all ;
 
 M: pdf-writer stream-nl
     <br> swap data>> push ; ! FIXME: <br> needs style?
 
 M: pdf-writer make-span-stream
-    pdf-span-stream new-pdf-sub-stream ;
+    swap <style-stream> <ignore-close-stream> ;
 
 M: pdf-writer make-block-stream
     pdf-block-stream new-pdf-sub-stream ;
@@ -78,7 +70,7 @@ M: pdf-writer make-cell-stream
 ! FIXME: real table cells
 M: pdf-writer stream-write-table ! FIXME: needs style?
     nip swap [
-        [ data>> <table-cell> ] map <table-row>
+        [ stream>> data>> <table-cell> ] map <table-row>
     ] map <table> swap data>> push ;
 
 M: pdf-writer dispose drop ;