Spaces:
Sleeping
Sleeping
| % $Header: /cvsroot/html2ps/postscript/box.list-item.ps,v 1.1 2005/12/18 07:21:37 Konstantin Exp $ | |
| /box-list-item-height-koeff 0.7 def | |
| /box-list-item-bullet-size-koeff 0.15 def | |
| /box-list-item-create { | |
| box-block-create | |
| dup /MarkerImage /null put | |
| dup /MarkerString ( ) put | |
| dup box-list-item-setup-methods | |
| dup /box-list-item add-type | |
| } def | |
| /box-list-item-get-marker-box-width { % => ListItem | |
| dup /list-style get-css-value | |
| /type get { % => ListItem Type | |
| dup /none eq { pop 0 exit } if | |
| dup /disc eq | |
| 1 index /circle eq or | |
| 1 index /square eq or { pop dup /font-size get-css-value exit } if | |
| pop | |
| dup /font-family get-css-value | |
| 1 index /font-size get-css-value | |
| scalefont | |
| setfont | |
| dup box-list-item-get-string | |
| stringwidth pop % => ListItem Width | |
| } loop % => ListItem Width | |
| exch pop % => Width | |
| } def | |
| /box-list-item-get-marker-image { | |
| /MarkerImage get | |
| } def | |
| /box-list-item-get-string { | |
| /MarkerString get | |
| } def | |
| /box-list-item-put-marker-image { % => Image This | |
| exch /MarkerImage exch put | |
| } def | |
| /box-list-item-put-string { | |
| exch /MarkerString exch put | |
| } def | |
| /box-list-item-reflow { % => Context Parent Box | |
| % If list-style-position is inside, we'll need to move marker box inside the | |
| % list-item box and offset all content by its size; | |
| dup /list-style get-css-value /position get | |
| /inside eq { | |
| % Add marker box width to text-indent value | |
| dup box-list-item-get-marker-box-width | |
| 1 index put-additional-text-indent | |
| } if | |
| 3 copy box-block-reflow | |
| pop pop pop | |
| } def | |
| /box-list-item-show { % => Viewport This | |
| % Draw generic block box | |
| 2 copy box-container-show | |
| % Draw marker | |
| % Determine the marker box base X coordinate | |
| dup get-left % => Viewport This MX | |
| % Determine the base Y coordinate of marker box | |
| 1 index box-container-get-first-data | |
| dup /null ne { % => Viewport This MX Element | |
| dup get-top | |
| 1 index get-default-baseline sub | |
| exch pop | |
| } { % => Viewport This MX /null | |
| pop | |
| 1 index get-top | |
| } ifelse % => Viewport This MX MY | |
| % If list-style-position is inside, we'll need to move marker box inside the | |
| % list-item box and offset all content by its size; | |
| 2 index /list-style get-css-value /position get | |
| /inside eq { | |
| 2 index box-list-item-get-marker-box-width | |
| 2 index add % => Viewport This MX MY MX' | |
| 3 2 roll pop | |
| exch | |
| } if | |
| 2 index box-list-item-get-marker-image | |
| /null ne { % => Viewport This MX MY | |
| exch 3 index 3 index | |
| box-list-item-show-image | |
| } { % => Viewport This MX MY | |
| exch | |
| 3 index 3 index % => Viewport This MY MX Viewport This | |
| dup /list-style get-css-value /type get | |
| { | |
| dup /none eq { pop pop pop pop pop exit } if | |
| dup /disc eq { pop box-list-item-show-disc exit } if | |
| dup /circle eq { pop box-list-item-show-circle exit } if | |
| dup /square eq { pop box-list-item-show-square exit } if | |
| pop box-list-item-show-string exit | |
| } loop | |
| } ifelse % => Viewport This | |
| pop pop | |
| } def | |
| /box-list-item-setup-methods { % => Box | |
| dup /Methods get | |
| dup /reflow {box-list-item-reflow} put | |
| dup /show {box-list-item-show} put | |
| pop pop | |
| } def | |
| /box-list-item-show-circle { % => MY MX Viewport This | |
| dup /color get-css-value | |
| color-apply | |
| 0.1 setlinewidth | |
| dup /font-size get-css-value | |
| 2 div neg | |
| 3 index add % => MY MX Viewport This X | |
| 1 index /font-size get-css-value | |
| 0.4 mul | |
| box-list-item-height-koeff mul | |
| 5 index add % => MY MX Viewport This X Y | |
| 2 copy newpath moveto | |
| 2 index /font-size get-css-value | |
| box-list-item-bullet-size-koeff mul | |
| % => MY MX Viewport This X Y R | |
| 0 360 arc closepath stroke | |
| pop pop pop pop | |
| } def | |
| /box-list-item-show-disc { % => MY MX Viewport This | |
| dup /color get-css-value | |
| color-apply | |
| dup /font-size get-css-value | |
| 2 div neg | |
| 3 index add % => MY MX Viewport This X | |
| 1 index /font-size get-css-value | |
| 0.4 mul | |
| box-list-item-height-koeff mul | |
| 5 index add % => MY MX Viewport This X Y | |
| 2 copy newpath moveto | |
| 2 index /font-size get-css-value | |
| box-list-item-bullet-size-koeff mul | |
| % => MY MX Viewport This X Y R | |
| 0 360 arc closepath fill | |
| pop pop pop pop | |
| } def | |
| /box-list-item-show-image { % => MY MX Viewport This | |
| dup box-list-item-get-marker-image | |
| % => MY MX Viewport This Image | |
| 3 index | |
| 5 index moveto % => MY MX Viewport This Image | |
| dup /SX get px | |
| 1 index /SY get px | |
| 2 index | |
| image-show % => MY MX Viewport This Image | |
| pop pop pop pop pop | |
| } def | |
| /box-list-item-show-square { % => MY MX Viewport This | |
| dup /color get-css-value | |
| color-apply | |
| 2 index | |
| 1 index /font-size get-css-value | |
| 0.512 mul sub | |
| 4 index | |
| 2 index /font-size get-css-value | |
| 0.3 mul | |
| box-list-item-height-koeff mul add | |
| 2 index /font-size get-css-value 0.25 mul | |
| 3 index /font-size get-css-value 0.25 mul | |
| rectfill | |
| pop pop pop pop | |
| } def | |
| /box-list-item-show-string { % => MY MX Viewport This | |
| box-text-create % => MY MX Viewport This TextBox | |
| 1 index box-list-item-get-string % => MY MX Viewport This TextBox String | |
| 1 index put-text % => MY MX Viewport This TextBox | |
| 1 index | |
| /font-family get-css-value % => MY MX Viewport This TextBox Font | |
| 1 index exch | |
| /font-family exch put-css-value % => MY MX Viewport This TextBox | |
| 1 index | |
| /font-size get-css-value % => MY MX Viewport This TextBox FontSize | |
| 1 index exch | |
| /font-size exch put-css-value % => MY MX Viewport This TextBox | |
| 1 index | |
| /color get-css-value % => MY MX Viewport This TextBox Color | |
| 1 index exch | |
| /color exch put-css-value % => MY MX Viewport This TextBox | |
| dup box-text-setup % => MY MX Viewport This TextBox | |
| dup get-default-baseline | |
| 1 index put-baseline | |
| 4 index | |
| 1 index get-baseline add | |
| 4 index | |
| 2 index get-full-width sub % => MY MX Viewport This TextBox MY MX | |
| 2 index | |
| box-generic-move-to % => MY MX Viewport This TextBox | |
| 2 index exch | |
| box-text-show | |
| pop pop pop pop | |
| } def |