File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #ifndef _EDITWING_COMMON_H_
dcdd144598 2011-02-23        kinaba: #define _EDITWING_COMMON_H_
dcdd144598 2011-02-23        kinaba: #include "../kilib/kilib.h"
dcdd144598 2011-02-23        kinaba: #ifndef __ccdoc__
dcdd144598 2011-02-23        kinaba: namespace editwing {
dcdd144598 2011-02-23        kinaba: #endif
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: // Unicode関係
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool isHighSurrogate(unicode ch)
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	return (0xD800 <= ch && ch <= 0xDBFF);
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool isLowSurrogate(unicode ch)
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	return (0xDC00 <= ch && ch <= 0xDFFF);
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{ @pkg editwing.Common //@}
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	テキスト中の位置情報
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: struct DPos : public ki::Object
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	//@{ バッファ中のアドレス (0〜 ) //@}
dcdd144598 2011-02-23        kinaba: 	ulong ad;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 論理行番号 (0〜 ) //@}
dcdd144598 2011-02-23        kinaba: 	ulong tl;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	bool operator == ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl==r.tl && ad==r.ad); }
dcdd144598 2011-02-23        kinaba: 	bool operator != ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl!=r.tl || ad!=r.ad); }
dcdd144598 2011-02-23        kinaba: 	bool operator <  ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl<r.tl || (tl==r.tl && ad<r.ad)); }
dcdd144598 2011-02-23        kinaba: 	bool operator >  ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl>r.tl || (tl==r.tl && ad>r.ad)); }
dcdd144598 2011-02-23        kinaba: 	bool operator <= ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl<r.tl || (tl==r.tl && ad<=r.ad)); }
dcdd144598 2011-02-23        kinaba: 	bool operator >= ( const DPos& r ) const
dcdd144598 2011-02-23        kinaba: 		{ return (tl>r.tl || (tl==r.tl && ad>=r.ad)); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	DPos( ulong t, ulong a ) : tl(t), ad(a) {}
dcdd144598 2011-02-23        kinaba: 	DPos() {}
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	特殊文字を表す定数値
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: enum SpecialChars
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	scEOF = 0, // EOF
dcdd144598 2011-02-23        kinaba: 	scEOL = 1, // 改行
dcdd144598 2011-02-23        kinaba: 	scTAB = 2, // タブ
dcdd144598 2011-02-23        kinaba: 	scHSP = 3, // 半角スペース
dcdd144598 2011-02-23        kinaba: 	scZSP = 4  // 全角スペース
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	単語の種類を表す定数値
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: enum TokenType
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	TAB = 0x00, // Tab
dcdd144598 2011-02-23        kinaba: 	WSP = 0x04, // 半角スペース
dcdd144598 2011-02-23        kinaba: 	ALP = 0x08, // 普通の字
dcdd144598 2011-02-23        kinaba: 	 CE = 0x0c, // コメント終了タグ
dcdd144598 2011-02-23        kinaba: 	 CB = 0x10, // コメント開始タグ
dcdd144598 2011-02-23        kinaba: 	 LB = 0x14, // 行コメント開始タグ
dcdd144598 2011-02-23        kinaba: 	 Q1 = 0x18, // 単一引用符
dcdd144598 2011-02-23        kinaba: 	 Q2 = 0x1c  // 二重引用符
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	色指定箇所を表す定数値
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: enum ColorType
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	TXT = 0, // 文字色
dcdd144598 2011-02-23        kinaba: 	CMT = 1, // コメント文字色
dcdd144598 2011-02-23        kinaba: 	KWD = 2, // キーワード文字色
dcdd144598 2011-02-23        kinaba: 	//  = 3, // ( コメントアウトされたキーワード文字色 )
dcdd144598 2011-02-23        kinaba: 	CTL = 4, // 特殊文字色
dcdd144598 2011-02-23        kinaba: 	BG  = 5, // 背景色
dcdd144598 2011-02-23        kinaba: 	LN  = 6  // 行番号
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	折り返し位置を示す定数値
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: enum WrapType
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	NOWRAP    = -1, // 折り返し無し
dcdd144598 2011-02-23        kinaba: 	RIGHTEDGE =  0  // 右端
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	表示設定
dcdd144598 2011-02-23        kinaba: //
dcdd144598 2011-02-23        kinaba: //	フォント・色・タブ幅・特殊文字の表示、の情報を保持。
dcdd144598 2011-02-23        kinaba: //	ただし、強調単語の指定は Document に対して行う。
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: struct VConfig : public ki::Object
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	//@{ フォント //@}
dcdd144598 2011-02-23        kinaba: 	LOGFONT font;
dcdd144598 2011-02-23        kinaba: 	int fontsize;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ タブ幅文字数 //@}
dcdd144598 2011-02-23        kinaba: 	int tabstep;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 色 //@}
dcdd144598 2011-02-23        kinaba: 	COLORREF color[7];
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 特殊文字表示 //@}
dcdd144598 2011-02-23        kinaba: 	bool sc[5];
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 危険なデフォルトコンストラクタ //@}
dcdd144598 2011-02-23        kinaba: 	VConfig() {}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ フォント関係初期化 //@}
dcdd144598 2011-02-23        kinaba: 	VConfig( const TCHAR* fnam, int fsiz )
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		SetFont( fnam,fsiz );
dcdd144598 2011-02-23        kinaba: 		tabstep    = 4;
dcdd144598 2011-02-23        kinaba: 		color[TXT] =
dcdd144598 2011-02-23        kinaba: 		color[CMT] =
dcdd144598 2011-02-23        kinaba: 		color[KWD] =
dcdd144598 2011-02-23        kinaba: 		color[CTL] = RGB(0,0,0);
dcdd144598 2011-02-23        kinaba: 		color[ BG] = RGB(255,255,255);
dcdd144598 2011-02-23        kinaba: 		color[ LN] = RGB(0,0,0);//255,255,0);
dcdd144598 2011-02-23        kinaba: 		sc[scEOF]  =
dcdd144598 2011-02-23        kinaba: 		sc[scEOL]  =
dcdd144598 2011-02-23        kinaba: 		sc[scTAB]  =
dcdd144598 2011-02-23        kinaba: 		sc[scHSP]  =
dcdd144598 2011-02-23        kinaba: 		sc[scZSP]  = false;
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ フォント関係設定 //@}
dcdd144598 2011-02-23        kinaba: 	void SetFont( const TCHAR* fnam, int fsiz )
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		fontsize              = fsiz;
dcdd144598 2011-02-23        kinaba: 		font.lfWidth          = 0;
dcdd144598 2011-02-23        kinaba: 		font.lfEscapement     = 0;
dcdd144598 2011-02-23        kinaba: 		font.lfOrientation    = 0;
dcdd144598 2011-02-23        kinaba: 		font.lfWeight         = FW_DONTCARE;
dcdd144598 2011-02-23        kinaba: 		font.lfItalic         = FALSE;
dcdd144598 2011-02-23        kinaba: 		font.lfUnderline      = FALSE;
dcdd144598 2011-02-23        kinaba: 		font.lfStrikeOut      = FALSE;
dcdd144598 2011-02-23        kinaba: 		font.lfOutPrecision   = OUT_DEFAULT_PRECIS;
dcdd144598 2011-02-23        kinaba: 		font.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
dcdd144598 2011-02-23        kinaba: 		font.lfQuality        = DEFAULT_QUALITY;
dcdd144598 2011-02-23        kinaba: 		font.lfPitchAndFamily = VARIABLE_PITCH|FF_DONTCARE;
dcdd144598 2011-02-23        kinaba: 		font.lfCharSet        = DEFAULT_CHARSET;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 		::lstrcpy( font.lfFaceName, fnam );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 		HDC h = ::GetDC( NULL );
dcdd144598 2011-02-23        kinaba: 		font.lfHeight = -MulDiv(fsiz, ::GetDeviceCaps(h,LOGPIXELSY), 72);
dcdd144598 2011-02-23        kinaba: 		::ReleaseDC( NULL, h );
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ タブ幅設定 //@}
dcdd144598 2011-02-23        kinaba: 	void SetTabStep( int tab )
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		tabstep = Max( 1, tab );
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: }      // namespace editwing
dcdd144598 2011-02-23        kinaba: #endif // _EDITWING_COMMON_H_