Blame src/m17n-gui.h

Packit 741ade
/* m17n-gui.h -- header file for the GUI API of the m17n library.
Packit 741ade
   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Packit 741ade
     National Institute of Advanced Industrial Science and Technology (AIST)
Packit 741ade
     Registration Number H15PRO112
Packit 741ade
Packit 741ade
   This file is part of the m17n library.
Packit 741ade
Packit 741ade
   The m17n library is free software; you can redistribute it and/or
Packit 741ade
   modify it under the terms of the GNU Lesser General Public License
Packit 741ade
   as published by the Free Software Foundation; either version 2.1 of
Packit 741ade
   the License, or (at your option) any later version.
Packit 741ade
Packit 741ade
   The m17n library is distributed in the hope that it will be useful,
Packit 741ade
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 741ade
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 741ade
   Lesser General Public License for more details.
Packit 741ade
Packit 741ade
   You should have received a copy of the GNU Lesser General Public
Packit 741ade
   License along with the m17n library; if not, write to the Free
Packit 741ade
   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit 741ade
   Boston, MA 02110-1301 USA.  */
Packit 741ade
Packit 741ade
#ifndef _M17N_GUI_H_
Packit 741ade
#define _M17N_GUI_H_
Packit 741ade
Packit 741ade
#ifndef _M17N_FLT_H_
Packit 741ade
#include <m17n-flt.h>
Packit 741ade
#endif
Packit 741ade
Packit 741ade
#ifndef _M17N_H_
Packit 741ade
#include <m17n.h>
Packit 741ade
#endif
Packit 741ade
Packit 741ade
M17N_BEGIN_HEADER
Packit 741ade
Packit 741ade
#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
Packit 741ade
Packit 741ade
extern void m17n_init_win (void);
Packit 741ade
#undef M17N_INIT
Packit 741ade
#define M17N_INIT() m17n_init_win ()
Packit 741ade
Packit 741ade
extern void m17n_fini_win (void);
Packit 741ade
#undef M17N_FINI
Packit 741ade
#define M17N_FINI() m17n_fini_win ()
Packit 741ade
Packit 741ade
#endif
Packit 741ade
Packit 741ade
/***en @defgroup m17nGUI GUI API
Packit 741ade
    @brief API provided by libm17n-gui.so */
Packit 741ade
/***ja @defgroup m17nGUI GUI API
Packit 741ade
    @brief libm17n-gui.so が提供する API */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI */
Packit 741ade
/***en @defgroup m17nFrame Frame */
Packit 741ade
/***ja @defgroup m17nFrame フレーム */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFrame */
Packit 741ade
/***en
Packit 741ade
    @brief Type of frames.
Packit 741ade
Packit 741ade
    The type #MFrame is for a @e frame object.  Each frame holds
Packit 741ade
    various information about the corresponding physical display/input
Packit 741ade
    device.
Packit 741ade
Packit 741ade
    The internal structure of the type #MFrame is concealed from an
Packit 741ade
    application program, and its contents depend on the window system
Packit 741ade
    in use.  In the m17n-X library, it contains the information about
Packit 741ade
    @e display and @e screen in the X Window System.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief フレームの型宣言.
Packit 741ade
Packit 741ade
    #MFrame は、@e フレーム オブジェクト用の型である。
Packit 741ade
    個々のフレームは、それが対応する物理的な表示/入力デバイスの各種情報を保持する。
Packit 741ade
Packit 741ade
    #MFrame 型の内部構造は、アプリケーションプログラムからは見えない。
Packit 741ade
    またその内容は使用するウィンドウシステムに依存する。また m17n-X 
Packit 741ade
    ライブラリにおけるフレームは、X ウィンドウの @e display と @e screen 
Packit 741ade
    に関する情報を持つ。      */
Packit 741ade
Packit 741ade
typedef struct MFrame MFrame;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MSymbol Mdevice;
Packit 741ade
Packit 741ade
extern MSymbol Mfont;
Packit 741ade
extern MSymbol Mfont_width;
Packit 741ade
extern MSymbol Mfont_ascent;
Packit 741ade
extern MSymbol Mfont_descent;
Packit 741ade
extern MFrame *mframe_default;
Packit 741ade
Packit 741ade
extern MSymbol Mdisplay;
Packit 741ade
extern MSymbol Mscreen;
Packit 741ade
extern MSymbol Mdrawable;
Packit 741ade
extern MSymbol Mwidget;
Packit 741ade
extern MSymbol Mdepth;
Packit 741ade
extern MSymbol Mcolormap;
Packit 741ade
Packit 741ade
extern MFrame *mframe (MPlist *plist);
Packit 741ade
Packit 741ade
extern void *mframe_get_prop (MFrame *frame, MSymbol key);
Packit 741ade
Packit 741ade
/* end of frame module */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI  */
Packit 741ade
/***en @defgroup m17nFont Font */
Packit 741ade
/***ja @defgroup m17nFont フォント */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFont */
Packit 741ade
/***en
Packit 741ade
    @brief Type of fonts.
Packit 741ade
Packit 741ade
    The type #MFont is the structure defining fonts.  It contains
Packit 741ade
    information about the following properties of a font: foundry,
Packit 741ade
    family, weight, style, stretch, adstyle, registry, size, and
Packit 741ade
    resolution.
Packit 741ade
Packit 741ade
    This structure is used both for specifying a font in a fontset
Packit 741ade
    and for storing information about available system fonts.
Packit 741ade
Packit 741ade
    The internal structure is concealed from an application program.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief フォントの型宣言.
Packit 741ade
Packit 741ade
    #MFont 型はフォント指定用の構造体であり、フォントのプロパティである
Packit 741ade
    foundry, family, weight, style, stretch, adstyle, registry,
Packit 741ade
    size, resolution に関する情報を含む。
Packit 741ade
Packit 741ade
    この構造体はフォントセット内のフォントを指定する際と、使用可能なシステムフォントの情報を格納する際の両方に用いられる。
Packit 741ade
Packit 741ade
    内部構造はアプリケーションプログラムからは見えない。  */
Packit 741ade
Packit 741ade
/***
Packit 741ade
    @seealso
Packit 741ade
    mfont (), mfont_from_name (), mfont_find ().  */
Packit 741ade
Packit 741ade
typedef struct MFont MFont;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MSymbol Mx, Mfreetype, Mxft;
Packit 741ade
Packit 741ade
extern MPlist *mfont_freetype_path;
Packit 741ade
Packit 741ade
extern MFont *mfont ();
Packit 741ade
Packit 741ade
extern MFont *mfont_copy (MFont *font);
Packit 741ade
Packit 741ade
extern MFont *mfont_parse_name (const char *name, MSymbol format);
Packit 741ade
Packit 741ade
extern char *mfont_unparse_name (MFont *font, MSymbol format);
Packit 741ade
Packit 741ade
/* These two are obsolete (from 1.1.0).  */
Packit 741ade
extern char *mfont_name (MFont *font);
Packit 741ade
extern MFont *mfont_from_name (const char *name);
Packit 741ade
Packit 741ade
extern MSymbol Mfoundry;
Packit 741ade
extern MSymbol Mfamily;
Packit 741ade
extern MSymbol Mweight;
Packit 741ade
extern MSymbol Mstyle;
Packit 741ade
extern MSymbol Mstretch;
Packit 741ade
extern MSymbol Madstyle;
Packit 741ade
extern MSymbol Mspacing;
Packit 741ade
extern MSymbol Mregistry;
Packit 741ade
extern MSymbol Msize;
Packit 741ade
extern MSymbol Mresolution;
Packit 741ade
extern MSymbol Mmax_advance;
Packit 741ade
extern MSymbol Motf;
Packit 741ade
extern MSymbol Mfontfile;
Packit 741ade
Packit 741ade
extern MSymbol Mfontconfig;
Packit 741ade
Packit 741ade
extern void *mfont_get_prop (MFont *font, MSymbol key);
Packit 741ade
Packit 741ade
extern int mfont_put_prop (MFont *font, MSymbol key, void *val);
Packit 741ade
Packit 741ade
extern int mfont_set_encoding (MFont *font,
Packit 741ade
			       MSymbol encoding_name, MSymbol repertory_name);
Packit 741ade
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/***en
Packit 741ade
    @brief Find a font.
Packit 741ade
Packit 741ade
    The mfont_find () function returns a pointer to the available font
Packit 741ade
    that matches best with the specification $SPEC in frame $FRAME.
Packit 741ade
Packit 741ade
    $SCORE, if not NULL, must point to a place to store the score
Packit 741ade
    value which indicates how well the found font matches $SPEC.  The
Packit 741ade
    smaller score means a better match.
Packit 741ade
Packit 741ade
    $LIMITED_SIZE, if nonzero, forces the font selector to find a
Packit 741ade
    font not greater than the #Msize property of $SPEC.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief フォントを探す.
Packit 741ade
Packit 741ade
    関数 mfont_find () は、フレーム $FRAME 上でフォント定義 $SPEC 
Packit 741ade
    にもっとも合致する使用可能なフォントへのポインタを返す。  
Packit 741ade
Packit 741ade
    $SCORE は NULL であるか、見つかったフォントが $SPEC 
Packit 741ade
    にどれほど合っているかを示すスコアを保存する場所へのポインタである。
Packit 741ade
    スコアが小さいほど良く合っていることを意味する。
Packit 741ade
Packit 741ade
    $LIMITED_SIZE が 0 でなければ、$SPEC のプロパティ #Msize 
Packit 741ade
    より大きくないフォントだけが探される。
Packit 741ade
*/
Packit 741ade
Packit 741ade
extern MFont *mfont_find (MFrame *frame, MFont *spec,
Packit 741ade
			  int *score, int limited_size);
Packit 741ade
extern MSymbol *mfont_selection_priority ();
Packit 741ade
Packit 741ade
extern int mfont_set_selection_priority (MSymbol *keys);
Packit 741ade
Packit 741ade
extern int mfont_resize_ratio (MFont *font);
Packit 741ade
Packit 741ade
extern MPlist *mfont_list (MFrame *frame, MFont *font, MSymbol language,
Packit 741ade
			   int maxnum);
Packit 741ade
extern MPlist *mfont_list_family_names (MFrame *frame);
Packit 741ade
Packit 741ade
typedef struct MFontset MFontset;
Packit 741ade
Packit 741ade
extern int mfont_check (MFrame *frame, MFontset *fontset,
Packit 741ade
			MSymbol script, MSymbol language, MFont *font);
Packit 741ade
Packit 741ade
extern int mfont_match_p (MFont *font, MFont *spec);
Packit 741ade
Packit 741ade
extern MFont *mfont_open (MFrame *frame, MFont *font);
Packit 741ade
Packit 741ade
extern MFont *mfont_encapsulate (MFrame *frame, MSymbol data_type, void *data);
Packit 741ade
Packit 741ade
extern int mfont_close (MFont *font);
Packit 741ade
Packit 741ade
/* end of font module */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI  */
Packit 741ade
/***en @defgroup m17nFontset Fontset */
Packit 741ade
/***ja @defgroup m17nFontset フォントセット */
Packit 741ade
/*=*/
Packit 741ade
/*** @addtogroup m17nFontset
Packit 741ade
     @{   */
Packit 741ade
extern MFontset *mfontset (char *name);
Packit 741ade
Packit 741ade
extern MSymbol mfontset_name (MFontset *fontset);
Packit 741ade
Packit 741ade
extern MFontset *mfontset_copy (MFontset *fontset, char *name);
Packit 741ade
Packit 741ade
extern int mfontset_modify_entry (MFontset *fontset,
Packit 741ade
				  MSymbol language, MSymbol script,
Packit 741ade
				  MSymbol charset,
Packit 741ade
				  MFont *spec, MSymbol layouter_name,
Packit 741ade
				  int how);
Packit 741ade
Packit 741ade
extern MPlist *mfontset_lookup (MFontset *fontset, MSymbol script,
Packit 741ade
				MSymbol language, MSymbol charset);
Packit 741ade
/*** @}   */
Packit 741ade
/* end of fontset module */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI */
Packit 741ade
/***en @defgroup m17nFace Face */
Packit 741ade
/***ja @defgroup m17nFace フェース */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFace */
Packit 741ade
/***en
Packit 741ade
    @brief Type of faces.
Packit 741ade
Packit 741ade
    The type #MFace is the structure of face objects.  The internal
Packit 741ade
    structure is concealed from an application program.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief フェースの型宣言.
Packit 741ade
Packit 741ade
    #MFace 型はフェースオブジェクトのための構造体である。
Packit 741ade
    内部構造はアプリケーションプログラムからは見えない。  */
Packit 741ade
Packit 741ade
typedef struct MFace MFace;
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MSymbol Mforeground;
Packit 741ade
extern MSymbol Mbackground;
Packit 741ade
extern MSymbol Mvideomode;
Packit 741ade
extern MSymbol Mnormal;
Packit 741ade
extern MSymbol Mreverse;
Packit 741ade
extern MSymbol Mhline;
Packit 741ade
extern MSymbol Mbox;
Packit 741ade
extern MSymbol Mfontset;
Packit 741ade
extern MSymbol Mratio;
Packit 741ade
extern MSymbol Mhook_func;
Packit 741ade
extern MSymbol Mhook_arg;
Packit 741ade
Packit 741ade
/* Predefined faces.  */
Packit 741ade
extern MFace *mface_normal_video;
Packit 741ade
extern MFace *mface_reverse_video;
Packit 741ade
extern MFace *mface_underline;
Packit 741ade
extern MFace *mface_medium;
Packit 741ade
extern MFace *mface_bold;
Packit 741ade
extern MFace *mface_italic;
Packit 741ade
extern MFace *mface_bold_italic;
Packit 741ade
extern MFace *mface_xx_small;
Packit 741ade
extern MFace *mface_x_small;
Packit 741ade
extern MFace *mface_small;
Packit 741ade
extern MFace *mface_normalsize;
Packit 741ade
extern MFace *mface_large;
Packit 741ade
extern MFace *mface_x_large;
Packit 741ade
extern MFace *mface_xx_large;
Packit 741ade
extern MFace *mface_black;
Packit 741ade
extern MFace *mface_white;
Packit 741ade
extern MFace *mface_red;
Packit 741ade
extern MFace *mface_green;
Packit 741ade
extern MFace *mface_blue;
Packit 741ade
extern MFace *mface_cyan;
Packit 741ade
extern MFace *mface_yellow;
Packit 741ade
extern MFace *mface_magenta;
Packit 741ade
Packit 741ade
/* etc */
Packit 741ade
extern MSymbol Mface;
Packit 741ade
Packit 741ade
extern MFace *mface ();
Packit 741ade
Packit 741ade
extern int mface_equal (MFace *face1, MFace *face2);
Packit 741ade
Packit 741ade
extern MFace *mface_copy (MFace *face);
Packit 741ade
Packit 741ade
extern MFace *mface_merge (MFace *dst, MFace *src);
Packit 741ade
Packit 741ade
extern MFace *mface_from_font (MFont *font);
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFace */
Packit 741ade
/***en
Packit 741ade
    @brief Type of horizontal line spec of face.
Packit 741ade
Packit 741ade
    The type #MFaceHLineProp is to specify the detail of #Mhline
Packit 741ade
    property of a face.  The value of the property must be a pointer
Packit 741ade
    to an object of this type.  */
Packit 741ade
/***ja
Packit 741ade
    @brief フェースの水平線指定用型宣言.
Packit 741ade
Packit 741ade
    #MFaceHLineProp はフェースの #Mhline 
Packit 741ade
    プロパティの詳細を指定する型である。このプロパティの値はこの型のオブジェクトでなくてはならない。
Packit 741ade
      */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en Type of the horizontal line.  */
Packit 741ade
  /***ja 水平線のタイプ.  */
Packit 741ade
  enum MFaceHLineType
Packit 741ade
    {
Packit 741ade
      MFACE_HLINE_BOTTOM,      
Packit 741ade
      MFACE_HLINE_UNDER,
Packit 741ade
      MFACE_HLINE_STRIKE_THROUGH,
Packit 741ade
      MFACE_HLINE_OVER,
Packit 741ade
      MFACE_HLINE_TOP
Packit 741ade
    } type;
Packit 741ade
Packit 741ade
  /***en Width of the line in pixels.  */
Packit 741ade
  /***ja 線幅(ピクセル単位).  */
Packit 741ade
  unsigned width;
Packit 741ade
Packit 741ade
  /***en Color of the line.  If the value is Mnil, foreground color of
Packit 741ade
      a merged face is used.  */
Packit 741ade
  /***ja 線の色.  Mnil ならば、統合したフェースの前景色が使われる。  */
Packit 741ade
  
Packit 741ade
  MSymbol color;
Packit 741ade
} MFaceHLineProp;
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFace */
Packit 741ade
/***en
Packit 741ade
    @brief Type of box spec of face.
Packit 741ade
Packit 741ade
    The type #MFaceBoxProp is to specify the detail of #Mbox property
Packit 741ade
    of a face.  The value of the property must be a pointer to an
Packit 741ade
    object of this type.  */
Packit 741ade
/***ja
Packit 741ade
    @brief フェースの囲み枠指定用型宣言.
Packit 741ade
Packit 741ade
    #MFaceBoxProp はフェースの #Mbox プロパティの詳細を指定する型である。
Packit 741ade
    このプロパティの値はこの型のオブジェクトへのポインタでなくてはならない。
Packit 741ade
      */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en Width of the box line in pixels.  */
Packit 741ade
  /***ja 線幅(ピクセル単位).  */
Packit 741ade
  unsigned width;
Packit 741ade
Packit 741ade
  /* @{ */
Packit 741ade
  /*** Colors of borders.  */
Packit 741ade
  MSymbol color_top;
Packit 741ade
  MSymbol color_bottom;
Packit 741ade
  MSymbol color_left;
Packit 741ade
  MSymbol color_right;
Packit 741ade
  /* @} */
Packit 741ade
Packit 741ade
  /* @{ */
Packit 741ade
  /*** Margins  */
Packit 741ade
  unsigned inner_hmargin;
Packit 741ade
  unsigned inner_vmargin;
Packit 741ade
  unsigned outer_hmargin;
Packit 741ade
  unsigned outer_vmargin;
Packit 741ade
  /* @} */
Packit 741ade
Packit 741ade
} MFaceBoxProp;
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nFace */
Packit 741ade
/***en
Packit 741ade
    @brief Type of hook function of face.
Packit 741ade
Packit 741ade
    #MFaceHookFunc is a type of a hook function of a face.  */
Packit 741ade
/***ja
Packit 741ade
    @brief フェースのフック関数の型宣言.
Packit 741ade
Packit 741ade
    #MFaceHookFunc はフェースのフック関数の型である。*/
Packit 741ade
typedef void (*MFaceHookFunc) (MFace *face, void *arg, void *info);
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern void *mface_get_prop (MFace *face, MSymbol key);
Packit 741ade
Packit 741ade
extern int mface_put_prop (MFace *face, MSymbol key, void *val);
Packit 741ade
Packit 741ade
extern MFaceHookFunc mface_get_hook (MFace *face);
Packit 741ade
Packit 741ade
extern int mface_put_hook (MFace *face, MFaceHookFunc func);
Packit 741ade
Packit 741ade
extern void mface_update (MFrame *frame, MFace *face);
Packit 741ade
Packit 741ade
/* end of face module */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI */
Packit 741ade
/***en @defgroup m17nDraw Drawing */
Packit 741ade
/***ja @defgroup m17nDraw 表示 */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Window system dependent type for a window.
Packit 741ade
Packit 741ade
    The type #MDrawWindow is for a window; a rectangular area that
Packit 741ade
    works in several ways like a miniature screen.
Packit 741ade
Packit 741ade
    What it actually points depends on a window system.  A program
Packit 741ade
    that uses the m17n-X library must coerce the type @c Drawable to
Packit 741ade
    this type.  */
Packit 741ade
/***ja 
Packit 741ade
    @brief ウィンドウシステムに依存する、ウィンドウの型宣言.
Packit 741ade
Packit 741ade
    #MDrawWindow はウィンドウ、すなわち幾つかの点でスクリーンのミニチュアとして働く矩形領域用の型である。
Packit 741ade
Packit 741ade
    実際に何を指すかはウィンドウシステムに依存する。 m17n X 
Packit 741ade
    ライブラリを利用するプログラムは @c Drawable 型をこの型に変換しなくてはならない。 */
Packit 741ade
Packit 741ade
typedef void *MDrawWindow;
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Window system dependent type for a region.
Packit 741ade
Packit 741ade
    The type #MDrawRegion is for a region; an arbitrary set of pixels
Packit 741ade
    on the screen (typically a rectangular area).
Packit 741ade
Packit 741ade
    What it actually points depends on a window system.  A program
Packit 741ade
    that uses the m17n-X library must coerce the type @c Region to
Packit 741ade
    this type.  */
Packit 741ade
/***ja
Packit 741ade
    @brief ウィンドウシステムに依存する、領域の型宣言.
Packit 741ade
Packit 741ade
    #MDrawRegion は領域、すなわちスクリーン上の任意のピクセルの集合(典型的には矩形領域)用の型である。
Packit 741ade
Packit 741ade
    実際に何を指すかはウィンドウシステムに依存する。 m17n X 
Packit 741ade
    ライブラリを利用するプログラムは @c Region 型をこの型に変換しなくてはならない。  */
Packit 741ade
Packit 741ade
typedef void *MDrawRegion;
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Type of a text drawing control.
Packit 741ade
Packit 741ade
    The type #MDrawControl is the structure that controls how to draw
Packit 741ade
    an M-text.  */
Packit 741ade
/***ja
Packit 741ade
    @brief テキスト表示制御の型宣言.
Packit 741ade
Packit 741ade
    #MDrawControl 型は、M-text をどう表示するかを制御する構造体である。
Packit 741ade
      */
Packit 741ade
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en If nonzero, draw an M-text as image, i.e. with background
Packit 741ade
      filled with background colors of faces put on the M-text.
Packit 741ade
      Otherwise, the background is not changed.  */
Packit 741ade
  /***ja 0 でなければ、 M-text を画像として、すなわち背景を M-text 
Packit 741ade
      のフェースで指定されている背景色で埋めて表示する。そうでなければ背景は変わらない。  */
Packit 741ade
  unsigned as_image : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero and the first glyph of each line has negative
Packit 741ade
      lbearing, shift glyphs horizontally to right so that no pixel is
Packit 741ade
      drawn to the left of the specified position.  */
Packit 741ade
  /***ja 0 でなく、各行の最初のグリフの lbearing 
Packit 741ade
      が負ならば、グリフを水平に右にずらして、指定した位置より左にピクセルが描かれないようにする。  */
Packit 741ade
  unsigned align_head : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, draw an M-text two-dimensionally, i.e., newlines
Packit 741ade
      in M-text breaks lines and the following characters are drawn in
Packit 741ade
      the next line.  If \<format\> is non-NULL, and the function
Packit 741ade
      returns nonzero line width, a line longer than that width is
Packit 741ade
      also broken.  */
Packit 741ade
  /***ja 0 でなければ、M-text を2次元的に、すなわち M-text 中の 
Packit 741ade
      newline で改行し、続く文字は次の行に表示する。もし \<format\> が 
Packit 741ade
      NULL でなく、その関数が 0 でない行幅を返せば、その幅より長い行も改行される。  */
Packit 741ade
  unsigned two_dimensional : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, draw an M-text to the right of a specified
Packit 741ade
      position.  */
Packit 741ade
  /***ja 0 でなければ、M-text を指定した位置の右に表示する。  */
Packit 741ade
  unsigned orientation_reversed : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, reorder glyphs correctly for bidi text.  */ 
Packit 741ade
  /***ja 0 なければ、bidi テキスト用にグリフを正しく整列する。  */
Packit 741ade
  unsigned enable_bidi : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, don't draw characters whose general category (in
Packit 741ade
      Unicode) is Cf (Other, format).  */
Packit 741ade
  /***ja 0 でなければ、ユニコードに置ける一般カテゴリが Cf (Other,
Packit 741ade
      format) である文字を表示しない。  */
Packit 741ade
  unsigned ignore_formatting_char : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, draw glyphs suitable for a terminal.  Not yet
Packit 741ade
      implemented.  */
Packit 741ade
  /***ja 0 でなければ、端末用のグリフを表示する。未実装。  */
Packit 741ade
  unsigned fixed_width : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, draw glyphs with anti-aliasing if a backend font
Packit 741ade
      driver supports it.  */
Packit 741ade
  /***ja 0 でなければ、アンチエーリアスでグリフを表示する。
Packit 741ade
      (バックエンドのフォントドライバがアンチエーリアス機能を持つ場合のみ。) */
Packit 741ade
  unsigned anti_alias : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, disable the adjustment of glyph positions to
Packit 741ade
      avoid horizontal overlapping at font boundary.  */
Packit 741ade
  /***ja 0 でなければ、フォント境界での水平方向のグリフの重なりを避けるためのグリフ位置の調整を無効にする。  */
Packit 741ade
  unsigned disable_overlapping_adjustment : 1;
Packit 741ade
Packit 741ade
  /***en If nonzero, the values are minimum line ascent pixels.  */
Packit 741ade
  /***ja 0 でなければ、値は行の ascent の最小値を示す。  */
Packit 741ade
  unsigned int min_line_ascent;
Packit 741ade
  /***en If nonzero, the values are minimum line descent pixels.  */
Packit 741ade
  /***ja 0 でなければ、値は行の descent の最小値を示す。  */
Packit 741ade
  unsigned int min_line_descent;
Packit 741ade
Packit 741ade
  /***en If nonzero, the values are maximum line ascent pixels.  */
Packit 741ade
  /***ja 0 でなければ、値は行の ascent の最大値を示す。  */
Packit 741ade
  unsigned int max_line_ascent;
Packit 741ade
  /***en If nonzero, the values are maximum line descent pixels.  */
Packit 741ade
  /***ja 0 でなければ、値は行の descent の最大値を示す。  */
Packit 741ade
  unsigned int max_line_descent;
Packit 741ade
Packit 741ade
  /***en If nonzero, the value specifies how many pixels each line can
Packit 741ade
      occupy on the display.  The value zero means that there is no
Packit 741ade
      limit.  It is ignored if \<format\> is non-NULL.  */
Packit 741ade
  /***ja 0 でなければ、値はこのディスプレイ上で各行が占めることのできるピクセル数を示す。
Packit 741ade
      0 は限定されないことを意味する。\<format\> が NULL でなければ無視される。   */
Packit 741ade
  unsigned int max_line_width;
Packit 741ade
Packit 741ade
  /***en If nonzero, the value specifies the distance between tab
Packit 741ade
      stops in columns (the width of one column is the width of a
Packit 741ade
      space in the default font of the frame).  The value zero means
Packit 741ade
      8.  */
Packit 741ade
  /***ja 0 でなければ、値はタブストップ間の距離をコラム単位
Packit 741ade
      (コラムはフレームのデフォルトフォントにおける空白文字の幅である)で示す。 
Packit 741ade
      0 は 8 を意味する。 */
Packit 741ade
  unsigned int tab_width;
Packit 741ade
Packit 741ade
  /***en If non-NULL, the value is a function that calculates the
Packit 741ade
      indentation and width limit of each line based on the line
Packit 741ade
      number LINE and the coordinate Y.  The function store the
Packit 741ade
      indentation and width limit at the place pointed by INDENT and
Packit 741ade
      WIDTH respectively.
Packit 741ade
Packit 741ade
      The indentation specifies how many pixels the first glyph of
Packit 741ade
      each line is shifted to the right (if the member
Packit 741ade
      \<orientation_reversed\> is zero) or to the left (otherwise).  If
Packit 741ade
      the value is negative, each line is shifted to the reverse
Packit 741ade
      direction.
Packit 741ade
Packit 741ade
      The width limit specifies how many pixels each line can occupy
Packit 741ade
      on the display.  The value 0 means that there is no limit.
Packit 741ade
Packit 741ade
      LINE and Y are reset to 0 when a line is broken by a newline
Packit 741ade
      character, and incremented each time when a long line is broken
Packit 741ade
      because of the width limit.
Packit 741ade
Packit 741ade
      This has an effect only when \<two_dimensional\> is nonzero.  */
Packit 741ade
  /***ja 0 でなければ、値は関数であり、その関数は行番号 LINE と座標 Y 
Packit 741ade
      に基づいて各行のインデントと最大幅を計算し、それぞれをINDENT と
Packit 741ade
      WIDTH で指される場所に保存する。
Packit 741ade
Packit 741ade
      インデントは、各行の最初のグリフを右(メンバ 
Packit 741ade
      \<orientation_reversed\> が 0 
Packit 741ade
      の時)あるいは左(それ以外の時)に何ピクセルずらすかを指定する。値が負ならば逆方向にずらす。
Packit 741ade
Packit 741ade
      最大幅は、各行がディスプレイ上で占めることのできるピクセル数の最大値である。値が
Packit 741ade
      0 の場合は制限を受けないことを意味する。
Packit 741ade
Packit 741ade
      LINE と Y は改行文字によって行が改まった際には 0 
Packit 741ade
      にリセットされ、長い行が最大幅の制限によって改行されるたびに 1 増やされる。
Packit 741ade
Packit 741ade
      これは \<two_dimensional\> が 0 でない場合にのみ有効である。  */
Packit 741ade
  void (*format) (int line, int y, int *indent, int *width);
Packit 741ade
Packit 741ade
  /***en If non-NULL, the value is a function that calculates a line
Packit 741ade
      breaking position when a line is too long to fit within the
Packit 741ade
      width limit.  POS is the position of the character next to the
Packit 741ade
      last one that fits within the limit.  FROM is the position of the
Packit 741ade
      first character of the line, and TO is the position of the last
Packit 741ade
      character displayed on the line if there were not width limit.
Packit 741ade
      LINE and Y are the same as the arguments to \<format\>.
Packit 741ade
Packit 741ade
      The function must return a character position to break the
Packit 741ade
      line.
Packit 741ade
Packit 741ade
      The function should not modify MT.
Packit 741ade
Packit 741ade
      The mdraw_default_line_break () function is useful for such a
Packit 741ade
      script that uses SPACE as a word separator.  */
Packit 741ade
  /***ja NULL でなければ、値は行が最大幅中に収まらない場合に行を改める位置を計算する関数である。
Packit 741ade
      POS は最大幅に収まる最後の文字の次の文字の位置である。FROM
Packit 741ade
      は行の最初の文字の位置、TO 
Packit 741ade
      は最大幅が指定されていなければその行に表示される最後の文字の位置である。LINE 
Packit 741ade
      と Y は \<format\> の引数と同様である。
Packit 741ade
Packit 741ade
      この関数は行を改める文字位置を返さなくてはならない。また MT を変更してはならない。
Packit 741ade
Packit 741ade
      関数 mdraw_default_line_break ()
Packit 741ade
      は、空白を語の区切りとして用いるスクリプト用として有用である。  */
Packit 741ade
  int (*line_break) (MText *mt, int pos, int from, int to, int line, int y);
Packit 741ade
Packit 741ade
  /***en If nonzero, show the cursor according to \<cursor_width\>.  */
Packit 741ade
  /***ja ゼロでなければ \<cursor_width\> にしたがってカーソルを表示する。 */
Packit 741ade
  int with_cursor;
Packit 741ade
Packit 741ade
  /***en Specifies the character position to display a cursor.  If it
Packit 741ade
      is greater than the maximum character position, the cursor is
Packit 741ade
      displayed next to the last character of an M-text.  If the value
Packit 741ade
      is negative, even if \<cursor_width\> is nonzero, cursor is not
Packit 741ade
      displayed.  */
Packit 741ade
  /***ja カーソルを表示する文字位置を示す。最大の文字位置より大きければ、カーソルは 
Packit 741ade
      M-text の最後の文字の隣に表示される。負ならば、
Packit 741ade
      \<cursor_width\> が 0 でなくてもカーソルは表示されない。
Packit 741ade
        */
Packit 741ade
  int cursor_pos;
Packit 741ade
Packit 741ade
  /***en If nonzero, display a cursor at the character position
Packit 741ade
      \<cursor_pos\>.  If the value is positive, it is the pixel width
Packit 741ade
      of the cursor.  If the value is negative, the cursor width is
Packit 741ade
      the same as the underlining glyph(s).  */
Packit 741ade
  /***ja 0 でなければ、\<cursor_pos\> にカーソルを表示する。
Packit 741ade
      値が正ならば、カーソルの幅はその値(ピクセル単位)である。
Packit 741ade
      負ならば、カーソルのあるグリフと同じ幅である。  */
Packit 741ade
  int cursor_width;
Packit 741ade
Packit 741ade
  /***en If nonzero and \<cursor_width\> is also nonzero, display double
Packit 741ade
      bar cursors; at the character position \<cursor_pos\> and at the
Packit 741ade
      logically previous character.  Both cursors have one pixel width
Packit 741ade
      with horizontal fringes at upper or lower positions.  */
Packit 741ade
  /***ja If 0 でなく、かつ \<cursor_width\> も 0 でなければ、バーカーソルを文字位置
Packit 741ade
      \<cursor_pos\> と論理的にそれの前にある文字の2ヶ所に表示する。
Packit 741ade
      双方とも1ピクセル幅で、上か下に水平の飾りがつく。*/
Packit 741ade
  int cursor_bidi;
Packit 741ade
Packit 741ade
  /***en If nonzero, on drawing partial text, pixels of surrounding
Packit 741ade
      texts that intrude into the drawing area are also drawn.  For
Packit 741ade
      instance, some CVC sequence of Thai text (C is consonant, V is
Packit 741ade
      upper vowel) is drawn so that V is placed over the middle of two
Packit 741ade
      Cs.  If this CVC sequence is already drawn and only the last C
Packit 741ade
      is drawn again (for instance by updating cursor position), the
Packit 741ade
      right half of V is erased if this member is zero.  By setting
Packit 741ade
      this member to nonzero, even with such a drawing, we can keep
Packit 741ade
      this CVC sequence correctly displayed.  */
Packit 741ade
  /***ja 0 でなければ、テキストの一部分を表示する際に、前後のテキストのうちその表示領域に侵入する部分も表示する。
Packit 741ade
      たとえば、タイ語テキスト 子音-母音-子音 
Packit 741ade
      というシークエンスのいくつかは、母音が二つの子音の間に上にのるように描かれる。
Packit 741ade
      このようなシークエンスがすでに描かれており、最後の子音だけを描き直す場合
Packit 741ade
      (たとえば、カーソル位置を更新する際など)このメンバが 0 
Packit 741ade
      であれば、母音の右半分が消されてしまう。これを 0 以外にすることによって、そのような際にも
Packit 741ade
      子音-母音-子音 のシークエンスを正しく表示し続けることができる。  */
Packit 741ade
  int partial_update;
Packit 741ade
Packit 741ade
  /***en If nonzero, don't cache the result of any drawing information
Packit 741ade
      of an M-text.  */
Packit 741ade
  /***ja 0 でなければ、M-text の表示に関する情報をキャッシュしない。
Packit 741ade
       */
Packit 741ade
  int disable_caching;
Packit 741ade
Packit 741ade
  /***en If non-NULL, limit the drawing effect to the specified region.  */
Packit 741ade
  /***ja NULL でなければ表示エリアを指定された領域に限定する。 */
Packit 741ade
  MDrawRegion clip_region;
Packit 741ade
Packit 741ade
} MDrawControl;
Packit 741ade
Packit 741ade
extern int mdraw_line_break_option;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Type of metric for glyphs and texts.
Packit 741ade
Packit 741ade
    The type #MDrawMetric is for a metric of a glyph and a drawn text.
Packit 741ade
    It is also used to represent a rectangle area of a graphic
Packit 741ade
    device.  */
Packit 741ade
/***ja
Packit 741ade
    @brief グリフとテキストの寸法の型宣言.
Packit 741ade
Packit 741ade
    #MDrawMetric はグリフと表示されたテキストの寸法用の型である。
Packit 741ade
    また、表示デバイスの矩形領域を表すのにも用いられる。 */
Packit 741ade
Packit 741ade
typedef struct {
Packit 741ade
  /*** X coordinates of a glyph or a text.  */
Packit 741ade
  int x;
Packit 741ade
  /*** Y coordinates of a glyph or a text.  */
Packit 741ade
  int y;
Packit 741ade
  /*** Pixel width of a glyph or a text.  */
Packit 741ade
  unsigned int width;
Packit 741ade
  /*** Pixel height of a glyph or a text.  */
Packit 741ade
  unsigned int height;
Packit 741ade
} MDrawMetric;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Type of information about a glyph.
Packit 741ade
Packit 741ade
    The type #MDrawGlyphInfo is the structure that contains
Packit 741ade
    information about a glyph.  It is used by mdraw_glyph_info ().  */
Packit 741ade
/***ja
Packit 741ade
    @brief グリフに関する情報の型宣言.
Packit 741ade
Packit 741ade
    #MDrawGlyphInfo 型はグリフに関する情報を含む構造体である。
Packit 741ade
    mdraw_glyph_info () はこれを用いる。  */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en Start position of character range corresponding to the glyph.  */
Packit 741ade
  /***ja グリフに対応する文字の範囲の開始位置.  */
Packit 741ade
  int from;
Packit 741ade
Packit 741ade
  /***en End position of character range corresponding to the glyph.  */
Packit 741ade
  /***ja グリフに対応する文字の範囲の終了位置.  */
Packit 741ade
  int to;
Packit 741ade
Packit 741ade
  /***en Start position of character range corresponding to the line of the glyph.  */
Packit 741ade
  /***ja 一行のグリフの列に対応する文字の範囲の開始位置.  */
Packit 741ade
  int line_from;
Packit 741ade
  /***en End position of character range corresponding to the line of the glyph.  */
Packit 741ade
  /***ja 一行のグリフの列に対応する文字の範囲の終了位置.  */
Packit 741ade
  int line_to;
Packit 741ade
Packit 741ade
  /***en X coordinates of the glyph.  */
Packit 741ade
  /***ja グリフの X 座標.  */
Packit 741ade
  int x;
Packit 741ade
  /***en Y coordinates of the glyph.  */
Packit 741ade
  /***ja グリフの Y 座標.  */
Packit 741ade
  int y;
Packit 741ade
Packit 741ade
  /***en Metric of the glyph.  */
Packit 741ade
  /***ja グリフの寸法.  */
Packit 741ade
  MDrawMetric metrics;
Packit 741ade
Packit 741ade
  /***en Font used for the glyph.  Set to NULL if no font is found for
Packit 741ade
      the glyph.  */
Packit 741ade
  /***ja グリフに使われるフォント。見つからなければ NULL。 */
Packit 741ade
      
Packit 741ade
  MFont *font;
Packit 741ade
Packit 741ade
  /***en Character ranges corresponding to logically previous glyphs.
Packit 741ade
      Note that we do not need the members prev_to because it must
Packit 741ade
      be the same as the member \<from\>.  */
Packit 741ade
  /***ja 論理的な前のグリフに対応する文字の範囲。メンバ prev_to は、メ
Packit 741ade
      ンバ from と同じであるはずなので不要である。  */
Packit 741ade
  int prev_from;
Packit 741ade
  /***en Character ranges corresponding to logically next glyphs.
Packit 741ade
      Note that we do not need the members next_from because it must
Packit 741ade
      be the same as the member \<to\> respectively.  */
Packit 741ade
  /***ja 論理的な後のグリフに対応する文字の範囲。メンバ next_from は
Packit 741ade
      メンバ to と同じであるはずなので不要である。  */
Packit 741ade
  int next_to;
Packit 741ade
Packit 741ade
  /***en Start position of character ranges corresponding to visually
Packit 741ade
      left glyphs. */
Packit 741ade
  /***ja 表示上の左のグリフに対応する文字の範囲の開始位置。  */
Packit 741ade
  int left_from;
Packit 741ade
  /***en End position of character ranges corresponding to visually
Packit 741ade
      left glyphs. */
Packit 741ade
  /***ja 表示上の左のグリフに対応する文字の範囲の終了位置。  */
Packit 741ade
  int left_to;
Packit 741ade
  /***en Start position of character ranges corresponding to visually
Packit 741ade
      right glyphs. */
Packit 741ade
  /***ja 表示上の右のグリフに対応する文字の範囲の開始位置。  */
Packit 741ade
  int right_from;
Packit 741ade
  /***en End position of character ranges corresponding to visually
Packit 741ade
      left glyphs. */
Packit 741ade
  /***ja 表示上の右のグリフに対応する文字の範囲の終了位置。  */
Packit 741ade
  int right_to;
Packit 741ade
Packit 741ade
  /***en Logical width of the glyph.  Nominal distance to the next
Packit 741ade
      glyph.  */
Packit 741ade
  /***ja グリフの論理的幅。次のグリフとの名目上の距離。  */
Packit 741ade
  int logical_width;
Packit 741ade
} MDrawGlyphInfo;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nDraw */
Packit 741ade
/***en
Packit 741ade
    @brief Type of information about a glyph metric and font.
Packit 741ade
Packit 741ade
    The type #MDrawGlyph is the structure that contains information
Packit 741ade
    about a glyph metric and font.  It is used by the function
Packit 741ade
    mdraw_glyph_list ().  */
Packit 741ade
/***ja
Packit 741ade
    @brief グリフの寸法とフォントに関する情報の型宣言.
Packit 741ade
Packit 741ade
    #MDrawGlyph 型はグリフの寸法とフォントに関する情報を含む構造体である。
Packit 741ade
    mdraw_glyph_list () はこれを用いる。  */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /* @{ */
Packit 741ade
  /***en Character range corresponding to the glyph.  */
Packit 741ade
  /***ja グリフに対応する文字の範囲.  */
Packit 741ade
  int from, to;
Packit 741ade
  /* @} */
Packit 741ade
Packit 741ade
  /***en Font glyph code of the glyph.  */
Packit 741ade
  /***ja フォント内のグリフコード。  */
Packit 741ade
  int glyph_code;
Packit 741ade
Packit 741ade
  /***en Logical width of the glyph.  Nominal distance to the next
Packit 741ade
      glyph.  */
Packit 741ade
  /***ja グリフの論理的幅。次のグリフとの名目上の距離。  */
Packit 741ade
  int x_advance;
Packit 741ade
  /***en Logical height of the glyph.  Nominal distance to the next
Packit 741ade
      glyph.  */
Packit 741ade
  /***ja グリフの論理的高さ。次のグリフとの名目上の距離。  */
Packit 741ade
  int y_advance;
Packit 741ade
Packit 741ade
  /***en X offset relative to the glyph position.  */
Packit 741ade
  /***ja グリフの位置に対する X オフセット.  */
Packit 741ade
  int x_off;
Packit 741ade
  /***en Y offset relative to the glyph position.  */
Packit 741ade
  /***ja グリフの位置に対する Y オフセット.  */
Packit 741ade
  int y_off;
Packit 741ade
Packit 741ade
  /***en Metric of the glyph (left-bearing).  */
Packit 741ade
  /***ja グリフの寸法 (left-bearing).  */
Packit 741ade
  int lbearing;
Packit 741ade
  /***en Metric of the glyph (right-bearing).  */
Packit 741ade
  /***ja グリフの寸法 (right-bearing).  */
Packit 741ade
  int rbearing;
Packit 741ade
  /***en Metric of the glyph (ascent).  */
Packit 741ade
  /***ja グリフの寸法 (ascent).  */
Packit 741ade
  int ascent;
Packit 741ade
  /***en Metric of the glyph (descent).  */
Packit 741ade
  /***ja グリフの寸法 (descent).  */
Packit 741ade
  int descent;
Packit 741ade
Packit 741ade
  /***en Font used for the glyph.  Set to NULL if no font is found for
Packit 741ade
      the glyph.  */
Packit 741ade
  /***ja グリフに使われるフォント。見つからなければ NULL。  */
Packit 741ade
  MFont *font;
Packit 741ade
Packit 741ade
  /***en Type of the font.  One of Mx, Mfreetype, Mxft.  */
Packit 741ade
  /***ja フォントのタイプ。Mx、Mfreetype、Mxft のいずれか。  */
Packit 741ade
  MSymbol font_type;
Packit 741ade
Packit 741ade
  /***en Pointer to the font structure.  The actual type is
Packit 741ade
      (XFontStruct *) if \<font_type\> member is Mx, FT_Face if
Packit 741ade
      \<font_type\> member is Mfreetype, and (XftFont *) if \<font_type\>
Packit 741ade
      member is Mxft.  */
Packit 741ade
  /***ja フォントの構造体へのポインタ。実際の型は \<font_type\> メンバが
Packit 741ade
      Mx なら (XFontStruct *)、 Mfreetype なら FT_Face、Mxft 
Packit 741ade
      なら (XftFont *)。 */
Packit 741ade
  void *fontp;
Packit 741ade
Packit 741ade
} MDrawGlyph;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/***en
Packit 741ade
    @brief Type of textitems.
Packit 741ade
Packit 741ade
    The type #MDrawTextItem is for @e textitem objects.
Packit 741ade
    Each textitem contains an M-text and some other information to
Packit 741ade
    control the drawing of the M-text.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief textitem の型宣言.
Packit 741ade
Packit 741ade
    #MDrawTextItem は @e テキストアイテム オブジェクト用の型である。
Packit 741ade
    各テキストアイテムは、 1 個の M-text と、その表示を制御するための情報を含んでいる。
Packit 741ade
Packit 741ade
    @latexonly \IPAlabel{MTextItem} @endlatexonly  */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en M-text. */
Packit 741ade
  /***ja M-text. */
Packit 741ade
  MText *mt;                      
Packit 741ade
Packit 741ade
  /***en Optional change in the position (in the unit of pixel) along
Packit 741ade
      the X-axis before the M-text is drawn.  */
Packit 741ade
  /***ja M-text 表示前に行なうX軸方向の位置調整 (ピクセル単位) */
Packit 741ade
  int delta;                     
Packit 741ade
Packit 741ade
  /***en Pointer to a face object.  Each property of the face, if not
Packit 741ade
      Mnil, overrides the same property of face(s) specified as a text
Packit 741ade
      property in \<mt\>.  */
Packit 741ade
  /***ja フェースオブジェクトへのポインタ。フェースの各プロパティは 
Packit 741ade
      Mnil でなければ \<mt\> で指定されたフェースの同じプロパティに優先する*/
Packit 741ade
  MFace *face;
Packit 741ade
Packit 741ade
  /***en Pointer to a draw control object.  The M-text \<mt\> is drawn
Packit 741ade
      by mdraw_text_with_control () with this control object.  */
Packit 741ade
  /***ja 表示制御オブジェクトへのポインタ。 mdraw_text_with_control () 
Packit 741ade
      はこのオブジェクトを用いて M-text \<mt\> を表示する。  */
Packit 741ade
  MDrawControl *control;
Packit 741ade
Packit 741ade
} MDrawTextItem;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern int mdraw_text (MFrame *frame, MDrawWindow win, int x, int y,
Packit 741ade
		       MText *mt, int from, int to);
Packit 741ade
Packit 741ade
extern int mdraw_image_text (MFrame *frame, MDrawWindow win, int x, int y,
Packit 741ade
			     MText *mt, int from, int to);
Packit 741ade
Packit 741ade
extern int mdraw_text_with_control (MFrame *frame, MDrawWindow win,
Packit 741ade
				    int x, int y, MText *mt, int from, int to,
Packit 741ade
				    MDrawControl *control);
Packit 741ade
Packit 741ade
extern int mdraw_coordinates_position (MFrame *frame,
Packit 741ade
				       MText *mt, int from, int to,
Packit 741ade
				       int x, int y, MDrawControl *control);
Packit 741ade
Packit 741ade
extern int mdraw_text_extents (MFrame *frame,
Packit 741ade
			       MText *mt, int from, int to,
Packit 741ade
			       MDrawControl *control,
Packit 741ade
			       MDrawMetric *overall_ink_return,
Packit 741ade
			       MDrawMetric *overall_logical_return,
Packit 741ade
			       MDrawMetric *overall_line_return);
Packit 741ade
Packit 741ade
extern int mdraw_text_per_char_extents (MFrame *frame,
Packit 741ade
					MText *mt, int from, int to,
Packit 741ade
					MDrawControl *control,
Packit 741ade
					MDrawMetric *ink_array_return,
Packit 741ade
					MDrawMetric *logical_array_return,
Packit 741ade
					int array_size,
Packit 741ade
					int *num_chars_return,
Packit 741ade
					MDrawMetric *overall_ink_return,
Packit 741ade
					MDrawMetric *overall_logical_return);
Packit 741ade
Packit 741ade
extern int mdraw_glyph_info (MFrame *frame, MText *mt, int from, int pos,
Packit 741ade
			     MDrawControl *control, MDrawGlyphInfo *info);
Packit 741ade
Packit 741ade
extern int mdraw_glyph_list (MFrame *frame, MText *mt, int from, int to,
Packit 741ade
			     MDrawControl *control, MDrawGlyph *glyphs,
Packit 741ade
			     int array_size, int *num_glyphs_return);
Packit 741ade
Packit 741ade
extern void mdraw_text_items (MFrame *frame, MDrawWindow win, int x, int y,
Packit 741ade
			      MDrawTextItem *items, int nitems);
Packit 741ade
Packit 741ade
extern void mdraw_per_char_extents (MFrame *frame, MText *mt,
Packit 741ade
				    MDrawMetric *array_return,
Packit 741ade
				    MDrawMetric *overall_return);
Packit 741ade
Packit 741ade
extern int mdraw_default_line_break (MText *mt, int pos,
Packit 741ade
				     int from, int to, int line, int y);
Packit 741ade
Packit 741ade
extern void mdraw_clear_cache (MText *mt);
Packit 741ade
Packit 741ade
/* end of drawing module */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
/*** @ingroup m17nGUI */
Packit 741ade
/***en @defgroup m17nInputMethodWin Input Method (GUI) */
Packit 741ade
/***ja @defgroup m17nInputMethodWin 入力メソッド (GUI) */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MInputDriver minput_gui_driver;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
/*** @ingroup m17nInputMethodWin */
Packit 741ade
/***en 
Packit 741ade
    @brief Type of the argument to the function minput_create_ic ().
Packit 741ade
Packit 741ade
    The type #MInputGUIArgIC is for the argument $ARG of the function
Packit 741ade
    minput_create_ic () to create an input context of an internal
Packit 741ade
    input method.  */
Packit 741ade
Packit 741ade
/***ja
Packit 741ade
    @brief 関数 minput_create_ic () の引数の型宣言.
Packit 741ade
Packit 741ade
    #MInputGUIArgIC は、関数 minput_create_ic () 
Packit 741ade
    が内部入力メソッドの入力コンテクストを生成する際の、引数 $ARG 用の型である。  */
Packit 741ade
Packit 741ade
typedef struct
Packit 741ade
{
Packit 741ade
  /***en Frame of the client.  */
Packit 741ade
  /***ja クライアントのフレーム  */
Packit 741ade
  MFrame *frame;
Packit 741ade
Packit 741ade
  /***en Window on which to display the preedit and status text.  */
Packit 741ade
  /***ja preedit テキストと status テキストを表示するウィンドウ  */
Packit 741ade
  MDrawWindow client;
Packit 741ade
Packit 741ade
  /***en Window that the input context has a focus on.  */
Packit 741ade
  /***ja 入力コンテクストがフォーカスをおいているウィンドウ  */
Packit 741ade
  MDrawWindow focus;
Packit 741ade
} MInputGUIArgIC;
Packit 741ade
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MSymbol minput_event_to_key (MFrame *frame, void *event);
Packit 741ade
Packit 741ade
/* end of input module */
Packit 741ade
/*=*/
Packit 741ade
/* end of window modules */
Packit 741ade
/*=*/
Packit 741ade
Packit 741ade
extern MFace *mdebug_dump_face (MFace *face, int indent);
Packit 741ade
extern MFont *mdebug_dump_font (MFont *font);
Packit 741ade
extern MFontset *mdebug_dump_fontset (MFontset *fontset, int indent);
Packit 741ade
Packit 741ade
M17N_END_HEADER
Packit 741ade
Packit 741ade
#endif /* _M17N_GUI_H_ */
Packit 741ade
Packit 741ade
/*
Packit 741ade
  Local Variables:
Packit 741ade
  coding: euc-japan
Packit 741ade
  End:
Packit 741ade
*/