summaryrefslogtreecommitdiff
path: root/src/preproc/pic
diff options
context:
space:
mode:
authorwl <wl>2006-03-21 07:57:57 +0000
committerwl <wl>2006-03-21 07:57:57 +0000
commit2fd132887d8f92fa7defbb933134bba638503b58 (patch)
tree3b6e9cb7f894b2e9c2bf198adfc4f201fcb47a72 /src/preproc/pic
parente193fc7a187243266a5d9f9354bbb28fdfe38766 (diff)
downloadgroff-2fd132887d8f92fa7defbb933134bba638503b58.tar.gz
* src/preproc/pic/pic.y (object_spec THEN): For compatibility with
both DWB pic and dpic, make right; line then down; equal to right; line right then down; instead of right; line 0 then down; * doc/pic.ms: Document this.
Diffstat (limited to 'src/preproc/pic')
-rw-r--r--src/preproc/pic/pic.y29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/preproc/pic/pic.y b/src/preproc/pic/pic.y
index ce7a459c..a1a5f8fd 100644
--- a/src/preproc/pic/pic.y
+++ b/src/preproc/pic/pic.y
@@ -878,14 +878,27 @@ object_spec:
| object_spec THEN
{
$$ = $1;
- if ($$->flags & HAS_SEGMENT) {
- $$->segment_list = new segment($$->segment_pos,
- $$->segment_is_absolute,
- $$->segment_list);
- $$->flags &= ~HAS_SEGMENT;
- $$->segment_pos.x = $$->segment_pos.y = 0.0;
- $$->segment_is_absolute = 0;
- }
+ if (!($$->flags & HAS_SEGMENT))
+ switch ($$->dir) {
+ case UP_DIRECTION:
+ $$->segment_pos.y += $$->segment_width;
+ break;
+ case DOWN_DIRECTION:
+ $$->segment_pos.y -= $$->segment_width;
+ break;
+ case RIGHT_DIRECTION:
+ $$->segment_pos.x += $$->segment_width;
+ break;
+ case LEFT_DIRECTION:
+ $$->segment_pos.x -= $$->segment_width;
+ break;
+ }
+ $$->segment_list = new segment($$->segment_pos,
+ $$->segment_is_absolute,
+ $$->segment_list);
+ $$->flags &= ~HAS_SEGMENT;
+ $$->segment_pos.x = $$->segment_pos.y = 0.0;
+ $$->segment_is_absolute = 0;
}
| object_spec SOLID
{