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|