forked from fricas/fricas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
viewpack.spad
122 lines (107 loc) · 5.48 KB
/
viewpack.spad
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
)abbrev package VIEW ViewportPackage
++ Author: Jim Wen
++ Date Created: 30 April 1989
++ Basic Operations: graphCurves, drawCurves, coerce
++ Related Constructors:
++ Also See:
++ AMS Classifications:
++ Keywords:
++ References:
++ Description: ViewportPackage provides functions for creating GraphImages
++ and TwoDimensionalViewports from lists of lists of points.
ViewportPackage() : Exports == Implementation where
DROP ==> DrawOption
GRIMAGE ==> GraphImage
L ==> List
P ==> Point DoubleFloat
PAL ==> Palette
PI ==> PositiveInteger
VIEW2D ==> TwoDimensionalViewport
Exports ==> with
graphCurves : (L L P, PAL, PAL, PI, L DROP) -> GRIMAGE
++ graphCurves([[p0], [p1], ..., [pn]], ptColor, lineColor, ptSize, [options])
++ creates a \spadtype{GraphImage} from the list of lists of points, p0
++ throught pn, using the options specified in the list \spad{options}.
++ The graph point color is specified by \spad{ptColor}, the graph line
++ color is specified by \spad{lineColor}, and the size of the points is
++ specified by \spad{ptSize}.
graphCurves : L L P -> GRIMAGE
++ graphCurves([[p0], [p1], ..., [pn]]) creates a \spadtype{GraphImage} from
++ the list of lists of points indicated by p0 through pn.
graphCurves : (L L P, L DROP) -> GRIMAGE
++ graphCurves([[p0], [p1], ..., [pn]], [options]) creates a
++ \spadtype{GraphImage} from the list of lists of points, p0 throught pn,
++ using the options specified in the list \spad{options}.
drawCurves : (L L P, PAL, PAL, PI, L DROP) -> VIEW2D
++ drawCurves([[p0], [p1], ..., [pn]], ptColor, lineColor, ptSize, [options])
++ creates a \spadtype{TwoDimensionalViewport} from the list of lists of
++ points, p0 throught pn, using the options specified in the list
++ \spad{options}. The point color is specified by \spad{ptColor}, the
++ line color is specified by \spad{lineColor}, and the point size is
++ specified by \spad{ptSize}.
drawCurves : (L L P, L DROP) -> VIEW2D
++ drawCurves([[p0], [p1], ..., [pn]], [options]) creates a
++ \spadtype{TwoDimensionalViewport} from the list of lists of points,
++ p0 throught pn, using the options specified in the list \spad{options};
coerce : GRIMAGE -> VIEW2D
++ coerce(gi) converts the indicated \spadtype{GraphImage}, gi, into the
++ \spadtype{TwoDimensionalViewport} form.
Implementation ==> add
import from ViewDefaultsPackage
import from DrawOptionFunctions0
--% Functions that return GraphImages
graphCurves(listOfListsOfPoints) ==
graphCurves(listOfListsOfPoints, pointColorDefault(), _
lineColorDefault(), pointSizeDefault(), [])
graphCurves(listOfListsOfPoints, optionsList) ==
graphCurves(listOfListsOfPoints, pointColorDefault(), _
lineColorDefault(), pointSizeDefault(), optionsList)
graphCurves(listOfListsOfPoints, ptColor, lineColor, ptSize, optionsList) ==
len := #listOfListsOfPoints
listOfPointColors : L PAL := [ptColor for i in 1..len]
listOfLineColors : L PAL := [lineColor for i in 1..len]
listOfPointSizes : L PI := [ptSize for i in 1..len]
makeGraphImage(listOfListsOfPoints, listOfPointColors, _
listOfLineColors, listOfPointSizes, optionsList)
--% Functions that return Two Dimensional Viewports
drawCurves(listOfListsOfPoints, optionsList) ==
drawCurves(listOfListsOfPoints, pointColorDefault(), _
lineColorDefault(), pointSizeDefault(), optionsList)
drawCurves(ptLists : L L P, ptColor : PAL, lColor : PAL, ptSize : PI, optList : L DROP) ==
v := viewport2D()
options(v, optList)
g := graphCurves(ptLists, ptColor, lColor, ptSize, optList)
putGraph(v, g, 1)
makeViewport2D v
--% Coercions
coerce(graf : GRIMAGE) : VIEW2D == makeViewport2D(graf, [])
--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
--All rights reserved.
--
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are
--met:
--
-- - Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
--
-- - Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in
-- the documentation and/or other materials provided with the
-- distribution.
--
-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-- names of its contributors may be used to endorse or promote products
-- derived from this software without specific prior written permission.
--
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.