C:\home\SVGCats_src\src\Line.hpp
1|/*********************************************************************** 2| 1. <<< 矩形 C++部 (Line) >>> 3|************************************************************************/ 4| 5|#ifndef __LINE_HPP 6|#define __LINE_HPP 7| 8| 9|/*-----------------------------------------------------------------*/ 10|/* 2. <<< Interface Area ---------------------------------------- >>> */ 11|/*-----------------------------------------------------------------*/ 12| 13|/*********************************************************************** 14| 3. <<< [Line_Ex] ライン・詳細(ディスプレイ表示用) >>> 15|************************************************************************/ 16|class Line_Ex : public CadPrim { 17|public: 18| int m_id; 19| bool m_bInUndoBuf; 20| bool m_bHold; 21| bool m_bSelected; 22| 23| Line m_Line; 24| int m_Width; 25| int m_Color; 26| bool m_bDash; 27| 28| int m_Arrow1; /* 参照:Line_Plus_drawArrow の type 引数 */ 29| int m_Arrow2; 30| Line* m_ArrowsInReading; /* 矢印の位置、読み込み時のみ有効, 1==m_ArrowXは決定 */ 31| 32| CadPrim* m_Controler[2]; 33| int m_Controler_id[2]; /* 0=非リンク、-1=読み込み時、リンク予告 */ 34| CadPrim_Link m_Link[2]; /* [0]=(x1,y1)点, [1]=(x2,y2)点 */ 35| /* CadPrim_Link::prim == NULL:リンクしていない */ 36| 37| Line_Ex(); 38| ~Line_Ex(); 39| void print( const char* title ); 40| int GetID(); 41| void SetID( int id ); 42| void OnChgedLinkID( int oldID, int newID ); 43| int GetTypeID(); 44| char* GetTypeNameJp(); 45| char* GetTypeNameEn(); 46| void SetBInUndoBuf( bool b ); 47| char* GetLinkURL(); 48| char* GetIdLabel(); 49| 50| void OutSVG( CadPrim_SaveParam* p ); 51| void Draw( CDC*, CadPrim_DrawParam* p ); 52| void DrawHandles( CDC*, CadPrim_DrawParam* p, COLORREF color, bool bDrawFrame ); 53| void GetArrowParamType1( int i, Line* leftWing, Line* rightWing ); 54| void GetArrowParamType2( int i, int* x, int* y, int* r ); 55| void GetArrowParamType3( int i, POINT* xy ); 56| void GetArrowParamType4( int i, POINT* xy ); 57| void ConvertByZoom( CadPrim_DrawParam* p, POINT* xy, int nXY ); 58| 59| int GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ); 60| void copy( CadPrim*, ListX* prims ); 61| void copyStyle( CadPrim*, ListX* prims ); 62| bool isEqual( CadPrim* ); 63| CadPrim* GetNewCopy( ListX* prims ); 64| int GetSerializedSize(); 65| void CopyToSerial( void* a ); 66| void CopyFromSerial( void* a ); 67| 68| void Move( int dx, int dy ); 69| void MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ); 70| void GetCenterOfHandle( int iHandle, int* x, int* y ); 71| void SetHold( bool ); 72| bool GetHold(); 73| bool IsHoldable(); 74| void SetSelected( bool ); 75| bool GetSelected(); 76| bool IsMultiSelect( Rect* rect ); 77| int GetForAlign( int iPos ); 78| void SetForAlign( int iPos, int value ); 79| int GetForFitSize( int iAttr ); 80| void SetForFitSize( int iAttr, int value ); 81| void OnCreated(); 82| 83| int GetNProp(); 84| int GetProp( int iProp, bool bJapanese, char* name, int name_size, char* value, int value_size, 85| const char* path, void** option ); 86| void SetProp( int iProp, const char* value, const char* path ); 87| bool IsNeedUnicode(); 88| 89| CadPrim* GetLinkToControler( int iHandle ); 90| int GetLinkIDToControler( int iHandle ); 91| int GetNumOfLinkToControler(); 92| int GetLinkableHandleNum( int x, int y ); 93| void LinkToHandle( int iHandleOfThis, CadPrim* prim, int iHandleOfPrim ); 94| void UnlinkToHandle( CadPrim* prim, int iHandleOfPrim, bool mutual =true ); 95| void UnlinkAll(); 96| void LinkToControler( int iHandle, CadPrim* ctrl ); 97| void UnlinkToControler( int iHandle, CadPrim* ctrl ); 98| void AdjustLinks( ListX* prims ); 99|}; 100| 101|#define Line_Ex_TypeID 1 102| 103| 104| 105|/*********************************************************************** 106| 4. <<< [Line_Corner] 直角ライン >>> 107|【補足】 108|・m_CornerX, m_CornerY のハンドルによって、Z 型に折れ曲がる位置を決定 109| します。 110|************************************************************************/ 111|class Line_Corner : public CadPrim { 112|public: 113| int m_id; 114| bool m_bInUndoBuf; 115| bool m_bHold; 116| bool m_bSelected; 117| 118| Line m_Line; 119| int m_CornerX, m_CornerY; /* 折れ曲がる位置を決定するハンドル */ 120| int m_Dir; /* 下記 */ 121| bool m_SlideCorner; /* m_CornerX, m_CornerY をドラッグでずらす */ 122| int m_Width; 123| int m_Color; 124| bool m_bDash; 125| 126| int m_Arrow1; /* 参照:Line_Plus_drawArrow の type 引数 */ 127| int m_Arrow2; 128| Line* m_ArrowsInReading; /* 矢印の位置、読み込み時のみ有効 */ 129| 130| CadPrim* m_Controler[2]; 131| int m_Controler_id[2]; 132| CadPrim_Link m_Link[2]; /* [0]=(x1,y1)点, [1]=(x2,y2)点 */ 133| /* CadPrim_Link::prim == NULL:リンクしていない */ 134| 135| int m_LinesX[6], m_LinesY[6]; /* 折れ線座標 */ 136| int m_LinesN; /* 頂点数 */ 137| bool m_bArrow1IsLast; 138| 139| Line_Corner(); 140| ~Line_Corner(); 141| void print( const char* title ); 142| int GetID(); 143| void SetID( int id ); 144| void OnChgedLinkID( int oldID, int newID ); 145| int GetTypeID(); 146| char* GetTypeNameJp(); 147| char* GetTypeNameEn(); 148| void SetBInUndoBuf( bool b ); 149| char* GetLinkURL(); 150| char* GetIdLabel(); 151| 152| void OutSVG( CadPrim_SaveParam* p ); 153| void Draw( CDC*, CadPrim_DrawParam* p ); 154| void DrawHandles( CDC*, CadPrim_DrawParam* p, COLORREF color, bool bDrawFrame ); 155| void GetArrowParamType1( int i, Line* leftWing, Line* rightWing ); 156| void GetArrowParamType2( int i, int* x, int* y, int* r ); 157| void GetArrowParamType3( int i, POINT* xy ); 158| void GetArrowParamType4( int i, POINT* xy ); 159| int GetArrowPoint( int i, int* x, int* y ); 160| void ConvertByZoom( CadPrim_DrawParam* p, POINT* xy, int nXY ); 161| 162| int GetHitHandleNum( int x, int y, int zoom, int mode, int* dx, int* dy, int* diff, int* arrow ); 163| void copy( CadPrim*, ListX* prims ); 164| void copyStyle( CadPrim*, ListX* prims ); 165| bool isEqual( CadPrim* ); 166| CadPrim* GetNewCopy( ListX* prims ); 167| int GetSerializedSize(); 168| void CopyToSerial( void* a ); 169| void CopyFromSerial( void* a ); 170| void OnCreated(); 171| 172| void Move( int dx, int dy ); 173| void MoveByHandle( int iHandle, int x, int y, bool bShift, bool bRotate ); 174| void GetCenterOfHandle( int iHandle, int* x, int* y ); 175| bool IsNeedUnicode(); 176| void SetHold( bool ); 177| bool GetHold(); 178| bool IsHoldable(); 179| void SetSelected( bool ); 180| bool GetSelected(); 181| bool IsMultiSelect( Rect* rect ); 182| int GetForAlign( int iPos ); 183| void SetForAlign( int iPos, int value ); 184| int GetForFitSize( int iAttr ); 185| void SetForFitSize( int iAttr, int value ); 186| 187| int GetNProp(); 188| int GetProp( int iProp, bool bJapanese, char* name, int name_size, char* value, int value_size, 189| const char* path, void** option ); 190| void SetProp( int iProp, const char* value, const char* path ); 191| 192| CadPrim* GetLinkToControler( int iHandle ); 193| int GetLinkIDToControler( int iHandle ); 194| int GetNumOfLinkToControler(); 195| int GetLinkableHandleNum( int x, int y ); 196| void LinkToHandle( int iHandleOfThis, CadPrim* prim, int iHandleOfPrim ); 197| void UnlinkToHandle( CadPrim* prim, int iHandleOfPrim, bool mutual =true ); 198| void UnlinkAll(); 199| void LinkToControler( int iHandle, CadPrim* ctrl ); 200| void UnlinkToControler( int iHandle, CadPrim* ctrl ); 201| void AdjustLinks( ListX* prims ); 202| 203| void GetLines(); 204|}; 205| 206|#define Line_Corner_TypeID 5 207| 208|/* 5. <<<[Line_Corner::m_Dir]>>> */ 209|#define Line_DirZ 0 /* 横縦横 */ 210|#define Line_DirN 1 /* 縦横縦 */ 211| 212| 213|/*********************************************************************** 214| 6. <<< [Line_Plus] ライン描画補助 >>> 215|************************************************************************/ 216|void Line_Plus_getArrowParamType1( int x1, int y1, int x2, int y2, 217| int length, Line* leftWing, Line* rightWing ); 218|void Line_Plus_getArrowParamType3( int x1, int y1, int x2, int y2, 219| int length, POINT* xy ); 220|void Line_Plus_getArrowParamType4( int x1, int y1, int x2, int y2, 221| int length, POINT* xy ); 222| 223| 224| 225|/*-----------------------------------------------------------------*/ 226|/* 7. <<< Mapping Area ------------------------------------------ >>> */ 227|/*-----------------------------------------------------------------*/ 228| 229| 230|#endif 231| 232|