]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/Scenegraph.scl
401f2d8afaaaec6dc6816c38ec507930a101ca8b
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / Scenegraph.scl
1 import "Simantics/DB"
2 import "Simantics/Diagram"
3 import "Simantics/Rename"
4
5 importJava "org.simantics.g2d.canvas.ICanvasContext" where
6     data ICanvasContext
7     
8     @JavaName dispose
9     disposeCanvasContext :: ICanvasContext -> <Proc> ()
10     
11 importJava "org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider" where
12     data ICanvasSceneGraphProvider
13     
14     getCanvasContext :: ICanvasSceneGraphProvider -> ICanvasContext 
15
16 importJava "org.simantics.modeling.SCLScenegraph" where
17     sceneGraphTest :: ICanvasContext -> String -> String -> <Proc> String
18
19     getAllNodes :: ICanvasContext -> String
20     
21     getBoundsNodes :: ICanvasContext -> String
22     
23     getBackgroundNodes :: ICanvasContext -> String
24     
25     getDataNodes :: ICanvasContext -> String
26     
27     getNavigationNodes :: ICanvasContext -> String
28     
29     getParentNodes :: ICanvasContext -> String
30     
31     getDecorationNodes :: ICanvasContext -> String
32
33     getSingleElementNodes :: ICanvasContext -> String
34     
35     getConnectionNodes :: ICanvasContext -> String
36     
37     getTextNodes :: ICanvasContext -> String
38     
39     getItemNodes :: ICanvasContext -> String
40     
41     @JavaName getNodeText
42     getText :: ICanvasContext -> String -> String 
43     
44     @JavaName getNodeCount
45     getCount :: ICanvasContext -> String
46     
47     @JavaName getNodeTransform
48     getTransform :: ICanvasContext -> String -> String
49     
50     getBackgroundColor :: ICanvasContext -> Maybe [Integer]
51     
52     @Deprecated
53     getICanvasSceneGraphProvider :: Model -> Resource -> String -> <Proc> ICanvasSceneGraphProvider
54     
55     @Deprecated
56     disposeSceneGraphProvider :: ICanvasSceneGraphProvider -> <Proc> ()
57     
58     doWithICanvasSceneGraphProvider :: Resource -> (ICanvasSceneGraphProvider -> <e> a) -> <Proc, Exception> a
59     
60     doWithCanvasContext :: Resource -> (ICanvasContext -> <e> a) -> <Proc, Exception> a
61     
62     editNodeText :: ICanvasContext -> String -> String -> String -> <Proc> String
63     
64     copyPaste :: ICanvasContext -> ICanvasContext -> [Resource] -> <Proc> Boolean
65     
66     renderSVG :: ICanvasContext -> <Proc> String
67
68     "Render an SVG with known width and height in pixels: `renderScaledSVG context width height`"
69     @JavaName renderSVG
70     renderScaledSVG :: ICanvasContext -> Double -> Double -> <Proc> String
71     
72     @JavaName renderSVG
73     renderScaledAndAlignedSVG :: ICanvasContext -> Double -> Double -> Integer -> Integer -> <Proc> String
74
75 importJava "org.eclipse.swt.SWT" where
76     
77     @JavaName LEFT
78     ALIGN_LEFT :: Integer
79     
80     @JavaName RIGHT
81     ALIGN_RIGHT :: Integer
82     
83     @JavaName CENTER
84     ALIGN_CENTER :: Integer
85     
86     @JavaName TOP
87     ALIGN_TOP :: Integer
88     
89     @JavaName BOTTOM
90     ALIGN_BOTTOM :: Integer
91
92 getSceneGraphProvider :: Diagram -> <Proc> ICanvasSceneGraphProvider
93 getSceneGraphProvider diagram = do
94     diagramName = syncRead(\() -> getSafeName diagram)
95     diagramRVI = "/" + diagramName
96     model = syncRead(\() -> fromJust $ possibleIndexRoot diagram)
97     composite = syncRead(\() -> compositeToDiagram' diagram)
98     getICanvasSceneGraphProvider model composite diagramRVI
99
100 getDiagramContext :: ICanvasSceneGraphProvider -> ICanvasContext
101 getDiagramContext provider = do
102     getCanvasContext provider
103     
104 getNodeTransform :: Diagram -> String -> <Proc> String
105 getNodeTransform diagram nodeName = do
106     diagramName = syncRead(\() -> getSafeName diagram)
107     diagramRVI = "/" + diagramName
108     model = syncRead(\() -> getPossibleModel diagram)
109     composite = syncRead(\() -> compositeToDiagram' diagram)
110     provider = getICanvasSceneGraphProvider model composite diagramRVI
111     context = getCanvasContext provider
112     getTransform context nodeName
113     
114 getNodeText :: Diagram -> String -> <Proc> String
115 getNodeText diagram nodeName = do
116     diagramName = syncRead(\() -> getSafeName diagram)
117     diagramRVI = "/" + diagramName
118     model = syncRead(\() -> getPossibleModel diagram)
119     composite = syncRead(\() -> compositeToDiagram' diagram)
120     provider = getICanvasSceneGraphProvider model composite diagramRVI
121     context = getCanvasContext provider
122     getText context nodeName
123
124 getNodeCount :: Diagram -> <Proc> String
125 getNodeCount diagram = do
126     diagramName = syncRead(\() -> getSafeName diagram)
127     diagramRVI = "/" + diagramName
128     model = syncRead(\() -> getPossibleModel diagram)
129     composite = syncRead(\() -> compositeToDiagram' diagram)
130     provider = getICanvasSceneGraphProvider model composite diagramRVI
131     context = getCanvasContext provider 
132     getCount context
133
134 importJava "org.simantics.scenegraph.g2d.G2DNodeModification" where
135     data G2DNodeModification
136     @JavaName "<init>"
137     createG2DNodeModification :: [SVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification 
138     @JavaName "<init>"
139     createG2DNodeModification3 :: [SVGNodeAssignment] -> [TargetedSVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification 
140     
141 importJava "org.simantics.scenegraph.g2d.nodes.SVGNodeAssignment" where
142     data SVGNodeAssignment
143     @JavaName "<init>"
144     createSVGNodeAssignment :: String -> String -> String -> SVGNodeAssignment 
145     
146 importJava "org.simantics.scenegraph.g2d.nodes.TargetedSVGNodeAssignment" where
147     data TargetedSVGNodeAssignment
148     @JavaName "<init>"
149     createTargetedSVGNodeAssignment :: a -> String -> String -> String -> TargetedSVGNodeAssignment 
150
151 importJava "org.simantics.scenegraph.g2d.nodes.TransformationAssignment" where
152     data TransformationAssignment
153     @JavaName "<init>"
154     createTransformationAssignment :: a -> AffineTransform -> TransformationAssignment
155     
156 importJava "java.awt.geom.AffineTransform" where
157     data AffineTransform
158     @JavaName "<init>"
159     createAffineTransform :: Double -> Double -> Double -> Double -> Double -> Double -> AffineTransform
160
161 importJava "org.simantics.scenegraph.g2d.AffineTransformFunctions" where
162     transform :: AffineTransform -> (Double,Double) -> (Double,Double)
163     inverseTransform :: AffineTransform -> (Double,Double) -> (Double,Double)
164