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
48 getICanvasSceneGraphProvider :: Model -> Resource -> String -> <Proc> ICanvasSceneGraphProvider
51 disposeSceneGraphProvider :: ICanvasSceneGraphProvider -> <Proc> ()
53 doWithICanvasSceneGraphProvider :: Resource -> (ICanvasSceneGraphProvider -> <e> a) -> <Proc, Exception> a
55 doWithCanvasContext :: Resource -> (ICanvasContext -> <e> a) -> <Proc, Exception> a
57 editNodeText :: ICanvasContext -> String -> String -> String -> <Proc> String
59 copyPaste :: ICanvasContext -> ICanvasContext -> [Resource] -> <Proc> Boolean
61 renderSVG :: ICanvasContext -> <Proc> String
63 "Render an SVG with known width and height in pixels: `renderScaledSVG context width height`"
65 renderScaledSVG :: ICanvasContext -> Double -> Double -> <Proc> String
67 getSceneGraphProvider :: Diagram -> <Proc> ICanvasSceneGraphProvider
68 getSceneGraphProvider diagram = do
69 diagramName = syncRead(\() -> getSafeName diagram)
70 diagramRVI = "/" + diagramName
71 model = syncRead(\() -> fromJust $ possibleIndexRoot diagram)
72 composite = syncRead(\() -> compositeToDiagram' diagram)
73 getICanvasSceneGraphProvider model composite diagramRVI
75 getDiagramContext :: ICanvasSceneGraphProvider -> ICanvasContext
76 getDiagramContext provider = do
77 getCanvasContext provider
79 getNodeTransform :: Diagram -> String -> <Proc> String
80 getNodeTransform diagram nodeName = do
81 diagramName = syncRead(\() -> getSafeName diagram)
82 diagramRVI = "/" + diagramName
83 model = syncRead(\() -> getPossibleModel diagram)
84 composite = syncRead(\() -> compositeToDiagram' diagram)
85 provider = getICanvasSceneGraphProvider model composite diagramRVI
86 context = getCanvasContext provider
87 getTransform context nodeName
89 getNodeText :: Diagram -> String -> <Proc> String
90 getNodeText diagram nodeName = do
91 diagramName = syncRead(\() -> getSafeName diagram)
92 diagramRVI = "/" + diagramName
93 model = syncRead(\() -> getPossibleModel diagram)
94 composite = syncRead(\() -> compositeToDiagram' diagram)
95 provider = getICanvasSceneGraphProvider model composite diagramRVI
96 context = getCanvasContext provider
97 getText context nodeName
99 getNodeCount :: Diagram -> <Proc> String
100 getNodeCount diagram = do
101 diagramName = syncRead(\() -> getSafeName diagram)
102 diagramRVI = "/" + diagramName
103 model = syncRead(\() -> getPossibleModel diagram)
104 composite = syncRead(\() -> compositeToDiagram' diagram)
105 provider = getICanvasSceneGraphProvider model composite diagramRVI
106 context = getCanvasContext provider
109 importJava "org.simantics.scenegraph.g2d.G2DNodeModification" where
110 data G2DNodeModification
112 createG2DNodeModification :: [SVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification
114 createG2DNodeModification3 :: [SVGNodeAssignment] -> [TargetedSVGNodeAssignment] -> [TransformationAssignment] -> G2DNodeModification
116 importJava "org.simantics.scenegraph.g2d.nodes.SVGNodeAssignment" where
117 data SVGNodeAssignment
119 createSVGNodeAssignment :: String -> String -> String -> SVGNodeAssignment
121 importJava "org.simantics.scenegraph.g2d.nodes.TargetedSVGNodeAssignment" where
122 data TargetedSVGNodeAssignment
124 createTargetedSVGNodeAssignment :: a -> String -> String -> String -> TargetedSVGNodeAssignment
126 importJava "org.simantics.scenegraph.g2d.nodes.TransformationAssignment" where
127 data TransformationAssignment
129 createTransformationAssignment :: a -> AffineTransform -> TransformationAssignment
131 importJava "java.awt.geom.AffineTransform" where
134 createAffineTransform :: Double -> Double -> Double -> Double -> Double -> Double -> AffineTransform
136 importJava "org.simantics.scenegraph.g2d.AffineTransformFunctions" where
137 transform :: AffineTransform -> (Double,Double) -> (Double,Double)
138 inverseTransform :: AffineTransform -> (Double,Double) -> (Double,Double)