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|