-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathFigProfile.m
More file actions
135 lines (80 loc) · 5.08 KB
/
Copy pathFigProfile.m
File metadata and controls
135 lines (80 loc) · 5.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
(* ::Package:: *)
(*Header comments*)
(* :Title: FigShape *)
(* :Context: SciDraw` *)
(* :Summary: Basic drawing shapes *)
(* :Author: Mark A. Caprio, Department of Physics, University of Notre Dame *)
(* :Copyright: Copyright FIGYEAR, Mark A. Caprio *)
(* :Package Version: FIGVERSION *)
(* :Mathematica Version: MATHVERSION *)
(* :Discussion: FIGDISCUSSION *)
(* :History: See package information file. *)
(*Begin package*)
(*Package context definition*)
BeginPackage["SciDraw`",SciDraw`Private`$ExternalContexts];
Unprotect[Evaluate[$Context<>"*"]];
(*Object usage*)
FigTest1::usage="FIGURE OBJECT.";
(*Begin private context*)
Begin["`Private`"];
(*Dependencies*)
(*FigLine*)
(*Object declaration*)
DeclareFigClass[
FigTest1,
{"Points"}, (* data members *)
{}, (* member functions *)
{} (* attached labels *)
];
DefineFigClassOptions[
FigTest1,
{
(* curve/arrowhead *)
FigArrowheadOptions[False,False],
FigCurveOptions,
"Draw"->True
}
];
(*Constructor*)
Constructor[Class:FigTest1,Self_Object][Curve:FigCurvePattern,Opts___?OptionQ]:=FigObjectWrapper[Class,Self,{Opts},
Module[
{CanvasPoints,InterpolationFunction},
(* validate extra options *)
FigCheckArrowheadOptions[Self];
FigCheckCurveOptions[Self];
(* prerequisite calculations *)
CanvasPoints=FigResolveCurve[Self,Curve,FigOptions];
(* save data needed for anchor generation *)
Self@SetPoints[CanvasPoints];
(* make graphics elements *)
If[
TrueQ[("Draw"/.FigOptions)],
(* curve *)
FigLineElement[
{Line[CanvasPoints]},
FigOptions
];
(* arrowheads *)
FigLineElement[
{Line[FigCurveArrowheadPoints[
Self@MakeAnchor[Tail,None],
Self@MakeAnchor[Head,None],
FigOptions
]]},
Flatten[{LineDashing->None,FigOptions}]
]
];
]
];
(*Methods*)
MakeAnchor[Class:FigTest1,Self_Object][Name_,Arg:_]:=FigMakeAnchorWrapper[Class,Self,Name,Arg,
FigCurveAnchorFromPoints[Self@GetPoints[],Name,Arg]
];
MakeBoundingBox[Class:FigTest1,Self_Object][]:=FigCurveBoundingBox[Self@GetPoints[]];
(*End package*)
(*Exit private context*)
End[];
(*Exit package context*)
Protect[Evaluate[$Context<>"*"]];
Unprotect[Evaluate[$Context<>"$*"]];
EndPackage[];