CadPrim.hpp

C:\home\SVGCats_src\src\CadPrim.hpp

[目次 | 型・クラス・構造体 | マクロ]

目次

型・クラス・構造体一覧

マクロ一覧


   1|/**************************************************************************
   2|  1. <<< SVG Cat sub header >>> 
   3|***************************************************************************/
   4|
   5|#ifndef __CADPRIM_HPP
   6|#define __CADPRIM_HPP
   7|
   8|
   9|struct CadPrim_DrawParam;
  10|struct CadPrim_SaveParam;
  11|
  12| 
  13|/*--------------------------------------------------------------*/
  14|/*2. <<< Interface Area -------------------------------------- >>> */ 
  15|/*--------------------------------------------------------------*/
  16|
  17|#ifdef __cplusplus
  18|extern "C" {
  19|#endif
  20|
  21| 
  22|/**************************************************************************
  23|  3. <<< [CadPrim] 図形の抽象 >>> 
  24|【補足】
  25|・サブクラスは、Rect_Ex, Line_Ex, Line_Corner, Text, Text_Box があります。
  26|***************************************************************************/
  27|class  CadPrim {
  28|public:
  29|  virtual  ~CadPrim() {}
  30|  virtual  void  print( const char* title ) = 0;
  31|  virtual  int   GetID() = 0;
  32|  virtual  void  SetID( int id ) = 0;
  33|  virtual  void  OnChgedLinkID( int oldID, int newID );
  34|  virtual  int   GetTypeID() = 0;
  35|  virtual  char*  GetTypeNameJp() = 0;
  36|  virtual  char*  GetTypeNameEn() = 0;
  37|  virtual  void   SetBInUndoBuf( bool b ) = 0;
  38|  virtual  char*  GetLinkURL() = 0;
  39|  virtual  char*  GetIdLabel() = 0;
  40|
  41|  virtual  void  OutSVG( CadPrim_SaveParam* p ) = 0;
  42|  virtual  void  Draw( CDC* dc, CadPrim_DrawParam* p ) = 0;
  43|  virtual  void  DrawHandles( CDC* dc, CadPrim_DrawParam* p, COLORREF color, bool bDrawFrame ) = 0;
  44|  virtual  void  copy( CadPrim*, ListX* prims ) = 0;
  45|  virtual  void  copyStyle( CadPrim*, ListX* prims ) = 0;
  46|  virtual  bool  isEqual( CadPrim* ) = 0;
  47|  virtual  CadPrim*  GetNewCopy( ListX* prims ) = 0;
  48|  virtual  int   GetSerializedSize() = 0;
  49|  virtual  void  CopyToSerial( void* a ) = 0;
  50|  virtual  void  CopyFromSerial( void* a ) = 0;
  51|
  52|  virtual  int   GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ) = 0;
  53|  virtual  void  Move( int dx, int dy ) = 0;
  54|  virtual  void  MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ) = 0;
  55|  virtual  void  GetCenterOfHandle( int iHandle, int* x, int* y ) = 0;
  56|  virtual  void  SetHold( bool ) = 0;
  57|  virtual  bool  GetHold() = 0;
  58|  virtual  bool  IsHoldable() = 0;
  59|  virtual  void  SetSelected( bool ) = 0;
  60|  virtual  bool  GetSelected() = 0;
  61|  virtual  bool  IsMultiSelect( Rect* rect ) = 0;
  62|  virtual  int   GetForAlign( int iPos ) = 0;
  63|  virtual  void  SetForAlign( int iPos, int value ) = 0;
  64|  virtual  int   GetForFitSize( int iAttr ) = 0;
  65|  virtual  void  SetForFitSize( int iAttr, int value ) = 0;
  66|  virtual  void  OnCreated() = 0;
  67|
  68|  virtual  int   GetNProp() = 0;
  69|  virtual  int   GetProp( int iProp, bool bJapanese, char* name, int name_size,  char* value,
  70|    int value_size, const char* path, void** option ) = 0;
  71|  virtual  void  SetProp( int iProp, const char* value, const char* path ) = 0;
  72|  virtual  bool  IsNeedUnicode() = 0;
  73|
  74|  virtual  CadPrim_Link*  GetLinkToHandle( int iHandle );
  75|  virtual  int            GetNumOfLinkToHandle();
  76|  virtual  CadPrim*       GetLinkToControler( int iHandle );
  77|  virtual  int            GetLinkIDToControler( int iHandle );
  78|  virtual  int            GetNumOfLinkToControler();
  79|  virtual  int   GetLinkOnReadHandleNum( int x, int y, int diff );
  80|  virtual  int   GetLinkableHandleNum( int x, int y );
  81|  virtual  void  LinkToHandle( int iHandleOfThis, CadPrim* prim, int iHandleOfPrim );
  82|  virtual  void  UnlinkToHandle( CadPrim* prim, int iHandleOfPrim, bool mutual =true );
  83|  virtual  void  UnlinkAll();
  84|  virtual  void  LinkToControler( int iHandle, CadPrim* ctrl );
  85|  virtual  void  UnlinkToControler( int iHandle, CadPrim* ctrl );
  86|  virtual  void  AdjustLinks( ListX* prims );
  87|};
  88|
  89|/* プロパティの型、→ CadPrim::GetProp() */
  90|#define  CadPrim_Text     0
  91|#define  CadPrim_Color    1
  92|#define  CadPrim_Font     2
  93|#define  CadPrim_Bool     3
  94|#define  CadPrim_Int      4
  95|#define  CadPrim_Select   5
  96|#define  CadPrim_Path     6
  97|#define  CadPrim_PathMust 7
  98|#define  CadPrim_ReadOnly 8
  99|#define  CadPrim_TextML   9
 100| 
 101|/***********************************************************************
 102|  4. <<< [CadPrim_Link] 図形リンク >>> 
 103|************************************************************************/
 104|struct CadPrim_Link {
 105|  ListX_Elem  inherit_ListX_Elem;
 106|  CadPrim*  prim;  /* Line_Ex or Line_Corner */
 107|  int  prim_id;
 108|  int  iHandle;
 109|  int  x, y;       /* リンクしている頂点の座標 */
 110|
 111|  void  print( const char* title );
 112|};
 113|
 114|void   CadPrim_Link_copy( CadPrim_Link* link1, CadPrim_Link* link2 );
 115| 
 116|/***********************************************************************
 117|  5. <<< [CadPrim_DrawParam] 図形描画時のキャンバス属性 >>> 
 118|************************************************************************/
 119|struct CadPrim_DrawParam {
 120|  int  zoom;              /* 拡大率(%) */
 121|  int  x0, y0;            /* スクロール位置 */
 122|  bool  bWhiteToBGColor;  /* Windowカラーを使うかどうか(未使用)*/
 123|  bool  bDrawHandle;
 124|  bool  bPrint;
 125|  int   clip_left, clip_top;
 126|  int   clip_right, clip_bottom;
 127|  int   iPage;  /* キャンバスのページ番号 */
 128|};
 129|
 130| 
 131|/***********************************************************************
 132|  6. <<< [CadPrim_SaveParam] 保存時のパラメータ >>> 
 133|************************************************************************/
 134|struct CadPrim_SaveParam {
 135|
 136|  /* ファイル単位 */
 137|  FILE*  f;
 138|  char*  path;
 139|  bool   bLower;   /* リンクのファイルパスを全て小文字にするかどうか */
 140|
 141|  /* ページ単位 */
 142|  int    iPage;        /* キャンバスのページ番号 */
 143|
 144|  /* 図形単位 */
 145|  int    iTargetPage;  /* ジャンプ先のページ番号(CadPrim::GetLinkURL) */
 146|};
 147|
 148| 
 149|#ifdef __cplusplus
 150|}
 151|#endif
 152|
 153|/*--------------------------------------------------------------*/
 154|/*7. <<< Mapping Area ---------------------------------------- >>> */ 
 155|/*--------------------------------------------------------------*/
 156|
 157| 
 158|/***********************************************************************
 159|  8. <<< [CadPrim::GetID] 図形の識別番号を返す >>> 
 160|  9. <<< [CadPrim::SetID] 図形の識別番号を設定する >>>
 161|【補足】
 162|・virtual  int   GetID() = 0;
 163|・virtual  void  SetID( int id ) = 0;
 164|・識別番号0は、該当する図形が無いことを示します。
 165|************************************************************************/
 166| 
 167|/***********************************************************************
 168|  10. <<< [CadPrim::OnChgedLinkID] リンクしている図形の ID が変化したときの調整をする >>> 
 169|【補足】
 170|・void  OnChgedLinkID( int oldID, int newID );
 171|・CadPrim::AdjustLinks は、必要なら別途呼び出す必要があります。
 172|************************************************************************/
 173|
 174| 
 175|/***********************************************************************
 176|  11. <<< [CadPrim::GetTypeID] 型識別番号を返す >>> 
 177|【補足】
 178|・virtual  int  GetTypeID() = 0;
 179|・Line_Ex_TypeID = 1, Rect_Ex_TypeID = 2, Text_TypeID = 3,
 180|  Tex_Box_TypeID = 4, Line_Corner_TypeID = 5 のいずれかを返します。
 181|  Matome_TypeID = 6, SVGCat_Ink_TypeID = 7
 182|************************************************************************/
 183|
 184|
 185| 
 186|/***********************************************************************
 187|  12. <<< [CadPrim::GetLinkURL] リンク先の URL を返す >>> 
 188|************************************************************************/
 189|
 190|
 191|/***********************************************************************
 192|  13. <<< [CadPrim::GetIdLabel] スクリプトや URL で指定する id を返す >>>
 193|************************************************************************/
 194|
 195|
 196|
 197| 
 198|/***********************************************************************
 199|  14. <<< [CadPrim::OutSVG] SVG ファイルの一部を出力する >>> 
 200|【補足】
 201|・virtual  void  OutSVG( CadPrim_SaveParam* p ) = 0;
 202|************************************************************************/
 203|
 204|
 205| 
 206|/***********************************************************************
 207|  15. <<< [CadPrim::Draw] 図形を描画する >>> 
 208|【引数】
 209|  ・CDC*   dc;               デバイスコンテキスト
 210|  ・CadPrim_DrawParam*  p;   描画パラメータ
 211|【補足】
 212|・virtual  void  Draw( CDC* dc, CadPrim_DrawParam* p ) = 0;
 213|************************************************************************/
 214| 
 215|/***********************************************************************
 216|  16. <<< [CadPrim::DrawHandles] 全ハンドルを描画する >>> 
 217|【引数】
 218|  ・CDC*   dc;              デバイスコンテキスト
 219|  ・CadPrim_DrawParam* p ;  描画パラメータ(拡大率など)
 220|  ・int    color;           ハンドルの色
 221|【補足】
 222|・virtual  void  DrawHandles( CDC* dc, CadPrim_DrawParam* p, COLORREF color, bool bDrawFrame ) = 0;
 223|************************************************************************/
 224| 
 225|/***********************************************************************
 226|  17. <<< [CadPrim::copy] コピーする >>> 
 227|【引数】
 228|  ・CadPrim*  a;     コピー元
 229|  ・ListX*  prims;   アプリケーションデータ
 230|【補足】
 231|・virtual  void  copy( CadPrim*, ListX* prims ) = 0;
 232|・リスト要素もすべてコピーします。
 233|・ポインタは、そのままコピーしないで、CadPrim::GetID()、Undo_Uty_getPrimPtr
 234|  で、現在のアプリケーションデータにあるアドレスを代入します。
 235|************************************************************************/
 236|
 237| 
 238|/***********************************************************************
 239|  18. <<< [CadPrim::copyStyle] スタイルをコピーする >>> 
 240|【引数】
 241|  ・CadPrim*  a;     コピー元
 242|  ・ListX*  prims;   アプリケーションデータ
 243|【補足】
 244|・virtual  void  copyStyle( CadPrim*, ListX* prims ) = 0;
 245|************************************************************************/
 246|
 247| 
 248|/***********************************************************************
 249|  19. <<< [CadPrim::isEqual] 同じかどうか判定する >>> 
 250|【引数】
 251|  ・CadPrim*  a;    比較対象
 252|【補足】
 253|・virtual  bool  isEqual( CadPrim* ) = 0;
 254|・アプリケーションデータにある中で、CadPrim::copy で取得したコピーが
 255|  どのオブジェクトと対応するかを特定するために使われるので、
 256|  リンク関係まで厳密でなくてもかまいません。
 257|************************************************************************/
 258| 
 259|/***********************************************************************
 260|  20. <<< [CadPrim::GetNewCopy] 多態コピーコンストラクタ >>> 
 261|【引数】
 262|  ・ListX*  prims;   アプリケーションデータ
 263|【補足】
 264|・virtual  CadPrim*  GetNewCopy( ListX* prims ) = 0;
 265|・C++言語のコピーコンストラクタでは、多態による生成ができないので、この
 266|  関数を使います。
 267|************************************************************************/
 268|
 269| 
 270|/***********************************************************************
 271|  21. <<< [CadPrim::GetSerializedSize] シリアライズされたデータサイズを返す >>> 
 272|【補足】
 273|・virtual  int  GetSerializedSize() = 0;
 274|************************************************************************/
 275|
 276|
 277|/***********************************************************************
 278|  22. <<< [CadPrim::CopyToSerial] シリアライズする >>>
 279|【補足】
 280|・virtual  void  CopyToSerial( void* a ) = 0;
 281|************************************************************************/
 282|
 283|
 284|/***********************************************************************
 285|  23. <<< [CadPrim::CopyFromSerial] シリアライズされたデータを復元する >>>
 286|【補足】
 287|・virtual  void  CopyFromSerial( void* a ) = 0;
 288|***********************************************************************/
 289|
 290| 
 291|/***********************************************************************
 292|  24. <<< [CadPrim::GetHitHandleNum] 指定した座標にヒットしたハンドルの番号を返す >>> 
 293|【引数】
 294|  ・int   x,y;       座標
 295|  ・int   zoom;      拡大率(%)
 296|  ・int   mode;      CadPrim_ResizeMode or CadPrim_RotateMode
 297|  ・int*  dx, dy;  (出力)マウスの位置を原点とした移動用ハンドルの位置
 298|  ・int*  diff;    (出力)ヒット距離(小さいほどマウスとハンドルのヒット度が高い)
 299|  ・int*  arrow;   (出力)マウスカーソルの形状
 300|  ・int   返り値;    ハンドル番号(1以上、-1=移動用、0=ヒットしない)
 301|【補足】
 302|・virtual  int   GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ) = 0;
 303|・ハンドルは、マウスで図形を変形するときに使う印です。
 304|・*arrow には、CadPrim_VerticalArrow などが格納されます。
 305|************************************************************************/
 306| 
 307|/***********************************************************************
 308|  25. <<< [CadPrim::Move] 図形の位置を変える >>> 
 309|【引数】
 310|  ・int  dx,dy;   移動量(差分)
 311|【補足】
 312|・virtual  void  Move( int dx, int dy ) = 0;
 313|・カーソルキーによる移動、複数選択時の移動のときに呼ばれます。
 314|************************************************************************/
 315|
 316| 
 317|/***********************************************************************
 318|  26. <<< [CadPrim::MoveByHandle] ハンドルを動かしてパラメータを変える >>> 
 319|【引数】
 320|  ・int   iHandle;    ハンドル番号(1〜)
 321|  ・int   x,y;        座標
 322|  ・bool  bShift;     シフトモード(別の変形のしかたをする)
 323|  ・bool  bRotate;    回転モード
 324|【補足】
 325|・virtual  void  MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ) = 0;
 326|・ハンドルの移動、マウスによる図形の移動のときに呼ばれます。
 327|・iHandle には、CadPrim::GetHitHandleNum または、CadPrim::GetMoveHandle
 328|  で取得した値を指定します。
 329|・x, y に与える値は、マウスの位置に、GetHitHandleNum で取得した dx, dy
 330|  を足した値を指定してください。
 331|************************************************************************/
 332| 
 333|/***********************************************************************
 334|  27. <<< [CadPrim::IsMultiSelect] ドラッグ領域による複数選択にかかったかどうか >>> 
 335|【引数】
 336|  ・Rect*  rect;  ドラッグ範囲(クリックしたときは、幅と高さが1で来る)
 337|【補足】
 338|・virtual  bool  IsMultiSelect( Rect* rect ) = 0;
 339|************************************************************************/
 340|
 341| 
 342|/***********************************************************************
 343|  28. <<< [CadPrim::SetHold] 選択状態にする(ハンドルがつくもの) >>> 
 344|  29. <<< [CadPrim::GetHold] 選択状態かどうかを返す >>>
 345|  30. <<< [CadPrim::IsHoldable] 選択状態にできるかどうかを返す >>>
 346|  31. <<< [CadPrim::SetSelected] 選択状態にする(リンクも含む) >>>
 347|  32. <<< [CadPrim::GetSelected] 選択状態かどうかを返す >>>
 348|【補足】
 349|・virtual  void  SetHold( bool ) = 0;
 350|・virtual  bool  GetHold() = 0;
 351|・virtual  bool  IsHoldable() = 0;
 352|・virtual  void  SetSelected( bool ) = 0;
 353|・virtual  bool  GetSelected() = 0;
 354|・ユーザが選択できるものが Hold, その Hold によって一緒に操作対象になるものも
 355|  含んだものが Selected。 たとえば、ラインの両端が Text_Box にリンクされていて、
 356|  両方の Text_Box を Hold したら、Text_Box もラインも Selected に含まれる。
 357|・Hold と Selected の関係の詳細は、CChildView::SetMultiSelect() を参照。
 358|************************************************************************/
 359| 
 360|/***********************************************************************
 361|  33. <<< [CadPrim::GetForAlign] 整列用のパラメータを取得する >>> 
 362|【引数】
 363|  ・int  iPos;    CadPrim_AlignLeft など
 364|  ・int  帰り値;  iPos に対応した値
 365|【補足】
 366|・virtual  int   GetForAlign( int iPos ) = 0;
 367|************************************************************************/
 368|
 369| 
 370|/***********************************************************************
 371|  34. <<< [CadPrim::SetForAlign] 整列用のパラメータから属性を設定する >>> 
 372|【引数】
 373|  ・int  iPos;    CadPrim_AlignLeft など
 374|  ・int  value;   iPos に対応した値
 375|【補足】
 376|・virtual  void  SetForAlign( int iPos, int value ) = 0;
 377|************************************************************************/
 378|
 379| 
 380|/***********************************************************************
 381|  35. <<< [CadPrim::GetForFitSize] サイズ調節のためのパラメータを取得する >>> 
 382|【引数】
 383|  ・int  iPos;    帰り値が幅か高さのどちらか。CadPrim_Horizontal など
 384|  ・int  帰り値;  iPos に対応した値
 385|【補足】
 386|・virtual  int   GetForFitSize( int iAttr ) = 0;
 387|************************************************************************/
 388|
 389| 
 390|/***********************************************************************
 391|  36. <<< [CadPrim::SetForFitSize] サイズ調節によって属性を設定する >>> 
 392|【引数】
 393|  ・int  iPos;    value が幅か高さのどちらか。CadPrim_Horizontal など
 394|  ・int  value;   iPos に対応した値
 395|【補足】
 396|・virtual  void  SetForFitSize( int iAttr, int value ) = 0;
 397|************************************************************************/
 398|
 399| 
 400|/***********************************************************************
 401|  37. <<< [CadPrim::OnCreated] 生成した直後の処理、クリックのみによる最小の回避 >>> 
 402|【補足】
 403|・virtual  void  OnCreated() = 0;
 404|************************************************************************/
 405|
 406| 
 407|/***********************************************************************
 408|  38. <<< [CadPrim::GetNProp] プロパティの数を返す >>> 
 409|【補足】
 410|・virtual  int   GetNProp() = 0;
 411|************************************************************************/
 412|
 413| 
 414|/***********************************************************************
 415|  39. <<< [CadPrim::GetProp] プロパティ番号からプロパティの名前と値を取得する >>> 
 416|【引数】
 417|  ・int   iProp;      プロパティ番号(0〜)
 418|  ・char* name;       (出力)プロパティの名前
 419|  ・int   name_size;   name の領域サイズ
 420|  ・char* value;      (出力)プロパティの値、文字列型
 421|  ・int   value_size;  value の領域サイズ
 422|  ・char* path;        SVGファイルの絶対パス
 423|  ・void** option;     (出力)値の型の追加情報の入ったアドレス(→補足)
 424|  ・int   返り値;      値の型、入力方法(CadPrim_Text, CadPrim_Color)
 425|【補足】
 426|・virtual  int  GetProp( int iProp, bool bJapanese, char* name, int name_size,  char* value,
 427|  int value_size, const char* path, void** option ) = 0;
 428|・カラーの値は、StrX_getColorValue で取得します。
 429|・値の型と、option の意味は次のとおり
 430|  ・CadPrim_Text=テキスト入力, option=NULL
 431|  ・CadPrim_Color=カラーダイアログ入力, option=NULL
 432|  ・CadPrim_Font=フォントダイアログ入力, option=NULL
 433|  ・CadPrim_Bool=トグル, option=NULL
 434|  ・CadPrim_Int=整数(上下ボタン付き), option=値の範囲、int[2]型
 435|  ・CadPrim_Select=選択(ドロップダウン), option=値の集合、ListX::StrX_ListElem型
 436|  ・CadPrim_Path=ファイルパス・ダイアログ, option=filter文字列(CFileDialog)char*型
 437|  ・CadPrim_ReadOnly=入力不可, option=NULL
 438|************************************************************************/
 439|
 440| 
 441|/***********************************************************************
 442|  40. <<< [CadPrim::SetProp] プロパティ番号からプロパティの値を設定する >>> 
 443|【引数】
 444|  ・int   iProp;  プロパティ番号(0〜)
 445|  ・char* value;  プロパティの値(数値のプロパティでも "24" のように指定します)
 446|  ・char* path;   SVGファイルパス
 447|【補足】
 448|・virtual  void  SetProp( int iProp, const char* value, const char* path ) = 0;
 449|・カラーの値は、StrX_getColorStr で取得した文字列を指定します。
 450|************************************************************************/
 451|
 452| 
 453|/***********************************************************************
 454|  41. <<< [CadPrim::IsNeedUnicode] UNICODE で保存する必要があるかどうかを返す >>> 
 455|【補足】
 456|・virtual  bool  IsNeedUnicode();
 457|・Adobe 社製 SVGビューアは、日本語のテキストを UNICODE にする必要があります。
 458|************************************************************************/
 459| 
 460|/***********************************************************************
 461|  42. <<< [CadPrim::GetLinkToHandle] リンクしている図形との関係情報を返す >>> 
 462|【補足】
 463|・virtual  CadPrim_Link*  GetLinkToHandle( int iHandle );
 464|・無効なリンク番号が指定されたときは、NULL を返します。
 465|・iHandle は、1から始まります。
 466|・リンクを追加または削除すると、iHandle とリンクしている図形との関係が
 467|  ずれることがあるので注意してください。
 468|************************************************************************/
 469|
 470|
 471|/***********************************************************************
 472|  43. <<< [CadPrim::GetNumOfLinkToHandle] リンクしている図形の最大番号+1を返す >>>
 473|【補足】
 474|・virtual  int  GetNumOfLinkToHandle();
 475|・たとえば3を返したとき、1〜3のリンク番号(iHandle)の中に有効なリンクが
 476|  ある可能性を示します。途中で無効なリンクがある可能性もあります。
 477|************************************************************************/
 478|
 479|
 480|/***********************************************************************
 481|  44. <<< [CadPrim::GetLinkToControler] リンクされている図形を返す >>>
 482|  45. <<< [CadPrim::GetLinkIDToControler] リンクされている図形の識別番号を返す >>>
 483|【補足】
 484|・virtual  CadPrim*  GetLinkToControler( int iHandle );
 485|・無効なリンク番号が指定されたときは、NULL を返します。
 486|・iHandle は、1から始まります。
 487|・リンクを追加または削除すると、iHandle とリンクしている図形との関係が
 488|  ずれることがあるので注意してください。
 489|************************************************************************/
 490|
 491|
 492|/***********************************************************************
 493|  46. <<< [CadPrim::GetNumOfLinkToControler] リンクされている図形の最大番号を返す >>>
 494|【補足】
 495|・virtual  int  GetNumOfLinkToControler();
 496|・たとえば3を返したとき、1〜3のリンク番号(iHandle)の中に有効なリンクが
 497|  ある可能性を示します。途中で無効なリンクがある可能性もあります。
 498|************************************************************************/
 499|
 500|
 501| 
 502|/***********************************************************************
 503|  47. <<< [CadPrim::GetLinkOnReadHandleNum] 開くときにリンクする操作ハンドルを得る >>> 
 504|【引数】
 505|  ・int   x,y;     相手ハンドルの位置
 506|  ・int  diff;     誤差許容範囲
 507|  ・int  帰り値;   リンクする this の操作ハンドル番号(0=リンクする操作ハンドルはない)
 508|【補足】
 509|・virtual  int  GetLinkOnReadHandleNum( int x, int y, int diff );
 510|・図形が持っているリンクできるすべてのハンドルについて、本関数で評価して
 511|  ください。
 512|************************************************************************/
 513| 
 514|/***********************************************************************
 515|  48. <<< [CadPrim::GetLinkableHandleNum] 相手のハンドルがリンクできる自分の操作ハンドル番号を返す >>> 
 516|【引数】
 517|  ・int   x,y;     相手ハンドルの位置
 518|  ・int  帰り値;   リンクできる this の操作ハンドル番号(0=リンクできる操作ハンドルはない)
 519|【補足】
 520|・virtual  int  GetLinkableHandleNum( int x, int y );
 521|・GetLinkOnReadHandleNum より広い空間でリンク可能と判定します。
 522|・図形が持っているリンクできるすべてのハンドルについて、本関数で評価して
 523|  ください。
 524|************************************************************************/
 525| 
 526|/***********************************************************************
 527|  49. <<< [CadPrim::LinkToHandle] 操作対象の頂点と双方向リンクし、頂点座標を調節する >>> 
 528|【引数】
 529|  ・CadPrim*  prim;      リンク相手(Line_Ex または Line_Corner)
 530|  ・int  iHandleOfPrim;  prim の頂点と一致するハンドルの番号
 531|【補足】
 532|・virtual  void  LinkToHandle( int iHandleOfThis, CadPrim* prim, int iHandleOfPrim );
 533|・iHandleOfPrim の座標から、this のどの部分とリンクするか決定します。
 534|************************************************************************/
 535| 
 536|/***********************************************************************
 537|  50. <<< [CadPrim::UnlinkToHandle] 操作対象から外す >>> 
 538|【引数】
 539|  ・CadPrim*  prim;      リンク相手(Line_Ex または Line_Corner)
 540|  ・int  iHandleOfPrim;  prim の頂点と一致するハンドルの番号
 541|  ・bool  mutual;        双方のリンクとも外すかどうか(FALSE=片方向のみ)
 542|【補足】
 543|・virtual  void  UnlinkToHandle( CadPrim* prim, int iHandleOfPrim, bool mutual =TRUE );
 544|・prim と関連していても、iHandleOfPrim とリンクしていなかったら、
 545|  何もしません。
 546|************************************************************************/
 547| 
 548|/***********************************************************************
 549|  51. <<< [CadPrim::UnlinkAll] リンクをすべて外す >>> 
 550|【補足】
 551|・virtual  void  UnlinkAll();
 552|************************************************************************/
 553| 
 554|/***********************************************************************
 555|  52. <<< [CadPrim::LinkToControler] 頂点を操作する図形とリンクする >>> 
 556|【引数】
 557|  ・int  iHandle;     操作される this の頂点と一致するハンドルの番号
 558|  ・CadPrim*  ctrl;   頂点を操作する図形
 559|【補足】
 560|・virtual  void  LinkToControler( int iHandle, CadPrim* ctrl );
 561|・リンク相手の LinkToHandle から呼ばれます。本関数を単独で呼び出すと、
 562|  双方向リンクの関係が壊れるので、呼び出さないでください。
 563|************************************************************************/
 564| 
 565|/***********************************************************************
 566|  53. <<< [CadPrim::UnlinkToControler] 頂点を操作する図形とのリンクを外す >>> 
 567|【引数】
 568|  ・int  iHandle;     操作される this の頂点と一致するハンドルの番号
 569|  ・CadPrim*  ctrl;   頂点を操作する図形
 570|【補足】
 571|・virtual  void  UnlinkToControler( int iHandle, CadPrim* ctrl );
 572|・リンク相手の UnlinkToHandle から呼ばれます。本関数を単独で呼び出すと、
 573|  双方向リンクの関係が壊れるので、呼び出さないでください。
 574|************************************************************************/
 575| 
 576|/***********************************************************************
 577|  54. <<< [CadPrim::AdjustLinks] リンク図形へのポインタを リンクID と整合を取る >>> 
 578|【補足】
 579|・virtual  void  AdjustLinks( ListX* prims );
 580|************************************************************************/
 581| 
 582|#endif  /* __CADPRIM_H */ 
 583| 
 584|