[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 00590] print.c patch



mgp2ps を使ったときに、イメージを文字と文字の途中に狭んだり
したような場合にうまくいかなかったのを直す patch です
(for snap-990830)。


が、ここに投げるかどうか本気で悩むくらい ad hoc でキタナイパッ
チです (_o_)
# 特に、stack に余計なものが無いことを仮定している
# (currentpoint pop count 1 rol のあたり) のが自分でもイヤです。

あと、細かい調整をしていないので微妙に右にズレてる気がします。


まぁ merge してもらえるとは思ってませんが、この辺をそろそろ
対応して欲しいなぁ、という要望を出すという意味を兼ねて、とり
あえず送ります。

一応 mgp file の sample も付けておきます。
image file は mgp のアーカイブの sample/ にあります。


# 位置の計算をするのは PostScript interpreter まかせにしちゃ
# いたいですね。

-- 
かとぺ / 加藤 貴司

--- kit-990830/print.c	Tue May 25 18:44:30 1999
+++ kit/print.c	Thu Sep  2 18:28:51 1999
@@ -846,6 +846,7 @@
 				icon_output(&textpool[i]);
 			} else {
 				/* image */
+				fprintf(fp, "currentpoint pop count 1 roll\n", textpool[i].xsiz);
 				fprintf(fp, "%d 0 rmoveto\n", textpool[i].xsiz);
 			}
 		}
@@ -1424,8 +1425,13 @@
 					AllPlanes, ZPixmap);
 
 	fprintf(fp, "gsave\n");
-	fprintf(fp, "%d ypos %d sub translate\n",
-		xpos + paper_xmargin, print_height);
+	if ((align == AL_CENTER) || (align == AL_RIGHT)) {
+		fprintf(fp, "pop %d ypos %d sub translate\n",
+			xpos + paper_xmargin, print_height);
+	} else {
+		fprintf(fp, "%d add ypos %d sub translate\n",
+			xpos + paper_xmargin, print_height);
+	}
 	fprintf(fp, "%d %d scale\n", print_width, print_height);
 	fprintf(fp, "%d %d 8\n", print_width, print_height);
 	fprintf(fp, "[%d 0 0 %d 0 %d]\n", print_width,
@@ -1740,7 +1746,11 @@
 	}
 
 	fprintf(fp, "BeginEPSF\n");
-	fprintf(fp, "%d XMARGIN add ypos translate\n", xpos);
+	if ((align == AL_CENTER) || (align == AL_RIGHT)) {
+		fprintf(fp, "%d XMARGIN add ypos translate\n", xpos);
+	} else {
+		fprintf(fp, "dup %d XMARGIN add add ypos translate\n", xpos);
+	}
 	fprintf(fp, "%f %f scale\n", xscale, yscale);
 	fprintf(fp, "%d %d translate\n", -1 * x1, -1 * y2);
 	fprintf(fp, "%%%%BeginDocument: %s\n", filename);
@@ -1754,6 +1764,7 @@
 	}
 	fprintf(fp, "%%%%EndDocument\n");
 	fprintf(fp, "EndEPSF\n");
+	fprintf(fp, "pop\n");
 }
 
 /*------------------------------------------------------------*/
%include "default.mgp"
%page

Test

	Centering
%center, image "dad.eps"

%leftfill
%vgap 30

	Right
%right, image "dad.eps"

%vgap 30

%leftfill
	Continuing (?)

This is 
%cont, image "dad.eps"
sample image.