poly.cpp

C:\home\SVGCats_src\src\poly.cpp

[大目次 | 目次 | 関数]

大目次

目次

関数一覧


   1|/***********************************************************************
   2|  1. <<< 多角形・連続線 (Poly) >>> 
   3|************************************************************************/
   4|
   5|#include "mixer_precomp.h"  /* Auto precompiled header, Look at mixer-... folder */
   6|// #pragma hdrstop
   7|
   8|#if defined(USES_MXP_AUTOINC)
   9| #include "poly.ah"  /* Auto include header, Look at mixer-... folder */
  10|#endif
  11| 
  12|/*-------------------------------------------------------------------------*/
  13|/* 2. <<<< ◆ (Polygon_Ex) 多角形・連続線 >>>>  */ 
  14|/*-------------------------------------------------------------------------*/
  15| 
  16|Polygon_Ex::Polygon_Ex() 
  17|{
  18|  StdPlus_onMalloc( this );
  19|  m_bInUndoBuf = false;
  20|  m_bHold = false;
  21|  m_bSelected = false;
  22|  m_URL = "";
  23|  m_Target = "_blank";
  24|  m_IdLabel = "";
  25|
  26|  m_NPoint = 0;
  27|  m_Points = NULL;
  28|
  29|  m_RotateDegree = 0;
  30|  m_ImgPath = "";
  31|  m_bNeedReadImgProp = true;
  32|  m_ImgWidth = 100;
  33|  m_ImgHeight = 100;
  34|  m_NTrans = 100;
  35|}
  36|
  37|Polygon_Ex::~Polygon_Ex()
  38|{
  39|  if ( m_Points != NULL )  free( m_Points );
  40|  StdPlus_onFree( this );
  41|}
  42| 
  43|/***********************************************************************
  44|  2-1. <<< [Polygon_Ex::print] CadPrim::print の実装部 >>> 
  45|************************************************************************/
  46|void  Polygon_Ex::print( const char* title )
  47|{
  48|}
  49|
  50|
  51|/***********************************************************************
  52|  2-2. <<< [Polygon_Ex::GetID] CadPrim::GetID の実装部 >>>
  53|************************************************************************/
  54|int  Polygon_Ex::GetID()
  55|{
  56|  return  m_id;
  57|}
  58|
  59|
  60|/***********************************************************************
  61|  2-3. <<< [Polygon_Ex::SetID] CadPrim::SetID の実装部 >>>
  62|************************************************************************/
  63|void  Polygon_Ex::SetID( int id )
  64|{
  65|  m_id = id;
  66|}
  67|
  68|
  69|/***********************************************************************
  70|  2-4. <<< [Polygon_Ex::GetTypeID] CadPrim::GetTypeID の実装部 >>>
  71|************************************************************************/
  72|int  Polygon_Ex::GetTypeID()
  73|{
  74|  return  Polygon_Ex_TypeID;
  75|}
  76|
  77|
  78|/***********************************************************************
  79|  2-5. <<< [Polygon_Ex::GetTypeNameJp] CadPrim::GetTypeNameJp の実装部 >>>
  80|************************************************************************/
  81|char*  Polygon_Ex::GetTypeNameJp()
  82|{
  83|  return  "図形";
  84|}
  85|
  86|
  87|/***********************************************************************
  88|  2-6. <<< [Polygon_Ex::GetTypeNameEn] CadPrim::GetTypeNameEn の実装部 >>>
  89|************************************************************************/
  90|char*  Polygon_Ex::GetTypeNameEn()
  91|{
  92|  return  "Figure";
  93|}
  94|
  95|
  96|/***********************************************************************
  97|  2-7. <<< [Polygon_Ex::SetBInUndoBuf] CadPrim::SetBInUndoBuf の実装部 >>>
  98|************************************************************************/
  99|void  Polygon_Ex::SetBInUndoBuf( bool b )
 100|{
 101|  m_bInUndoBuf = b;
 102|}
 103|
 104|
 105|/***********************************************************************
 106|  2-8. <<< [Polygon_Ex::GetLinkURL] CadPrim::GetLinkURL の実装部 >>>
 107|************************************************************************/
 108|char*  Polygon_Ex::GetLinkURL()
 109|{
 110|  return  (char*)(const char*)m_URL;
 111|}
 112|
 113|
 114|/***********************************************************************
 115|  2-9. <<< [Polygon_Ex::GetIdLabel] CadPrim::GetIdLabel の実装部 >>>
 116|************************************************************************/
 117|char*  Polygon_Ex::GetIdLabel()
 118|{
 119|  return  (char*)(const char*)m_IdLabel;
 120|}
 121|
 122|
 123| 
 124|/***********************************************************************
 125|  2-10. <<< [Polygon_Ex::OutSVG] SVGファイルに属性値を出力する >>> 
 126|【引数】
 127|  ・FILE*   f;    出力先のテキスト・ファイル
 128|************************************************************************/
 129|void  Polygon_Ex::OutSVG( CadPrim_SaveParam* p )
 130|{
 131|/* 一部の実装は Rect_Ex のままです */
 132|}
 133|
 134| 
 135|/***********************************************************************
 136|  2-11. <<< [Polygon_Ex::Draw] 矩形を描画する >>> 
 137|【引数】
 138|  ・CDC*    dc;    デバイスコンテキスト
 139|************************************************************************/
 140|void  Polygon_Ex::Draw( CDC* dc, CadPrim_DrawParam* p )
 141|{
 142|}
 143|
 144|
 145| 
 146|/***********************************************************************
 147|  2-12. <<< [Polygon_Ex::DrawHandles] 全ハンドルを描画する >>> 
 148|【引数】
 149|  ・CDC*    dc;      デバイスコンテキスト
 150|  ・int     color;   ハンドルの色
 151|************************************************************************/
 152|void  Polygon_Ex::DrawHandles( CDC* dc, CadPrim_DrawParam* p, COLORREF color,
 153|  bool bDrawFrame )
 154|{
 155|}
 156|
 157| 
 158|/***********************************************************************
 159|  2-13. <<< [Polygon_Ex::copy] CadPrim::copy の実装部 >>> 
 160|************************************************************************/
 161|void  Polygon_Ex::copy( CadPrim* a, ListX* prims )
 162|{
 163|  Polygon_Ex*  r = (Polygon_Ex*)a;
 164|
 165|  m_id = r->m_id;
 166|  m_IdLabel = r->m_IdLabel;
 167|  m_URL = r->m_URL;
 168|  m_Target = r->m_Target;
 169|//m_Rect = r->m_Rect;
 170|  m_RotateDegree = r->m_RotateDegree;
 171|  m_BorderWidth = r->m_BorderWidth;
 172|  m_BorderColor = r->m_BorderColor;
 173|  m_FillColor = r->m_FillColor;
 174|  m_NTrans = r->m_NTrans;
 175|  m_HatchType = r->m_HatchType;
 176|//m_ShapeType = r->m_ShapeType;
 177|  m_ImgPath = r->m_ImgPath;
 178|  m_bNeedReadImgProp = r->m_bNeedReadImgProp;
 179|  m_ImgWidth = r->m_ImgWidth;
 180|  m_ImgHeight = r->m_ImgHeight;
 181|}
 182|
 183|/***********************************************************************
 184|  2-14. <<< [Polygon_Ex::copyStyle] CadPrim::copyStyle の実装部 >>>
 185|************************************************************************/
 186|void  Polygon_Ex::copyStyle( CadPrim* a, ListX* prims )
 187|{
 188|  Polygon_Ex*  r = (Polygon_Ex*)a;
 189|
 190|  m_BorderWidth = r->m_BorderWidth;
 191|  m_BorderColor = r->m_BorderColor;
 192|  m_FillColor = r->m_FillColor;
 193|  m_NTrans = r->m_NTrans;
 194|  m_HatchType = r->m_HatchType;
 195|}
 196|
 197|/***********************************************************************
 198|  2-15. <<< [Polygon_Ex::isEqual] CadPrim::isEqual の実装部 >>>
 199|************************************************************************/
 200|bool  Polygon_Ex::isEqual( CadPrim* a )
 201|{
 202|  Polygon_Ex*  r = (Polygon_Ex*)a;
 203|
 204|  return (
 205|    a->GetTypeID() == Polygon_Ex_TypeID &&
 206|    m_id == r->m_id &&
 207|    m_IdLabel == r->m_IdLabel &&
 208|    m_URL == r->m_URL &&
 209|    m_Target == r->m_Target &&
 210|//    m_Rect.x == r->m_Rect.x &&
 211|//    m_Rect.y == r->m_Rect.y &&
 212|//    m_Rect.w == r->m_Rect.w &&
 213|//    m_Rect.h == r->m_Rect.h &&
 214|    m_RotateDegree == r->m_RotateDegree &&
 215|    m_BorderWidth == r->m_BorderWidth &&
 216|    m_BorderColor == r->m_BorderColor &&
 217|    m_FillColor == r->m_FillColor &&
 218|    m_NTrans == r->m_NTrans &&
 219|    m_HatchType == r->m_HatchType &&
 220|//    m_ShapeType == r->m_ShapeType &&
 221|    m_ImgPath == r->m_ImgPath );
 222|}
 223|
 224|/***********************************************************************
 225|  2-16. <<< [Polygon_Ex::GetNewCopy] CadPrim::GetNewCopy の実装部 >>>
 226|************************************************************************/
 227|CadPrim*  Polygon_Ex::GetNewCopy( ListX* prims )
 228|{
 229|  Polygon_Ex*  r = new Polygon_Ex;
 230|
 231|  r->copy( this, prims );
 232|  return  r;
 233|}
 234|
 235|
 236|/***********************************************************************
 237|  2-17. <<< [Polygon_Ex::GetSerializedSize] CadPrim::GetSerializedSize の実装部 >>>
 238|************************************************************************/
 239|int  Polygon_Ex::GetSerializedSize()
 240|{
 241|  return  ( sizeof(*this) + m_IdLabel.GetLength() + 1 + m_ImgPath.GetLength() + 1 +
 242|     m_URL.GetLength() + 1 + m_Target.GetLength() + 1 + 3 ) & ~3;
 243|}
 244|
 245|
 246|/***********************************************************************
 247|  2-18. <<< [Polygon_Ex::CopyToSerial] CadPrim::CopyToSerial の実装部 >>>
 248|************************************************************************/
 249|void  Polygon_Ex::CopyToSerial( void* a )
 250|{
 251|  Polygon_Ex*  r = (Polygon_Ex*)a;
 252|  char*  s = (char*)a + sizeof(Polygon_Ex);
 253|
 254|  r->m_id = m_id;
 255|  r->m_IdLabel = m_IdLabel;
 256|  r->m_URL = m_URL;
 257|  r->m_Target = m_Target;
 258|//  r->m_Rect = m_Rect;
 259|  r->m_RotateDegree = m_RotateDegree;
 260|  r->m_BorderWidth = m_BorderWidth;
 261|  r->m_BorderColor = m_BorderColor;
 262|  r->m_FillColor = m_FillColor;
 263|  r->m_NTrans = m_NTrans;
 264|  r->m_HatchType = m_HatchType;
 265|//  r->m_ShapeType = m_ShapeType;
 266|  r->m_ImgPath = m_ImgPath;
 267|  r->m_bNeedReadImgProp = m_bNeedReadImgProp;
 268|  r->m_ImgWidth = m_ImgWidth;
 269|  r->m_ImgHeight = m_ImgHeight;
 270|
 271|  strcpy( s, m_IdLabel );
 272|  s = strchr( s, '\0' ) + 1;
 273|  strcpy( s, m_URL );
 274|  s = strchr( s, '\0' ) + 1;
 275|  strcpy( s, m_Target );
 276|  s = strchr( s, '\0' ) + 1;
 277|  strcpy( s, m_ImgPath );
 278|}
 279|
 280|
 281|/***********************************************************************
 282|  2-19. <<< [Polygon_Ex::CopyFromSerial] CadPrim::CopyFromSerial の実装部 >>>
 283|************************************************************************/
 284|void  Polygon_Ex::CopyFromSerial( void* a )
 285|{
 286|  Polygon_Ex*  r = (Polygon_Ex*)a;
 287|  char*  s = (char*)a + sizeof(Polygon_Ex);
 288|
 289|  m_id = r->m_id;
 290|  m_IdLabel = r->m_IdLabel;
 291|  m_URL = r->m_URL;
 292|  m_Target = r->m_Target;
 293|//  m_Rect = r->m_Rect;
 294|  m_RotateDegree = r->m_RotateDegree;
 295|  m_BorderWidth = r->m_BorderWidth;
 296|  m_BorderColor = r->m_BorderColor;
 297|  m_FillColor = r->m_FillColor;
 298|  m_NTrans = r->m_NTrans;
 299|  m_HatchType = r->m_HatchType;
 300|//  m_ShapeType = r->m_ShapeType;
 301|  m_ImgPath = r->m_ImgPath;
 302|  m_bNeedReadImgProp = r->m_bNeedReadImgProp;
 303|  m_ImgWidth = r->m_ImgWidth;
 304|  m_ImgHeight = r->m_ImgHeight;
 305|
 306|  m_IdLabel = s;
 307|  s = strchr( s, '\0' ) + 1;
 308|  m_URL = s;
 309|  s = strchr( s, '\0' ) + 1;
 310|  m_Target = s;
 311|  s = strchr( s, '\0' ) + 1;
 312|  m_ImgPath = s;
 313|}
 314|
 315|
 316| 
 317|/***********************************************************************
 318|  2-20. <<< [Polygon_Ex::GetHitHandleNum] Rect_getHitHandleNum の C++ ラップ >>> 
 319|************************************************************************/
 320|int  Polygon_Ex::GetHitHandleNum( int x, int y, int zoom, int mode,
 321|  int* dx, int* dy, int* diff, int* arrow )
 322|{
 323|  return  0;
 324|}
 325|
 326|
 327|/***********************************************************************
 328|  2-21. <<< [Polygon_Ex::Move] CadPrim::Move の実装部 >>>
 329|************************************************************************/
 330|void  Polygon_Ex::Move( int dx, int dy )
 331|{
 332|}
 333|
 334|
 335|/***********************************************************************
 336|  2-22. <<< [Polygon_Ex::MoveByHandle] Rect_moveByHandle の C++ ラップ >>>
 337|************************************************************************/
 338|void  Polygon_Ex::MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate )
 339|{
 340|}
 341|
 342|
 343|/***********************************************************************
 344|  2-23. <<< [Polygon_Ex::GetCenterOfHandle] CadPrim::GetCenterOfHandle >>>
 345|************************************************************************/
 346|void  Polygon_Ex::GetCenterOfHandle( int iHandle, int* x, int* y )
 347|{
 348|}
 349|
 350| 
 351|/***********************************************************************
 352|  2-24. <<< [Polygon_Ex::SetHold] CadPrim::SetHold の実装部 >>> 
 353|************************************************************************/
 354|void  Polygon_Ex::SetHold( bool b )
 355|{
 356|  m_bHold = b;
 357|}
 358|
 359|/***********************************************************************
 360|  2-25. <<< [Polygon_Ex::GetHold] CadPrim::GetHold の実装部 >>>
 361|************************************************************************/
 362|bool  Polygon_Ex::GetHold()
 363|{
 364|  return  m_bHold;
 365|}
 366|
 367|/***********************************************************************
 368|  2-26. <<< [Polygon_Ex::IsHoldable] CadPrim::IsHoldable の実装部 >>>
 369|************************************************************************/
 370|bool  Polygon_Ex::IsHoldable()
 371|{
 372|  return  true;
 373|}
 374|
 375|/***********************************************************************
 376|  2-27. <<< [Polygon_Ex::SetSelected] CadPrim::SetSelected の実装部 >>>
 377|************************************************************************/
 378|void  Polygon_Ex::SetSelected( bool b )
 379|{
 380|  m_bSelected = b;
 381|}
 382|
 383|/***********************************************************************
 384|  2-28. <<< [Polygon_Ex::GetSelected] CadPrim::GetSelected の実装部 >>>
 385|************************************************************************/
 386|bool  Polygon_Ex::GetSelected()
 387|{
 388|  return  m_bSelected;
 389|}
 390|
 391| 
 392|/***********************************************************************
 393|  2-29. <<< [Polygon_Ex::IsMultiSelect] CadPrim::IsMultiSelect の実装部 >>> 
 394|************************************************************************/
 395|bool  Polygon_Ex::IsMultiSelect( Rect* rect )
 396|{
 397|  return  false;
 398|}
 399|
 400|
 401|/***********************************************************************
 402|  2-30. <<< [Polygon_Ex::GetForAlign] CadPrim::GetForAlign の実装部 >>>
 403|************************************************************************/
 404|int   Polygon_Ex::GetForAlign( int iPos )
 405|{
 406|  return  0;
 407|}
 408|
 409|/***********************************************************************
 410|  2-31. <<< [Polygon_Ex::SetForAlign] CadPrim::SetForAlign の実装部 >>>
 411|************************************************************************/
 412|void  Polygon_Ex::SetForAlign( int iPos, int value )
 413|{
 414|}
 415|
 416|/***********************************************************************
 417|  2-32. <<< [Polygon_Ex::GetForFitSize] CadPrim::GetForFitSize の実装部 >>>
 418|************************************************************************/
 419|int   Polygon_Ex::GetForFitSize( int iAttr )
 420|{
 421|  return  0;
 422|}
 423|
 424|/***********************************************************************
 425|  2-33. <<< [Polygon_Ex::SetForFitSize] CadPrim::SetForFitSize の実装部 >>>
 426|************************************************************************/
 427|void  Polygon_Ex::SetForFitSize( int iAttr, int value )
 428|{
 429|}
 430| 
 431|/***********************************************************************
 432|  2-34. <<< [Polygon_Ex::OnCreated] CadPrim::OnCreated の実装部 >>> 
 433|************************************************************************/
 434|void  Polygon_Ex::OnCreated()
 435|{
 436|}
 437|
 438| 
 439|/***********************************************************************
 440|  2-35. <<< [Polygon_Ex::GetNProp] プロパティの要素数を返す >>> 
 441|************************************************************************/
 442|int  Polygon_Ex::GetNProp()
 443|{
 444|  return  0;
 445|}
 446|
 447|
 448|/***********************************************************************
 449|  2-36. <<< [Polygon_Ex::GetProp] プロパティの名前と値を取得する >>>
 450|************************************************************************/
 451|int  Polygon_Ex::GetProp( int iProp, bool bJapanese, char* name, int name_size,
 452|  char* value, int value_size, const char* path, void** option )
 453|{
 454|  return  0;
 455|}
 456|
 457|/***********************************************************************
 458|  2-37. <<< [Polygon_Ex::SetProp] プロパティの値を設定する >>>
 459|************************************************************************/
 460|void  Polygon_Ex::SetProp( int iProp, const char* value, const char* path )
 461|{
 462|}
 463| 
 464|/***********************************************************************
 465|  2-38. <<< [Polygon_Ex::IsNeedUnicode] CadPrim::IsNeedUnicode の実装部 >>> 
 466|************************************************************************/
 467|bool  Polygon_Ex::IsNeedUnicode()
 468|{
 469|  return  StrX_isExist2byte( m_ImgPath ) != 0;;
 470|}
 471|
 472| 
 473|