Ink.cpp

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

[大目次 | 目次 | 関数]

大目次

目次

関数一覧


   1|/***********************************************************************
   2|  1. <<< (Ink_Line) 簡易デジタルインク、線 >>> 
   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 "Ink.ah"  /* Auto include header, Look at mixer-... folder */
  10|#endif
  11|
  12|#ifdef  USES_INK
  13|
  14| 
  15|/*-------------------------------------------------------------------------*/
  16|/* 2. <<<< ◆ (Ink_Line) 簡易デジタルインク、線 >>>>  */ 
  17|/*-------------------------------------------------------------------------*/
  18| 
  19|/***********************************************************************
  20|  2-1. <<< [Ink_Line::Ink_Line] 初期化する >>> 
  21|************************************************************************/
  22|Ink_Line::Ink_Line()
  23|{
  24|  ListX_init( &m_Points );
  25|}
  26|
  27|
  28|/***********************************************************************
  29|  2-2. <<< [Ink_Line::~Ink_Line] 後始末する >>>
  30|************************************************************************/
  31|Ink_Line::~Ink_Line()
  32|{
  33|  ListX_finish2( &m_Points, Ink_Point, NULL );
  34|}
  35|
  36|
  37| 
  38|/***********************************************************************
  39|  2-3. <<< [Ink_Line::print] CadPrim::print の実装部 >>> 
  40|************************************************************************/
  41|void  Ink_Line::print( const char* title )
  42|{
  43|#ifndef  ERRORS_CUT_DEBUG_TOOL
  44|#endif
  45|}
  46|
  47|
  48|/***********************************************************************
  49|  2-4. <<< [Ink_Line::GetID] CadPrim::GetID の実装部 >>>
  50|************************************************************************/
  51|int  Ink_Line::GetID()
  52|{
  53|  return  -1;
  54|}
  55|
  56|
  57|/***********************************************************************
  58|  2-5. <<< [Ink_Line::SetID] CadPrim::SetID の実装部 >>>
  59|************************************************************************/
  60|void  Ink_Line::SetID( int id )
  61|{
  62|}
  63|
  64|
  65|/***********************************************************************
  66|  2-6. <<< [Ink_Line::GetTypeID] CadPrim::GetTypeID の実装部 >>>
  67|************************************************************************/
  68|int  Ink_Line::GetTypeID()
  69|{
  70|  return  Ink_Line_TypeID;
  71|}
  72|
  73|
  74|/***********************************************************************
  75|  2-7. <<< [Ink_Line::SetBInUndoBuf] CadPrim::SetBInUndoBuf の実装部 >>>
  76|************************************************************************/
  77|void  Ink_Line::SetBInUndoBuf( bool b )
  78|{
  79|}
  80|
  81| 
  82|/***********************************************************************
  83|  2-8. <<< [Ink_Line::OutSVG] SVGファイルに属性値を出力する >>> 
  84|************************************************************************/
  85|void  Ink_Line::OutSVG( CadPrim_SaveParam* p )
  86|{
  87|}
  88| 
  89|/***********************************************************************
  90|  2-9. <<< [Ink_Line::Draw] 描画する >>> 
  91|************************************************************************/
  92|void  Ink_Line::Draw( CDC* dc, CadPrim_DrawParam* p )
  93|{
  94|  Ink_Point*  pt;
  95|  int  x, y;
  96|
  97|  pt = ListX_getFirst( &m_Points, Ink_Point );
  98|  x = pt->x * p->zoom / 100 - p->x0;
  99|  y = pt->y * p->zoom / 100 - p->y0;
 100|  dc->MoveTo( x, y );
 101|
 102|  for ( ListX_forEach( &m_Points, &pt, Ink_Point ) ) {
 103|    x = pt->x * p->zoom / 100 - p->x0;
 104|    y = pt->y * p->zoom / 100 - p->y0;
 105|    dc->LineTo( x, y );
 106|  }
 107|}
 108|
 109|
 110| 
 111|/***********************************************************************
 112|  2-10. <<< [Ink_Line::DrawHandles] ハンドルを描画する >>> 
 113|************************************************************************/
 114|void  Ink_Line::DrawHandles( CDC* dc, CadPrim_DrawParam* p, COLORREF color )
 115|{
 116|}
 117|
 118| 
 119|/***********************************************************************
 120|  2-11. <<< [Ink_Line::copy] CadPrim::copy の実装部 >>> 
 121|************************************************************************/
 122|void  Ink_Line::copy( CadPrim* a, ListX* prims )
 123|{
 124|}
 125|
 126|/***********************************************************************
 127|  2-12. <<< [Ink_Line::isEqual] CadPrim::isEqual の実装部 >>>
 128|************************************************************************/
 129|bool  Ink_Line::isEqual( CadPrim* a )
 130|{
 131|  return  false;
 132|}
 133|
 134|/***********************************************************************
 135|  2-13. <<< [Ink_Line::GetNewCopy] CadPrim::GetNewCopy の実装部 >>>
 136|************************************************************************/
 137|CadPrim*  Ink_Line::GetNewCopy( ListX* prims )
 138|{
 139|  Ink_Line*  r = new Ink_Line;
 140|
 141|  r->copy( this, prims );
 142|  return  r;
 143|}
 144|
 145|
 146|/***********************************************************************
 147|  2-14. <<< [Ink_Line::GetNewCopy] CadPrim::GetSerializedSize の実装部 >>>
 148|************************************************************************/
 149|int   Ink_Line::GetSerializedSize()
 150|{
 151|  return  sizeof(*this);
 152|}
 153|
 154|/***********************************************************************
 155|  2-15. <<< [Ink_Line::CopyToSerial] CadPrim::CopyToSerial の実装部 >>>
 156|************************************************************************/
 157|void  Ink_Line::CopyToSerial( void* a )
 158|{
 159|}
 160|
 161|/***********************************************************************
 162|  2-16. <<< [Ink_Line::CopyFromSerial] CadPrim::CopyFromSerial の実装部 >>>
 163|************************************************************************/
 164|void  Ink_Line::CopyFromSerial( void* a )
 165|{
 166|}
 167|
 168|
 169| 
 170|/***********************************************************************
 171|  2-17. <<< [Ink_Line::GetHitHandleNum] CadPrim::GetHitHandleNum の実装部 >>> 
 172|************************************************************************/
 173|int  Ink_Line::GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow )
 174|{
 175|  return  0;
 176|}
 177|
 178|
 179|/***********************************************************************
 180|  2-18. <<< [Ink_Line::Move] CadPrim::Move の実装部 >>>
 181|************************************************************************/
 182|void  Ink_Line::Move( int dx, int dy )
 183|{
 184|}
 185|
 186|
 187|
 188|/***********************************************************************
 189|  2-19. <<< [Ink_Line::MoveByHandle] ハンドルを動かしてパラメータを変える >>>
 190|************************************************************************/
 191|void  Ink_Line::MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate )
 192|{
 193|}
 194|
 195|
 196|/***********************************************************************
 197|  2-20. <<< [Ink_Line::GetCenterOfHandle] CadPrim::GetCenterOfHandle >>>
 198|************************************************************************/
 199|void  Ink_Line::GetCenterOfHandle( int iHandle, int* x, int* y )
 200|{
 201|}
 202| 
 203|/***********************************************************************
 204|  2-21. <<< [Ink_Line::SetHold] CadPrim::SetHold の実装部 >>> 
 205|************************************************************************/
 206|void  Ink_Line::SetHold( bool b )
 207|{
 208|  m_bHold = b;
 209|}
 210|
 211|/***********************************************************************
 212|  2-22. <<< [Ink_Line::GetHold] CadPrim::GetHold の実装部 >>>
 213|************************************************************************/
 214|bool  Ink_Line::GetHold()
 215|{
 216|  return  m_bHold;
 217|}
 218|
 219|/***********************************************************************
 220|  2-23. <<< [Ink_Line::IsHoldable] CadPrim::IsHoldable の実装部 >>>
 221|************************************************************************/
 222|bool  Ink_Line::IsHoldable()
 223|{
 224|  return  true;
 225|}
 226|
 227|/***********************************************************************
 228|  2-24. <<< [Ink_Line::SetSelected] CadPrim::SetSelected の実装部 >>>
 229|************************************************************************/
 230|void  Ink_Line::SetSelected( bool b )
 231|{
 232|}
 233|
 234|/***********************************************************************
 235|  2-25. <<< [Ink_Line::GetSelected] CadPrim::GetSelected の実装部 >>>
 236|************************************************************************/
 237|bool  Ink_Line::GetSelected()
 238|{
 239|  return  true;
 240|}
 241|
 242| 
 243|/***********************************************************************
 244|  2-26. <<< [Ink_Line::IsMultiSelect] CadPrim::IsMultiSelect の実装部 >>> 
 245|************************************************************************/
 246|bool  Ink_Line::IsMultiSelect( Rect* rect )
 247|{
 248|  return  false;
 249|}
 250|
 251|
 252|/***********************************************************************
 253|  2-27. <<< [Ink_Line::GetForAlign] CadPrim::GetForAlign の実装部 >>>
 254|************************************************************************/
 255|int   Ink_Line::GetForAlign( int iPos )
 256|{
 257|  return  0;
 258|}
 259|
 260|/***********************************************************************
 261|  2-28. <<< [Ink_Line::SetForAlign] CadPrim::SetForAlign の実装部 >>>
 262|************************************************************************/
 263|void  Ink_Line::SetForAlign( int iPos, int value )
 264|{
 265|}
 266|
 267|/***********************************************************************
 268|  2-29. <<< [Ink_Line::GetForFitSize] CadPrim::GetForFitSize の実装部 >>>
 269|************************************************************************/
 270|int   Ink_Line::GetForFitSize( int iAttr )
 271|{
 272|  return  0;
 273|}
 274|
 275|/***********************************************************************
 276|  2-30. <<< [Ink_Line::SetForFitSize] CadPrim::SetForFitSize の実装部 >>>
 277|************************************************************************/
 278|void  Ink_Line::SetForFitSize( int iAttr, int value )
 279|{
 280|}
 281| 
 282|/***********************************************************************
 283|  2-31. <<< [Ink_Line::OnCreated] CadPrim::OnCreated の実装部 >>> 
 284|************************************************************************/
 285|void  Ink_Line::OnCreated()
 286|{
 287|}
 288|
 289| 
 290|/***********************************************************************
 291|  2-32. <<< [Ink_Line::GetNProp] プロパティの要素数を返す >>> 
 292|************************************************************************/
 293|int  Ink_Line::GetNProp()
 294|{
 295|  return  0;
 296|}
 297|
 298|
 299|/***********************************************************************
 300|  2-33. <<< [Ink_Line::GetProp] プロパティの名前と値を取得する >>>
 301|************************************************************************/
 302|int  Ink_Line::GetProp( int iProp, bool bJapanese, char* name, int name_size,
 303|  char* value, int value_size, const char* path, void** option )
 304|{
 305|  return  0;
 306|}
 307|
 308|/***********************************************************************
 309|  2-34. <<< [Ink_Line::SetProp] プロパティの値を設定する >>>
 310|************************************************************************/
 311|void  Ink_Line::SetProp( int iProp, const char* value, const char* path )
 312|{
 313|}
 314|
 315| 
 316|/***********************************************************************
 317|  2-35. <<< [Ink_Line::IsNeedUnicode] CadPrim::IsNeedUnicode の実装部 >>> 
 318|************************************************************************/
 319|bool  Ink_Line::IsNeedUnicode()
 320|{
 321|  return  false;
 322|}
 323|
 324| 
 325|/***********************************************************************
 326|  2-36. <<< [Ink_Line::Scratch] ペンで描く >>> 
 327|************************************************************************/
 328|void  Ink_Line::ScratchStart( CDC* dc, CadPrim_DrawParam* p, int x, int y )
 329|{
 330|  Ink_Point*  pt;
 331|
 332|  pt = ListX_addLastMalloc( &m_Points, Ink_Point );
 333|  pt->x = x;  pt->y = y;
 334|
 335|  m_ScratchX = x;
 336|  m_ScratchY = y;
 337|}
 338|
 339|void  Ink_Line::Scratch( CDC* dc, CadPrim_DrawParam* p, int x, int y )
 340|{
 341|  Ink_Point*  pt;
 342|  int  dx, dy;
 343|
 344|  /* 移動していないときは頂点を更新しない */
 345|  dx = x - m_ScratchX;
 346|  dy = y - m_ScratchY;
 347|  if ( dx < 0 )  dx = -dx;
 348|  if ( dy < 0 )  dy = -dy;
 349|  if ( dx + dy <= 2 )  return;
 350|
 351|
 352|  /* 記録する */
 353|  pt = ListX_addLastMalloc( &m_Points, Ink_Point );
 354|  pt->x = x;  pt->y = y;
 355|
 356|
 357|  /* 描画する */
 358|  dc->MoveTo( m_ScratchX * p->zoom / 100 - p->x0,
 359|              m_ScratchY * p->zoom / 100 - p->y0 );
 360|
 361|  dc->LineTo( x * p->zoom / 100 - p->x0,
 362|              y * p->zoom / 100 - p->y0 );
 363|
 364|  m_ScratchX = x;
 365|  m_ScratchY = y;
 366|}
 367|
 368|void  Ink_Line::ScratchEnd()
 369|{
 370|}
 371|
 372|#endif
 373|
 374| 
 375|