diff options
author | wl <wl> | 2006-03-21 07:57:57 +0000 |
---|---|---|
committer | wl <wl> | 2006-03-21 07:57:57 +0000 |
commit | 2fd132887d8f92fa7defbb933134bba638503b58 (patch) | |
tree | 3b6e9cb7f894b2e9c2bf198adfc4f201fcb47a72 /src/preproc/pic | |
parent | e193fc7a187243266a5d9f9354bbb28fdfe38766 (diff) | |
download | groff-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.y | 29 |
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 { |