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 ;
: 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 ;
[ 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 ;
! 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 ;