⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplegraph.hpp

📁 矢量绘图组件(开源版)
💻 HPP
📖 第 1 页 / 共 5 页
字号:
	__property Types::TRect BoundsRect = {read=GetBoundsRect, write=SetBoundsRect};
	__property Types::TRect VisualRect = {read=fVisualRect};
	__property Types::TRect SelectedVisualRect = {read=GetSelectedVisualRect};
	__property TGraphObject* Dependents[int Index] = {read=GetDependents};
	__property int DependentCount = {read=GetDependentCount, nodefault};
	__property TGraphLink* LinkInputs[int Index] = {read=GetLinkInputs};
	__property int LinkInputCount = {read=GetLinkInputCount, nodefault};
	__property TGraphLink* LinkOutputs[int Index] = {read=GetLinkOutputs};
	__property int LinkOutputCount = {read=GetLinkOutputCount, nodefault};
	__property void * Data = {read=fData, write=fData};
	__property unsigned ID = {read=fID, nodefault};
	
__published:
	__property AnsiString Text = {read=fText, write=SetText};
	__property AnsiString Hint = {read=fHint, write=SetHint};
	__property Graphics::TBrush* Brush = {read=fBrush, write=SetBrush};
	__property Graphics::TPen* Pen = {read=fPen, write=SetPen};
	__property Graphics::TFont* Font = {read=fFont, write=SetFont, stored=IsFontStored};
	__property bool ParentFont = {read=fParentFont, write=SetParentFont, default=1};
	__property TGraphObjectOptions Options = {read=fOptions, write=SetOptions, default=7};
	__property bool Visible = {read=fVisible, write=SetVisible, default=1};
	__property int Tag = {read=fTag, write=fTag, default=0};
	__property bool HasCustomData = {read=fHasCustomData, write=SetHasCustomData, default=0};
};


#pragma option push -b-
enum TGraphLinkOption { gloFixedStartPoint, gloFixedEndPoint, gloFixedBreakPoints };
#pragma option pop

typedef Set<TGraphLinkOption, gloFixedStartPoint, gloFixedBreakPoints>  TGraphLinkOptions;

#pragma option push -b-
enum TLinkBeginEndStyle { lsNone, lsArrow, lsArrowSimple, lsCircle, lsDiamond };
#pragma option pop

#pragma option push -b-
enum SimpleGraph__21 { lnoDeleteSamePoint, lnoDeleteSameAngle };
#pragma option pop

typedef Set<SimpleGraph__21, lnoDeleteSamePoint, lnoDeleteSameAngle>  TLinkNormalizeOptions;

#pragma option push -b-
enum TLinkChangeMode { lcmNone, lcmInsertPoint, lcmRemovePoint, lcmMovePoint, lcmMovePolyline };
#pragma option pop

class PASCALIMPLEMENTATION TGraphLink : public TGraphObject 
{
	typedef TGraphObject inherited;
	
private:
	DynamicArray<Types::TPoint >  fPoints;
	int fPointCount;
	TGraphObject* fSource;
	TGraphObject* fTarget;
	int fTextPosition;
	int fTextSpacing;
	TLinkBeginEndStyle fBeginStyle;
	Byte fBeginSize;
	TLinkBeginEndStyle fEndStyle;
	Byte fEndSize;
	TGraphLinkOptions fLinkOptions;
	HRGN fTextRegion;
	double fTextAngle;
	#pragma pack(push, 1)
	Types::TPoint fTextCenter;
	#pragma pack(pop)
	
	int fTextLine;
	TLinkChangeMode fChangeMode;
	bool fAcceptingHook;
	TGraphObject* fHookingObject;
	int fMovingPoint;
	unsigned SourceID;
	unsigned TargetID;
	bool UpdatingEndPoints;
	bool CheckingLink;
	void __fastcall SetSource(TGraphObject* Value);
	void __fastcall SetTarget(TGraphObject* Value);
	void __fastcall SetLinkOptions(TGraphLinkOptions Value);
	void __fastcall SetTextPosition(int Value);
	void __fastcall SetTextSpacing(int Value);
	void __fastcall SetBeginStyle(TLinkBeginEndStyle Value);
	void __fastcall SetBeginSize(Byte Value);
	void __fastcall SetEndStyle(TLinkBeginEndStyle Value);
	void __fastcall SetEndSize(Byte Value);
	Types::TPoint __fastcall GetPoints(int Index);
	void __fastcall SetPoints(int Index, const Types::TPoint &Value);
	void __fastcall SetPolyline(const TPoints Value);
	void __fastcall ReadSource(Classes::TReader* Reader);
	void __fastcall WriteSource(Classes::TWriter* Writer);
	void __fastcall ReadTarget(Classes::TReader* Reader);
	void __fastcall WriteTarget(Classes::TWriter* Writer);
	void __fastcall ReadPoints(Classes::TStream* Stream);
	void __fastcall WritePoints(Classes::TStream* Stream);
	void __fastcall ReadFromNode(Classes::TReader* Reader);
	void __fastcall ReadToNode(Classes::TReader* Reader);
	void __fastcall ReadKind(Classes::TReader* Reader);
	void __fastcall ReadArrowSize(Classes::TReader* Reader);
	
protected:
	virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
	virtual void __fastcall Loaded(void);
	virtual Types::TPoint __fastcall FixHookAnchor();
	virtual Types::TPoint __fastcall RelativeHookAnchor(const Types::TPoint &RefPt);
	virtual void __fastcall ReplaceID(unsigned OldID, unsigned NewID);
	virtual void __fastcall ReplaceObject(TGraphObject* OldObject, TGraphObject* NewObject);
	virtual void __fastcall NotifyDependents(TGraphDependencyChangeFlag Flag);
	virtual void __fastcall UpdateDependencyTo(TGraphObject* GraphObject, TGraphDependencyChangeFlag Flag);
	virtual void __fastcall UpdateDependencies(void);
	virtual void __fastcall LookupDependencies(void);
	virtual bool __fastcall UpdateTextPlacement(bool Recalc, int dX, int dY);
	virtual HRGN __fastcall CreateTextRegion(void);
	virtual int __fastcall IndexOfLongestLine(void);
	virtual int __fastcall IndexOfNearestLine(const Types::TPoint &Pt, int Neighborhood);
	virtual void __fastcall QueryVisualRect(/* out */ Types::TRect &Rect);
	virtual unsigned __fastcall QueryHitTest(const Types::TPoint &Pt);
	virtual Controls::TCursor __fastcall QueryCursor(unsigned HT);
	virtual TObjectSides __fastcall QueryMobility(unsigned HT);
	virtual bool __fastcall OffsetHitTest(unsigned HT, int dX, int dY);
	virtual void __fastcall SnapHitTestOffset(unsigned HT, int &dX, int &dY);
	virtual bool __fastcall BeginFollowDrag(unsigned HT);
	virtual void __fastcall MoveBy(int dX, int dY);
	virtual void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, const Types::TPoint &Pt);
	virtual void __fastcall MouseMove(Classes::TShiftState Shift, const Types::TPoint &Pt);
	virtual void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, const Types::TPoint &Pt);
	virtual void __fastcall UpdateChangeMode(unsigned HT, Classes::TShiftState Shift);
	virtual int __fastcall PointStyleOffset(TLinkBeginEndStyle Style, int Size);
	virtual Types::TRect __fastcall PointStyleRect(const Types::TPoint &Pt, const double Angle, TLinkBeginEndStyle Style, int Size);
	virtual Types::TPoint __fastcall DrawPointStyle(Graphics::TCanvas* Canvas, const Types::TPoint &Pt, const double Angle, TLinkBeginEndStyle Style, int Size);
	virtual void __fastcall DrawControlPoints(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawHighlight(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawText(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawBody(Graphics::TCanvas* Canvas);
	virtual void __fastcall SetBoundsRect(const Types::TRect &Rect);
	virtual Types::TRect __fastcall GetBoundsRect();
	__property HRGN TextRegion = {read=fTextRegion, nodefault};
	__property double TextAngle = {read=fTextAngle};
	__property Types::TPoint TextCenter = {read=fTextCenter};
	__property int TextLine = {read=fTextLine, nodefault};
	__property TLinkChangeMode ChangeMode = {read=fChangeMode, write=fChangeMode, nodefault};
	__property bool AcceptingHook = {read=fAcceptingHook, nodefault};
	__property TGraphObject* HookingObject = {read=fHookingObject};
	__property int MovingPoint = {read=fMovingPoint, nodefault};
	
public:
	__fastcall virtual TGraphLink(TSimpleGraph* AOwner);
	__fastcall virtual TGraphLink(TSimpleGraph* AOwner, TGraphObject* ASource, const Types::TPoint * Pts, const int Pts_Size, TGraphObject* ATarget);
	__fastcall virtual ~TGraphLink(void);
	virtual void __fastcall Assign(Classes::TPersistent* Source);
	virtual bool __fastcall ContainsRect(const Types::TRect &Rect);
	virtual bool __fastcall CanMove(void);
	virtual int __fastcall AddPoint(const Types::TPoint &Pt);
	virtual void __fastcall InsertPoint(int Index, const Types::TPoint &Pt);
	virtual void __fastcall RemovePoint(int Index);
	virtual int __fastcall IndexOfPoint(const Types::TPoint &Pt, int Neighborhood = 0x0);
	virtual int __fastcall AddBreakPoint(const Types::TPoint &Pt);
	virtual bool __fastcall NormalizeBreakPoints(TLinkNormalizeOptions Options);
	virtual bool __fastcall IsFixedPoint(int Index, bool HookedPointsAsFixed);
	virtual bool __fastcall IsHookedPoint(int Index);
	virtual TGraphObject* __fastcall HookedObjectOf(int Index);
	virtual int __fastcall HookedIndexOf(TGraphObject* GraphObject);
	virtual int __fastcall HookedPointCount(void);
	virtual bool __fastcall CanHook(int Index, TGraphObject* GraphObject);
	virtual bool __fastcall Hook(int Index, TGraphObject* GraphObject);
	virtual int __fastcall Unhook(TGraphObject* GraphObject)/* overload */;
	virtual bool __fastcall Unhook(int Index)/* overload */;
	virtual bool __fastcall CanLink(TGraphObject* ASource, TGraphObject* ATarget);
	virtual bool __fastcall Link(TGraphObject* ASource, TGraphObject* ATarget);
	virtual bool __fastcall Rotate(const double Angle, const Types::TPoint &Origin);
	virtual bool __fastcall Scale(const double Factor);
	virtual void __fastcall Reverse(void);
	/* virtual class method */ virtual bool __fastcall IsLink(TMetaClass* vmt);
	__property TGraphObject* Source = {read=fSource, write=SetSource};
	__property TGraphObject* Target = {read=fTarget, write=SetTarget};
	__property Types::TPoint Points[int Index] = {read=GetPoints, write=SetPoints};
	__property int PointCount = {read=fPointCount, nodefault};
	__property TPoints Polyline = {read=fPoints, write=SetPolyline};
	
__published:
	__property TLinkBeginEndStyle BeginStyle = {read=fBeginStyle, write=SetBeginStyle, default=0};
	__property Byte BeginSize = {read=fBeginSize, write=SetBeginSize, default=6};
	__property TLinkBeginEndStyle EndStyle = {read=fEndStyle, write=SetEndStyle, default=1};
	__property Byte EndSize = {read=fEndSize, write=SetEndSize, default=6};
	__property TGraphLinkOptions LinkOptions = {read=fLinkOptions, write=SetLinkOptions, default=0};
	__property int TextPosition = {read=fTextPosition, write=SetTextPosition, default=-1};
	__property int TextSpacing = {read=fTextSpacing, write=SetTextSpacing, default=0};
protected:
	#pragma option push -w-inl
	/* TGraphObject.CreateAsReplacement */ inline __fastcall virtual TGraphLink(TGraphObject* AGraphObject) : TGraphObject(AGraphObject) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TGraphObject.CreateFromStream */ inline __fastcall virtual TGraphLink(TSimpleGraph* AOwner, Classes::TStream* AStream) : TGraphObject(AOwner, AStream) { }
	#pragma option pop
	
};


#pragma option push -b-
enum TGraphNodeOption { gnoMovable, gnoResizable, gnoShowBackground };
#pragma option pop

typedef Set<TGraphNodeOption, gnoMovable, gnoShowBackground>  TGraphNodeOptions;

class PASCALIMPLEMENTATION TGraphNode : public TGraphObject 
{
	typedef TGraphObject inherited;
	
private:
	int fLeft;
	int fTop;
	int fWidth;
	int fHeight;
	Classes::TAlignment fAlignment;
	Stdctrls::TTextLayout fLayout;
	int fMargin;
	Graphics::TPicture* fBackground;
	#pragma pack(push, 1)
	Types::TRect fBackgroundMargins;
	#pragma pack(pop)
	
	TGraphNodeOptions fNodeOptions;
	HRGN fRegion;
	#pragma pack(push, 1)
	Types::TRect fTextRect;
	#pragma pack(pop)
	
	void __fastcall SetLeft(int Value);
	void __fastcall SetTop(int Value);
	void __fastcall SetWidth(int Value);
	void __fastcall SetHeight(int Value);
	void __fastcall SetAlignment(Classes::TAlignment Value);
	void __fastcall SetLayout(Stdctrls::TTextLayout Value);
	void __fastcall SetMargin(int Value);
	void __fastcall SetNodeOptions(TGraphNodeOptions Value);
	void __fastcall SetBackground(Graphics::TPicture* Value);
	void __fastcall SetBackgroundMargins(const Types::TRect &Value);
	void __fastcall BackgroundChanged(System::TObject* Sender);
	void __fastcall ReadBackgroundMargins(Classes::TReader* Reader);
	void __fastcall WriteBackgroundMargins(Classes::TWriter* Writer);
	
protected:
	virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
	virtual void __fastcall Initialize(void);
	virtual Types::TPoint __fastcall FixHookAnchor();
	virtual Types::TPoint __fastcall RelativeHookAnchor(const Types::TPoint &RefPt);
	virtual TPoints __fastcall LinkIntersect(const Types::TPoint &LinkPt, const double LinkAngle) = 0 ;
	virtual void __fastcall BoundsChanged(int dX, int dY, int dCX, int dCY);
	virtual bool __fastcall UpdateTextPlacement(bool Recalc, int dX, int dY);
	virtual void __fastcall QueryMaxTextRect(/* out */ Types::TRect &Rect);
	virtual void __fastcall QueryTextRect(/* out */ Types::TRect &Rect);
	virtual HRGN __fastcall CreateRegion(void) = 0 ;
	virtual HRGN __fastcall CreateClipRgn(Graphics::TCanvas* Canvas);
	virtual void __fastcall QueryVisualRect(/* out */ Types::TRect &Rect);
	virtual unsigned __fastcall QueryHitTest(const Types::TPoint &Pt);
	virtual Controls::TCursor __fastcall QueryCursor(unsigned HT);
	virtual TObjectSides __fastcall QueryMobility(unsigned HT);
	virtual bool __fastcall OffsetHitTest(unsigned HT, int dX, int dY);
	virtual void __fastcall SnapHitTestOffset(unsigned HT, int &dX, int &dY);
	virtual bool __fastcall BeginFollowDrag(unsigned HT);
	virtual void __fastcall MoveBy(int dX, int dY);
	virtual void __fastcall DrawControlPoints(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawHighlight(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawText(Graphics::TCanvas* Canvas);
	virtual void __fastcall DrawBackground(Graphics::TCanvas* Canv

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -