2 import "Simantics/Diagram"
3 import "Simantics/Rename"
5 importJava "org.simantics.g2d.canvas.ICanvasContext" where
8 importJava "org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider" where
9 data ICanvasSceneGraphProvider
11 getCanvasContext :: ICanvasSceneGraphProvider -> ICanvasContext
13 importJava "org.simantics.modeling.SCLScenegraph" where
14 sceneGraphTest :: ICanvasContext -> String -> String -> <Proc> String
16 getAllNodes :: ICanvasContext -> String
18 getBoundsNodes :: ICanvasContext -> String
20 getBackgroundNodes :: ICanvasContext -> String
22 getDataNodes :: ICanvasContext -> String
24 getNavigationNodes :: ICanvasContext -> String
26 getParentNodes :: ICanvasContext -> String
28 getDecorationNodes :: ICanvasContext -> String
30 getSingleElementNodes :: ICanvasContext -> String
32 getConnectionNodes :: ICanvasContext -> String
34 getTextNodes :: ICanvasContext -> String
36 getItemNodes :: ICanvasContext -> String
39 getText :: ICanvasContext -> String -> String
41 @JavaName getNodeCount
42 getCount :: ICanvasContext -> String
44 @JavaName getNodeTransform
45 getTransform :: ICanvasContext -> String -> String
47 getBackgroundColor :: ICanvasContext -> Maybe [Integer]
50 getICanvasSceneGraphProvider :: Model -> Resource -> String -> <Proc> ICanvasSceneGraphProvider
53 disposeSceneGraphProvider :: ICanvasSceneGraphProvider -> <Proc> ()
55 doWithICanvasSceneGraphProvider :: Resource -> (ICanvasSceneGraphProvider -> <e> a) -> <Proc, Exception> a
57 doWithCanvasContext :: Resource -> (ICanvasContext -> <e> a) -> <Proc, Exception> a
59 editNodeText :: ICanvasContext -> String -> String -> String -> <Proc> String
61 copyPaste :: ICanvasContext -> ICanvasContext -> [Resource] -> <Proc> Boolean
63 renderSVG :: ICanvasContext -> <Proc> String
65 "Render an SVG with known width and height in pixels: `renderScaledSVG context width height`"
67 renderScaledSVG :: ICanvasContext -> Double -> Double -> <Proc> String
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
77 getDiagramContext :: ICanvasSceneGraphProvider -> ICanvasContext
78 getDiagramContext provider = do
79 getCanvasContext provider
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
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
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
111 importJava "org.simantics.scenegraph.g2d.G2DNodeModification" where
112 data G2DNodeModification
114 createG2DNodeModification :: [SVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification
116 createG2DNodeModification3 :: [SVGNodeAssignment] -> [TargetedSVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification
118 importJava "org.simantics.scenegraph.g2d.nodes.SVGNodeAssignment" where
119 data SVGNodeAssignment
121 createSVGNodeAssignment :: String -> String -> String -> SVGNodeAssignment
123 importJava "org.simantics.scenegraph.g2d.nodes.TargetedSVGNodeAssignment" where
124 data TargetedSVGNodeAssignment
126 createTargetedSVGNodeAssignment :: a -> String -> String -> String -> TargetedSVGNodeAssignment
128 importJava "org.simantics.scenegraph.g2d.nodes.TransformationAssignment" where
129 data TransformationAssignment
131 createTransformationAssignment :: a -> AffineTransform -> TransformationAssignment
133 importJava "java.awt.geom.AffineTransform" where
136 createAffineTransform :: Double -> Double -> Double -> Double -> Double -> Double -> AffineTransform
138 importJava "org.simantics.scenegraph.g2d.AffineTransformFunctions" where
139 transform :: AffineTransform -> (Double,Double) -> (Double,Double)
140 inverseTransform :: AffineTransform -> (Double,Double) -> (Double,Double)