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

[mgp-users-jp 00558] Re: difference in `again, mark, image' between 1.04 and 1.05



いろいろバックログが溜ってしまってますけど、とりあえずできそうなものから。。

>>>>> On Mon, 21 Jun 1999 23:12:52 +0900, JINMEI Tatuya / 神明達哉 <jinmei@isl.rdc.toshiba.co.jp> said:

 >> キャッシュ機能とか安定性などの面で、全般に1.05aの方が使いやすいのです
 >> が、この点だけは1.04aの方がよかったと感じます。この辺りは何らかの仕様
 >> 変更に基づいているのでしょうか。

こんな感じのパッチを当ててみてもらえますか?
これで問題がなければ、今週のsnapにのせてしまおうと思っています。
--
西田佳史 nishida@wide.ad.jp


*** draw.c.orig	Thu Jul  1 00:13:21 1999
--- draw.c	Thu Jul  1 02:01:44 1999
***************
*** 1719,1724 ****
--- 1719,1741 ----
  	u_int code;
  	char *registry;
  	XChar2b kch[2];
+ #define MAXDRAWAREA 1024
+ 	struct {
+ 		int	x, y, width, height;
+ 	} drawarea[MAXDRAWAREA];
+ 	int	areaindex = 0;
+ #define addarea(X) \
+ {\
+ 	if (areaindex == MAXDRAWAREA){\
+ 		fprintf(stderr, "too many drawarea (increase MAXDRAWAREA)\n");\
+ 		exit(1);\
+ 	}\
+ 	drawarea[areaindex].x = x;\
+ 	drawarea[areaindex].y = y - obj->data.X->ascent;\
+ 	drawarea[areaindex].width = obj->data.X->width+1;\
+ 	drawarea[areaindex].height = obj->data.X->height+1;\
+ 	areaindex ++;\
+ }
  #if 0
  	char ch[2];
  #endif
***************
*** 1851,1868 ****
--- 1868,1896 ----
  			if (obj->type == O_VFONT) {
  				(void)vfc_image(obj->data.vfc,
  					obj->fore, bcolor, xim, x, y);
+ 				addarea(vfc);
  			}
  #endif /* VFLIB */
  #ifdef FREETYPE
  			if (obj->type == O_TFONT) {
  				(void)tfc_image(obj->data.tfc,
  					obj->fore, bcolor, xim, x, y);
+ 				addarea(tfc);
  			}
  #endif /* FREETYPE */
  		}
+ #if 0
  		XPutImage(display, target, gcfore, xim, 0, 0,
  			xpos, ypos, width, height);
+ #else
+ 		for (i = 0; i < areaindex; i ++)
+ 			XPutImage(display, target, gcfore, xim, 
+ 				drawarea[i].x, drawarea[i].y, 
+ 				drawarea[i].x + xpos, ypos + drawarea[i].y, 
+ 				drawarea[i].width, drawarea[i].height); 
+ #endif
  		XDestroyImage(xim);
+ 
  		if (mgp_flag & FL_GLYPHEDGE) {
  			XDrawLine(display, target, gcfore, 0, ypos,
  				state->width - 1, ypos);