aboutsummaryrefslogtreecommitdiffstats
path: root/doc/user/bgr_text
diff options
context:
space:
mode:
authorJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 20:38:23 +0000
committerJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 20:38:23 +0000
commit78c2bcf9e96ab00615ee6f96905bca78fcd52a00 (patch)
tree9c7e31f2a59e174433e55b589771005b48a34158 /doc/user/bgr_text
parent9daa98ce90ceeeaba9e942d28575d8fcfe36db4b (diff)
downloadlout-78c2bcf9e96ab00615ee6f96905bca78fcd52a00.tar.gz
Lout 3.27.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@23 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'doc/user/bgr_text')
-rw-r--r--doc/user/bgr_text258
1 files changed, 258 insertions, 0 deletions
diff --git a/doc/user/bgr_text b/doc/user/bgr_text
new file mode 100644
index 0000000..2c56022
--- /dev/null
+++ b/doc/user/bgr_text
@@ -0,0 +1,258 @@
+@Section
+ @Title { Textures }
+ @Tag { textures }
+@Begin
+@PP
+The @Code "@Texture" symbol works in the same kind of way as @Code "@Font"
+texture.sym @Index { @Code "@Texture" symbol }
+and @Code "@Colour" do. It causes the object to its right to be printed
+in a texture specified by the object to its
+left:
+@ID @Code "striped @Texture 50p @Font ABC"
+produces
+@FootNote {
+If you can't see the result here, or if you can see it but without
+texture, then the fault is probably in your PostScript viewer.
+The PostScript viewer used by the author (a 1997 version of @I { gv })
+shows a blank space here and throughout this section wherever a
+texture is supposed to appear, but when printed on his printer
+the textures appear correctly.
+}
+@CD striped @Texture 50p @Font ABC
+The object to the right of @Code "@Texture" may be arbitrary as usual.
+@PP
+# Textures are harder to specify than colours, and only a few
+# texture names are widely used.
+Only a handful of textures
+are offered by the @Code "@Texture" symbol; but, as some
+compensation, there are options which allow any texture to
+be scaled, printed at any angle,
+texture.sym @RawIndex { @Code "@Texture" symbol }
+texture.sym.scale @SubIndex { @Code "scale" option }
+texture.sym.angle @SubIndex { @Code "angle" option }
+texture.sym.hshift @SubIndex { @Code "hshift" option }
+texture.sym.vshift @SubIndex { @Code "vshift" option }
+and shifted:
+@ID @OneRow @Code @Verbatim {
+striped @Texture
+ scale { 2 }
+ angle { 45d }
+ hshift { 1p }
+ vshift { 3p }
+50p @Font ABC
+}
+produces
+@CD striped @Texture
+ scale { 2 }
+ angle { 45d }
+ hshift { 1p }
+ vshift { 3p }
+50p @Font ABC
+with the texture scaled by a factor of 2, printed at an angle of 45
+degrees, and shifted one point horizontally and three points
+vertically. The @Code scale option causes equal scaling in the
+horizontal and vertical directions; there is also {@Code hscale}
+which scales horizontally only, and @Code vscale which scales
+vertically only. As you would expect, the default values of these
+options are @Code 1 for the scaling options, {@Code 0d} for {@Code angle},
+and {@Code 0p} for {@Code hshift} and {@Code vshift}.
+# @PP
+# Stripes would rarely need to be shifted in practice, but some of the other
+# textures described below can benefit from shifting.
+@PP
+Here is the list of all textures offered by the @Code "@Texture"
+symbol, with the options specific to each kind of texture, their
+default values, and sample default output. Remember, all textures
+take the {@Code angle}, {@Code scale}, {@Code hscale}, {@Code vscale},
+{@Code hshift}, and {@Code vshift} options as well.
+@ID @OneRow @Tbl
+ mv { 0.5v }
+ aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C }
+{
+
+@Rowa
+ ma { 0i }
+ A { @TextureSample solid }
+ B {
+"solid @Texture"
+solid."texture" @Index { @Code "solid" "texture" }
+}
+
+@Rowa
+ A { @TextureSample striped }
+ B {
+"striped @Texture"
+" width { 1p }"
+" gap { 1p }"
+}
+ C { ""
+The width of each stripe
+The width of each gap between stripes
+striped."texture" @Index { @Code "striped" "texture" }
+}
+
+@Rowa
+ A { @TextureSample grid }
+ B {
+"grid @Texture"
+" width { 1p }"
+" gap { 1p }"
+}
+ C { ""
+The width of each stripe
+grid."texture" @Index { @Code "grid" "texture" }
+The width of each gap between stripes
+}
+
+@Rowa
+ A { @TextureSample dotted }
+ B {
+"dotted @Texture"
+" radius { 0.5p }"
+" gap { 2p }"
+}
+ C { ""
+The radius of each dot (filled circle)
+dotted."texture" @Index { @Code "dotted" "texture" }
+The gap between the centres of adjacent dots
+}
+
+@Rowa
+ A { @TextureSample chessboard }
+ B {
+"chessboard @Texture"
+" width { 2p }"
+}
+ C { ""
+The width of each square
+chessboard."texture" @Index { @Code "chessboard" "texture" }
+}
+
+@Rowa
+ A { @TextureSample brickwork }
+ B {
+"brickwork @Texture"
+" width { 6p }"
+" height { 2p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The width of each brick
+The height of each brick
+brickwork."texture" @Index { @Code "brickwork" "texture" }
+The width of the brickwork lines
+}
+
+@Rowa
+ A { @TextureSample honeycomb }
+ B {
+"honeycomb @Texture"
+" radius { 2p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The radius of each hexagon
+honeycomb."texture" @Index { @Code "honeycomb" "texture" }
+The width of the lines
+}
+
+@Rowa
+ A { @TextureSample triangular }
+ B {
+"triangular @Texture"
+" radius { 4p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The side length of each triangle
+triangular."texture" @Index { @Code "triangular" "texture" }
+The width of the lines
+}
+
+@Rowa
+ mb { 0i }
+ A { @TextureSample string }
+ B {
+"string @Texture"
+" width { 12p }"
+" height { 12p }"
+" font { Times-Roman }"
+" size { 10p }"
+" value { \"*\" }"
+}
+ C { ""
+The width at which the string repeats
+The height at which the string repeats
+The font used to display the string (see below)
+The font size used to display the string
+string."texture" @Index { @Code "string" "texture" }
+The characters to be displayed
+}
+
+}
+This last example seems like a good one for experimenting with
+the {@Code hshift} and {@Code vshift} options, so here goes:
+texture.sym.hshift @SubIndex { @Code "hshift" option }
+texture.sym.vshift @SubIndex { @Code "vshift" option }
+@ID @OneRow @Tbl
+ mv { 0.5v }
+ aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C }
+{
+@Rowa
+ mb { 0i }
+ A {
+@Box margin { 0i }
+string @Texture hshift { 4p } vshift { 4p }
+@Box margin { 2.0f } paint { black } {}
+}
+ B {
+"string @Texture"
+" hshift { 4p }"
+" vshift { 4p }"
+}
+}
+You have to find the right amount of shift by experiment, especially
+when combined with rotation and scaling. We recommend sticking to the
+{@Code p} (points), {@Code m} (ems), {@Code c} (centimetres), and
+{@Code i} (inches) units of measurement when giving length options
+to {@Code "@Texture"} symbols.
+@PP
+Care is needed when using the @Code font and @Code value options
+of {@Code "string @Texture"}, since these options are passed straight
+through to the PostScript output without checking. The @Code "font"
+option takes a PostScript name for a font, not a Lout name. Typical
+PostScript font names, virtually certain to work, are {@Code Times-Roman}
+and {@Code Helvetica}. Since Lout takes no special steps to make sure
+that the font you ask for is available, you should restrict your font
+choices to fonts known to be in use elsewhere on the same page, or
+known to be always loaded in your viewing device. The @Code "value"
+option must be a sequence of characters from the nominated font.
+Although the value does not have to be quoted as shown, we recommend
+it as a reminder of how limited the choices are here. Also, spaces in
+your value will work better between quotes, and to make parentheses --
+@Code "(" and @Code ")" -- come out correctly they must be enclosed in
+quotes and preceded by a backslash character, which you get as usual by
+writing @I two backslash characters. For example, {@Code "\"\\\\(\""}
+will produce one left parenthesis.
+@PP
+Notice that {@Code "solid @Texture"} produces solid colour,
+or in other words no texture:
+@ID @Code @Verbatim {
+striped @Texture angle { 45d }
+@Box linewidth { 2p } solid @Texture 50p @Font WARNING!
+}
+produces
+@CD {
+striped @Texture angle { 45d }
+@Box linewidth { 2p } solid @Texture 50p @Font WARNING!
+}
+As shown, {@Code "solid @Texture"} is useful for switching back to
+normal printing within a textured region. In this example, without
+it the letters would have been striped as well.
+@PP
+Expert users can also make the object to the left of @Code "@Texture"
+be anything that is acceptable to the left of the expert's symbol
+{@Code "@SetTexture"}, allowing people who want to do some serious
+work in PostScript to get arbitrary textures. Consult the Expert's
+Guide for more about this.
+@End @Section