aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/grosciteco.tes
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-10 06:34:24 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-10 06:34:24 +0300
commitf5c6c1d064282b412557a8f3a92620967eeb88b4 (patch)
tree91dc9dc429776fd86f65d1e8b06ef4703f1249da /doc/grosciteco.tes
parent1498c13df11c851b5057bb758a434798345a1b20 (diff)
downloadsciteco-f5c6c1d064282b412557a8f3a92620967eeb88b4.tar.gz
grosciteco: basic support for GNU pic graphics
* The line drawing algorithm currently works only with tbl, though. * Also only straight lines are currently supported. * This was meant for rendering presentations in SciTECO - it's not currently used or planned to be used in the manpages. Although we might well add pic graphics to the manpages in the future.
Diffstat (limited to 'doc/grosciteco.tes')
-rwxr-xr-xdoc/grosciteco.tes78
1 files changed, 52 insertions, 26 deletions
diff --git a/doc/grosciteco.tes b/doc/grosciteco.tes
index 1e57b52..b220041 100755
--- a/doc/grosciteco.tes
+++ b/doc/grosciteco.tes
@@ -50,6 +50,38 @@ EBN[input]
Q.n<.-Z"= 1; ' 0A-10"= 1; ' D>
].n }
+!* draw a line to (h,v) *!
+!* FIXME: Works only for straight lines *!
+@[line]{ U.[to.v] U.[to.h]
+ Q.[to.h]-Q[pos.h]"= Q.[to.v]-Q[pos.v]"=  ' '
+ [* EB
+ Q.[to.h]-Q[pos.h]"=
+ !* vertical line *!
+ Q.[to.v]-Q[pos.v]"< Q[pos.v]U.v Q.[to.v]U[pos.v] | Q.[to.v]U.v '
+ 1:M[move] %[pos.v] .-Z"= I R '
+ -A-9472"= 0A-9472"= I┬ | I┐ '
+ | 0A-9472"= I┌ | I╷ ' '
+ Q.v-Q[pos.v]<
+ 1:M[move] %[pos.v] .-Z"= I R '
+ -A-9472"= 0A-9472"= I┼ | I┤ '
+ | 0A-9472"= I├ | I│ ' '
+ >
+ 1:M[move] .-Z"= I R '
+ -A-9472"= 0A-9472"= I┴ | I┘ '
+ | 0A-9472"= I└ | I╵ ' '
+ Q.[to.v]U[pos.v]
+ |
+ !* horizontal line
+ FIXME: works only if horizonal lines are drawn first. *!
+ Q.[to.h]-Q[pos.h]"< Q[pos.h]U.h Q.[to.h]U[pos.h] | Q.[to.h]U.h '
+ Q.h-Q[pos.h]+1<
+ 1:M[move] I─ %[pos.h]
+ >
+ Q.[to.h]U[pos.h]
+ '
+ ]*
+}
+
!* style last N glyphs/characters *!
1U[default-style]
@[style]{ [.l
@@ -208,34 +240,28 @@ EBN[input]
!cmd.DFd!
:M#sc F<
+ !cmd.DFg!
+ :M#sw :M#gi :M#sc F<
+
!cmd.Dl!
:M#sw :M#gi/Q[res.h]+Q[pos.h]U.[to.h] :M#gi/Q[res.v]+Q[pos.v]U.[to.v] :M#sc
- [* EB
- Q.[to.h]-Q[pos.h]"=
- !* vertical line *!
- Q.[to.v]-Q[pos.v]"< Q[pos.v]U.v Q.[to.v]U[pos.v] | Q.[to.v]U.v '
- 1:M[move] %[pos.v] .-Z"= I R '
- -A-9472"= 0A-9472"= I┬ | I┐ '
- | 0A-9472"= I┌ | I╷ ' '
- Q.v-Q[pos.v]<
- 1:M[move] %[pos.v] .-Z"= I R '
- -A-9472"= 0A-9472"= I┼ | I┤ '
- | 0A-9472"= I├ | I│ ' '
- >
- 1:M[move] .-Z"= I R '
- -A-9472"= 0A-9472"= I┴ | I┘ '
- | 0A-9472"= I└ | I╵ ' '
- Q.[to.v]U[pos.v]
- |
- !* horizontal line
- FIXME: works only if horizonal lines are drawn first. *!
- Q.[to.h]-Q[pos.h]"< Q[pos.h]U.h Q.[to.h]U[pos.h] | Q.[to.h]U.h '
- Q.h-Q[pos.h]+1<
- 1:M[move] I─ %[pos.h]
- >
- Q.[to.h]U[pos.h]
- '
- ]* F<
+ Q.[to.h],Q.[to.v]M[line] F<
+
+ !cmd.Dp!
+ !cmd.DP!
+ :M#sw Q[pos.h]U.[start.h] Q[pos.v]U.[start.v]
+ <
+ :M#gi/Q[res.h]U.h Q.h+Q[pos.h]U.[to.h] :M#gi/Q[res.v]U.v Q.v+Q[pos.v]U.[to.v]
+ Q.h%.[inc.h] Q.v%.[inc.v]
+ Q.[to.h],Q.[to.v]M[line]
+ 0A-10"= 1; '
+ >
+ Q.[start.h],Q.[start.v]M[line]
+ Q.[inc.h]%[pos.h] Q.[inc.v]%[pos.v]
+ :M#sc F<
+
+ !cmd.Dt!
+ :M#sw :M#gi/Q[res.h]%[pos.h] :M#sw :M#gi :M#sc F<
!cmd.t!
:M#sw .(:M#sa).X.w