📄 simplegraph.hpp
字号:
__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 + -