1 /* m17n-gui.h -- header file for the GUI API of the m17n library.
2 Copyright (C) 2003, 2004
3 National Institute of Advanced Industrial Science and Technology (AIST)
4 Registration Number H15PRO112
6 This file is part of the m17n library.
8 The m17n library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public License
10 as published by the Free Software Foundation; either version 2.1 of
11 the License, or (at your option) any later version.
13 The m17n library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
18 You should have received a copy of the GNU Lesser General Public
19 License along with the m17n library; if not, write to the Free
20 Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
36 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
38 extern void m17n_init_win (void);
40 #define M17N_INIT() m17n_init_win ()
42 extern void m17n_fini_win (void);
44 #define M17N_FINI() m17n_fini_win ()
48 /***en @defgroup m17nGUI GUI API */
49 /***ja @defgroup m17nGUI GUI API */
52 /*** @ingroup m17nGUI */
53 /***en @defgroup m17nFrame Frame */
54 /***ja @defgroup m17nFrame ¥Õ¥ì¡¼¥à */
57 /*** @ingroup m17nFrame */
59 @brief Type of frames.
61 The type #MFrame is for a @e frame object. Each frame holds
62 various information about the corresponding physical display/input
65 The internal structure of the type #MFrame is concealed from an
66 application program, and its contents depend on the window system
67 in use. In the m17n-X library, it contains the information about
68 @e display and @e screen in the X Window System. */
71 @brief ¥Õ¥ì¡¼¥à¤Î·¿Àë¸À.
73 #MFrame ¤Ï¡¢@e ¥Õ¥ì¡¼¥à ¥ª¥Ö¥¸¥§¥¯¥ÈÍѤη¿¤Ç¤¢¤ë¡£
74 ¸Ä¡¹¤Î¥Õ¥ì¡¼¥à¤Ï¡¢¤½¤ì¤¬Âбþ¤¹¤ëʪÍýŪ¤Êɽ¼¨¡¿ÆþÎϥǥХ¤¥¹¤Î³Æ¼ï¾ðÊó¤òÊÝ»ý¤¹¤ë¡£
76 #MFrame ·¿¤ÎÆâÉô¹½Â¤¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£
77 ¤Þ¤¿¤½¤ÎÆâÍƤϻÈÍѤ¹¤ë¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡£¤Þ¤¿ m17n-X
78 ¥é¥¤¥Ö¥é¥ê¤Ë¤ª¤±¤ë¥Õ¥ì¡¼¥à¤Ï¡¢X ¥¦¥£¥ó¥É¥¦¤Î @e display ¤È @e screen
79 ¤Ë´Ø¤¹¤ë¾ðÊó¤ò»ý¤Ä¡£ */
81 typedef struct MFrame MFrame;
85 extern MSymbol Mdevice;
88 extern MSymbol Mfont_width;
89 extern MSymbol Mfont_ascent;
90 extern MSymbol Mfont_descent;
91 extern MFrame *mframe_default;
93 extern MSymbol Mdisplay;
94 extern MSymbol Mscreen;
95 extern MSymbol Mdrawable;
96 extern MSymbol Mwidget;
97 extern MSymbol Mdepth;
98 extern MSymbol Mcolormap;
100 extern MFrame *mframe (MPlist *plist);
102 extern void *mframe_get_prop (MFrame *frame, MSymbol key);
104 /* end of frame module */
107 /*** @ingroup m17nGUI */
108 /***en @defgroup m17nFont Font */
109 /***ja @defgroup m17nFont ¥Õ¥©¥ó¥È */
112 /*** @ingroup m17nFont */
114 @brief Type of fonts.
116 The type #MFont is the structure defining fonts. It contains
117 information about the following properties of a font: foundry,
118 family, weight, style, stretch, adstyle, registry, size, and
121 This structure is used both for specifying a font in a fontset
122 and for storing information about available system fonts.
124 The internal structure is concealed from an application program. */
127 @brief ¥Õ¥©¥ó¥È¤Î·¿Àë¸À.
129 #MFont ·¿¤Ï¥Õ¥©¥ó¥È»ØÄêÍѤι½Â¤ÂΤǤ¢¤ê¡¢¥Õ¥©¥ó¥È¤Î¥×¥í¥Ñ¥Æ¥£¤Ç¤¢¤ë
130 foundry, family, weight, style, stretch, adstyle, registry,
131 size, resolution ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¡£
133 ¤³¤Î¹½Â¤ÂΤϥե©¥ó¥È¥»¥Ã¥ÈÆâ¤Î¥Õ¥©¥ó¥È¤ò»ØÄꤹ¤ëºÝ¤È¡¢»ÈÍѲÄǽ¤Ê¥·¥¹¥Æ¥à¥Õ¥©¥ó¥È¤Î¾ðÊó¤ò³ÊǼ¤¹¤ëºÝ¤ÎξÊý¤ËÍѤ¤¤é¤ì¤ë¡£
135 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
139 mfont (), mfont_from_name (), mfont_find (). */
141 typedef struct MFont MFont;
145 extern MSymbol Mx, Mfreetype, Mxft;
147 extern MPlist *mfont_freetype_path;
149 extern MFont *mfont ();
151 extern MFont *mfont_copy (MFont *font);
153 extern MFont *mfont_parse_name (const char *name, MSymbol format);
155 extern char *mfont_unparse_name (MFont *font, MSymbol format);
157 /* These two are obsolete (from 1.1.0). */
158 extern char *mfont_name (MFont *font);
159 extern MFont *mfont_from_name (const char *name);
161 extern MSymbol Mfoundry;
162 extern MSymbol Mfamily;
163 extern MSymbol Mweight;
164 extern MSymbol Mstyle;
165 extern MSymbol Mstretch;
166 extern MSymbol Madstyle;
167 extern MSymbol Mspacing;
168 extern MSymbol Mregistry;
169 extern MSymbol Msize;
170 extern MSymbol Mresolution;
171 extern MSymbol Mmax_advance;
173 extern MSymbol Mfontfile;
175 extern MSymbol Mfontconfig;
177 extern void *mfont_get_prop (MFont *font, MSymbol key);
179 extern int mfont_put_prop (MFont *font, MSymbol key, void *val);
181 extern int mfont_set_encoding (MFont *font,
182 MSymbol encoding_name, MSymbol repertory_name);
190 The mfont_find () function returns a pointer to the available font
191 that matches best with the specification $SPEC in frame $FRAME.
193 $SCORE, if not NULL, must point to a place to store the score
194 value which indicates how well the found font matches $SPEC. The
195 smaller score means a better match.
197 $LIMITED_SIZE, if nonzero, forces the font selector to find a
198 font not greater than the #Msize property of $SPEC. */
201 @brief ¥Õ¥©¥ó¥È¤òõ¤¹.
203 ´Ø¿ô mfont_find () ¤Ï¡¢¥Õ¥ì¡¼¥à $FRAME ¾å¤Ç¥Õ¥©¥ó¥ÈÄêµÁ $SPEC
204 ¤Ë¤â¤Ã¤È¤â¹çÃפ¹¤ë»ÈÍѲÄǽ¤Ê¥Õ¥©¥ó¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
206 $SCORE ¤Ï NULL ¤Ç¤¢¤ë¤«¡¢¸«¤Ä¤«¤Ã¤¿¥Õ¥©¥ó¥È¤¬ $SPEC
207 ¤Ë¤É¤ì¤Û¤É¹ç¤Ã¤Æ¤¤¤ë¤«¤ò¼¨¤¹¥¹¥³¥¢¤òÊݸ¤¹¤ë¾ì½ê¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
208 ¥¹¥³¥¢¤¬¾®¤µ¤¤¤Û¤ÉÎɤ¯¹ç¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
210 $LIMITED_SIZE ¤¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢$SPEC ¤Î¥×¥í¥Ñ¥Æ¥£ #Msize
211 ¤è¤êÂ礤¯¤Ê¤¤¥Õ¥©¥ó¥È¤À¤±¤¬Ãµ¤µ¤ì¤ë¡£
214 extern MFont *mfont_find (MFrame *frame, MFont *spec,
215 int *score, int limited_size);
216 extern MSymbol *mfont_selection_priority ();
218 extern int mfont_set_selection_priority (MSymbol *keys);
220 extern int mfont_resize_ratio (MFont *font);
222 extern MPlist *mfont_list (MFrame *frame, MFont *font, MSymbol language,
224 extern MPlist *mfont_list_family_names (MFrame *frame);
226 typedef struct MFontset MFontset;
228 extern int mfont_check (MFrame *frame, MFontset *fontset,
229 MSymbol script, MSymbol language, MFont *font);
231 extern int mfont_match_p (MFont *font, MFont *spec);
233 extern MFont *mfont_open (MFrame *frame, MFont *font);
235 extern MFont *mfont_encapsulate (MFrame *frame, MSymbol data_type, void *data);
237 extern int mfont_close (MFont *font);
239 /* end of font module */
242 /*** @ingroup m17nGUI */
243 /***en @defgroup m17nFontset Fontset */
244 /***ja @defgroup m17nFontset ¥Õ¥©¥ó¥È¥»¥Ã¥È */
246 /*** @addtogroup m17nFontset
248 extern MFontset *mfontset (char *name);
250 extern MSymbol mfontset_name (MFontset *fontset);
252 extern MFontset *mfontset_copy (MFontset *fontset, char *name);
254 extern int mfontset_modify_entry (MFontset *fontset,
255 MSymbol language, MSymbol script,
257 MFont *spec, MSymbol layouter_name,
260 extern MPlist *mfontset_lookup (MFontset *fontset, MSymbol script,
261 MSymbol language, MSymbol charset);
263 /* end of fontset module */
266 /*** @ingroup m17nGUI */
267 /***en @defgroup m17nFace Face */
268 /***ja @defgroup m17nFace ¥Õ¥§¡¼¥¹ */
271 /*** @ingroup m17nFace */
273 @brief Type of faces.
275 The type #MFace is the structure of face objects. The internal
276 structure is concealed from an application program. */
279 @brief ¥Õ¥§¡¼¥¹¤Î·¿Àë¸À.
281 #MFace ·¿¤Ï¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Î¤¿¤á¤Î¹½Â¤ÂΤǤ¢¤ë¡£
282 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
284 typedef struct MFace MFace;
287 extern MSymbol Mforeground;
288 extern MSymbol Mbackground;
289 extern MSymbol Mvideomode;
290 extern MSymbol Mnormal;
291 extern MSymbol Mreverse;
292 extern MSymbol Mhline;
294 extern MSymbol Mfontset;
295 extern MSymbol Mratio;
296 extern MSymbol Mhook_func;
297 extern MSymbol Mhook_arg;
299 /* Predefined faces. */
300 extern MFace *mface_normal_video;
301 extern MFace *mface_reverse_video;
302 extern MFace *mface_underline;
303 extern MFace *mface_medium;
304 extern MFace *mface_bold;
305 extern MFace *mface_italic;
306 extern MFace *mface_bold_italic;
307 extern MFace *mface_xx_small;
308 extern MFace *mface_x_small;
309 extern MFace *mface_small;
310 extern MFace *mface_normalsize;
311 extern MFace *mface_large;
312 extern MFace *mface_x_large;
313 extern MFace *mface_xx_large;
314 extern MFace *mface_black;
315 extern MFace *mface_white;
316 extern MFace *mface_red;
317 extern MFace *mface_green;
318 extern MFace *mface_blue;
319 extern MFace *mface_cyan;
320 extern MFace *mface_yellow;
321 extern MFace *mface_magenta;
324 extern MSymbol Mface;
326 extern MFace *mface ();
328 extern int mface_equal (MFace *face1, MFace *face2);
330 extern MFace *mface_copy (MFace *face);
332 extern MFace *mface_merge (MFace *dst, MFace *src);
334 extern MFace *mface_from_font (MFont *font);
338 /*** @ingroup m17nFace */
340 @brief Type of horizontal line spec of face.
342 The type #MFaceHLineProp is to specify the detail of #Mhline
343 property of a face. The value of the property must be a pointer
344 to an object of this type. */
346 @brief ¥Õ¥§¡¼¥¹¤Î¿åÊ¿Àþ»ØÄêÍÑ·¿Àë¸À.
348 #MFaceHLineProp ¤Ï¥Õ¥§¡¼¥¹¤Î #Mhline
349 ¥×¥í¥Ñ¥Æ¥£¤Î¾ÜºÙ¤ò»ØÄꤹ¤ë·¿¤Ç¤¢¤ë¡£¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϤ³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
354 /***en Type of the horizontal line. */
355 /***ja ¿åÊ¿Àþ¤Î¥¿¥¤¥×. */
360 MFACE_HLINE_STRIKE_THROUGH,
365 /***en Width of the line in pixels. */
366 /***ja ÀþÉý¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë. */
369 /***en Color of the line. If the value is Mnil, foreground color of
370 a merged face is used. */
371 /***ja Àþ¤Î¿§. Mnil ¤Ê¤é¤Ð¡¢Åý¹ç¤·¤¿¥Õ¥§¡¼¥¹¤ÎÁ°·Ê¿§¤¬»È¤ï¤ì¤ë¡£ */
377 /*** @ingroup m17nFace */
379 @brief Type of box spec of face.
381 The type #MFaceBoxProp is to specify the detail of #Mbox property
382 of a face. The value of the property must be a pointer to an
383 object of this type. */
385 @brief ¥Õ¥§¡¼¥¹¤Î°Ï¤ßÏÈ»ØÄêÍÑ·¿Àë¸À.
387 #MFaceBoxProp ¤Ï¥Õ¥§¡¼¥¹¤Î #Mbox ¥×¥í¥Ñ¥Æ¥£¤Î¾ÜºÙ¤ò»ØÄꤹ¤ë·¿¤Ç¤¢¤ë¡£
388 ¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϤ³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
393 /***en Width of the box line in pixels. */
394 /***ja ÀþÉý¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë. */
398 MSymbol color_bottom;
402 unsigned inner_hmargin;
403 unsigned inner_vmargin;
404 unsigned outer_hmargin;
405 unsigned outer_vmargin;
410 /*** @ingroup m17nFace */
412 @brief Type of hook function of face.
414 #MFaceHookFunc is a type of a hook function of a face. */
416 @brief ¥Õ¥§¡¼¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
418 #MFaceHookFunc ¤Ï¥Õ¥§¡¼¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Î·¿¤Ç¤¢¤ë¡£*/
419 typedef void (*MFaceHookFunc) (MFace *face, void *arg, void *info);
422 extern void *mface_get_prop (MFace *face, MSymbol key);
424 extern int mface_put_prop (MFace *face, MSymbol key, void *val);
426 extern MFaceHookFunc mface_get_hook (MFace *face);
428 extern int mface_put_hook (MFace *face, MFaceHookFunc func);
430 extern void mface_update (MFrame *frame, MFace *face);
432 /* end of face module */
435 /*** @ingroup m17nGUI */
436 /***en @defgroup m17nDraw Drawing */
437 /***ja @defgroup m17nDraw ɽ¼¨ */
440 /*** @ingroup m17nDraw */
442 @brief Window system dependent type for a window.
444 The type #MDrawWindow is for a window; a rectangular area that
445 works in several ways like a miniature screen.
447 What it actually points depends on a window system. A program
448 that uses the m17n-X library must coerce the type @c Drawable to
451 @brief ¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡¢¥¦¥£¥ó¥É¥¦¤Î·¿Àë¸À.
453 #MDrawWindow ¤Ï¥¦¥£¥ó¥É¥¦¡¢¤¹¤Ê¤ï¤Á´ö¤Ä¤«¤ÎÅÀ¤Ç¥¹¥¯¥ê¡¼¥ó¤Î¥ß¥Ë¥Á¥å¥¢¤È¤·¤ÆƯ¤¯¶ë·ÁÎΰèÍѤη¿¤Ç¤¢¤ë¡£
455 ¼ÂºÝ¤Ë²¿¤ò»Ø¤¹¤«¤Ï¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡£ m17n X
456 ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ï @c Drawable ·¿¤ò¤³¤Î·¿¤ËÊÑ´¹¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
458 typedef void *MDrawWindow;
461 /*** @ingroup m17nDraw */
463 @brief Window system dependent type for a region.
465 The type #MDrawRegion is for a region; an arbitrary set of pixels
466 on the screen (typically a rectangular area).
468 What it actually points depends on a window system. A program
469 that uses the m17n-X library must coerce the type @c Region to
472 @brief ¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡¢Îΰè¤Î·¿Àë¸À.
474 #MDrawRegion ¤ÏÎΰ衢¤¹¤Ê¤ï¤Á¥¹¥¯¥ê¡¼¥ó¾å¤ÎǤ°Õ¤Î¥Ô¥¯¥»¥ë¤Î½¸¹ç¡Êŵ·¿Åª¤Ë¤Ï¶ë·ÁÎΰè¡ËÍѤη¿¤Ç¤¢¤ë¡£
476 ¼ÂºÝ¤Ë²¿¤ò»Ø¤¹¤«¤Ï¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡£ m17n X
477 ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ï @c Region ·¿¤ò¤³¤Î·¿¤ËÊÑ´¹¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ */
479 typedef void *MDrawRegion;
482 /*** @ingroup m17nDraw */
484 @brief Type of a text drawing control.
486 The type #MDrawControl is the structure that controls how to draw
489 @brief ¥Æ¥¥¹¥Èɽ¼¨À©¸æ¤Î·¿Àë¸À.
491 #MDrawControl ·¿¤Ï¡¢M-text ¤ò¤É¤¦É½¼¨¤¹¤ë¤«¤òÀ©¸æ¤¹¤ë¹½Â¤ÂΤǤ¢¤ë¡£
497 /***en If nonzero, draw an M-text as image, i.e. with background
498 filled with background colors of faces put on the M-text.
499 Otherwise, the background is not changed. */
500 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ M-text ¤ò²èÁü¤È¤·¤Æ¡¢¤¹¤Ê¤ï¤ÁÇطʤò M-text
501 ¤Î¥Õ¥§¡¼¥¹¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ëÇØ·Ê¿§¤ÇËä¤á¤Æɽ¼¨¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÇطʤÏÊѤï¤é¤Ê¤¤¡£ */
502 unsigned as_image : 1;
504 /***en If nonzero and the first glyph of each line has negative
505 lbearing, shift glyphs horizontally to right so that no pixel is
506 drawn to the left of the specified position. */
507 /***ja 0 ¤Ç¤Ê¤¯¡¢³Æ¹Ô¤ÎºÇ½é¤Î¥°¥ê¥Õ¤Î lbearing
508 ¤¬Éé¤Ê¤é¤Ð¡¢¥°¥ê¥Õ¤ò¿åÊ¿¤Ë±¦¤Ë¤º¤é¤·¤Æ¡¢»ØÄꤷ¤¿°ÌÃÖ¤è¤êº¸¤Ë¥Ô¥¯¥»¥ë¤¬ÉÁ¤«¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£ */
509 unsigned align_head : 1;
511 /***en If nonzero, draw an M-text two-dimensionally, i.e., newlines
512 in M-text breaks lines and the following characters are drawn in
513 the next line. If <format> is non-NULL, and the function
514 returns nonzero line width, a line longer than that width is
516 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤ò£²¼¡¸µÅª¤Ë¡¢¤¹¤Ê¤ï¤Á M-text Ãæ¤Î
517 newline ¤Ç²þ¹Ô¤·¡¢Â³¤¯Ê¸»ú¤Ï¼¡¤Î¹Ô¤Ëɽ¼¨¤¹¤ë¡£¤â¤· <format> ¤¬
518 NULL ¤Ç¤Ê¤¯¡¢¤½¤Î´Ø¿ô¤¬ 0 ¤Ç¤Ê¤¤¹ÔÉý¤òÊÖ¤»¤Ð¡¢¤½¤ÎÉý¤è¤êŤ¤¹Ô¤â²þ¹Ô¤µ¤ì¤ë¡£ */
519 unsigned two_dimensional : 1;
521 /***en If nonzero, draw an M-text to the right of a specified
523 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤ò»ØÄꤷ¤¿°ÌÃ֤ᦤËɽ¼¨¤¹¤ë¡£ */
524 unsigned orientation_reversed : 1;
526 /***en If nonzero, reorder glyphs correctly for bidi text. */
527 /***ja 0 ¤Ê¤±¤ì¤Ð¡¢bidi ¥Æ¥¥¹¥ÈÍѤ˥°¥ê¥Õ¤òÀµ¤·¤¯À°Î󤹤롣 */
528 unsigned enable_bidi : 1;
530 /***en If nonzero, don't draw characters whose general category (in
531 Unicode) is Cf (Other, format). */
532 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥æ¥Ë¥³¡¼¥É¤ËÃÖ¤±¤ë°ìÈÌ¥«¥Æ¥´¥ê¤¬ Cf (Other,
533 format) ¤Ç¤¢¤ëʸ»ú¤òɽ¼¨¤·¤Ê¤¤¡£ */
534 unsigned ignore_formatting_char : 1;
536 /***en If nonzero, draw glyphs suitable for a terminal. Not yet
538 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ã¼ËöÍѤΥ°¥ê¥Õ¤òɽ¼¨¤¹¤ë¡£Ì¤¼ÂÁõ¡£ */
539 unsigned fixed_width : 1;
541 /***en If nonzero, draw glyphs with anti-aliasing if a backend font
542 driver supports it. */
543 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥¢¥ó¥Á¥¨¡¼¥ê¥¢¥¹¤Ç¥°¥ê¥Õ¤òɽ¼¨¤¹¤ë¡£
544 ¡Ê¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥Õ¥©¥ó¥È¥É¥é¥¤¥Ð¤¬¥¢¥ó¥Á¥¨¡¼¥ê¥¢¥¹µ¡Ç½¤ò»ý¤Ä¾ì¹ç¤Î¤ß¡£¡Ë */
545 unsigned anti_alias : 1;
547 /***en If nonzero, disable the adjustment of glyph positions to
548 avoid horizontal overlapping at font boundary. */
549 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Õ¥©¥ó¥È¶³¦¤Ç¤Î¿åÊ¿Êý¸þ¤Î¥°¥ê¥Õ¤Î½Å¤Ê¤ê¤òÈò¤±¤ë¤¿¤á¤Î¥°¥ê¥Õ°ÌÃÖ¤ÎÄ´À°¤ò̵¸ú¤Ë¤¹¤ë¡£ */
550 unsigned disable_overlapping_adjustment : 1;
552 /***en If nonzero, the values are minimum line ascent and descent
554 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤΠascent ¤È descent ¤ÎºÇ¾®Ãͤò¼¨¤¹¡£ */
555 unsigned int min_line_ascent;
556 unsigned int min_line_descent;
558 /***en If nonzero, the values are maximum line ascent and descent
560 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤΠascent ¤È descent ¤ÎºÇÂçÃͤò¼¨¤¹¡£ */
561 unsigned int max_line_ascent;
562 unsigned int max_line_descent;
564 /***en If nonzero, the value specifies how many pixels each line can
565 occupy on the display. The value zero means that there is no
566 limit. It is ignored if <format> is non-NULL. */
567 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϤ³¤Î¥Ç¥£¥¹¥×¥ì¥¤¾å¤Ç³Æ¹Ô¤¬Àê¤á¤ë¤³¤È¤Î¤Ç¤¤ë¥Ô¥¯¥»¥ë¿ô¤ò¼¨¤¹¡£
568 0 ¤Ï¸ÂÄꤵ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£<format> ¤¬ NULL ¤Ç¤Ê¤±¤ì¤Ð̵»ë¤µ¤ì¤ë¡£ */
569 unsigned int max_line_width;
571 /***en If nonzero, the value specifies the distance between tab
572 stops in columns (the width of one column is the width of a
573 space in the default font of the frame). The value zero means
575 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ãͤϥ¿¥Ö¥¹¥È¥Ã¥×´Ö¤Îµ÷Î¥¤ò¥³¥é¥àñ°Ì
576 ¡Ê¥³¥é¥à¤Ï¥Õ¥ì¡¼¥à¤Î¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤Ë¤ª¤±¤ë¶õÇòʸ»ú¤ÎÉý¤Ç¤¢¤ë¡Ë¤Ç¼¨¤¹¡£
577 0 ¤Ï 8 ¤ò°ÕÌ£¤¹¤ë¡£ */
578 unsigned int tab_width;
580 /***en If non-NULL, the value is a function that calculates the
581 indentation and width limit of each line based on the line
582 number LINE and the coordinate Y. The function store the
583 indentation and width limit at the place pointed by INDENT and
586 The indentation specifies how many pixels the first glyph of
587 each line is shifted to the right (if the member
588 <orientation_reversed> is zero) or to the left (otherwise). If
589 the value is negative, each line is shifted to the reverse
592 The width limit specifies how many pixels each line can occupy
593 on the display. The value 0 means that there is no limit.
595 LINE and Y are reset to 0 when a line is broken by a newline
596 character, and incremented each time when a long line is broken
597 because of the width limit.
599 This has an effect only when <two_dimensional> is nonzero. */
600 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ãͤϴؿô¤Ç¤¢¤ê¡¢¤½¤Î´Ø¿ô¤Ï¹ÔÈÖ¹æ LINE ¤ÈºÂɸ Y
601 ¤Ë´ð¤Å¤¤¤Æ³Æ¹Ô¤Î¥¤¥ó¥Ç¥ó¥È¤ÈºÇÂçÉý¤ò·×»»¤·¡¢¤½¤ì¤¾¤ì¤òINDENT ¤È
602 WIDTH ¤Ç»Ø¤µ¤ì¤ë¾ì½ê¤ËÊݸ¤¹¤ë¡£
604 ¥¤¥ó¥Ç¥ó¥È¤Ï¡¢³Æ¹Ô¤ÎºÇ½é¤Î¥°¥ê¥Õ¤ò±¦¡Ê¥á¥ó¥Ð
605 <orientation_reversed> ¤¬ 0
606 ¤Î»þ¡Ë¤¢¤ë¤¤¤Ïº¸¡Ê¤½¤ì°Ê³°¤Î»þ¡Ë¤Ë²¿¥Ô¥¯¥»¥ë¤º¤é¤¹¤«¤ò»ØÄꤹ¤ë¡£Ãͤ¬Éé¤Ê¤é¤ÐµÕÊý¸þ¤Ë¤º¤é¤¹¡£
608 ºÇÂçÉý¤Ï¡¢³Æ¹Ô¤¬¥Ç¥£¥¹¥×¥ì¥¤¾å¤ÇÀê¤á¤ë¤³¤È¤Î¤Ç¤¤ë¥Ô¥¯¥»¥ë¿ô¤ÎºÇÂçÃͤǤ¢¤ë¡£Ãͤ¬
609 0 ¤Î¾ì¹ç¤ÏÀ©¸Â¤ò¼õ¤±¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
611 LINE ¤È Y ¤Ï²þ¹Ôʸ»ú¤Ë¤è¤Ã¤Æ¹Ô¤¬²þ¤Þ¤Ã¤¿ºÝ¤Ë¤Ï 0
612 ¤Ë¥ê¥»¥Ã¥È¤µ¤ì¡¢Ä¹¤¤¹Ô¤¬ºÇÂçÉý¤ÎÀ©¸Â¤Ë¤è¤Ã¤Æ²þ¹Ô¤µ¤ì¤ë¤¿¤Ó¤Ë 1 Áý¤ä¤µ¤ì¤ë¡£
614 ¤³¤ì¤Ï <two_dimensional> ¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Î¤ß͸ú¤Ç¤¢¤ë¡£ */
615 void (*format) (int line, int y, int *indent, int *width);
617 /***en If non-NULL, the value is a function that calculates a line
618 breaking position when a line is too long to fit within the
619 width limit. POS is the position of the character next to the
620 last one that fits within the limit. FROM is the position of the
621 first character of the line, and TO is the position of the last
622 character displayed on the line if there were not width limit.
623 LINE and Y are the same as the arguments to <format>.
625 The function must return a character position to break the
628 The function should not modify MT.
630 The mdraw_default_line_break () function is useful for such a
631 script that uses SPACE as a word separator. */
632 /***ja NULL ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤ¬ºÇÂçÉýÃæ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¤Ë¹Ô¤ò²þ¤á¤ë°ÌÃÖ¤ò·×»»¤¹¤ë´Ø¿ô¤Ç¤¢¤ë¡£
633 POS ¤ÏºÇÂçÉý¤Ë¼ý¤Þ¤ëºÇ¸å¤Îʸ»ú¤Î¼¡¤Îʸ»ú¤Î°ÌÃ֤Ǥ¢¤ë¡£FROM
634 ¤Ï¹Ô¤ÎºÇ½é¤Îʸ»ú¤Î°ÌÃÖ¡¢TO
635 ¤ÏºÇÂçÉý¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤½¤Î¹Ô¤Ëɽ¼¨¤µ¤ì¤ëºÇ¸å¤Îʸ»ú¤Î°ÌÃ֤Ǥ¢¤ë¡£LINE
636 ¤È Y ¤Ï <format> ¤Î°ú¿ô¤ÈƱÍͤǤ¢¤ë¡£
638 ¤³¤Î´Ø¿ô¤Ï¹Ô¤ò²þ¤á¤ëʸ»ú°ÌÃÖ¤òÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤Þ¤¿ MT ¤òÊѹ¹¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
640 ´Ø¿ô mdraw_default_line_break ()
641 ¤Ï¡¢¶õÇò¤ò¸ì¤Î¶èÀÚ¤ê¤È¤·¤ÆÍѤ¤¤ë¥¹¥¯¥ê¥×¥ÈÍѤȤ·¤ÆÍÍѤǤ¢¤ë¡£ */
642 int (*line_break) (MText *mt, int pos, int from, int to, int line, int y);
646 /***en Specifies the character position to display a cursor. If it
647 is greater than the maximum character position, the cursor is
648 displayed next to the last character of an M-text. If the value
649 is negative, even if <cursor_width> is nonzero, cursor is not
651 /***ja ¥«¡¼¥½¥ë¤òɽ¼¨¤¹¤ëʸ»ú°ÌÃÖ¤ò¼¨¤¹¡£ºÇÂç¤Îʸ»ú°ÌÃÖ¤è¤êÂ礤±¤ì¤Ð¡¢¥«¡¼¥½¥ë¤Ï
652 M-text ¤ÎºÇ¸å¤Îʸ»ú¤ÎÎÙ¤Ëɽ¼¨¤µ¤ì¤ë¡£Éé¤Ê¤é¤Ð¡¢
653 <cursor_width> ¤¬ 0 ¤Ç¤Ê¤¯¤Æ¤â¥«¡¼¥½¥ë¤Ïɽ¼¨¤µ¤ì¤Ê¤¤¡£
657 /***en If nonzero, display a cursor at the character position
658 <cursor_pos>. If the value is positive, it is the pixel width
659 of the cursor. If the value is negative, the cursor width is
660 the same as the underlining glyph(s). */
661 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢<cursor_pos> ¤Ë¥«¡¼¥½¥ë¤òɽ¼¨¤¹¤ë¡£
662 Ãͤ¬Àµ¤Ê¤é¤Ð¡¢¥«¡¼¥½¥ë¤ÎÉý¤Ï¤½¤ÎÃÍ¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë¤Ç¤¢¤ë¡£
663 Éé¤Ê¤é¤Ð¡¢¥«¡¼¥½¥ë¤Î¤¢¤ë¥°¥ê¥Õ¤ÈƱ¤¸Éý¤Ç¤¢¤ë¡£ */
666 /***en If nonzero and <cursor_width> is also nonzero, display double
667 bar cursors; at the character position <cursor_pos> and at the
668 logically previous character. Both cursors have one pixel width
669 with horizontal fringes at upper or lower positions. */
670 /***ja If 0 ¤Ç¤Ê¤¯¡¢¤«¤Ä <cursor_width> ¤â 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Ð¡¼¥«¡¼¥½¥ë¤òʸ»ú°ÌÃÖ
671 <cursor_pos> ¤ÈÏÀÍýŪ¤Ë¤½¤ì¤ÎÁ°¤Ë¤¢¤ëʸ»ú¤Î£²¥ö½ê¤Ëɽ¼¨¤¹¤ë¡£
672 ÁÐÊý¤È¤â£±¥Ô¥¯¥»¥ëÉý¤Ç¡¢¾å¤«²¼¤Ë¿åÊ¿¤Î¾þ¤ê¤¬¤Ä¤¯¡£*/
675 /***en If nonzero, on drawing partial text, pixels of surrounding
676 texts that intrude into the drawing area are also drawn. For
677 instance, some CVC sequence of Thai text (C is consonant, V is
678 upper vowel) is drawn so that V is placed over the middle of two
679 Cs. If this CVC sequence is already drawn and only the last C
680 is drawn again (for instance by updating cursor position), the
681 right half of V is erased if this member is zero. By setting
682 this member to nonzero, even with such a drawing, we can keep
683 this CVC sequence correctly displayed. */
684 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Æ¥¥¹¥È¤Î°ìÉôʬ¤òɽ¼¨¤¹¤ëºÝ¤Ë¡¢Á°¸å¤Î¥Æ¥¥¹¥È¤Î¤¦¤Á¤½¤Îɽ¼¨Îΰè¤Ë¿¯Æþ¤¹¤ëÉôʬ¤âɽ¼¨¤¹¤ë¡£
685 ¤¿¤È¤¨¤Ð¡¢¥¿¥¤¸ì¥Æ¥¥¹¥È »Ò²»-Êì²»-»Ò²»
686 ¤È¤¤¤¦¥·¡¼¥¯¥¨¥ó¥¹¤Î¤¤¤¯¤Ä¤«¤Ï¡¢Êì²»¤¬Æó¤Ä¤Î»Ò²»¤Î´Ö¤Ë¾å¤Ë¤Î¤ë¤è¤¦¤ËÉÁ¤«¤ì¤ë¡£
687 ¤³¤Î¤è¤¦¤Ê¥·¡¼¥¯¥¨¥ó¥¹¤¬¤¹¤Ç¤ËÉÁ¤«¤ì¤Æ¤ª¤ê¡¢ºÇ¸å¤Î»Ò²»¤À¤±¤òÉÁ¤Ä¾¤¹¾ì¹ç
688 ¡Ê¤¿¤È¤¨¤Ð¡¢¥«¡¼¥½¥ë°ÌÃÖ¤ò¹¹¿·¤¹¤ëºÝ¤Ê¤É¡Ë¤³¤Î¥á¥ó¥Ð¤¬ 0
689 ¤Ç¤¢¤ì¤Ð¡¢Êì²»¤Î±¦È¾Ê¬¤¬¾Ã¤µ¤ì¤Æ¤·¤Þ¤¦¡£¤³¤ì¤ò 0 °Ê³°¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤Î¤è¤¦¤ÊºÝ¤Ë¤â
690 »Ò²»-Êì²»-»Ò²» ¤Î¥·¡¼¥¯¥¨¥ó¥¹¤òÀµ¤·¤¯É½¼¨¤·Â³¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
693 /***en If nonzero, don't cache the result of any drawing information
695 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤Îɽ¼¨¤Ë´Ø¤¹¤ë¾ðÊó¤ò¥¥ã¥Ã¥·¥å¤·¤Ê¤¤¡£
699 /* If non-NULL, limit the drawing effect to the specified region. */
700 MDrawRegion clip_region;
704 extern int mdraw_line_break_option;
708 /*** @ingroup m17nDraw */
710 @brief Type of metric for glyphs and texts.
712 The type #MDrawMetric is for a metric of a glyph and a drawn text.
713 It is also used to represent a rectangle area of a graphic
716 @brief ¥°¥ê¥Õ¤È¥Æ¥¥¹¥È¤ÎÀ£Ë¡¤Î·¿Àë¸À.
718 #MDrawMetric ¤Ï¥°¥ê¥Õ¤Èɽ¼¨¤µ¤ì¤¿¥Æ¥¥¹¥È¤ÎÀ£Ë¡ÍѤη¿¤Ç¤¢¤ë¡£
719 ¤Þ¤¿¡¢É½¼¨¥Ç¥Ð¥¤¥¹¤Î¶ë·ÁÎΰè¤òɽ¤¹¤Î¤Ë¤âÍѤ¤¤é¤ì¤ë¡£ */
723 unsigned int width, height;
728 /*** @ingroup m17nDraw */
730 @brief Type of information about a glyph.
732 The type #MDrawGlyphInfo is the structure that contains
733 information about a glyph. It is used by mdraw_glyph_info (). */
735 @brief ¥°¥ê¥Õ¤Ë´Ø¤¹¤ë¾ðÊó¤Î·¿Àë¸À.
737 #MDrawGlyphInfo ·¿¤Ï¥°¥ê¥Õ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¹½Â¤ÂΤǤ¢¤ë¡£
738 mdraw_glyph_info () ¤Ï¤³¤ì¤òÍѤ¤¤ë¡£ */
742 /***en Character range corresponding to the glyph. */
743 /***ja ¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
746 /***en Character ranges corresponding to the line of the glyph. */
747 /***ja ¥°¥ê¥Õ¤ÎÎó¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
748 int line_from, line_to;
750 /***en X/Y coordinates of the glyph. */
751 /***ja ¥°¥ê¥Õ¤Î X/Y ºÂɸ. */
754 /***en Metric of the glyph. */
755 /***ja ¥°¥ê¥Õ¤ÎÀ£Ë¡. */
758 /***en Font used for the glyph. Set to NULL if no font is found for
760 /***ja ¥°¥ê¥Õ¤Ë»È¤ï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£ */
764 /***en Character ranges corresponding to logically previous and next
765 glyphs. Note that we do not need the members prev_to and
766 next_from because they must be the same as the members from and
768 /***ja ÏÀÍýŪ¤ÊÁ°¸å¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£¥á¥ó¥Ð prev_to ¤È
769 next_from ¤Ï¡¢¤½¤ì¤¾¤ì¥á¥ó¥Ð from ¤È to ¤ÈƱ¤¸¤Ç¤¢¤ë¤Ï¤º¤Ê¤Î¤ÇÉÔ
771 int prev_from, next_to;
773 /***en Character ranges corresponding to visually left and right
775 /***ja ɽ¼¨¾å¤Îº¸±¦¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£ */
776 int left_from, left_to;
777 int right_from, right_to;
779 /***en Logical width of the glyph. Nominal distance to the next
781 /***ja ¥°¥ê¥Õ¤ÎÏÀÍýŪÉý¡£¼¡¤Î¥°¥ê¥Õ¤È¤Î̾Ìܾå¤Îµ÷Î¥¡£ */
787 /*** @ingroup m17nDraw */
789 @brief Type of information about a glyph metric and font.
791 The type #MDrawGlyph is the structure that contains information
792 about a glyph metric and font. It is used by the function
793 mdraw_glyph_list (). */
795 @brief ¥°¥ê¥Õ¤ÎÀ£Ë¡¤È¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤Î·¿Àë¸À.
797 #MDrawGlyph ·¿¤Ï¥°¥ê¥Õ¤ÎÀ£Ë¡¤È¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¹½Â¤ÂΤǤ¢¤ë¡£
798 mdraw_glyph_list () ¤Ï¤³¤ì¤òÍѤ¤¤ë¡£ */
802 /***en Character range corresponding to the glyph. */
803 /***ja ¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
806 /***en Font glyph code of the glyph. */
807 /***ja ¥Õ¥©¥ó¥ÈÆâ¤Î¥°¥ê¥Õ¥³¡¼¥É¡£ */
810 /***en Logical width of the glyph. Nominal distance to the next
812 /***ja ¥°¥ê¥Õ¤ÎÏÀÍýŪÉý¡£¼¡¤Î¥°¥ê¥Õ¤È¤Î̾Ìܾå¤Îµ÷Î¥¡£ */
813 int x_advance, y_advance;
815 /***en X/Y offset relative to the glyph position. */
816 /***ja ¥°¥ê¥Õ¤Î°ÌÃÖ¤ËÂФ¹¤ë X/Y ¥ª¥Õ¥»¥Ã¥È. */
819 /***en Metric of the glyph. */
820 /***ja ¥°¥ê¥Õ¤ÎÀ£Ë¡. */
821 int lbearing, rbearing, ascent, descent;
823 /***en Font used for the glyph. Set to NULL if no font is found for
825 /***ja ¥°¥ê¥Õ¤Ë»È¤ï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£ */
828 /***en Type of the font. One of Mx, Mfreetype, Mxft. */
829 /***ja ¥Õ¥©¥ó¥È¤Î¥¿¥¤¥×¡£Mx¡¢Mfreetype¡¢Mxft ¤Î¤¤¤º¤ì¤«¡£ */
832 /***en Pointer to the font structure. The actual type is
833 (XFontStruct *) if <font_type> member is Mx, FT_Face if
834 <font_type> member is Mfreetype, and (XftFont *) if <font_type>
836 /***ja ¥Õ¥©¥ó¥È¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¡£¼ÂºÝ¤Î·¿¤Ï <font_type> ¥á¥ó¥Ð¤¬
837 Mx ¤Ê¤é (XFontStruct *)¡¢ Mfreetype ¤Ê¤é FT_Face¡¢Mxft
838 ¤Ê¤é (XftFont *)¡£ */
846 @brief Type of textitems.
848 The type #MDrawTextItem is for @e textitem objects.
849 Each textitem contains an M-text and some other information to
850 control the drawing of the M-text. */
853 @brief textitem ¤Î·¿Àë¸À.
855 #MDrawTextItem ¤Ï @e ¥Æ¥¥¹¥È¥¢¥¤¥Æ¥à ¥ª¥Ö¥¸¥§¥¯¥ÈÍѤη¿¤Ç¤¢¤ë¡£
856 ³Æ¥Æ¥¥¹¥È¥¢¥¤¥Æ¥à¤Ï¡¢ 1 ¸Ä¤Î M-text ¤È¡¢¤½¤Îɽ¼¨¤òÀ©¸æ¤¹¤ë¤¿¤á¤Î¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤ë¡£
858 @latexonly \IPAlabel{MTextItem} @endlatexonly */
866 /***en Optional change in the position (in the unit of pixel) along
867 the X-axis before the M-text is drawn. */
868 /***ja M-text ɽ¼¨Á°¤Ë¹Ô¤Ê¤¦X¼´Êý¸þ¤Î°ÌÃÖÄ´À° (¥Ô¥¯¥»¥ëñ°Ì) */
871 /***en Pointer to a face object. Each property of the face, if not
872 Mnil, overrides the same property of face(s) specified as a text
874 /***ja ¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡£¥Õ¥§¡¼¥¹¤Î³Æ¥×¥í¥Ñ¥Æ¥£¤Ï
875 Mnil ¤Ç¤Ê¤±¤ì¤Ð <mt> ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥§¡¼¥¹¤ÎƱ¤¸¥×¥í¥Ñ¥Æ¥£¤ËÍ¥À褹¤ë*/
878 /***en Pointer to a draw control object. The M-text <mt> is drawn
879 by mdraw_text_with_control () with this control object. */
880 /***ja ɽ¼¨À©¸æ¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ mdraw_text_with_control ()
881 ¤Ï¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Æ M-text <mt> ¤òɽ¼¨¤¹¤ë¡£ */
882 MDrawControl *control;
888 extern int mdraw_text (MFrame *frame, MDrawWindow win, int x, int y,
889 MText *mt, int from, int to);
891 extern int mdraw_image_text (MFrame *frame, MDrawWindow win, int x, int y,
892 MText *mt, int from, int to);
894 extern int mdraw_text_with_control (MFrame *frame, MDrawWindow win,
895 int x, int y, MText *mt, int from, int to,
896 MDrawControl *control);
898 extern int mdraw_coordinates_position (MFrame *frame,
899 MText *mt, int from, int to,
900 int x, int y, MDrawControl *control);
902 extern int mdraw_text_extents (MFrame *frame,
903 MText *mt, int from, int to,
904 MDrawControl *control,
905 MDrawMetric *overall_ink_return,
906 MDrawMetric *overall_logical_return,
907 MDrawMetric *overall_line_return);
909 extern int mdraw_text_per_char_extents (MFrame *frame,
910 MText *mt, int from, int to,
911 MDrawControl *control,
912 MDrawMetric *ink_array_return,
913 MDrawMetric *logical_array_return,
915 int *num_chars_return,
916 MDrawMetric *overall_ink_return,
917 MDrawMetric *overall_logical_return);
919 extern int mdraw_glyph_info (MFrame *frame, MText *mt, int from, int pos,
920 MDrawControl *control, MDrawGlyphInfo *info);
922 extern int mdraw_glyph_list (MFrame *frame, MText *mt, int from, int to,
923 MDrawControl *control, MDrawGlyph *glyphs,
924 int array_size, int *num_glyphs_return);
926 extern void mdraw_text_items (MFrame *frame, MDrawWindow win, int x, int y,
927 MDrawTextItem *items, int nitems);
929 extern void mdraw_per_char_extents (MFrame *frame, MText *mt,
930 MDrawMetric *array_return,
931 MDrawMetric *overall_return);
933 extern int mdraw_default_line_break (MText *mt, int pos,
934 int from, int to, int line, int y);
936 extern void mdraw_clear_cache (MText *mt);
938 /* end of drawing module */
941 /*** @ingroup m17nGUI */
942 /***en @defgroup m17nInputMethodWin Input Method (GUI) */
943 /***ja @defgroup m17nInputMethodWin ÆþÎϥ᥽¥Ã¥É (GUI) */
946 extern MInputDriver minput_gui_driver;
949 /*** @ingroup m17nInputMethodWin */
951 @brief Type of the argument to the function minput_create_ic ().
953 The type #MInputGUIArgIC is for the argument $ARG of the function
954 minput_create_ic () to create an input context of an internal
958 @brief ´Ø¿ô minput_create_ic () ¤Î°ú¿ô¤Î·¿Àë¸À.
960 #MInputGUIArgIC ¤Ï¡¢´Ø¿ô minput_create_ic ()
961 ¤¬ÆâÉôÆþÎϥ᥽¥Ã¥É¤ÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ëºÝ¤Î¡¢°ú¿ô $ARG ÍѤη¿¤Ç¤¢¤ë¡£ */
965 /***en Frame of the client. */
966 /***ja ¥¯¥é¥¤¥¢¥ó¥È¤Î¥Õ¥ì¡¼¥à */
969 /***en Window on which to display the preedit and status text. */
970 /***ja preedit ¥Æ¥¥¹¥È¤È status ¥Æ¥¥¹¥È¤òɽ¼¨¤¹¤ë¥¦¥£¥ó¥É¥¦ */
973 /***en Window that the input context has a focus on. */
974 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥Õ¥©¡¼¥«¥¹¤ò¤ª¤¤¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦ */
980 extern MSymbol minput_event_to_key (MFrame *frame, void *event);
982 /* end of input module */
984 /* end of window modules */
987 extern MFace *mdebug_dump_face (MFace *face, int indent);
988 extern MFont *mdebug_dump_font (MFont *font);
989 extern MFontset *mdebug_dump_fontset (MFontset *fontset, int indent);
993 #endif /* _M17N_GUI_H_ */