1 /* m17n-gui.h -- header file for the GUI API of the m17n library. 2 Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 3 National Institute of Advanced Industrial Science and Technology (AIST) 4 Registration Number H15PRO112 5 6 This file is part of the m17n library. 7 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. 12 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. 17 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, 21 Boston, MA 02110-1301 USA. */ 22 23 #ifndef _M17N_GUI_H_ 24 #define _M17N_GUI_H_ 25 26 #ifndef _M17N_FLT_H_ 27 #include <m17n-flt.h> 28 #endif 29 30 #ifndef _M17N_H_ 31 #include <m17n.h> 32 #endif 33 34 M17N_BEGIN_HEADER 35 36 #if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE) 37 38 extern void m17n_init_win (void); 39 #undef M17N_INIT 40 #define M17N_INIT() m17n_init_win () 41 42 extern void m17n_fini_win (void); 43 #undef M17N_FINI 44 #define M17N_FINI() m17n_fini_win () 45 46 #endif 47 48 /***en @defgroup m17nGUI GUI API 49 @brief API provided by libm17n-gui.so */ 50 /***ja @defgroup m17nGUI GUI API 51 @brief libm17n-gui.so ������ API */ 52 /*=*/ 53 54 /*** @ingroup m17nGUI */ 55 /***en @defgroup m17nFrame Frame */ 56 /***ja @defgroup m17nFrame �ե졼�� */ 57 /*=*/ 58 59 /*** @ingroup m17nFrame */ 60 /***en 61 @brief Type of frames. 62 63 The type #MFrame is for a @e frame object. Each frame holds 64 various information about the corresponding physical display/input 65 device. 66 67 The internal structure of the type #MFrame is concealed from an 68 application program, and its contents depend on the window system 69 in use. In the m17n-X library, it contains the information about 70 @e display and @e screen in the X Window System. */ 71 72 /***ja 73 @brief �ե졼��η����. 74 75 #MFrame �ϡ�@e �ե졼�� ���֥��������Ѥη��Ǥ��롣 76 �ġ��Υե졼��ϡ����줬�б�����ʪ��Ū��ɽ�������ϥǥХ����γƼ������ݻ����롣 77 78 #MFrame ����������¤�ϡ����ץꥱ�������ץ���फ��ϸ����ʤ��� 79 �ޤ��������Ƥϻ��Ѥ��륦����ɥ������ƥ�˰�¸���롣�ޤ� m17n-X 80 �饤�֥��ˤ�����ե졼��ϡ�X ������ɥ��� @e display �� @e screen 81 �˴ؤ���������ġ� */ 82 83 typedef struct MFrame MFrame; 84 85 /*=*/ 86 87 extern MSymbol Mdevice; 88 89 extern MSymbol Mfont; 90 extern MSymbol Mfont_width; 91 extern MSymbol Mfont_ascent; 92 extern MSymbol Mfont_descent; 93 extern MFrame *mframe_default; 94 95 extern MSymbol Mdisplay; 96 extern MSymbol Mscreen; 97 extern MSymbol Mdrawable; 98 extern MSymbol Mwidget; 99 extern MSymbol Mdepth; 100 extern MSymbol Mcolormap; 101 102 extern MFrame *mframe (MPlist *plist); 103 104 extern void *mframe_get_prop (MFrame *frame, MSymbol key); 105 106 /* end of frame module */ 107 /*=*/ 108 109 /*** @ingroup m17nGUI */ 110 /***en @defgroup m17nFont Font */ 111 /***ja @defgroup m17nFont �ե���� */ 112 /*=*/ 113 114 /*** @ingroup m17nFont */ 115 /***en 116 @brief Type of fonts. 117 118 The type #MFont is the structure defining fonts. It contains 119 information about the following properties of a font: foundry, 120 family, weight, style, stretch, adstyle, registry, size, and 121 resolution. 122 123 This structure is used both for specifying a font in a fontset 124 and for storing information about available system fonts. 125 126 The internal structure is concealed from an application program. */ 127 128 /***ja 129 @brief �ե���Ȥη����. 130 131 #MFont ���ϥե���Ȼ����Ѥι�¤�ΤǤ��ꡢ�ե���ȤΥץ�ѥƥ��Ǥ��� 132 foundry, family, weight, style, stretch, adstyle, registry, 133 size, resolution �˴ؤ�������ޤࡣ 134 135 ���ι�¤�Τϥե���ȥ��å���Υե���Ȥ���ꤹ��ݤȡ����Ѳ�ǽ�ʥ����ƥ�ե���Ȥξ�����Ǽ����ݤ�ξ�����Ѥ����롣 136 137 ������¤�ϥ��ץꥱ�������ץ���फ��ϸ����ʤ��� */ 138 139 /*** 140 @seealso 141 mfont (), mfont_from_name (), mfont_find (). */ 142 143 typedef struct MFont MFont; 144 145 /*=*/ 146 147 extern MSymbol Mx, Mfreetype, Mxft; 148 149 extern MPlist *mfont_freetype_path; 150 151 extern MFont *mfont (); 152 153 extern MFont *mfont_copy (MFont *font); 154 155 extern MFont *mfont_parse_name (const char *name, MSymbol format); 156 157 extern char *mfont_unparse_name (MFont *font, MSymbol format); 158 159 /* These two are obsolete (from 1.1.0). */ 160 extern char *mfont_name (MFont *font); 161 extern MFont *mfont_from_name (const char *name); 162 163 extern MSymbol Mfoundry; 164 extern MSymbol Mfamily; 165 extern MSymbol Mweight; 166 extern MSymbol Mstyle; 167 extern MSymbol Mstretch; 168 extern MSymbol Madstyle; 169 extern MSymbol Mspacing; 170 extern MSymbol Mregistry; 171 extern MSymbol Msize; 172 extern MSymbol Mresolution; 173 extern MSymbol Mmax_advance; 174 extern MSymbol Motf; 175 extern MSymbol Mfontfile; 176 177 extern MSymbol Mfontconfig; 178 179 extern void *mfont_get_prop (MFont *font, MSymbol key); 180 181 extern int mfont_put_prop (MFont *font, MSymbol key, void *val); 182 183 extern int mfont_set_encoding (MFont *font, 184 MSymbol encoding_name, MSymbol repertory_name); 185 186 187 /*=*/ 188 189 /***en 190 @brief Find a font. 191 192 The mfont_find () function returns a pointer to the available font 193 that matches best with the specification $SPEC in frame $FRAME. 194 195 $SCORE, if not NULL, must point to a place to store the score 196 value which indicates how well the found font matches $SPEC. The 197 smaller score means a better match. 198 199 $LIMITED_SIZE, if nonzero, forces the font selector to find a 200 font not greater than the #Msize property of $SPEC. */ 201 202 /***ja 203 @brief �ե���Ȥ�õ��. 204 205 �ؿ� mfont_find () �ϡ��ե졼�� $FRAME ��ǥե������� $SPEC 206 �ˤ�äȤ���פ�����Ѳ�ǽ�ʥե���ȤؤΥݥ����֤��� 207 208 $SCORE �� NULL �Ǥ��뤫�����Ĥ��ä��ե���Ȥ� $SPEC 209 �ˤɤ�ۤɹ�äƤ��뤫������������¸������ؤΥݥ��Ǥ��롣 210 ���������������ۤ��ɤ���äƤ��뤳�Ȥ��̣���롣 211 212 $LIMITED_SIZE �� 0 �Ǥʤ���С�$SPEC �Υץ�ѥƥ� #Msize 213 ����礭���ʤ��ե���Ȥ�����õ����롣 214 */ 215 216 extern MFont *mfont_find (MFrame *frame, MFont *spec, 217 int *score, int limited_size); 218 extern MSymbol *mfont_selection_priority (); 219 220 extern int mfont_set_selection_priority (MSymbol *keys); 221 222 extern int mfont_resize_ratio (MFont *font); 223 224 extern MPlist *mfont_list (MFrame *frame, MFont *font, MSymbol language, 225 int maxnum); 226 extern MPlist *mfont_list_family_names (MFrame *frame); 227 228 typedef struct MFontset MFontset; 229 230 extern int mfont_check (MFrame *frame, MFontset *fontset, 231 MSymbol script, MSymbol language, MFont *font); 232 233 extern int mfont_match_p (MFont *font, MFont *spec); 234 235 extern MFont *mfont_open (MFrame *frame, MFont *font); 236 237 extern MFont *mfont_encapsulate (MFrame *frame, MSymbol data_type, void *data); 238 239 extern int mfont_close (MFont *font); 240 241 /* end of font module */ 242 /*=*/ 243 244 /*** @ingroup m17nGUI */ 245 /***en @defgroup m17nFontset Fontset */ 246 /***ja @defgroup m17nFontset �ե���ȥ��å� */ 247 /*=*/ 248 /*** @addtogroup m17nFontset 249 @{ */ 250 extern MFontset *mfontset (char *name); 251 252 extern MSymbol mfontset_name (MFontset *fontset); 253 254 extern MFontset *mfontset_copy (MFontset *fontset, char *name); 255 256 extern int mfontset_modify_entry (MFontset *fontset, 257 MSymbol language, MSymbol script, 258 MSymbol charset, 259 MFont *spec, MSymbol layouter_name, 260 int how); 261 262 extern MPlist *mfontset_lookup (MFontset *fontset, MSymbol script, 263 MSymbol language, MSymbol charset); 264 /*** @} */ 265 /* end of fontset module */ 266 /*=*/ 267 268 /*** @ingroup m17nGUI */ 269 /***en @defgroup m17nFace Face */ 270 /***ja @defgroup m17nFace �ե����� */ 271 /*=*/ 272 273 /*** @ingroup m17nFace */ 274 /***en 275 @brief Type of faces. 276 277 The type #MFace is the structure of face objects. The internal 278 structure is concealed from an application program. */ 279 280 /***ja 281 @brief �ե������η����. 282 283 #MFace ���ϥե��������֥������ȤΤ���ι�¤�ΤǤ��롣 284 ������¤�ϥ��ץꥱ�������ץ���फ��ϸ����ʤ��� */ 285 286 typedef struct MFace MFace; 287 /*=*/ 288 289 extern MSymbol Mforeground; 290 extern MSymbol Mbackground; 291 extern MSymbol Mvideomode; 292 extern MSymbol Mnormal; 293 extern MSymbol Mreverse; 294 extern MSymbol Mhline; 295 extern MSymbol Mbox; 296 extern MSymbol Mfontset; 297 extern MSymbol Mratio; 298 extern MSymbol Mhook_func; 299 extern MSymbol Mhook_arg; 300 301 /* Predefined faces. */ 302 extern MFace *mface_normal_video; 303 extern MFace *mface_reverse_video; 304 extern MFace *mface_underline; 305 extern MFace *mface_medium; 306 extern MFace *mface_bold; 307 extern MFace *mface_italic; 308 extern MFace *mface_bold_italic; 309 extern MFace *mface_xx_small; 310 extern MFace *mface_x_small; 311 extern MFace *mface_small; 312 extern MFace *mface_normalsize; 313 extern MFace *mface_large; 314 extern MFace *mface_x_large; 315 extern MFace *mface_xx_large; 316 extern MFace *mface_black; 317 extern MFace *mface_white; 318 extern MFace *mface_red; 319 extern MFace *mface_green; 320 extern MFace *mface_blue; 321 extern MFace *mface_cyan; 322 extern MFace *mface_yellow; 323 extern MFace *mface_magenta; 324 325 /* etc */ 326 extern MSymbol Mface; 327 328 extern MFace *mface (); 329 330 extern int mface_equal (MFace *face1, MFace *face2); 331 332 extern MFace *mface_copy (MFace *face); 333 334 extern MFace *mface_merge (MFace *dst, MFace *src); 335 336 extern MFace *mface_from_font (MFont *font); 337 338 /*=*/ 339 340 /*** @ingroup m17nFace */ 341 /***en 342 @brief Type of horizontal line spec of face. 343 344 The type #MFaceHLineProp is to specify the detail of #Mhline 345 property of a face. The value of the property must be a pointer 346 to an object of this type. */ 347 /***ja 348 @brief �ե������ο�ʿ�������ѷ����. 349 350 #MFaceHLineProp �ϥե������� #Mhline 351 �ץ�ѥƥ��ξܺ٤���ꤹ�뷿�Ǥ��롣���Υץ�ѥƥ����ͤϤ��η��Υ��֥������ȤǤʤ��ƤϤʤ�ʤ��� 352 */ 353 354 typedef struct 355 { 356 /***en Type of the horizontal line. */ 357 /***ja ��ʿ���Υ�����. */ 358 enum MFaceHLineType 359 { 360 MFACE_HLINE_BOTTOM, 361 MFACE_HLINE_UNDER, 362 MFACE_HLINE_STRIKE_THROUGH, 363 MFACE_HLINE_OVER, 364 MFACE_HLINE_TOP 365 } type; 366 367 /***en Width of the line in pixels. */ 368 /***ja �����ʥԥ�����ñ�̡�. */ 369 unsigned width; 370 371 /***en Color of the line. If the value is Mnil, foreground color of 372 a merged face is used. */ 373 /***ja ���ο�. Mnil �ʤ�С����礷���ե����������ʿ����Ȥ��롣 */ 374 375 MSymbol color; 376 } MFaceHLineProp; 377 /*=*/ 378 379 /*** @ingroup m17nFace */ 380 /***en 381 @brief Type of box spec of face. 382 383 The type #MFaceBoxProp is to specify the detail of #Mbox property 384 of a face. The value of the property must be a pointer to an 385 object of this type. */ 386 /***ja 387 @brief �ե������ΰϤ��Ȼ����ѷ����. 388 389 #MFaceBoxProp �ϥե������� #Mbox �ץ�ѥƥ��ξܺ٤���ꤹ�뷿�Ǥ��롣 390 ���Υץ�ѥƥ����ͤϤ��η��Υ��֥������ȤؤΥݥ��Ǥʤ��ƤϤʤ�ʤ��� 391 */ 392 393 typedef struct 394 { 395 /***en Width of the box line in pixels. */ 396 /***ja �����ʥԥ�����ñ�̡�. */ 397 unsigned width; 398 399 /* @{ */ 400 /*** Colors of borders. */ 401 MSymbol color_top; 402 MSymbol color_bottom; 403 MSymbol color_left; 404 MSymbol color_right; 405 /* @} */ 406 407 /* @{ */ 408 /*** Margins */ 409 unsigned inner_hmargin; 410 unsigned inner_vmargin; 411 unsigned outer_hmargin; 412 unsigned outer_vmargin; 413 /* @} */ 414 415 } MFaceBoxProp; 416 /*=*/ 417 418 /*** @ingroup m17nFace */ 419 /***en 420 @brief Type of hook function of face. 421 422 #MFaceHookFunc is a type of a hook function of a face. */ 423 /***ja 424 @brief �ե������Υեå��ؿ��η����. 425 426 #MFaceHookFunc �ϥե������Υեå��ؿ��η��Ǥ��롣*/ 427 typedef void (*MFaceHookFunc) (MFace *face, void *arg, void *info); 428 /*=*/ 429 430 extern void *mface_get_prop (MFace *face, MSymbol key); 431 432 extern int mface_put_prop (MFace *face, MSymbol key, void *val); 433 434 extern MFaceHookFunc mface_get_hook (MFace *face); 435 436 extern int mface_put_hook (MFace *face, MFaceHookFunc func); 437 438 extern void mface_update (MFrame *frame, MFace *face); 439 440 /* end of face module */ 441 /*=*/ 442 443 /*** @ingroup m17nGUI */ 444 /***en @defgroup m17nDraw Drawing */ 445 /***ja @defgroup m17nDraw ɽ�� */ 446 /*=*/ 447 448 /*** @ingroup m17nDraw */ 449 /***en 450 @brief Window system dependent type for a window. 451 452 The type #MDrawWindow is for a window; a rectangular area that 453 works in several ways like a miniature screen. 454 455 What it actually points depends on a window system. A program 456 that uses the m17n-X library must coerce the type @c Drawable to 457 this type. */ 458 /***ja 459 @brief ������ɥ������ƥ�˰�¸���롢������ɥ��η����. 460 461 #MDrawWindow �ϥ�����ɥ������ʤ�����Ĥ������ǥ������Υߥ˥��奢�Ȥ���Ư������ΰ��Ѥη��Ǥ��롣 462 463 �ºݤ˲���ؤ����ϥ�����ɥ������ƥ�˰�¸���롣 m17n X 464 �饤�֥������Ѥ���ץ����� @c Drawable ���η����Ѵ����ʤ��ƤϤʤ�ʤ��� */ 465 466 typedef void *MDrawWindow; 467 /*=*/ 468 469 /*** @ingroup m17nDraw */ 470 /***en 471 @brief Window system dependent type for a region. 472 473 The type #MDrawRegion is for a region; an arbitrary set of pixels 474 on the screen (typically a rectangular area). 475 476 What it actually points depends on a window system. A program 477 that uses the m17n-X library must coerce the type @c Region to 478 this type. */ 479 /***ja 480 @brief ������ɥ������ƥ�˰�¸���롢�ΰ�η����. 481 482 #MDrawRegion ���ΰ衢���ʤ�����������Ǥ�դΥԥ�����ν����ŵ��Ū�ˤ϶���ΰ���Ѥη��Ǥ��롣 483 484 �ºݤ˲���ؤ����ϥ�����ɥ������ƥ�˰�¸���롣 m17n X 485 �饤�֥������Ѥ���ץ����� @c Region ���η����Ѵ����ʤ��ƤϤʤ�ʤ��� */ 486 487 typedef void *MDrawRegion; 488 /*=*/ 489 490 /*** @ingroup m17nDraw */ 491 /***en 492 @brief Type of a text drawing control. 493 494 The type #MDrawControl is the structure that controls how to draw 495 an M-text. */ 496 /***ja 497 @brief �ƥ�����ɽ������η����. 498 499 #MDrawControl ���ϡ�M-text ��ɤ�ɽ�����뤫�����椹�빽¤�ΤǤ��롣 500 */ 501 502 503 typedef struct 504 { 505 /***en If nonzero, draw an M-text as image, i.e. with background 506 filled with background colors of faces put on the M-text. 507 Otherwise, the background is not changed. */ 508 /***ja 0 �Ǥʤ���С� M-text ������Ȥ��ơ����ʤ���طʤ� M-text 509 �Υե������ǻ��ꤵ��Ƥ����طʿ�������ɽ�����롣�����Ǥʤ�����طʤ��Ѥ��ʤ��� */ 510 unsigned as_image : 1; 511 512 /***en If nonzero and the first glyph of each line has negative 513 lbearing, shift glyphs horizontally to right so that no pixel is 514 drawn to the left of the specified position. */ 515 /***ja 0 �Ǥʤ����ƹԤκǽ�Υ���դ� lbearing 516 ����ʤ�С�����դ��ʿ�˱��ˤ��餷�ơ����ꤷ�����֤�꺸�˥ԥ����뤬������ʤ��褦�ˤ��롣 */ 517 unsigned align_head : 1; 518 519 /***en If nonzero, draw an M-text two-dimensionally, i.e., newlines 520 in M-text breaks lines and the following characters are drawn in 521 the next line. If \<format\> is non-NULL, and the function 522 returns nonzero line width, a line longer than that width is 523 also broken. */ 524 /***ja 0 �Ǥʤ���С�M-text ����Ū�ˡ����ʤ�� M-text ��� 525 newline �Dz��Ԥ���³��ʸ���ϼ��ιԤ�ɽ�����롣�⤷ \<format\> �� 526 NULL �Ǥʤ������δؿ��� 0 �Ǥʤ��������֤��С����������Ĺ���Ԥ���Ԥ���롣 */ 527 unsigned two_dimensional : 1; 528 529 /***en If nonzero, draw an M-text to the right of a specified 530 position. */ 531 /***ja 0 �Ǥʤ���С�M-text ����ꤷ�����֤α���ɽ�����롣 */ 532 unsigned orientation_reversed : 1; 533 534 /***en If nonzero, reorder glyphs correctly for bidi text. */ 535 /***ja 0 �ʤ���С�bidi �ƥ������Ѥ˥���դ����������롣 */ 536 unsigned enable_bidi : 1; 537 538 /***en If nonzero, don't draw characters whose general category (in 539 Unicode) is Cf (Other, format). */ 540 /***ja 0 �Ǥʤ���С���˥����ɤ��֤�����̥��ƥ��꤬ Cf (Other, 541 format) �Ǥ���ʸ����ɽ�����ʤ��� */ 542 unsigned ignore_formatting_char : 1; 543 544 /***en If nonzero, draw glyphs suitable for a terminal. Not yet 545 implemented. */ 546 /***ja 0 �Ǥʤ���С�ü���ѤΥ���դ�ɽ�����롣̤������ */ 547 unsigned fixed_width : 1; 548 549 /***en If nonzero, draw glyphs with anti-aliasing if a backend font 550 driver supports it. */ 551 /***ja 0 �Ǥʤ���С�����������ꥢ���ǥ���դ�ɽ�����롣 552 �ʥХå�����ɤΥե���ȥɥ饤�Ф�����������ꥢ����ǽ����ľ��Τߡ��� */ 553 unsigned anti_alias : 1; 554 555 /***en If nonzero, disable the adjustment of glyph positions to 556 avoid horizontal overlapping at font boundary. */ 557 /***ja 0 �Ǥʤ���С��ե���ȶ����Ǥο�ʿ�����Υ���դνŤʤ���뤿��Υ���հ��֤�Ĵ����̵���ˤ��롣 */ 558 unsigned disable_overlapping_adjustment : 1; 559 560 /***en If nonzero, the values are minimum line ascent pixels. */ 561 /***ja 0 �Ǥʤ���С��ͤϹԤ� ascent �κǾ��ͤ��� */ 562 unsigned int min_line_ascent; 563 /***en If nonzero, the values are minimum line descent pixels. */ 564 /***ja 0 �Ǥʤ���С��ͤϹԤ� descent �κǾ��ͤ��� */ 565 unsigned int min_line_descent; 566 567 /***en If nonzero, the values are maximum line ascent pixels. */ 568 /***ja 0 �Ǥʤ���С��ͤϹԤ� ascent �κ����ͤ��� */ 569 unsigned int max_line_ascent; 570 /***en If nonzero, the values are maximum line descent pixels. */ 571 /***ja 0 �Ǥʤ���С��ͤϹԤ� descent �κ����ͤ��� */ 572 unsigned int max_line_descent; 573 574 /***en If nonzero, the value specifies how many pixels each line can 575 occupy on the display. The value zero means that there is no 576 limit. It is ignored if \<format\> is non-NULL. */ 577 /***ja 0 �Ǥʤ���С��ͤϤ��Υǥ����ץ쥤��dzƹԤ����뤳�ȤΤǤ���ԥ���������� 578 0 �ϸ��ꤵ��ʤ����Ȥ��̣���롣\<format\> �� NULL �Ǥʤ����̵�뤵��롣 */ 579 unsigned int max_line_width; 580 581 /***en If nonzero, the value specifies the distance between tab 582 stops in columns (the width of one column is the width of a 583 space in the default font of the frame). The value zero means 584 8. */ 585 /***ja 0 �Ǥʤ���С��ͤϥ��֥��ȥå״֤ε�Υ���ñ�� 586 �ʥ����ϥե졼��Υǥե���ȥե���Ȥˤ��������ʸ�������Ǥ���ˤǼ����� 587 0 �� 8 ���̣���롣 */ 588 unsigned int tab_width; 589 590 /***en If non-NULL, the value is a function that calculates the 591 indentation and width limit of each line based on the line 592 number LINE and the coordinate Y. The function store the 593 indentation and width limit at the place pointed by INDENT and 594 WIDTH respectively. 595 596 The indentation specifies how many pixels the first glyph of 597 each line is shifted to the right (if the member 598 \<orientation_reversed\> is zero) or to the left (otherwise). If 599 the value is negative, each line is shifted to the reverse 600 direction. 601 602 The width limit specifies how many pixels each line can occupy 603 on the display. The value 0 means that there is no limit. 604 605 LINE and Y are reset to 0 when a line is broken by a newline 606 character, and incremented each time when a long line is broken 607 because of the width limit. 608 609 This has an effect only when \<two_dimensional\> is nonzero. */ 610 /***ja 0 �Ǥʤ���С��ͤϴؿ��Ǥ��ꡢ���δؿ��Ϲ��ֹ� LINE �Ⱥ�ɸ Y 611 �˴�Ť��ƳƹԤΥ���ǥ�ȤȺ���������������줾���INDENT �� 612 WIDTH �ǻؤ���������¸���롣 613 614 ����ǥ�Ȥϡ��ƹԤκǽ�Υ���դʥ��� 615 \<orientation_reversed\> �� 0 616 �λ��ˤ��뤤�Ϻ��ʤ���ʳ��λ��ˤ˲��ԥ����뤺�餹������ꤹ�롣�ͤ���ʤ�е������ˤ��餹�� 617 618 �������ϡ��ƹԤ��ǥ����ץ쥤������뤳�ȤΤǤ���ԥ�������κ����ͤǤ��롣�ͤ� 619 0 �ξ������¤�����ʤ����Ȥ��̣���롣 620 621 LINE �� Y �ϲ���ʸ���ˤ�äƹԤ����ޤä��ݤˤ� 0 622 �˥ꥻ�åȤ��졢Ĺ���Ԥ������������¤ˤ�äƲ��Ԥ���뤿�Ӥ� 1 ���䤵��롣 623 624 ����� \<two_dimensional\> �� 0 �Ǥʤ����ˤΤ�ͭ���Ǥ��롣 */ 625 void (*format) (int line, int y, int *indent, int *width); 626 627 /***en If non-NULL, the value is a function that calculates a line 628 breaking position when a line is too long to fit within the 629 width limit. POS is the position of the character next to the 630 last one that fits within the limit. FROM is the position of the 631 first character of the line, and TO is the position of the last 632 character displayed on the line if there were not width limit. 633 LINE and Y are the same as the arguments to \<format\>. 634 635 The function must return a character position to break the 636 line. 637 638 The function should not modify MT. 639 640 The mdraw_default_line_break () function is useful for such a 641 script that uses SPACE as a word separator. */ 642 /***ja NULL �Ǥʤ���С��ͤϹԤ���������˼��ޤ�ʤ����˹Ԥ�������֤������ؿ��Ǥ��롣 643 POS �Ϻ������˼��ޤ�Ǹ��ʸ���μ���ʸ���ΰ��֤Ǥ��롣FROM 644 �ϹԤκǽ��ʸ���ΰ��֡�TO 645 �Ϻ����������ꤵ��Ƥ��ʤ���Ф��ιԤ�ɽ�������Ǹ��ʸ���ΰ��֤Ǥ��롣LINE 646 �� Y �� \<format\> �ΰ�����Ʊ�ͤǤ��롣 647 648 ���δؿ��ϹԤ�����ʸ�����֤��֤��ʤ��ƤϤʤ�ʤ����ޤ� MT ���ѹ����ƤϤʤ�ʤ��� 649 650 �ؿ� mdraw_default_line_break () 651 �ϡ�������ζ��ڤ�Ȥ����Ѥ��륹����ץ��ѤȤ���ͭ�ѤǤ��롣 */ 652 int (*line_break) (MText *mt, int pos, int from, int to, int line, int y); 653 654 /***en If nonzero, show the cursor according to \<cursor_width\>. */ 655 /***ja ����Ǥʤ���� \<cursor_width\> �ˤ������äƥ��������ɽ�����롣 */ 656 int with_cursor; 657 658 /***en Specifies the character position to display a cursor. If it 659 is greater than the maximum character position, the cursor is 660 displayed next to the last character of an M-text. If the value 661 is negative, even if \<cursor_width\> is nonzero, cursor is not 662 displayed. */ 663 /***ja ���������ɽ������ʸ�����֤��������ʸ�����֤���礭����С���������� 664 M-text �κǸ��ʸ�����٤�ɽ������롣��ʤ�С� 665 \<cursor_width\> �� 0 �Ǥʤ��Ƥ⥫�������ɽ������ʤ��� 666 */ 667 int cursor_pos; 668 669 /***en If nonzero, display a cursor at the character position 670 \<cursor_pos\>. If the value is positive, it is the pixel width 671 of the cursor. If the value is negative, the cursor width is 672 the same as the underlining glyph(s). */ 673 /***ja 0 �Ǥʤ���С�\<cursor_pos\> �˥��������ɽ�����롣 674 �ͤ����ʤ�С�������������Ϥ����͡ʥԥ�����ñ�̡ˤǤ��롣 675 ��ʤ�С���������Τ��륰��դ�Ʊ�����Ǥ��롣 */ 676 int cursor_width; 677 678 /***en If nonzero and \<cursor_width\> is also nonzero, display double 679 bar cursors; at the character position \<cursor_pos\> and at the 680 logically previous character. Both cursors have one pixel width 681 with horizontal fringes at upper or lower positions. */ 682 /***ja If 0 �Ǥʤ������� \<cursor_width\> �� 0 �Ǥʤ���С��С����������ʸ������ 683 \<cursor_pos\> ������Ū�ˤ�������ˤ���ʸ���Σ������ɽ�����롣 684 �����Ȥ⣱�ԥ��������ǡ��夫���˿�ʿ�ξ��꤬�Ĥ���*/ 685 int cursor_bidi; 686 687 /***en If nonzero, on drawing partial text, pixels of surrounding 688 texts that intrude into the drawing area are also drawn. For 689 instance, some CVC sequence of Thai text (C is consonant, V is 690 upper vowel) is drawn so that V is placed over the middle of two 691 Cs. If this CVC sequence is already drawn and only the last C 692 is drawn again (for instance by updating cursor position), the 693 right half of V is erased if this member is zero. By setting 694 this member to nonzero, even with such a drawing, we can keep 695 this CVC sequence correctly displayed. */ 696 /***ja 0 �Ǥʤ���С��ƥ����Ȥΰ���ʬ��ɽ������ݤˡ�����Υƥ����ȤΤ�������ɽ���ΰ�˿���������ʬ��ɽ�����롣 697 ���Ȥ��С�������ƥ����� �Ҳ�-�첻-�Ҳ� 698 �Ȥ������������Τ����Ĥ��ϡ��첻����ĤλҲ��δ֤˾�ˤΤ�褦��������롣 699 ���Τ褦�ʥ������������Ǥ�������Ƥ��ꡢ�Ǹ�λҲ�����������ľ����� 700 �ʤ��Ȥ��С�����������֤�����ݤʤɡˤ��Υ��Ф� 0 701 �Ǥ���С��첻�α�Ⱦʬ���ä���Ƥ��ޤ�������� 0 �ʳ��ˤ��뤳�Ȥˤ�äơ����Τ褦�ʺݤˤ� 702 �Ҳ�-�첻-�Ҳ� �Υ���������������ɽ����³���뤳�Ȥ��Ǥ��롣 */ 703 int partial_update; 704 705 /***en If nonzero, don't cache the result of any drawing information 706 of an M-text. */ 707 /***ja 0 �Ǥʤ���С�M-text ��ɽ���˴ؤ�������å��夷�ʤ��� 708 */ 709 int disable_caching; 710 711 /***en If non-NULL, limit the drawing effect to the specified region. */ 712 /***ja NULL �Ǥʤ����ɽ�����ꥢ����ꤵ�줿�ΰ�˸��ꤹ�롣 */ 713 MDrawRegion clip_region; 714 715 } MDrawControl; 716 717 extern int mdraw_line_break_option; 718 719 /*=*/ 720 721 /*** @ingroup m17nDraw */ 722 /***en 723 @brief Type of metric for glyphs and texts. 724 725 The type #MDrawMetric is for a metric of a glyph and a drawn text. 726 It is also used to represent a rectangle area of a graphic 727 device. */ 728 /***ja 729 @brief ����դȥƥ����Ȥ���ˡ�η����. 730 731 #MDrawMetric �ϥ���դ�ɽ�����줿�ƥ����Ȥ���ˡ�Ѥη��Ǥ��롣 732 �ޤ���ɽ���ǥХ����ζ���ΰ��ɽ���Τˤ��Ѥ����롣 */ 733 734 typedef struct { 735 /*** X coordinates of a glyph or a text. */ 736 int x; 737 /*** Y coordinates of a glyph or a text. */ 738 int y; 739 /*** Pixel width of a glyph or a text. */ 740 unsigned int width; 741 /*** Pixel height of a glyph or a text. */ 742 unsigned int height; 743 } MDrawMetric; 744 745 /*=*/ 746 747 /*** @ingroup m17nDraw */ 748 /***en 749 @brief Type of information about a glyph. 750 751 The type #MDrawGlyphInfo is the structure that contains 752 information about a glyph. It is used by mdraw_glyph_info (). */ 753 /***ja 754 @brief ����դ˴ؤ������η����. 755 756 #MDrawGlyphInfo ���ϥ���դ˴ؤ�������ޤ¤�ΤǤ��롣 757 mdraw_glyph_info () �Ϥ�����Ѥ��롣 */ 758 759 typedef struct 760 { 761 /***en Start position of character range corresponding to the glyph. */ 762 /***ja ����դ��б�����ʸ�����ϰϤγ��ϰ���. */ 763 int from; 764 765 /***en End position of character range corresponding to the glyph. */ 766 /***ja ����դ��б�����ʸ�����ϰϤν�λ����. */ 767 int to; 768 769 /***en Start position of character range corresponding to the line of the glyph. */ 770 /***ja ��ԤΥ���դ�����б�����ʸ�����ϰϤγ��ϰ���. */ 771 int line_from; 772 /***en End position of character range corresponding to the line of the glyph. */ 773 /***ja ��ԤΥ���դ�����б�����ʸ�����ϰϤν�λ����. */ 774 int line_to; 775 776 /***en X coordinates of the glyph. */ 777 /***ja ����դ� X ��ɸ. */ 778 int x; 779 /***en Y coordinates of the glyph. */ 780 /***ja ����դ� Y ��ɸ. */ 781 int y; 782 783 /***en Metric of the glyph. */ 784 /***ja ����դ���ˡ. */ 785 MDrawMetric metrics; 786 787 /***en Font used for the glyph. Set to NULL if no font is found for 788 the glyph. */ 789 /***ja ����դ˻Ȥ���ե���ȡ����Ĥ���ʤ���� NULL�� */ 790 791 MFont *font; 792 793 /***en Character ranges corresponding to logically previous glyphs. 794 Note that we do not need the members prev_to because it must 795 be the same as the member \<from\>. */ 796 /***ja ����Ū�����Υ���դ��б�����ʸ�����ϰϡ����� prev_to �ϡ��� 797 ��� from ��Ʊ���Ǥ���Ϥ��ʤΤ����פǤ��롣 */ 798 int prev_from; 799 /***en Character ranges corresponding to logically next glyphs. 800 Note that we do not need the members next_from because it must 801 be the same as the member \<to\> respectively. */ 802 /***ja ����Ū�ʸ�Υ���դ��б�����ʸ�����ϰϡ����� next_from �� 803 ���� to ��Ʊ���Ǥ���Ϥ��ʤΤ����פǤ��롣 */ 804 int next_to; 805 806 /***en Start position of character ranges corresponding to visually 807 left glyphs. */ 808 /***ja ɽ����κ��Υ���դ��б�����ʸ�����ϰϤγ��ϰ��֡� */ 809 int left_from; 810 /***en End position of character ranges corresponding to visually 811 left glyphs. */ 812 /***ja ɽ����κ��Υ���դ��б�����ʸ�����ϰϤν�λ���֡� */ 813 int left_to; 814 /***en Start position of character ranges corresponding to visually 815 right glyphs. */ 816 /***ja ɽ����α��Υ���դ��б�����ʸ�����ϰϤγ��ϰ��֡� */ 817 int right_from; 818 /***en End position of character ranges corresponding to visually 819 left glyphs. */ 820 /***ja ɽ����α��Υ���դ��б�����ʸ�����ϰϤν�λ���֡� */ 821 int right_to; 822 823 /***en Logical width of the glyph. Nominal distance to the next 824 glyph. */ 825 /***ja ����դ�����Ū�������Υ���դȤ�̾�ܾ�ε�Υ�� */ 826 int logical_width; 827 } MDrawGlyphInfo; 828 829 /*=*/ 830 831 /*** @ingroup m17nDraw */ 832 /***en 833 @brief Type of information about a glyph metric and font. 834 835 The type #MDrawGlyph is the structure that contains information 836 about a glyph metric and font. It is used by the function 837 mdraw_glyph_list (). */ 838 /***ja 839 @brief ����դ���ˡ�ȥե���Ȥ˴ؤ������η����. 840 841 #MDrawGlyph ���ϥ���դ���ˡ�ȥե���Ȥ˴ؤ�������ޤ¤�ΤǤ��롣 842 mdraw_glyph_list () �Ϥ�����Ѥ��롣 */ 843 844 typedef struct 845 { 846 /* @{ */ 847 /***en Character range corresponding to the glyph. */ 848 /***ja ����դ��б�����ʸ�����ϰ�. */ 849 int from, to; 850 /* @} */ 851 852 /***en Font glyph code of the glyph. */ 853 /***ja �ե������Υ���ե����ɡ� */ 854 int glyph_code; 855 856 /***en Logical width of the glyph. Nominal distance to the next 857 glyph. */ 858 /***ja ����դ�����Ū�������Υ���դȤ�̾�ܾ�ε�Υ�� */ 859 int x_advance; 860 /***en Logical height of the glyph. Nominal distance to the next 861 glyph. */ 862 /***ja ����դ�����Ū�⤵�����Υ���դȤ�̾�ܾ�ε�Υ�� */ 863 int y_advance; 864 865 /***en X offset relative to the glyph position. */ 866 /***ja ����դΰ��֤��Ф��� X ���ե��å�. */ 867 int x_off; 868 /***en Y offset relative to the glyph position. */ 869 /***ja ����դΰ��֤��Ф��� Y ���ե��å�. */ 870 int y_off; 871 872 /***en Metric of the glyph (left-bearing). */ 873 /***ja ����դ���ˡ (left-bearing). */ 874 int lbearing; 875 /***en Metric of the glyph (right-bearing). */ 876 /***ja ����դ���ˡ (right-bearing). */ 877 int rbearing; 878 /***en Metric of the glyph (ascent). */ 879 /***ja ����դ���ˡ (ascent). */ 880 int ascent; 881 /***en Metric of the glyph (descent). */ 882 /***ja ����դ���ˡ (descent). */ 883 int descent; 884 885 /***en Font used for the glyph. Set to NULL if no font is found for 886 the glyph. */ 887 /***ja ����դ˻Ȥ���ե���ȡ����Ĥ���ʤ���� NULL�� */ 888 MFont *font; 889 890 /***en Type of the font. One of Mx, Mfreetype, Mxft. */ 891 /***ja �ե���ȤΥ����ס�Mx��Mfreetype��Mxft �Τ����줫�� */ 892 MSymbol font_type; 893 894 /***en Pointer to the font structure. The actual type is 895 (XFontStruct *) if \<font_type\> member is Mx, FT_Face if 896 \<font_type\> member is Mfreetype, and (XftFont *) if \<font_type\> 897 member is Mxft. */ 898 /***ja �ե���Ȥι�¤�ΤؤΥݥ����ºݤη��� \<font_type\> ���Ф� 899 Mx �ʤ� (XFontStruct *)�� Mfreetype �ʤ� FT_Face��Mxft 900 �ʤ� (XftFont *)�� */ 901 void *fontp; 902 903 } MDrawGlyph; 904 905 /*=*/ 906 907 /***en 908 @brief Type of textitems. 909 910 The type #MDrawTextItem is for @e textitem objects. 911 Each textitem contains an M-text and some other information to 912 control the drawing of the M-text. */ 913 914 /***ja 915 @brief textitem �η����. 916 917 #MDrawTextItem �� @e �ƥ����ȥ����ƥ� ���֥��������Ѥη��Ǥ��롣 918 �ƥƥ����ȥ����ƥ�ϡ� 1 �Ĥ� M-text �ȡ�����ɽ�������椹�뤿��ξ����ޤ�Ǥ��롣 919 920 @latexonly \IPAlabel{MTextItem} @endlatexonly */ 921 922 typedef struct 923 { 924 /***en M-text. */ 925 /***ja M-text. */ 926 MText *mt; 927 928 /***en Optional change in the position (in the unit of pixel) along 929 the X-axis before the M-text is drawn. */ 930 /***ja M-text ɽ�����˹Ԥʤ�X�������ΰ���Ĵ�� (�ԥ�����ñ��) */ 931 int delta; 932 933 /***en Pointer to a face object. Each property of the face, if not 934 Mnil, overrides the same property of face(s) specified as a text 935 property in \<mt\>. */ 936 /***ja �ե��������֥������ȤؤΥݥ����ե������γƥץ�ѥƥ��� 937 Mnil �Ǥʤ���� \<mt\> �ǻ��ꤵ�줿�ե�������Ʊ���ץ�ѥƥ���ͥ�褹��*/ 938 MFace *face; 939 940 /***en Pointer to a draw control object. The M-text \<mt\> is drawn 941 by mdraw_text_with_control () with this control object. */ 942 /***ja ɽ�����楪�֥������ȤؤΥݥ��� mdraw_text_with_control () 943 �Ϥ��Υ��֥������Ȥ��Ѥ��� M-text \<mt\> ��ɽ�����롣 */ 944 MDrawControl *control; 945 946 } MDrawTextItem; 947 948 /*=*/ 949 950 extern int mdraw_text (MFrame *frame, MDrawWindow win, int x, int y, 951 MText *mt, int from, int to); 952 953 extern int mdraw_image_text (MFrame *frame, MDrawWindow win, int x, int y, 954 MText *mt, int from, int to); 955 956 extern int mdraw_text_with_control (MFrame *frame, MDrawWindow win, 957 int x, int y, MText *mt, int from, int to, 958 MDrawControl *control); 959 960 extern int mdraw_coordinates_position (MFrame *frame, 961 MText *mt, int from, int to, 962 int x, int y, MDrawControl *control); 963 964 extern int mdraw_text_extents (MFrame *frame, 965 MText *mt, int from, int to, 966 MDrawControl *control, 967 MDrawMetric *overall_ink_return, 968 MDrawMetric *overall_logical_return, 969 MDrawMetric *overall_line_return); 970 971 extern int mdraw_text_per_char_extents (MFrame *frame, 972 MText *mt, int from, int to, 973 MDrawControl *control, 974 MDrawMetric *ink_array_return, 975 MDrawMetric *logical_array_return, 976 int array_size, 977 int *num_chars_return, 978 MDrawMetric *overall_ink_return, 979 MDrawMetric *overall_logical_return); 980 981 extern int mdraw_glyph_info (MFrame *frame, MText *mt, int from, int pos, 982 MDrawControl *control, MDrawGlyphInfo *info); 983 984 extern int mdraw_glyph_list (MFrame *frame, MText *mt, int from, int to, 985 MDrawControl *control, MDrawGlyph *glyphs, 986 int array_size, int *num_glyphs_return); 987 988 extern void mdraw_text_items (MFrame *frame, MDrawWindow win, int x, int y, 989 MDrawTextItem *items, int nitems); 990 991 extern void mdraw_per_char_extents (MFrame *frame, MText *mt, 992 MDrawMetric *array_return, 993 MDrawMetric *overall_return); 994 995 extern int mdraw_default_line_break (MText *mt, int pos, 996 int from, int to, int line, int y); 997 998 extern void mdraw_clear_cache (MText *mt); 999 1000 /* end of drawing module */ 1001 /*=*/ 1002 1003 /*** @ingroup m17nGUI */ 1004 /***en @defgroup m17nInputMethodWin Input Method (GUI) */ 1005 /***ja @defgroup m17nInputMethodWin ���ϥ�å� (GUI) */ 1006 /*=*/ 1007 1008 extern MInputDriver minput_gui_driver; 1009 1010 /*=*/ 1011 /*** @ingroup m17nInputMethodWin */ 1012 /***en 1013 @brief Type of the argument to the function minput_create_ic (). 1014 1015 The type #MInputGUIArgIC is for the argument $ARG of the function 1016 minput_create_ic () to create an input context of an internal 1017 input method. */ 1018 1019 /***ja 1020 @brief �ؿ� minput_create_ic () �ΰ����η����. 1021 1022 #MInputGUIArgIC �ϡ��ؿ� minput_create_ic () 1023 ���������ϥ�åɤ����ϥ���ƥ����Ȥ���������ݤΡ����� $ARG �Ѥη��Ǥ��롣 */ 1024 1025 typedef struct 1026 { 1027 /***en Frame of the client. */ 1028 /***ja ���饤����ȤΥե졼�� */ 1029 MFrame *frame; 1030 1031 /***en Window on which to display the preedit and status text. */ 1032 /***ja preedit �ƥ����Ȥ� status �ƥ����Ȥ�ɽ�����륦����ɥ� */ 1033 MDrawWindow client; 1034 1035 /***en Window that the input context has a focus on. */ 1036 /***ja ���ϥ���ƥ����Ȥ��ե����������Ƥ��륦����ɥ� */ 1037 MDrawWindow focus; 1038 } MInputGUIArgIC; 1039 1040 /*=*/ 1041 1042 extern MSymbol minput_event_to_key (MFrame *frame, void *event); 1043 1044 /* end of input module */ 1045 /*=*/ 1046 /* end of window modules */ 1047 /*=*/ 1048 1049 extern MFace *mdebug_dump_face (MFace *face, int indent); 1050 extern MFont *mdebug_dump_font (MFont *font); 1051 extern MFontset *mdebug_dump_fontset (MFontset *fontset, int indent); 1052 1053 M17N_END_HEADER 1054 1055 #endif /* _M17N_GUI_H_ */ 1056 1057 /* 1058 Local Variables: 1059 coding: euc-japan 1060 End: 1061 */ 1062