Text.hpp

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|