Canvas.cpp

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::DrawAllCChildView::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|