C:\home\SVGCats_src\src\Text.hpp
1|/*********************************************************************** 2| 1. <<< 表示用テキスト (Text) >>> 3|************************************************************************/ 4| 5|#ifndef __TEXT_HPP 6|#define __TEXT_HPP 7| 8|struct Text_LinkLine; 9| 10|/*-----------------------------------------------------------------*/ 11|/* 2. <<< Interface Area ---------------------------------------- >>> */ 12|/*-----------------------------------------------------------------*/ 13| 14|/*********************************************************************** 15| 3. <<< [Text_Box] 枠付き表示用テキスト >>> 16|************************************************************************/ 17|class Text_Box : public CadPrim { 18|public: 19| int m_id; 20| bool m_bInUndoBuf; 21| bool m_bHold; 22| bool m_bSelected; 23| 24| /* テキストの属性 */ 25| CString m_Text; 26| int m_CenterX, m_Y; /* X は、m_BasePos による。Y はベースラインの Y座標 */ 27| int m_DiffW; /* 文字列の幅の誤差(プラス=Adobe製が長い), Draw 実行前は枠の幅/高さ */ 28| int m_W, m_10H, m_10H1; /* 文字列の幅と高さ、Draw 実行後に有効になります, 10H1は1行目, 高さは10倍 */ 29| int m_10Descent; /* ベースラインから下にずれる分*10, Draw 実行後有効 */ 30| int m_Top; /* 文字の上端の Y座標, Draw 実行後有効 */ 31| int m_BetweenOfLine; /* 複数行の行間長(1行目のベースラインから2行目の〃までのピクセル差) */ 32| int m_RotateDegree; 33| int m_Color; 34| CString m_Font; 35| int m_Size; 36| bool m_bBold; 37| bool m_bItalic; 38| int m_BasePos; 39| bool m_bTategaki; 40| 41| /* キャレットの属性(検索結果の表示と Text_Editor に使う) */ 42| int m_CaretStart; 43| int m_CaretEnd; 44| 45| /* 枠の属性 */ 46| int m_BoxShape; /* 枠の形状。Load 後、Draw 前は、マイナス */ 47| int m_BoxMarginX, m_BoxMarginY; /* Load 後、Draw 前は、枠のX,Y座標 */ 48| int m_BorderWidth; 49| int m_BorderColor; 50| int m_FillColor; 51| int m_FillNTrans; /* 非透過率 */ 52| 53| /* 関連 */ 54| CString m_URL; /* ""=リンクしない */ 55| CString m_Target; /* リンクターゲット、"" でターゲットなし、_blank で新規ウィンドウ */ 56| CString m_IdLabel; 57| ListX m_Links; /* CadPrim_Link 型リスト */ 58| CadPrim* m_Controler; 59| int m_Controler_id; 60| 61| Text_Box(); 62| ~Text_Box(); 63| void print( const char* title ); 64| int GetID(); 65| void SetID( int id ); 66| void OnChgedLinkID( int oldID, int newID ); 67| int GetTypeID(); 68| char* GetTypeNameJp(); 69| char* GetTypeNameEn(); 70| void SetBInUndoBuf( bool b ); 71| char* GetLinkURL(); 72| char* GetIdLabel(); 73| 74| void OutSVG( CadPrim_SaveParam* p ); 75| void Draw( CDC*, CadPrim_DrawParam* p ); 76| void DrawHandles( CDC*, CadPrim_DrawParam* p, COLORREF color, bool bDrawFrame ); 77| void copy( CadPrim* a, ListX* prims ); 78| void copyStyle( CadPrim* a, ListX* prims ); 79| bool isEqual( CadPrim* ); 80| CadPrim* GetNewCopy( ListX* prims ); 81| int GetSerializedSize(); 82| void CopyToSerial( void* a ); 83| void CopyFromSerial( void* a ); 84| 85| int GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ); 86| void Move( int dx, int dy ); 87| void MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ); 88| void GetCenterOfHandle( int iHandle, int* x, int* y ); 89| void MoveLinks( bool bShift ); 90| void AutoAdjustXY( int* x, int* y ); 91| void SetHold( bool ); 92| bool GetHold(); 93| bool IsHoldable(); 94| void SetSelected( bool ); 95| bool GetSelected(); 96| bool IsMultiSelect( Rect* rect ); 97| int GetForAlign( int iPos ); 98| void SetForAlign( int iPos, int value ); 99| int GetForFitSize( int iAttr ); 100| void SetForFitSize( int iAttr, int value ); 101| void OnCreated(); 102| 103| int GetNProp(); 104| int GetProp( int iProp, bool bJapanese, char* name, int name_size, char* value, int value_size, 105| const char* path, void** option ); 106| void SetProp( int iProp, const char* value, const char* path ); 107| bool IsNeedUnicode(); 108| 109| CadPrim_Link* GetLinkToHandle( int iHandle ); 110| int GetNumOfLinkToHandle(); 111| int GetLinkOnReadHandleNum( int x, int y, int diff ); 112| int GetLinkableHandleNum( int x, int y ); 113| void LinkToHandle( int iHandleOfThis, CadPrim* prim, int iHandleOfPrim ); 114| void UnlinkToHandle( CadPrim* prim, int iHandleOfPrim, bool mutual =true ); 115| void UnlinkAll(); 116| void LinkToControler( int iHandle, CadPrim* ctrl ); 117| void UnlinkToControler( int iHandle, CadPrim* ctrl ); 118| void AdjustLinks( ListX* prims ); 119| 120| void GetBox( RECT* rc ); 121| char* GetTXYByIndex( int index, int* cx, int* cy ); 122| void GetGXYByIndex( CDC* dc, int index, int* dx, int* dy ); 123| void GetGXYByTXY( CDC* dc, int cx, int cy, int* dx, int* dy ); 124| void GetArrowPoint( int i, int x1, int y1, int x2, int y2, int* x, int* y ); 125| int GetClickedPos( int x, int y, CadPrim_DrawParam* p ); 126| void ChangeAlign( int align ); 127| void ChangeShape( int shape ); 128| bool IsNotSetDrawParam(); 129|}; 130| 131|#define Text_Box_nHandle 4 132|#define Text_Box_TypeID 4 133| 134|#define Text_Box_GridGap 5 135| 136|#define Text_Box_nByteInLine 1024 137| 138|/* 4. <<< [Text_Box::m_BoxShape] >>> */ 139|#define Text_Box_NoFrame 0 /* 枠なし */ 140|#define Text_Box_RectShape 1 /* 四角い枠 */ 141|#define Text_Box_RoundRectShape 2 /* 楕円の枠 */ 142|#define Text_Box_CircleShape 3 /* 楕円の枠 */ 143|#define Text_Box_DiamondShape 4 /* ひし形の枠 */ 144|#define Text_Box_Parallelogram 5 /* 平行四辺形の枠 */ 145| 146|/* 5. <<< [Text_Box::m_BasePos] >>> */ 147|#define Text_Box_LeftAlign 0 /* 左詰め */ 148|#define Text_Box_CenterAlign 1 /* 中央揃え */ 149|#define Text_Box_RightAlign 2 /* 右詰め(未対応) */ 150| 151| 152|/*********************************************************************** 153| 6. <<< [Text_Editor] インライン・テキストエディタ >>> 154|************************************************************************/ 155|class Text_Editor : public Text_Box { 156|public: 157| bool m_bCaretDisp; /* 点滅中における表示中かどうか */ 158| 159| Text_Editor(); 160| void Attach( Text_Box* text ); 161| void Draw( CDC*, CadPrim_DrawParam* p ); 162| void DrawCaretXor( CDC*, CadPrim_DrawParam* p ); 163| void OnBlinkTiming( CDC*, CadPrim_DrawParam* p ); 164|}; 165| 166|/*-----------------------------------------------------------------*/ 167|/* 7. <<< Mapping Area ------------------------------------------ >>> */ 168|/*-----------------------------------------------------------------*/ 169| 170| 171|#endif 172| 173|