Merge "Reading background color of a ICanvasContext with SCL"
[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 importJava "org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider" where
9     data ICanvasSceneGraphProvider
10     
11     getCanvasContext :: ICanvasSceneGraphProvider -> ICanvasContext 
12
13 importJava "org.simantics.modeling.SCLScenegraph" where
14     sceneGraphTest :: ICanvasContext -> String -> String -> <Proc> String
15
16     getAllNodes :: ICanvasContext -> String
17     
18     getBoundsNodes :: ICanvasContext -> String
19     
20     getBackgroundNodes :: ICanvasContext -> String
21     
22     getDataNodes :: ICanvasContext -> String
23     
24     getNavigationNodes :: ICanvasContext -> String
25     
26     getParentNodes :: ICanvasContext -> String
27     
28     getDecorationNodes :: ICanvasContext -> String
29
30     getSingleElementNodes :: ICanvasContext -> String
31     
32     getConnectionNodes :: ICanvasContext -> String
33     
34     getTextNodes :: ICanvasContext -> String
35     
36     getItemNodes :: ICanvasContext -> String
37     
38     @JavaName getNodeText
39     getText :: ICanvasContext -> String -> String 
40     
41     @JavaName getNodeCount
42     getCount :: ICanvasContext -> String
43     
44     @JavaName getNodeTransform
45     getTransform :: ICanvasContext -> String -> String
46     
47     getBackgroundColor :: ICanvasContext -> Maybe [Integer]
48     
49     @Deprecated
50     getICanvasSceneGraphProvider :: Model -> Resource -> String -> <Proc> ICanvasSceneGraphProvider
51     
52     @Deprecated
53     disposeSceneGraphProvider :: ICanvasSceneGraphProvider -> <Proc> ()
54     
55     doWithICanvasSceneGraphProvider :: Resource -> (ICanvasSceneGraphProvider -> <e> a) -> <Proc, Exception> a
56     
57     doWithCanvasContext :: Resource -> (ICanvasContext -> <e> a) -> <Proc, Exception> a
58     
59     editNodeText :: ICanvasContext -> String -> String -> String -> <Proc> String
60     
61     copyPaste :: ICanvasContext -> ICanvasContext -> [Resource] -> <Proc> Boolean
62     
63     renderSVG :: ICanvasContext -> <Proc> String
64
65     "Render an SVG with known width and height in pixels: `renderScaledSVG context width height`"
66     @JavaName renderSVG
67     renderScaledSVG :: ICanvasContext -> Double -> Double -> <Proc> String
68
69 getSceneGraphProvider :: Diagram -> <Proc> ICanvasSceneGraphProvider
70 getSceneGraphProvider diagram = do
71     diagramName = syncRead(\() -> getSafeName diagram)
72     diagramRVI = "/" + diagramName
73     model = syncRead(\() -> fromJust $ possibleIndexRoot diagram)
74     composite = syncRead(\() -> compositeToDiagram' diagram)
75     getICanvasSceneGraphProvider model composite diagramRVI
76
77 getDiagramContext :: ICanvasSceneGraphProvider -> ICanvasContext
78 getDiagramContext provider = do
79     getCanvasContext provider
80     
81 getNodeTransform :: Diagram -> String -> <Proc> String
82 getNodeTransform diagram nodeName = do
83     diagramName = syncRead(\() -> getSafeName diagram)
84     diagramRVI = "/" + diagramName
85     model = syncRead(\() -> getPossibleModel diagram)
86     composite = syncRead(\() -> compositeToDiagram' diagram)
87     provider = getICanvasSceneGraphProvider model composite diagramRVI
88     context = getCanvasContext provider
89     getTransform context nodeName
90     
91 getNodeText :: Diagram -> String -> <Proc> String
92 getNodeText diagram nodeName = do
93     diagramName = syncRead(\() -> getSafeName diagram)
94     diagramRVI = "/" + diagramName
95     model = syncRead(\() -> getPossibleModel diagram)
96     composite = syncRead(\() -> compositeToDiagram' diagram)
97     provider = getICanvasSceneGraphProvider model composite diagramRVI
98     context = getCanvasContext provider
99     getText context nodeName
100
101 getNodeCount :: Diagram -> <Proc> String
102 getNodeCount diagram = do
103     diagramName = syncRead(\() -> getSafeName diagram)
104     diagramRVI = "/" + diagramName
105     model = syncRead(\() -> getPossibleModel diagram)
106     composite = syncRead(\() -> compositeToDiagram' diagram)
107     provider = getICanvasSceneGraphProvider model composite diagramRVI
108     context = getCanvasContext provider 
109     getCount context
110
111 importJava "org.simantics.scenegraph.g2d.G2DNodeModification" where
112     data G2DNodeModification
113     @JavaName "<init>"
114     createG2DNodeModification :: [SVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification 
115     @JavaName "<init>"
116     createG2DNodeModification3 :: [SVGNodeAssignment] -> [TargetedSVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification 
117     
118 importJava "org.simantics.scenegraph.g2d.nodes.SVGNodeAssignment" where
119     data SVGNodeAssignment
120     @JavaName "<init>"
121     createSVGNodeAssignment :: String -> String -> String -> SVGNodeAssignment 
122     
123 importJava "org.simantics.scenegraph.g2d.nodes.TargetedSVGNodeAssignment" where
124     data TargetedSVGNodeAssignment
125     @JavaName "<init>"
126     createTargetedSVGNodeAssignment :: a -> String -> String -> String -> TargetedSVGNodeAssignment 
127
128 importJava "org.simantics.scenegraph.g2d.nodes.TransformationAssignment" where
129     data TransformationAssignment
130     @JavaName "<init>"
131     createTransformationAssignment :: a -> AffineTransform -> TransformationAssignment
132     
133 importJava "java.awt.geom.AffineTransform" where
134     data AffineTransform
135     @JavaName "<init>"
136     createAffineTransform :: Double -> Double -> Double -> Double -> Double -> Double -> AffineTransform
137
138 importJava "org.simantics.scenegraph.g2d.AffineTransformFunctions" where
139     transform :: AffineTransform -> (Double,Double) -> (Double,Double)
140     inverseTransform :: AffineTransform -> (Double,Double) -> (Double,Double)
141