[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mgp-users-jp 01385] baseline offset for %newimage
- To: mgp-users-jp@mew.org
- Subject: [mgp-users-jp 01385] baseline offset for %newimage
- From: Hirotsugu Kakugawa <h.kakugawa@computer.org>
- Date: Sat, 04 Sep 2004 23:47:54 +0900 (JST)
- Delivered-to: mailing list mgp-users-jp@mew.org
- Mailing-list: contact mgp-users-jp-help@mew.org; run by ezmlm
- Reply-to: h.kakugawa@computer.org
角川(広島大学)です。
こんにちは。
%newimage にて、図のベースラインを上下するオプションをつけました。
インラインで数式などを入れた時、ベースラインのずれが調節できます。
%newimage -raise YYY ...
というぐあいに、 -raise オプションを追加し、
YYY はどれだけ図のベースラインを上にずらすかを指定します。
0 で移動なし, 100 だと図の縦サイズ分を上にずらします。
マイナスの値の指定も可能です。
# 雰囲気は http://kakugawa.aial.hiroshima-u.ac.jp/hacks/mgp-raise/
# を参照下さい。
最後に MagicPoint 1.10a 用のパッチをつけます。
では
--
角川裕次(乙女座/B型/未年)
広島大学大学院工学研究科情報工学専攻
diff -rNc magicpoint-1.10a/draw.c magicpoint-1.10a-x/draw.c
*** magicpoint-1.10a/draw.c Wed May 14 16:45:35 2003
--- magicpoint-1.10a-x/draw.c Thu Apr 8 15:18:53 2004
***************
*** 103,110 ****
--- 103,115 ----
char *, int));
static void back_gradation __P((struct render_state *, struct ctrl_grad *));
+ #if 1 /* by h.kakugawa@computer.org */
+ static void image_load __P((struct render_state *, char *, int, int, int, int, int, int, int));
+ static void image_load_ps __P((struct render_state *, char *, int, int, int, int, int, int, int));
+ #else
static void image_load __P((struct render_state *, char *, int, int, int, int, int, int));
static void image_load_ps __P((struct render_state *, char *, int, int, int, int, int, int));
+ #endif
static void process_icon __P((struct render_state *, struct ctrl *));
static void draw_bar __P((struct render_state *, struct ctrl *));
static void process_system __P((struct render_state *, struct ctrl *));
***************
*** 598,610 ****
--- 603,627 ----
/* quickhack for postscript */
if (ispsfilename(cp->ctm_fname)) {
+ #if 1 /* by h.kakugawa@computer.org */
+ image_load_ps(state, cp->ctm_fname, cp->ctm_numcolor,
+ cp->ctm_ximagesize, cp->ctm_yimagesize, 0,
+ cp->ctm_zoomflag, 0, cp->ctm_raise);
+ #else
image_load_ps(state, cp->ctm_fname, cp->ctm_numcolor,
cp->ctm_ximagesize, cp->ctm_yimagesize, 0,
cp->ctm_zoomflag, 0);
+ #endif
} else {
+ #if 1 /* by h.kakugawa@computer.org */
+ image_load(state, cp->ctm_fname, cp->ctm_numcolor,
+ cp->ctm_ximagesize, cp->ctm_yimagesize, 0,
+ cp->ctm_zoomflag, 0, cp->ctm_raise);
+ #else
image_load(state, cp->ctm_fname, cp->ctm_numcolor,
cp->ctm_ximagesize, cp->ctm_yimagesize, 0,
cp->ctm_zoomflag, 0);
+ #endif
}
state->brankline = 0;
}
***************
*** 2801,2807 ****
}
static void
! image_load(state, filename, numcolor, ximagesize, yimagesize, backflag, zoomflag, centerflag)
struct render_state *state;
char *filename;
int numcolor;
--- 2818,2824 ----
}
static void
! image_load(state, filename, numcolor, ximagesize, yimagesize, backflag, zoomflag, centerflag, raise)
struct render_state *state;
char *filename;
int numcolor;
***************
*** 2815,2821 ****
Pixmap mypixmap;
XImageInfo *ximageinfo;
u_int image_posx;
! int width, height;
float xzoomrate, yzoomrate;
int private = mgp_flag & FL_PRIVATE;
static Cursor curs;
--- 2832,2838 ----
Pixmap mypixmap;
XImageInfo *ximageinfo;
u_int image_posx;
! int width, height, yoffset;
float xzoomrate, yzoomrate;
int private = mgp_flag & FL_PRIVATE;
static Cursor curs;
***************
*** 2916,2921 ****
--- 2933,2957 ----
goto end;
}
+ #if 1 /* by h.kakugawa@computer.org */
+ switch(valign){
+ case VL_TOP:
+ draw_line_itemsize(state,
+ (height * raise) * yzoomrate / 10000,
+ height * (100 + raise) * yzoomrate / 10000);
+ break;
+ case VL_BOTTOM:
+ draw_line_itemsize(state,
+ height * (100 + raise) * yzoomrate / 10000,
+ (height * raise) * yzoomrate / 10000);
+ break;
+ case VL_CENTER:
+ draw_line_itemsize(state,
+ height * (100 + raise) * yzoomrate / 20000,
+ height * (100 + raise) * yzoomrate / 20000);
+ break;
+ }
+ #else
switch(valign){
case VL_TOP:
draw_line_itemsize(state, 0, height * yzoomrate / 100);
***************
*** 2928,2933 ****
--- 2964,2970 ----
height * yzoomrate / 200);
break;
}
+ #endif
if (centerflag)
image_posx = char_size[caching] / 2 - (width * xzoomrate / 100) / 2;
***************
*** 2946,2952 ****
}
static void
! image_load_ps(state, filename, numcolor, ximagesize, yimagesize, backflag, zoomflag, centerflag)
struct render_state *state;
char *filename;
int numcolor;
--- 2983,2989 ----
}
static void
! image_load_ps(state, filename, numcolor, ximagesize, yimagesize, backflag, zoomflag, centerflag, raise)
struct render_state *state;
char *filename;
int numcolor;
***************
*** 3035,3041 ****
filename, gsdevice, imagefile);
}
image_load(state, imagefile, numcolor, 100, 100, backflag,
! Z_NORMAL | (Z_NORMAL << Z_YSHIFT), centerflag);
/* XXX: unlink imagefile in /tmp */
if ((p = strrchr(imagefile, '/')) != NULL)
p++;
--- 3072,3078 ----
filename, gsdevice, imagefile);
}
image_load(state, imagefile, numcolor, 100, 100, backflag,
! Z_NORMAL | (Z_NORMAL << Z_YSHIFT), centerflag, raise);
/* XXX: unlink imagefile in /tmp */
if ((p = strrchr(imagefile, '/')) != NULL)
p++;
***************
*** 3141,3147 ****
if (icon_y == 0) icon_y = 1;
tmp_color = fore_color[caching];
fore_color[caching] = cp->ctic_color;
! image_load(state, cp->ctic_value, 0, icon_x, icon_y, 0, 0, 1);
fore_color[caching] = tmp_color;
break;
--- 3178,3184 ----
if (icon_y == 0) icon_y = 1;
tmp_color = fore_color[caching];
fore_color[caching] = cp->ctic_color;
! image_load(state, cp->ctic_value, 0, icon_x, icon_y, 0, 0, 1, 0);
fore_color[caching] = tmp_color;
break;
***************
*** 4244,4250 ****
case CTL_BIMAGE:
image_load(state, ctl->ctm_fname, ctl->ctm_numcolor,
ctl->ctm_ximagesize, ctl->ctm_yimagesize, 1,
! ctl->ctm_zoomflag, 0);
break;
case CTL_BGRAD:
back_gradation(state, &ctl->ct_val.ctrl_grad);
--- 4281,4287 ----
case CTL_BIMAGE:
image_load(state, ctl->ctm_fname, ctl->ctm_numcolor,
ctl->ctm_ximagesize, ctl->ctm_yimagesize, 1,
! ctl->ctm_zoomflag, 0, 0);
break;
case CTL_BGRAD:
back_gradation(state, &ctl->ct_val.ctrl_grad);
diff -rNc magicpoint-1.10a/grammar.y magicpoint-1.10a-x/grammar.y
*** magicpoint-1.10a/grammar.y Sat Apr 12 07:05:42 2003
--- magicpoint-1.10a-x/grammar.y Thu Apr 8 15:04:47 2004
***************
*** 320,325 ****
--- 320,326 ----
ct->ctm_ximagesize = 100;
ct->ctm_yimagesize = 100;
ct->ctm_zoomflag = Z_NORMAL | (Z_NORMAL << Z_YSHIFT);
+ ct->ctm_raise = 0;
for (p = arg; p; p = p->ct_next) {
if (p->ctc_value[0] != '-')
***************
*** 369,374 ****
--- 370,378 ----
p = p->ct_next;
ct->ctm_yimagesize = atoi(p->ctc_value);
ct->ctm_zoomflag = Z_SCREEN | (Z_SCREEN << Z_YSHIFT);
+ } else if (strcmp(p->ctc_value, "-raise") == 0 && p->ct_next) {
+ p = p->ct_next;
+ ct->ctm_raise = atoi(p->ctc_value);
} else {
yyerror("invalid argument %s specified for newimage",
p->ctc_value);
diff -rNc magicpoint-1.10a/mgp.c magicpoint-1.10a-x/mgp.c
*** magicpoint-1.10a/mgp.c Tue Jun 24 14:26:33 2003
--- magicpoint-1.10a-x/mgp.c Thu Apr 8 15:28:28 2004
***************
*** 1082,1087 ****
--- 1082,1091 ----
}
break;
+ #if 1 /* by h.kakugawa@computer.org */
+ case MapNotify:
+ goto repaint;
+ #endif
case Expose:
if (e.xexpose.window != window)
break;
diff -rNc magicpoint-1.10a/mgp.h magicpoint-1.10a-x/mgp.h
*** magicpoint-1.10a/mgp.h Fri Jun 6 16:18:25 2003
--- magicpoint-1.10a-x/mgp.h Thu Apr 8 14:45:17 2004
***************
*** 223,228 ****
--- 223,229 ----
u_int ct_ximagesize;
u_int ct_yimagesize;
u_int ct_zoomflag;
+ u_int ct_raise;
#define Z_XMASK 0x0f
#define Z_YMASK 0xf0
#define Z_YSHIFT 4
***************
*** 313,318 ****
--- 314,320 ----
#define ctm_ximagesize ct_val.ctrl_image.ct_ximagesize
#define ctm_yimagesize ct_val.ctrl_image.ct_yimagesize
#define ctm_zoomflag ct_val.ctrl_image.ct_zoomflag
+ #define ctm_raise ct_val.ctrl_image.ct_raise
#define ctd_colors ct_val.ctrl_grad.colors
#define ctd_g_colors ct_val.ctrl_grad.ct_g_colors
#define ctd_numcolor ct_val.ctrl_grad.ct_numcolor