C:\home\SVGCats_src\src\Canvas.cpp
1|/*********************************************************************** 2| 1. <<< キャンバス (Canvas) >>> 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 "Canvas.ah" /* Auto include header, Look at mixer-... folder */ 10|#endif 11| 12|/*-------------------------------------------------------------------------*/ 13|/* 2. <<<< ◆ (Canvas) キャンバス >>>> */ 14|/*-------------------------------------------------------------------------*/ 15| 16|/*********************************************************************** 17| 2-1. <<< [Canvas::Canvas] 初期化する >>> 18|************************************************************************/ 19|Canvas::Canvas() 20|{ 21| m_Width = 450; 22| m_Height = 300; 23| m_DefWidth = m_Width; 24| m_DefHeight = m_Height; 25| 26| m_bGridOn = false; 27| m_GridDrawType = Canvas_NoGrid; 28| m_GridWidth = 19; 29| m_GridHeight = 19; 30| 31| m_NextPageInterval = 0; 32| m_CorrImagePath[0] = '\0'; 33|} 34| 35| 36| 37|/*********************************************************************** 38| 2-2. <<< [Canvas::print] CadPrim::print の実装部 >>> 39|************************************************************************/ 40|void Canvas::print( const char* title ) 41|{ 42|#ifndef ERRORS_CUT_DEBUG_TOOL 43| Errors_printf( "%sCanvas: w=%d, h=%d", title, m_Width, m_Height ); 44|#endif 45|} 46| 47| 48|/*********************************************************************** 49| 2-3. <<< [Canvas::GetID] CadPrim::GetID の実装部 >>> 50|************************************************************************/ 51|int Canvas::GetID() 52|{ 53| return -1; 54|} 55| 56| 57|/*********************************************************************** 58| 2-4. <<< [Canvas::SetID] CadPrim::SetID の実装部 >>> 59|************************************************************************/ 60|void Canvas::SetID( int id ) 61|{ 62|} 63| 64| 65|/*********************************************************************** 66| 2-5. <<< [Canvas::GetTypeID] CadPrim::GetTypeID の実装部 >>> 67|************************************************************************/ 68|int Canvas::GetTypeID() 69|{ 70| return Canvas_TypeID; 71|} 72| 73| 74|/*********************************************************************** 75| 2-6. <<< [Canvas::GetTypeNameJp] CadPrim::GetTypeNameJp の実装部 >>> 76|************************************************************************/ 77|char* Canvas::GetTypeNameJp() 78|{ 79| return "キャンバス"; 80|} 81| 82| 83|/*********************************************************************** 84| 2-7. <<< [Canvas::GetTypeNameEn] CadPrim::GetTypeNameEn の実装部 >>> 85|************************************************************************/ 86|char* Canvas::GetTypeNameEn() 87|{ 88| return "Canvas"; 89|} 90| 91| 92|/*********************************************************************** 93| 2-8. <<< [Canvas::SetBInUndoBuf] CadPrim::SetBInUndoBuf の実装部 >>> 94|************************************************************************/ 95|void Canvas::SetBInUndoBuf( bool b ) 96|{ 97|} 98| 99| 100|/*********************************************************************** 101| 2-9. <<< [Canvas::GetLinkURL] CadPrim::GetLinkURL の実装部 >>> 102|************************************************************************/ 103|char* Canvas::GetLinkURL() 104|{ 105| return ""; 106|} 107| 108| 109|/*********************************************************************** 110| 2-10. <<< [Canvas::GetIdLabel] CadPrim::GetIdLabel の実装部 >>> 111|【補足】 112|・SVG に出力する id は、page1 のようなページ番号を含んだものになります。 113|************************************************************************/ 114|char* Canvas::GetIdLabel() 115|{ 116| return ""; 117|} 118| 119| 120| 121|/*********************************************************************** 122| 2-11. <<< [Canvas::OutSVG] SVGファイルに属性値を出力する >>> 123|【補足】 124|・ファイルへの出力は、CSVGCatApp::Save で行うので、本関数では何もしません。 125|************************************************************************/ 126|void Canvas::OutSVG( CadPrim_SaveParam* p ) 127|{ 128|} 129| 130|/*********************************************************************** 131| 2-12. <<< [Canvas::Draw] キャンバスの上を描画する >>> 132|【補足】 133|・枠の描画は、CChildView::DrawAll、CChildView::DrawOutOfCanvas で行って 134| います。 135|************************************************************************/ 136|void Canvas::Draw( CDC* dc, CadPrim_DrawParam* p ) 137|{ 138| COLORREF canvasColor; 139| 140| /* 色を設定する */ 141| canvasColor = ( p->bWhiteToBGColor ? 142| GetSysColor( COLOR_WINDOW ) : RGB( 0xFF, 0xFF, 0xFF ) ); 143| 144| 145| /* キャンパスをクリアする */ 146| { 147| CPen pen( PS_SOLID, 1, canvasColor ); 148| CBrush brush( canvasColor ); 149| CPen* oldPen = dc->SelectObject( &pen ); 150| CBrush* oldBrush = dc->SelectObject( &brush ); 151| 152| dc->Rectangle( 0, 0, m_Width * p->zoom / 100, m_Height * p->zoom / 100 ); 153| 154| dc->SelectObject( oldPen ); 155| dc->SelectObject( oldBrush ); 156| } 157|} 158| 159| 160| 161|/*********************************************************************** 162| 2-13. <<< [Canvas::DrawGrid] グリッドを描画する >>> 163|************************************************************************/ 164|void Canvas::DrawGrid( CDC* dc, CadPrim_DrawParam* p ) 165|{ 166| int x, y; 167| COLORREF canvasColor; 168| COLORREF gridColor; 169| 170| /* 色を設定する */ 171| canvasColor = ( p->bWhiteToBGColor ? 172| GetSysColor( COLOR_WINDOW ) : RGB( 0xFF, 0xFF, 0xFF ) ); 173| gridColor = 0; 174| x = Color_WinRGB_getR( canvasColor ); 175| Color_WinRGB_setR( gridColor, ( x < 0x80 ? 0xFF : 0x00 ) ); 176| x = Color_WinRGB_getG( canvasColor ); 177| Color_WinRGB_setG( gridColor, ( x < 0x80 ? 0xFF : 0x00 ) ); 178| x = Color_WinRGB_getB( canvasColor ); 179| Color_WinRGB_setB( gridColor, ( x < 0x80 ? 0xFF : 0x00 ) ); 180| 181| 182| /* グリッドを描画する */ 183| switch ( m_GridDrawType ) { 184| case Canvas_NoGrid: 185| break; 186| 187| case Canvas_DotGrid: { 188| int dx = -p->x0 % m_GridWidth; 189| int dy = -p->y0 % m_GridHeight; 190| 191| for ( y = 0; y < m_Height; y += m_GridHeight ) { 192| for ( x = 0; x < m_Width; x += m_GridWidth ) { 193| dc->SetPixel( x + dx, y + dy, gridColor ); 194| } 195| } 196| break; 197| } 198| 199|#if 0 200| case Canvas_LineGrid: { 201| CPen pen( PS_SOLID, 1, gridColor ); 202| CPen* oldPen; 203| 204| oldPen = dc->SelectObject( &pen ); 205| for ( y = 0; y < m_Height; y += m_GridHeight ) { 206| dc->MoveTo( 0, y ); dc->LineTo( m_Width, y ); 207| } 208| for ( x = 0; x < m_Width; x += m_GridWidth ) { 209| dc->MoveTo( x, 0 ); dc->LineTo( x, m_Height ); 210| } 211| dc->SelectObject( oldPen ); 212| break; 213| } 214|#endif 215| 216| } 217|} 218| 219| 220| 221|/*********************************************************************** 222| 2-14. <<< [Canvas::DrawOutSide] キャンバスの外側を描画する >>> 223|************************************************************************/ 224|void Canvas::DrawOutSide( CDC* dc, CPoint* pos, CadPrim_DrawParam* p, 225| int client_width, int client_height ) 226|{ 227| int zoom = p->zoom; 228| 229| ERRORS_FUNC_CPP_VAR( Canvas_DrawOutOfCanvas ); 230| ERRORS_FUNC_START_CPP( Canvas_DrawOutOfCanvas ); 231| 232| /* キャンバスの外と影を描画する */ 233| { 234| COLORREF color = GetSysColor( COLOR_APPWORKSPACE ); 235| CPen pen( PS_SOLID, 0, color ); 236| CPen pen2( PS_SOLID, 1, (COLORREF)0x000000 ); 237| CBrush brush( color ); 238| CPen* oldPen; 239| CBrush* oldBrush = dc->SelectObject( &brush ); 240| 241| /* キャンバスの外 */ 242| oldPen = dc->SelectObject( &pen ); 243| dc->Rectangle( (m_Width) * zoom / 100 - pos->x, 0, 244| client_width, (m_Height) * zoom / 100 - pos->y ); /* 右 */ 245| dc->Rectangle( 0, (m_Height) * zoom / 100 - pos->y, 246| client_width, client_height ); /* 下、右下 */ 247| if ( pos->x < 0 ) 248| dc->Rectangle( 0, - pos->y, - pos->x, client_height ); /* 左、左下 */ 249| if ( pos->y < 0 ) 250| dc->Rectangle( 0, 0, client_width, - pos->y ); /* 上、左上、右上 */ 251| 252| /* 影の1ライン目 */ 253| dc->SelectObject( &pen2 ); 254| dc->MoveTo( (m_Width) * zoom / 100 - pos->x, - pos->y ); /* 右上 */ 255| dc->LineTo( (m_Width) * zoom / 100 - pos->x, 256| (m_Height) * zoom / 100 - pos->y ); /* 右下 */ 257| dc->LineTo( - pos->x, (m_Height) * zoom / 100 - pos->y ); /* 左下 */ 258| dc->SetPixel( - pos->x, (m_Height) * zoom / 100 - pos->y, (COLORREF)0x000000 ); 259| 260| /* 影の2ライン目 */ 261| dc->MoveTo( (m_Width) * zoom / 100 - pos->x + 1, - pos->y ); /* 右上 */ 262| dc->LineTo( (m_Width) * zoom / 100 - pos->x + 1, 263| (m_Height) * zoom / 100 - pos->y + 1 ); /* 右下 */ 264| dc->LineTo( - pos->x, (m_Height) * zoom / 100 - pos->y + 1 ); /* 左下 */ 265| dc->SetPixel( - pos->x, (m_Height) * zoom / 100 - pos->y + 1, (COLORREF)0x000000 ); 266| 267| dc->SelectObject( oldPen ); 268| dc->SelectObject( oldBrush ); 269| } 270| 271| /* キャンバス・リサイズ用・ハンドルを描画する */ 272| { 273| COLORREF color = GetSysColor( COLOR_HIGHLIGHT ); 274| CPen pen( PS_SOLID, 1, color ^ 0xFFFFFF ); 275| CBrush brush( color ); 276| CPen* oldPen; 277| CBrush* oldBrush; 278| 279| oldPen = dc->SelectObject( &pen ); 280| oldBrush = dc->SelectObject( &brush ); 281| dc->Rectangle( (m_Width) * zoom / 100 - pos->x, 282| (m_Height) * zoom / 100 - pos->y, 283| (m_Width) * zoom / 100 - pos->x + 5, 284| (m_Height) * zoom / 100 - pos->y + 5 ); 285| dc->SelectObject( oldBrush ); 286| dc->SelectObject( oldPen ); 287| } 288| 289| ERRORS_FUNC_END_CPP( Canvas_DrawOutOfCanvas ); 290|} 291| 292| 293| 294|/*********************************************************************** 295| 2-15. <<< [Canvas::DrawHandles] 全ハンドルを描画する >>> 296|【補足】 297|・描画は、CChildView::DrawAll で行うので、本関数では何もしません。 298|************************************************************************/ 299|void Canvas::DrawHandles( CDC* dc, CadPrim_DrawParam* p, COLORREF color, 300| bool bDrawFrame ) 301|{ 302|} 303| 304| 305|/*********************************************************************** 306| 2-16. <<< [Canvas::copy] CadPrim::copy の実装部 >>> 307|************************************************************************/ 308|void Canvas::copy( CadPrim* a, ListX* prims ) 309|{ 310| Canvas* c = (Canvas*)a; 311| 312| m_Width = c->m_Width; 313| m_Height = c->m_Height; 314| m_NextPageInterval = c->m_NextPageInterval; 315| strcpy( m_CorrImagePath, c->m_CorrImagePath ); 316|} 317| 318|/*********************************************************************** 319| 2-17. <<< [Canvas::copyStyle] CadPrim::copyStyle の実装部 >>> 320|************************************************************************/ 321|void Canvas::copyStyle( CadPrim* a, ListX* prims ) 322|{ 323|} 324| 325|/*********************************************************************** 326| 2-18. <<< [Canvas::isEqual] CadPrim::isEqual の実装部 >>> 327|************************************************************************/ 328|bool Canvas::isEqual( CadPrim* a ) 329|{ 330| Canvas* c = (Canvas*)a; 331| 332| return ( 333| m_Width == c->m_Width && 334| m_Height == c->m_Height && 335| m_NextPageInterval == c->m_NextPageInterval && 336| stricmp( m_CorrImagePath, c->m_CorrImagePath ) == 0 ); 337|} 338| 339|/*********************************************************************** 340| 2-19. <<< [Canvas::GetNewCopy] CadPrim::GetNewCopy の実装部 >>> 341|************************************************************************/ 342|CadPrim* Canvas::GetNewCopy( ListX* prims ) 343|{ 344| Canvas* r = new Canvas; 345| 346| r->copy( this, prims ); 347| return r; 348|} 349| 350| 351|/*********************************************************************** 352| 2-20. <<< [Canvas::GetNewCopy] CadPrim::GetSerializedSize の実装部 >>> 353|************************************************************************/ 354|int Canvas::GetSerializedSize() 355|{ 356| return sizeof(*this); 357|} 358| 359|/*********************************************************************** 360| 2-21. <<< [Canvas::CopyToSerial] CadPrim::CopyToSerial の実装部 >>> 361|************************************************************************/ 362|void Canvas::CopyToSerial( void* a ) 363|{ 364| Canvas* c = (Canvas*)a; 365| 366| c->m_Width = m_Width; 367| c->m_Height = m_Height; 368| c->m_NextPageInterval = m_NextPageInterval; 369| strcpy( c->m_CorrImagePath, m_CorrImagePath ); 370|} 371| 372|/*********************************************************************** 373| 2-22. <<< [Canvas::CopyFromSerial] CadPrim::CopyFromSerial の実装部 >>> 374|************************************************************************/ 375|void Canvas::CopyFromSerial( void* a ) 376|{ 377| Canvas* c = (Canvas*)a; 378| 379| m_Width = c->m_Width; 380| m_Height = c->m_Height; 381| m_NextPageInterval = c->m_NextPageInterval; 382| strcpy( m_CorrImagePath, c->m_CorrImagePath ); 383|} 384| 385| 386| 387|/*********************************************************************** 388| 2-23. <<< [Canvas::GetHitHandleNum] CadPrim::GetHitHandleNum の実装部 >>> 389|【補足】 390|・ヒット判定は、CChildView::OnLButtonDown で行うので、本関数では何もしません。 391|************************************************************************/ 392|int Canvas::GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ) 393|{ 394| return 0; 395|} 396| 397| 398|/*********************************************************************** 399| 2-24. <<< [Canvas::Move] CadPrim::Move の実装部 >>> 400|【補足】 401|・キャンバスは移動しません。 402|************************************************************************/ 403|void Canvas::Move( int dx, int dy ) 404|{ 405|} 406| 407| 408| 409|/*********************************************************************** 410| 2-25. <<< [Canvas::MoveByHandle] ハンドルを動かしてパラメータを変える >>> 411|【補足】 412|・ハンドルの操作は、CChildView::OnMouseMove で行うので、本関数では何もしません。 413|************************************************************************/ 414|void Canvas::MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ) 415|{ 416| m_Width = x; m_Height = y; 417|} 418| 419| 420|/*********************************************************************** 421| 2-26. <<< [Canvas::GetCenterOfHandle] CadPrim::GetCenterOfHandle >>> 422|************************************************************************/ 423|void Canvas::GetCenterOfHandle( int iHandle, int* x, int* y ) 424|{ 425| *x = m_Width; *y = m_Height; 426|} 427| 428|/*********************************************************************** 429| 2-27. <<< [Canvas::SetHold] CadPrim::SetHold の実装部 >>> 430|************************************************************************/ 431|void Canvas::SetHold( bool b ) 432|{ 433|} 434| 435|/*********************************************************************** 436| 2-28. <<< [Canvas::GetHold] CadPrim::GetHold の実装部 >>> 437|************************************************************************/ 438|bool Canvas::GetHold() 439|{ 440| return true; 441|} 442| 443|/*********************************************************************** 444| 2-29. <<< [Canvas::IsHoldable] CadPrim::IsHoldable の実装部 >>> 445|************************************************************************/ 446|bool Canvas::IsHoldable() 447|{ 448| return true; 449|} 450| 451|/*********************************************************************** 452| 2-30. <<< [Canvas::SetSelected] CadPrim::SetSelected の実装部 >>> 453|************************************************************************/ 454|void Canvas::SetSelected( bool b ) 455|{ 456|} 457| 458|/*********************************************************************** 459| 2-31. <<< [Canvas::GetSelected] CadPrim::GetSelected の実装部 >>> 460|************************************************************************/ 461|bool Canvas::GetSelected() 462|{ 463| return true; 464|} 465| 466| 467|/*********************************************************************** 468| 2-32. <<< [Canvas::IsMultiSelect] CadPrim::IsMultiSelect の実装部 >>> 469|【補足】 470|・キャンバスは、選択されません。 471|************************************************************************/ 472|bool Canvas::IsMultiSelect( Rect* rect ) 473|{ 474| return false; 475|} 476| 477| 478|/*********************************************************************** 479| 2-33. <<< [Canvas::GetForAlign] CadPrim::GetForAlign の実装部 >>> 480|【補足】 481|・キャンバスは、選択されません。 482|************************************************************************/ 483|int Canvas::GetForAlign( int iPos ) 484|{ 485| return 0; 486|} 487| 488|/*********************************************************************** 489| 2-34. <<< [Canvas::SetForAlign] CadPrim::SetForAlign の実装部 >>> 490|【補足】 491|・キャンバスは、選択されません。 492|************************************************************************/ 493|void Canvas::SetForAlign( int iPos, int value ) 494|{ 495|} 496| 497|/*********************************************************************** 498| 2-35. <<< [Canvas::GetForFitSize] CadPrim::GetForFitSize の実装部 >>> 499|【補足】 500|・キャンバスは、選択されません。 501|************************************************************************/ 502|int Canvas::GetForFitSize( int iAttr ) 503|{ 504| return 0; 505|} 506| 507|/*********************************************************************** 508| 2-36. <<< [Canvas::SetForFitSize] CadPrim::SetForFitSize の実装部 >>> 509|【補足】 510|・キャンバスは、選択されません。 511|************************************************************************/ 512|void Canvas::SetForFitSize( int iAttr, int value ) 513|{ 514|} 515| 516|/*********************************************************************** 517| 2-37. <<< [Canvas::OnCreated] CadPrim::OnCreated の実装部 >>> 518|************************************************************************/ 519|void Canvas::OnCreated() 520|{ 521|} 522| 523| 524|/*********************************************************************** 525| 2-38. <<< [Canvas::GetNProp] プロパティの要素数を返す >>> 526|【補足】 527|・CMainFrame::ResetProp で表示されます。 528|************************************************************************/ 529|int Canvas::GetNProp() 530|{ 531| return 6; 532|} 533| 534| 535|/*********************************************************************** 536| 2-39. <<< [Canvas::GetProp] プロパティの名前と値を取得する >>> 537|【補足】 538|・CMainFrame::ResetProp で表示されます。 539|************************************************************************/ 540|int Canvas::GetProp( int iProp, bool bJapanese, char* name, int name_size, 541| char* value, int value_size, const char* path, void** option ) 542|{ 543| int r; 544| static int range[2]; 545| 546| switch ( iProp ) { 547| case 0: 548| if ( bJapanese ) 549| strncpy( name, "キャンバスの幅", name_size ); 550| else 551| strncpy( name, "Width of Canvas", name_size ); 552| sprintf( value, "%d", m_Width ); 553| range[0] = 2; range[1] = INT_MAX; 554| *option = range; 555| r = CadPrim_Int; 556| break; 557| 558| case 1: 559| if ( bJapanese ) 560| strncpy( name, "キャンバスの高さ", name_size ); 561| else 562| strncpy( name, "Height of Canvas", name_size ); 563| sprintf( value, "%d", m_Height ); 564| range[0] = 2; range[1] = INT_MAX; 565| *option = range; 566| r = CadPrim_Int; 567| break; 568| 569| case 2: 570| if ( bJapanese ) 571| strncpy( name, "グリッドの間隔(横)", name_size ); 572| else 573| strncpy( name, "Width of Grid", name_size ); 574| sprintf( value, "%d", m_GridWidth ); 575| range[0] = 2; range[1] = INT_MAX; 576| *option = range; 577| r = CadPrim_Int; 578| break; 579| 580| case 3: 581| if ( bJapanese ) 582| strncpy( name, "グリッドの間隔(縦)", name_size ); 583| else 584| strncpy( name, "Height of Grid", name_size ); 585| sprintf( value, "%d", m_GridHeight ); 586| range[0] = 2; range[1] = INT_MAX; 587| *option = range; 588| r = CadPrim_Int; 589| break; 590| 591| case 4: 592| if ( bJapanese ) 593| strncpy( name, "次ページ間隔(ミリ秒)", name_size ); 594| else 595| strncpy( name, "Chg Page Interval", name_size ); 596| sprintf( value, "%d", m_NextPageInterval ); 597| range[0] = 0; range[1] = INT_MAX; 598| *option = range; 599| r = CadPrim_Int; 600| break; 601| 602| case 5: 603| if ( bJapanese ) 604| strncpy( name, "対応画像ファイル", name_size ); 605| else 606| strncpy( name, "Corresponding Image File", name_size ); 607| 608| if ( path[0] == '\0' || m_CorrImagePath[0] == '\0' ) strcpy( value, m_CorrImagePath ); 609| else StrX_cpyStepPath2( value, m_CorrImagePath, value_size, path ); 610| 611| if ( stricmp( StrX_refExt( value ), "png" ) == 0 ) { 612| if ( bJapanese ) 613| *option = (void*)"PNG形式 (*.png)|*.png|JPEG形式 (*.jpg)|*.jpg;*.jpeg||"; 614| else 615| *option = (void*)"PNG format (*.png)|*.png|JPEG format (*.jpg)|*.jpg;*.jpeg||";; 616| } 617| else { 618| if ( bJapanese ) 619| *option = (void*)"JPEG形式 (*.jpg)|*.jpg;*.jpeg|PNG形式 (*.png)|*.png||"; 620| else 621| *option = (void*)"JPEG format (*.jpg)|*.jpg;*.jpeg|PNG format (*.png)|*.png||";; 622| } 623| r = CadPrim_Path; 624| break; 625| } 626| 627| return r; 628|} 629| 630|/*********************************************************************** 631| 2-40. <<< [Canvas::SetProp] プロパティの値を設定する >>> 632|【補足】 633|・CMainFrame::OnDblClickPropで設定します。 634|************************************************************************/ 635|void Canvas::SetProp( int iProp, const char* value, const char* path ) 636|{ 637| switch ( iProp ) { 638| case 0: 639| m_Width = atoi( value ); 640| break; 641| case 1: 642| m_Height = atoi( value ); 643| break; 644| case 2: 645| m_GridWidth = atoi( value ); 646| break; 647| case 3: 648| m_GridHeight = atoi( value ); 649| break; 650| case 4: 651| m_NextPageInterval = atoi( value ); 652| break; 653| case 5: 654| if ( value[0] == '\0' ) 655| strcpy( m_CorrImagePath, value ); 656| else 657| StrX_cpyAbsPath2( m_CorrImagePath, value, sizeof(m_CorrImagePath), path ); 658| break; 659| } 660|} 661| 662| 663|/*********************************************************************** 664| 2-41. <<< [Canvas::IsNeedUnicode] CadPrim::IsNeedUnicode の実装部 >>> 665|************************************************************************/ 666|bool Canvas::IsNeedUnicode() 667|{ 668| return false; 669|} 670| 671| 672|/*********************************************************************** 673| 2-42. <<< [Canvas::ChgToGridedPos] グリッドに合わせた座標にする >>> 674|【引数】 675| ・int* x, y; (入出力)グリッドに合わせる前と後の座標 676|************************************************************************/ 677|void Canvas::ChgToGridedPos( int* x, int* y ) 678|{ 679| if ( m_bGridOn ) { 680| *x -= ( *x + m_GridWidth / 2 ) % m_GridWidth - ( m_GridWidth / 2 ); 681| *y -= ( *y + m_GridHeight / 2 ) % m_GridHeight - ( m_GridHeight / 2 ); 682| } 683|} 684| 685| 686|