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., 59 Temple Place, Suite 330, Boston, MA
35 extern void m17n_init_win (void);
37 #define M17N_INIT() m17n_init_win ()
39 extern void m17n_fini_win (void);
41 #define M17N_FINI() m17n_fini_win ()
43 /***en @defgroup m17nGUI GUI API */
44 /***ja @defgroup m17nGUI GUI API */
47 /*** @ingroup m17nGUI */
48 /***en @defgroup m17nFrame Frame */
49 /***ja @defgroup m17nFrame ¥Õ¥ì¡¼¥à */
52 /*** @ingroup m17nFrame */
54 @brief Type of frames.
56 The type #MFrame is for a @e frame object. Each frame holds
57 various information about the corresponding physical display/input
60 The internal structure of the type #MFrame is concealed from an
61 application program, and its contents depend on the window system
62 in use. In the m17n-X library, it contains the information about
63 @e display and @e screen in the X Window System. */
66 @brief ¥Õ¥ì¡¼¥à¤Î·¿Àë¸À
68 #MFrame ¤Ï¡¢@e ¥Õ¥ì¡¼¥à ¥ª¥Ö¥¸¥§¥¯¥ÈÍѤη¿¤Ç¤¢¤ë¡£¸Ä¡¹¤Î¥Õ¥ì¡¼¥à¤Ï¡¢
69 ¤½¤ì¤¬Âбþ¤¹¤ëʪÍýŪ¤Êɽ¼¨¡¿ÆþÎϥǥХ¤¥¹¤Î³Æ¼ï¾ðÊó¤òÊÝ»ý¤¹¤ë¡£
71 #MFrame ·¿¤ÎÆâÉô¹½Â¤¤Ï¡¢»ÈÍѤ¹¤ë¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤·¡¢¤Þ¤¿¥¢
72 ¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£m17n-X ¥é¥¤¥Ö¥é¥ê¤Ë¤ª¤±¤ë
73 ¥Õ¥ì¡¼¥à¤Ï¡¢X ¥¦¥£¥ó¥É¥¦¤Î @e display ¤È @e screen ¤Ë´Ø¤¹¤ë¾ðÊó¤ò
77 typedef struct MFrame MFrame;
82 extern MSymbol Mfont_width;
83 extern MSymbol Mfont_ascent;
84 extern MSymbol Mfont_descent;
85 extern MFrame *mframe_default;
87 extern MFrame *mframe (MPlist *plist);
89 extern void *mframe_get_prop (MFrame *frame, MSymbol key);
91 /* end of frame module */
94 /*** @ingroup m17nGUI */
95 /***en @defgroup m17nFont Font */
96 /***ja @defgroup m17nFont ¥Õ¥©¥ó¥È */
99 /*** @ingroup m17nFont */
101 @brief Type of fonts.
103 The type #MFont is the structure defining fonts. It contains
104 information about the following properties of a font: foundry,
105 family, weight, style, stretch, adstyle, registry, size, and
108 This structure is used both for specifying a font in a fontset
109 and for storing information about available system fonts.
111 The internal structure is concealed from an application program. */
114 @brief ¥Õ¥©¥ó¥È¤Î·¿Àë¸À.
116 #MFont ·¿¤Ï¥Õ¥©¥ó¥È»ØÄêÍѤι½Â¤ÂΤǤ¢¤ê¡¢¥Õ¥©¥ó¥È¤Î¥×¥í¥Ñ¥Æ¥£¤Ç¤¢
117 ¤ë fondry, family, weight, style, stretch, adstyle, registry,
118 size, resolution ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¡£
120 ¤³¤Î¹½Â¤ÂΤϥե©¥ó¥È¥»¥Ã¥ÈÆâ¤Î¥Õ¥©¥ó¥È¤ò»ØÄꤹ¤ëºÝ¤È¡¢»ÈÍѲÄǽ¤Ê¥·
121 ¥¹¥Æ¥à¥Õ¥©¥ó¥È¤Î¾ðÊó¤ò³ÊǼ¤¹¤ëºÝ¤ÎξÊý¤ËÍѤ¤¤é¤ì¤ë¡£
123 ÆâÉô¹½Â¤¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
127 mfont (), mfont_from_name (), mfont_find (). */
129 typedef struct MFont MFont;
133 extern MSymbol Mfont;
135 extern MPlist *mfont_freetype_path;
137 extern MFont *mfont ();
139 extern MFont *mfont_from_name (char *name);
141 extern MFont *mfont_copy (MFont *font);
143 extern char *mfont_name (MFont *font);
145 extern MFont *mfont_from_spec (char *family, char *weight, char *slant,
146 char *swidth, char *adstyle, char *registry,
147 unsigned short point, unsigned short res);
149 extern MSymbol Mfoundry;
150 extern MSymbol Mfamily;
151 extern MSymbol Mweight;
152 extern MSymbol Mstyle;
153 extern MSymbol Mstretch;
154 extern MSymbol Madstyle;
155 extern MSymbol Mregistry;
156 extern MSymbol Msize;
157 extern MSymbol Mresolution;
159 extern void *mfont_get_prop (MFont *font, MSymbol key);
161 extern int mfont_put_prop (MFont *font, MSymbol key, void *val);
163 extern int mfont_set_encoding (MFont *font,
164 MSymbol encoding_name, MSymbol repertory_name);
172 The mfont_find () function returns a pointer to the available font
173 that matches best with the specification $SPEC in frame $FRAME.
175 $SCORE, if not NULL, must point to a place to store the score
176 value which indicates how well the found font matches $SPEC. The
177 smaller score means a better match.
179 $LIMITED_SIZE, if nonzero, forces the font selector to find a
180 font not greater than the #Msize property of $SPEC. */
183 @brief ¥Õ¥©¥ó¥È¤òõ¤¹
185 ´Ø¿ô mfont_find () ¤Ï¡¢¥Õ¥ì¡¼¥à $FRAME ¾å¤Ç¥Õ¥©¥ó¥ÈÄêµÁ $SPEC ¤Ë¤â¤Ã
186 ¤È¤â¹çÃפ¹¤ë»ÈÍѲÄǽ¤Ê¥Õ¥©¥ó¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
188 $SCORE ¤Ï NULL ¤Ç¤¢¤ë¤«¡¢¸«¤Ä¤«¤Ã¤¿¥Õ¥©¥ó¥È¤¬ $SPEC ¤Ë¤É¤ì¤Û¤É¹ç¤Ã
189 ¤Æ¤¤¤ë¤«¤ò¼¨¤¹¥¹¥³¥¢¤òÊݸ¤¹¤ë¾ì½ê¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£¥¹¥³¥¢¤¬¾®¤µ
190 ¤¤¤Û¤ÉÎɤ¯¹ç¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
192 $LIMITED_SIZE ¤¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢$SPEC ¤Î¥×¥í¥Ñ¥Æ¥£ #Msize ¤è¤êÂç¤
193 ¤¯¤Ê¤¤¥Õ¥©¥ó¥È¤À¤±¤¬Ãµ¤µ¤ì¤ë¡£
196 extern MFont *mfont_find (MFrame *frame, MFont *spec,
197 int *score, int limited_size);
199 extern MSymbol *mfont_selection_priority ();
201 extern int mfont_set_selection_priority (MSymbol *keys);
203 /* end of font module */
206 /*** @ingroup m17nGUI */
207 /***en @defgroup m17nFontset Fontset */
208 /***ja @defgroup m17nFontset ¥Õ¥©¥ó¥È¥»¥Ã¥È */
211 typedef struct MFontset MFontset;
213 extern MFontset *mfontset (char *name);
215 extern MSymbol mfontset_name (MFontset *fontset);
217 extern MFontset *mfontset_copy (MFontset *fontset, char *name);
219 extern int mfontset_modify_entry (MFontset *fontset,
220 MSymbol language, MSymbol script,
222 MFont *spec, MSymbol layouter_name,
225 /* end of fontset module */
228 /*** @ingroup m17nGUI */
229 /***en @defgroup m17nFace Face */
230 /***ja @defgroup m17nFace ¥Õ¥§¡¼¥¹ */
233 /*** @ingroup m17nFace */
235 @brief Type of faces.
237 The type #MFace is the structure of face objects. The internal
238 structure is concealed from an application program. */
241 @brief ¥Õ¥§¡¼¥¹¤Î·¿Àë¸À.
243 #MFace ·¿¤Ï¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Î¤¿¤á¤Î¹½Â¤ÂΤǤ¢¤ë¡£ÆâÉô¹½Â¤¤Ï
244 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¸«¤¨¤Ê¤¤¡£ */
246 typedef struct MFace MFace;
249 extern MSymbol Mforeground;
250 extern MSymbol Mbackground;
251 extern MSymbol Mvideomode;
252 extern MSymbol Mnormal;
253 extern MSymbol Mreverse;
254 extern MSymbol Mhline;
256 extern MSymbol Mfontset;
257 extern MSymbol Mratio;
258 extern MSymbol Mhook_func;
259 extern MSymbol Mhook_arg;
261 /* Predefined faces. */
262 extern MFace *mface_normal_video;
263 extern MFace *mface_reverse_video;
264 extern MFace *mface_underline;
265 extern MFace *mface_medium;
266 extern MFace *mface_bold;
267 extern MFace *mface_italic;
268 extern MFace *mface_bold_italic;
269 extern MFace *mface_xx_small;
270 extern MFace *mface_x_small;
271 extern MFace *mface_small;
272 extern MFace *mface_normalsize;
273 extern MFace *mface_large;
274 extern MFace *mface_x_large;
275 extern MFace *mface_xx_large;
276 extern MFace *mface_black;
277 extern MFace *mface_white;
278 extern MFace *mface_red;
279 extern MFace *mface_green;
280 extern MFace *mface_blue;
281 extern MFace *mface_cyan;
282 extern MFace *mface_yellow;
283 extern MFace *mface_magenta;
286 extern MSymbol Mface;
288 extern MFace *mface ();
290 extern MFace *mface_copy (MFace *face);
292 extern MFace *mface_merge (MFace *dst, MFace *src);
294 extern MFace *mface_from_font (MFont *font);
298 /*** @ingroup m17nFace */
300 @brief Type of horizontal line spec of face.
302 The type #MFaceHLineProp is to specify the detail of #Mhline
303 property of a face. The value of the property must be a pointer
304 to an object of this type. */
306 @brief ¥Õ¥§¡¼¥¹¤Î¿åÊ¿Àþ»ØÄêÍÑ·¿Àë¸À.
308 #MFaceHLineProp ¤Ï¥Õ¥§¡¼¥¹¤Î #Mhline ¥×¥í¥Ñ¥Æ¥£¤Î¾ÜºÙ¤ò»ØÄꤹ¤ë·¿
309 ¤Ç¤¢¤ë¡£¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϤ³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
314 /***en Type of the horizontal line. */
315 /***ja ¿åÊ¿Àþ¤Î¥¿¥¤¥×. */
320 MFACE_HLINE_STRIKE_THROUGH,
325 /***en Width of the line in pixels. */
326 /***ja ÀþÉý¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë. */
329 /***en Color of the line. If the value is Mnil, foreground color of
330 a merged face is used. */
331 /***ja Àþ¤Î¿§. Mnil ¤Ê¤é¤Ð¡¢Åý¹ç¤·¤¿¥Õ¥§¡¼¥¹¤ÎÁ°·Ê¿§¤¬»È¤ï¤ì¤ë¡£ */
337 /*** @ingroup m17nFace */
339 @brief Type of box spec of face.
341 The type #MFaceBoxProp is to specify the detail of #Mbox property
342 of a face. The value of the property must be a pointer to an
343 object of this type. */
345 @brief ¥Õ¥§¡¼¥¹¤Î°Ï¤ßÏÈ»ØÄêÍÑ·¿Àë¸À.
347 #MFaceBoxProp ¤Ï¥Õ¥§¡¼¥¹¤Î #Mbox ¥×¥í¥Ñ¥Æ¥£¤Î¾ÜºÙ¤ò»ØÄꤹ¤ë·¿¤Ç¤¢
348 ¤ë¡£¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϤ³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
353 /***en Width of the box line in pixels. */
354 /***ja ÀþÉý¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë. */
358 MSymbol color_bottom;
362 unsigned inner_hmargin;
363 unsigned inner_vmargin;
364 unsigned outer_hmargin;
365 unsigned outer_vmargin;
370 /*** @ingroup m17nFace */
372 @brief Type of hook function of face.
374 The type #MFaceHookFunc is to specify the #Mhook property of a
375 face. The value of the property must be function of this
378 @brief ¥Õ¥§¡¼¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Î·¿Àë¸À.
380 #MFaceHookFunc ¤Ï¥Õ¥§¡¼¥¹¤Î #Mhook ¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë·¿¤Ç¤¢¤ë¡£
381 ¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢¤³¤Î·¿¤Î´Ø¿ô¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
383 typedef void *(*MFaceHookFunc) (MFace *face, void *arg, void *info);
386 extern void *mface_get_prop (MFace *face, MSymbol key);
388 extern int mface_put_prop (MFace *face, MSymbol key, void *val);
390 extern void mface_update (MFrame *frame, MFace *face);
392 /* end of face module */
395 /*** @ingroup m17nGUI */
396 /***en @defgroup m17nDraw Drawing */
397 /***ja @defgroup m17nDraw ɽ¼¨ */
400 /*** @ingroup m17nDraw */
402 @brief Window system dependent type for a window.
404 The type #MDrawWindow is for a window; a rectangular area that
405 works in several ways like a miniature screen.
407 What it actually points depends on a window system. A program
408 that uses the m17n-X library must coerce the type @c Drawable to
410 /***ja ¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡¢¥¦¥£¥ó¥É¥¦¤Î·¿Àë¸À.
412 #MDrawWindow ¤Ï¥¦¥£¥ó¥É¥¦¡¢¤¹¤Ê¤ï¤Á´ö¤Ä¤«¤ÎÅÀ¤Ç¥¹¥¯¥ê¡¼¥ó¤Î¥ß¥Ë¥Á¥å
413 ¥¢¤È¤·¤ÆƯ¤¯¶ë·ÁÎΰèÍѤη¿¤Ç¤¢¤ë¡£
415 ¼ÂºÝ¤Ë²¿¤ò»Ø¤¹¤«¤Ï¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡£ m17n X ¥é¥¤¥Ö¥é¥ê
416 ¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ï @c Drawable ·¿¤ò¤³¤Î·¿¤ËÊÑ´¹¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é
419 typedef void *MDrawWindow;
422 /*** @ingroup m17nDraw */
424 @brief Window system dependent type for a region.
426 The type #MDrawRegion is for a region; an arbitrary set of pixels
427 on the screen (typically a rectangular area).
429 What it actually points depends on a window system. A program
430 that uses the m17n-X library must coerce the type @c Region to
433 @brief ¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡¢Îΰè¤Î·¿Àë¸À.
435 #MDrawRegion ¤ÏÎΰ衢¤¹¤Ê¤ï¤Á¥¹¥¯¥ê¡¼¥ó¾å¤ÎǤ°Õ¤Î¥Ô¥¯¥»¥ë¤Î½¸¹ç
436 ¡Êŵ·¿Åª¤Ë¤Ï¶ë·ÁÎΰè¡ËÍѤη¿¤Ç¤¢¤ë¡£
438 ¼ÂºÝ¤Ë²¿¤ò»Ø¤¹¤«¤Ï¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¡£ m17n X ¥é¥¤¥Ö¥é¥ê
439 ¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ï @c Region ·¿¤ò¤³¤Î·¿¤ËÊÑ´¹¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é
442 typedef void *MDrawRegion;
445 /*** @ingroup m17nDraw */
447 @brief Type of a text drawing control.
449 The type #MDrawControl is the structure that controls how to draw
452 @brief ¥Æ¥¥¹¥Èɽ¼¨¤Î¥³¥ó¥È¥í¡¼¥ë¤Î·¿Àë¸À.
454 #MDrawControl ·¿¤Ï¡¢M-text ¤ò¤É¤¦É½¼¨¤¹¤ë¤«¤òÀ©¸æ¤¹¤ë¹½Â¤ÂΤǤ¢¤ë¡£
460 /***en If nonzero, draw an M-text as image, i.e. with background
461 filled with background colors of faces put on the M-text.
462 Otherwise, the background is not changed. */
463 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ M-text ¤ò²èÁü¤È¤·¤Æ¡¢¤¹¤Ê¤ï¤ÁÇطʤò M-text ¤Î
464 ¥Õ¥§¡¼¥¹¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ëÇØ·Ê¿§¤ÇËä¤á¤Æɽ¼¨¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÇØ
466 unsigned as_image : 1;
468 /***en If nonzero and the first glyph of each line has negative
469 lbearing, shift glyphs horizontally to right so that no pixel is
470 drawn to the left of the specified position. */
471 /***ja 0 ¤Ç¤Ê¤¯¡¢³Æ¹Ô¤ÎºÇ½é¤Î¥°¥ê¥Õ¤Îlbearing ¤¬Éé¤Ê¤é¤Ð¡¢¥°¥ê¥Õ¤ò¿å
472 Ê¿¤Ë±¦¤Ë¤º¤é¤·¤Æ¡¢»ØÄꤷ¤¿°ÌÃÖ¤è¤êº¸¤Ë¥Ô¥¯¥»¥ë¤¬ÉÁ¤«¤ì¤Ê¤¤¤è¤¦¤Ë
474 unsigned align_head : 1;
476 /***en If nonzero, draw an M-text two-dimensionally, i.e., newlines
477 in M-text breaks lines and the following characters are drawn in
478 the next line. If <format> is non-NULL, and the function
479 returns nonzero line width, a line longer than that width is
481 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤ò£²¼¡¸µÅª¤Ë¡¢¤¹¤Ê¤ï¤ÁM-text Ãæ¤Î
482 newline ¤Ç²þ¹Ô¤·¡¢Â³¤¯Ê¸»ú¤Ï¼¡¤®¤Î¹Ô¤Ëɽ¼¨¤¹¤ë¡£¤â¤· <format> ¤¬
483 NULL ¤Ç¤Ê¤¯¡¢¤½¤Î´Ø¿ô¤¬ 0 ¤Ç¤Ê¤¤¹ÔÉý¤òÊÖ¤»¤Ð¡¢¤½¤ÎÉý¤è¤êŤ¤¹Ô¤â
485 unsigned two_dimensional : 1;
487 /***en If nonzero, draw an M-text to the right of a specified
489 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤ò»ØÄꤷ¤¿°ÌÃ֤ᦤËɽ¼¨¤¹¤ë¡£ */
490 unsigned orientation_reversed : 1;
492 /***en If nonzero, reorder glyphs correctly for bidi text. */
493 /***ja 0 ¤Ê¤±¤ì¤Ð¡¢bidi ¥Æ¥¥¹¥ÈÍѤ˥°¥ê¥Õ¤òÀµ¤·¤¯À°Î󤹤롣 */
494 unsigned enable_bidi : 1;
496 /***en If nonzero, don't draw characters whose general category (in
497 Unicode) is Cf (Other, format). */
498 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥æ¥Ë¥³¡¼¥É¤ËÃÖ¤±¤ë°ìÈÌ¥«¥Æ¥´¥ê¤¬ Cf (Other,
499 format) ¤Ç¤¢¤ëʸ»ú¤òɽ¼¨¤·¤Ê¤¤¡£ */
500 unsigned ignore_formatting_char : 1;
502 /***en If nonzero, draw glyphs suitable for a terminal. Not yet
504 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ã¼ËöÍѤΥ°¥ê¥Õ¤òɽ¼¨¤¹¤ë¡£¡Ê̤¼ÂÁõ¡£¡Ë */
505 unsigned fixed_width : 1;
507 /***en If nonzero, draw glyphs with anti-aliasing if a backend font
508 driver supports it. */
509 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥¢¥ó¥Á¥¨¡¼¥ê¥¢¥¹¤Ç¥°¥ê¥Õ¤òɽ¼¨¤¹¤ë¡£¡Ê¥Ð¥Ã¥¯¥¨
510 ¥ó¥É¤Î¥Õ¥©¥ó¥È¥É¥é¥¤¥Ð¤¬¥¢¥ó¥Á¥¨¡¼¥ê¥¢¥¹µ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì
512 unsigned anti_alias : 1;
514 /***en If nonzero, the values are minimum line ascent and descent
516 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤΠascent ¤È descent ¤ÎºÇ¾®Ãͤò¼¨¤¹¡£ */
517 unsigned int min_line_ascent;
518 unsigned int min_line_descent;
520 /***en If nonzero, the values are maximum line ascent and descent
522 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤΠascent ¤È descent ¤ÎºÇÂçÃͤò¼¨¤¹¡£ */
523 unsigned int max_line_ascent;
524 unsigned int max_line_descent;
526 /***en If nonzero, the value specifies how many pixels each line can
527 occupy on the display. The value zero means that there is no
528 limit. It is ignored if <format> is non-NULL. */
529 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϤ³¤Î¥Ç¥£¥¹¥×¥ì¥¤¾å¤Ç³Æ¹Ô¤¬Àê¤á¤ë¤³¤È¤Î¤Ç¤
530 ¤ë¥Ô¥¯¥»¥ë¿ô¤ò¼¨¤¹¡£ 0 ¤Ï¸ÂÄꤵ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£<format> ¤¬
531 NULL ¤Ç¤Ê¤±¤ì¤Ð̵»ë¤µ¤ì¤ë¡£ */
532 unsigned int max_line_width;
534 /***en If nonzero, the value specifies the distance between tab
535 stops in columns (the width of one column is the width of a
536 space in the default font of the frame). The value zero means
538 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ãͤϥ¿¥Ö¥¹¥È¥Ã¥×´Ö¤Îµ÷Î¥¤ò¥³¥é¥àñ°Ì¡Ê¥³¥é¥à¤Ï
539 ¥Õ¥ì¡¼¥à¤Î¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤Ë¤ª¤±¤ë¶õÇòʸ»ú¤ÎÉý¤Ç¤¢¤ë¡Ë¤Ç¼¨¤¹¡£
540 0 ¤Ï 8 ¤ò°ÕÌ£¤¹¤ë¡£ */
541 unsigned int tab_width;
543 /***en If non-NULL, the value is a function that calculates the
544 indentation and width limit of each line based on the line
545 number LINE and the coordinate Y. The function store the
546 indentation and width limit at the place pointed by INDENT and
549 The indentation specifies how many pixels the first glyph of
550 each line is shifted to the right (if the member
551 <orientation_reversed> is zero) or to the left (otherwise). If
552 the value is negative, each line is shifted to the reverse
555 The width limit specifies how many pixels each line can occupy
556 on the display. The value 0 means that there is no limit.
558 LINE and Y are reset to 0 when a line is broken by a newline
559 character, and incremented each time when a long line is broken
560 because of the width limit.
562 This has an effect only when <two_dimensional> is nonzero. */
563 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢Ãͤϴؿô¤Ç¤¢¤ê¡¢¤½¤Î´Ø¿ô¤Ï¹ÔÈÖ¹æ LINE ¤ÈºÂɸ Y
564 ¤Ë´ð¤Å¤¤¤Æ³Æ¹Ô¤Î¥¤¥ó¥Ç¥ó¥È¤ÈºÇÂçÉý¤ò·×»»¤·¡¢¤½¤ì¤¾¤ì¤òINDENT ¤È
565 WIDTH ¤Ç»Ø¤µ¤ì¤ë¾ì½ê¤ËÊݸ¤¹¤ë¡£
567 ¥¤¥ó¥Ç¥ó¥È¤Ï¡¢³Æ¹Ô¤ÎºÇ½é¤Î¥°¥ê¥Õ¤¬±¦¡Ê¥á¥ó¥Ð
568 <orientation_reversed> ¤¬ 0 ¤Î»þ¡Ë¤¢¤ë¤¤¤Ïº¸¡Ê¤½¤ì°Ê³°¤Î»þ¡Ë¤Ë²¿
569 ¥Ô¥¯¥»¥ë¤º¤é¤¹¤ò»ØÄꤹ¤ë¡£Ãͤ¬Éé¤Ê¤é¤ÐµÕÊý¸þ¤Ë¤º¤é¤¹¡£
571 ºÇÂçÉý¤Ï¡¢³Æ¹Ô¤¬¥Ç¥£¥¹¥×¥ì¥¤¾å¤ÇÀê¤á¤ë¤³¤È¤Î¤Ç¤¤ë¥Ô¥¯¥»¥ë¿ô¤ÎºÇ
572 ÂçÃͤǤ¢¤ë¡£Ãͤ¬ 0 ¤Î¾ì¹ç¤ÏÀ©¸Â¤ò¼õ¤±¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
574 LINE ¤È Y ¤Ï²þ¹Ôʸ»ú¤Ë¤è¤Ã¤Æ¹Ô¤¬²þ¤Þ¤Ã¤¿ºÝ¤Ë¤Ï 0 ¤Ë¥ê¥»¥Ã¥È¤µ¤ì¡¢
575 ºÇÂçÉý¤Ë¤è¤Ã¤Æ¹Ô¤¬²þ¤Þ¤Ã¤¿¾ì¹ç¤Ë¤Ï 1 ¤Å¤ÄÁý¤ä¤µ¤ì¤ë¡£
577 ¤³¤ì¤Ï <two_dimensional> ¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Î¤ß͸ú¤Ç¤¢¤ë¡£ */
578 void (*format) (int line, int y, int *indent, int *width);
580 /***en If non-NULL, the value is a function that calculates a line
581 breaking position when a line is too long to fit within the
582 width limit. POS is a position of the character next to the
583 last one that fits within the limit. FROM is a position of the
584 first character of the line, and TO is a position of the last
585 character displayed on the line if there were not width limit.
586 LINE and Y are the same as the arguments to <format>.
588 The function must return a character position to break the
591 The function should not modify MT.
593 The mdraw_default_line_break () function is useful for such a
594 script that uses SPACE as a word separator. */
595 /***ja NULL ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤ¬ºÇÂçÉýÃæ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¤Ë¹Ô¤ò²þ¤á¤ë
596 °ÌÃÖ¤ò·×»»¤¹¤ë´Ø¿ô¤Ç¤¢¤ë¡£POS ¤ÏºÇÂçÉý¤Ë¼ý¤Þ¤ëºÇ¸å¤Îʸ»ú¤Î¼¡¤Îʸ
597 »ú¤Î°ÌÃ֤Ǥ¢¤ë¡£FROM ¤Ï¹Ô¤ÎºÇ½é¤Îʸ»ú¤Î°ÌÃÖ¡¢TO ¤ÏºÇÂçÉý¤¬»ØÄꤵ
598 ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤½¤Î¹Ô¤Ëɽ¼¨¤µ¤ì¤ëºÇ¸å¤Îʸ»ú¤Î°ÌÃ֤Ǥ¢¤ë¡£LINE ¤È
599 Y ¤Ï <format> ¤Î°ú¿ô¤ÈƱ¤¸¤Ç¤¢¤ë¡£
601 ¤³¤Î´Ø¿ô¤Ï¹Ô¤ò²þ¤á¤ëʸ»ú°ÌÃÖ¤òÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤Þ¤¿MT ¤ò
604 ´Ø¿ô mdraw_default_line_break () ¤Ï¡¢¶õÇò¤ò¸ì¤Î¶èÀÚ¤ê¤È¤·¤ÆÍѤ¤
605 ¤ë¥¹¥¯¥ê¥×¥ÈÍѤȤ·¤ÆÍѤ¤¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
606 int (*line_break) (MText *mt, int pos, int from, int to, int line, int y);
610 /***en Specifies the character position to display a cursor. If it
611 is greater than the maximum character position, the cursor is
612 displayed next to the last character of an M-text. If the value
613 is negative, even if <cursor_width> is nonzero, cursor is not
615 /***ja ¥«¡¼¥½¥ë¤òɽ¼¨¤¹¤ëʸ»ú°ÌÃÖ¤ò¼¨¤¹¡£ºÇÂç¤Îʸ»ú°ÌÃÖ¤è¤êÂ礤±¤ì
616 ¤Ð¡¢¥«¡¼¥½¥ë¤ÏM-text ¤ÎºÇ¸å¤Îʸ»ú¤ÎÎÙ¤Ëɽ¼¨¤µ¤ì¤ë¡£Éé¤Ê¤é¤Ð¡¢
617 <cursor_width> ¤¬ 0 ¤Ç¤Ê¤¯¤Æ¤â¥«¡¼¥½¥ë¤Ïɽ¼¨¤µ¤ì¤Ê¤¤¡£
621 /***en If nonzero, display a cursor at the character position
622 <cursor_pos>. If the value is positive, it is the pixel width
623 of the cursor. If the value is negative, the cursor width is
624 the same as the underlining glyph(s). */
625 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢<cursor_pos> ¤Ë¥«¡¼¥½¥ë¤òɽ¼¨¤¹¤ë¡£Ãͤ¬Àµ¤Ê¤é¤Ð¡¢
626 ¥«¡¼¥½¥ë¤ÎÉý¤Ï¤½¤ÎÃÍ¡Ê¥Ô¥¯¥»¥ëñ°Ì¡Ë¤Ç¤¢¤ë¡£Éé¤Ê¤é¤Ð¡¢¥«¡¼¥½¥ë¤Î
627 ¤¢¤ë¥°¥ê¥Õ¤ÈƱ¤¸Éý¤Ç¤¢¤ë¡£ */
630 /***en If nonzero and <cursor_width> is also nonzero, display double
631 bar cursors; at the character position <cursor_pos> and at the
632 logically previous character. Both cursors have one pixel width
633 with horizontal fringes at upper or lower positions. */
634 /***ja If 0 ¤Ç¤Ê¤¯¡¢¤«¤Ä <cursor_width> ¤â 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Ð¡¼¥«¡¼¥½
635 ¥ë¤òʸ»ú°ÌÃÖ<cursor_pos> ¤ÈÏÀÍýŪ¤Ë¤½¤ì¤ÎÁ°¤Ë¤¢¤ëʸ»ú¤Î£²¥ö½êɽ
636 ¼¨¤¹¤ë¡£ÁÐÊý¤È¤â£±¥Ô¥¯¥»¥ëÉý¤Ç¡¢¾å²¼¤Ë¿åÊ¿¤Î¾þ¤ê¤¬¤Ä¤¯¡£*/
639 /***en If nonzero, on drawing partial text, pixels of surrounding
640 texts that intrude into the drawing area are also drawn. For
641 instance, some CVC sequence of Thai text (C is consonant, V is
642 upper vowel) is drawn so that V is placed over the middle of two
643 Cs. If this CVC sequence is already drawn and only the last C
644 is drawn again (for instance by updating cursor position), the
645 right half of V is erased if this member is zero. By setting
646 this member to nonzero, even with such a drawing, we can keep
647 this CVC sequence correctly displayed. */
648 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Æ¥¥¹¥È¤Î°ìÉôʬ¤òɽ¼¨¤¹¤ëºÝ¤Ë¡¢Á°¸å¤Î¥Æ¥¥¹¥È
649 ¤Î¤¦¤Á¤½¤Îɽ¼¨Îΰè¤Ë¿¯Æþ¤¹¤ëÉôʬ¤âɽ¼¨¤¹¤ë¡£¤¿¤È¤¨¤Ð¡¢¥¿¥¤¸ìʸ½ñ
650 ¤Î»Ò²»-Êì²»-»Ò²»¤È¤¤¤¦¥·¡¼¥¯¥¨¥ó¥¹¤Î¤¤¤¯¤Ä¤«¤Ï¡¢Êì²»¤¬Æó¤Ä¤Î»Ò²»
651 ¤Î´Ö¤Ë¾å¤Ë¤Î¤ë¤è¤¦¤ËÉÁ¤«¤ì¤ë¡£¤³¤Î¤è¤¦¤Ê¥·¡¼¥¯¥¨¥ó¥¹¤¬¤¹¤Ç¤ËÉÁ¤«
652 ¤ì¤Æ¤ª¤ê¡¢ºÇ¸å¤Î»Ò²»¤À¤±¤òÉÁ¤Ä¾¤¹¾ì¹ç¡Ê¤¿¤È¤¨¤Ð¡¢¥«¡¼¥½¥ë°ÌÃÖ¤ò
653 ¹¹¿·¤¹¤ëºÝ¤Ê¤É¡Ë¤³¤Î¥á¥ó¥Ð¤¬ 0 ¤Ç¤¢¤ì¤Ð¡¢Êì²»¤Î±¦È¾Ê¬¤¬¾Ã¤µ¤ì¤Æ
654 ¤·¤Þ¤¦¡£¤³¤ì¤ò 0 °Ê³°¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤Î¤è¤¦¤ÊºÝ¤Ë¤â»Ò²»-Êì
655 ²»-»Ò²»¥·¡¼¥¯¥¨¥ó¥¹¤òÀµ¤·¤¯É½¼¨¤·Â³¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£ */
658 /***en If nonzero, don't cache the result of any drawing information
660 /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢M-text ¤Îɽ¼¨¤Ë´Ø¤¹¤ë¾ðÊó¤ò¥¥ã¥Ã¥·¥å¤·¤Ê¤¤¡£
664 /* If non-NULL, limit the drawing effect to the specified region. */
665 MDrawRegion clip_region;
671 /*** @ingroup m17nDraw */
673 @brief Type of metric for gylphs and texts.
675 The type #MDrawMetric is for a metric of a glyph and a drawn text.
676 It is also used to represent a rectangle area of a graphic
679 @brief ¥°¥ê¥Õ¤È¥Æ¥¥¹¥È¤ÎÀ£Ë¡¤Î·¿Àë¸À.
681 #MDrawMetric ¤Ï¥°¥ê¥Õ¤Èɽ¼¨¤µ¤ì¤¿¥Æ¥¥¹¥È¤ÎÀ£Ë¡ÍѤη¿¤Ç¤¢¤ë¡£¤Þ¤¿¡¢
682 ɽ¼¨¥Ç¥Ð¥¤¥¹¤Î¶ë·ÁÎΰè¤òɽ¤¹¤Î¤Ë¤âÍѤ¤¤é¤ì¤ë¡£ */
686 unsigned int width, height;
691 /*** @ingroup m17nDraw */
693 @brief Type of information about a glyph.
695 The type #MDrawGlyphInfo is the structure that contains
696 information about a glyph. It is used by mdraw_glyph_info (). */
698 @brief ¥°¥ê¥Õ¤Ë´Ø¤¹¤ë¾ðÊó¤Î·¿Àë¸À.
700 #MDrawGlyphInfo ·¿¤Ï¥°¥ê¥Õ¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¹½Â¤ÂΤǤ¢¤ë¡£
701 mdraw_glyph_info () ¤Ï¤³¤ì¤òÍѤ¤¤ë¡£ */
705 /***en Character range corresponding to the glyph. */
706 /***ja ¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
709 /***en Character ranges corresponding to the line of the glyph. */
710 /***ja ¥°¥ê¥Õ¤ÎÎó¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
711 int line_from, line_to;
713 /***en X/Y coordinates of the glyph. */
714 /***ja ¥°¥ê¥Õ¤Î X/Y ºÂɸ. */
717 /***en Metric of the glyph. */
718 /***ja ¥°¥ê¥Õ¤ÎÀ£Ë¡. */
721 /***en Font used for the glyph. Set to NULL if no font is found for
723 /***ja ¤½¤Î¥°¥ê¥ÕÍѤ˻Ȥï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£
727 /***en Character ranges corresponding to logically previous and next
728 glyphs. Note that we do not need the members prev_to and
729 next_from because they must be the same as the members from and
731 /***ja ÏÀÍýŪ¤ÊÁ°¸å¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£¥á¥ó¥Ð prev_to ¤È
732 next_from ¤Ï¡¢¤½¤ì¤¾¤ì¥á¥ó¥Ð from ¤Èto ¤ÈƱ¤¸¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤
733 ¤¿¤áÉÔÍפǤ¢¤ë¤³¤È¤ËÃí°Õ¡£ */
734 int prev_from, next_to;
736 /***en Character ranges corresponding to visually left and right
738 /***ja »ë³ÐŪ¤Êº¸±¦¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£ */
739 int left_from, left_to;
740 int right_from, right_to;
747 @brief Type of text items.
749 The type #MDrawTextItem is for @e textitem objects.
750 Each textitem contains an M-text and some other information to
751 control the drawing of the M-text. */
754 @brief textitem ¤Î·¿Àë¸À.
756 #MDrawTextItem ¤Ï @e ¥Æ¥¥¹¥È¥¢¥¤¥Æ¥à ¥ª¥Ö¥¸¥§¥¯¥ÈÍѤη¿¤Ç¤¢¤ë¡£³Æ
757 ¥Æ¥¥¹¥È¥¢¥¤¥Æ¥à¤Ï¡¢1¸Ä¤Î M-text ¤È¡¢¤½¤Îɽ¼¨¤òÀ©¸æ¤¹¤ë¤¿¤á¤Î³Æ¼ï
760 @latexonly \IPAlabel{MTextItem} @endlatexonly */
768 /***en Optional change in the position (in the unit of pixel) along
769 the X-axis before the M-text is drawn. */
770 /***ja M-text ɽ¼¨Á°¤Ë¹Ô¤Ê¤¦X¼´Êý¸þ¤Î°ÌÃÖÄ´À° (¥Ô¥¯¥»¥ëñ°Ì) */
773 /***en Pointer to a face object. Each property of the face, if not
774 Mnil, overrides the same property of face(s) specified as a text
776 /***ja ¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡£¥Õ¥§¡¼¥¹¤Î³Æ¥×¥í¥Ñ¥Æ¥£¤Ï
777 Mnil ¤Ç¤Ê¤±¤ì¤Ð <mt> ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥§¡¼¥¹¤ÎƱ¤¸¥×¥í¥Ñ¥Æ¥£¤ËÍ¥Àè
781 /***en Pointer to a draw control object. The M-text <mt> is drawn
782 by mdraw_text_with_control () with this control object. */
783 /***ja ɽ¼¨À©¸æ¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¡£ mdraw_text_with_control ()
784 ¤Ï¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Æ M-text <mt> ¤òɽ¼¨¤¹¤ë¡£ */
785 MDrawControl *control;
791 extern int mdraw_text (MFrame *frame, MDrawWindow win, int x, int y,
792 MText *mt, int from, int to);
794 extern int mdraw_image_text (MFrame *frame, MDrawWindow win, int x, int y,
795 MText *mt, int from, int to);
797 extern int mdraw_text_with_control (MFrame *frame, MDrawWindow win,
798 int x, int y, MText *mt, int from, int to,
799 MDrawControl *control);
801 extern int mdraw_coordinates_position (MFrame *frame,
802 MText *mt, int from, int to,
803 int x, int y, MDrawControl *control);
805 extern int mdraw_text_extents (MFrame *frame,
806 MText *mt, int from, int to,
807 MDrawControl *control,
808 MDrawMetric *overall_ink_return,
809 MDrawMetric *overall_logical_return,
810 MDrawMetric *overall_line_return);
812 extern int mdraw_text_per_char_extents (MFrame *frame,
813 MText *mt, int from, int to,
814 MDrawControl *control,
815 MDrawMetric *ink_array_return,
816 MDrawMetric *logical_array_return,
818 int *num_chars_return,
819 MDrawMetric *overall_ink_return,
820 MDrawMetric *overall_logical_return);
822 extern int mdraw_glyph_info (MFrame *frame, MText *mt, int from, int pos,
823 MDrawControl *control, MDrawGlyphInfo *info);
825 extern void mdraw_text_items (MFrame *frame, MDrawWindow win, int x, int y,
826 MDrawTextItem *items, int nitems);
828 extern void mdraw_per_char_extents (MFrame *frame, MText *mt,
829 MDrawMetric *array_return,
830 MDrawMetric *overall_return);
832 extern int mdraw_default_line_break (MText *mt, int pos,
833 int from, int to, int line, int y);
835 extern void mdraw_clear_cache (MText *mt);
837 /* end of drawing module */
840 /*** @ingroup m17nGUI */
841 /***en @defgroup m17nInputMethodWin Input Method (GUI) */
842 /***ja @defgroup m17nInputMethodWin ÆþÎϥ᥽¥Ã¥É (GUI) */
845 extern MInputDriver minput_gui_driver;
848 /*** @ingroup m17nInputMethodWin */
850 @brief Type of the argument to the function minput_create_ic ().
852 The type #MInputGUIArgIC is for the argument $ARG of the function
853 minput_create_ic () to create an input context of an internal
857 @brief ´Ø¿ô minput_create_ic () ¤Î°ú¿ô¤Î·¿Àë¸À.
859 #MInputGUIArgIC ¤Ï¡¢´Ø¿ô minput_create_ic () ¤¬ÆâÉôÆþÎϥ᥽¥Ã¥É¤Î
860 ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤¹¤ëºÝ¤Î¡¢°ú¿ô $ARG ÍѤη¿¤Ç¤¢¤ë¡£ */
864 /***en Frame of the client. */
865 /***ja ¥¯¥é¥¤¥¢¥ó¥È¤Î¥Õ¥ì¡¼¥à */
868 /***en Window on which to display the preedit and status text. */
869 /***ja preedit ¥Æ¥¥¹¥È¤È status ¥Æ¥¥¹¥È¤òɽ¼¨¤¹¤ë¥¦¥£¥ó¥É¥¦ */
872 /***en Window that the input context has a focus on. */
873 /***ja ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬¥Õ¥©¡¼¥«¥¹¤ò¤ª¤¤¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦ */
879 extern MSymbol minput_event_to_key (MFrame *frame, void *event);
881 /* end of input module */
883 /* end of window modules */
886 extern MFace *mdebug_dump_face (MFace *face, int indent);
887 extern MFont *mdebug_dump_font (MFont *font);
888 extern MFontset *mdebug_dump_fontset (MFontset *fontset, int indent);
894 #endif /* _M17N_GUI_H_ */