]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/Scenegraph.scl
Support SVG generation from scenegraph
[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     getICanvasSceneGraphProvider :: Model -> Resource -> String -> ICanvasSceneGraphProvider
48     
49     disposeSceneGraphProvider :: ICanvasSceneGraphProvider -> ()
50     
51     editNodeText :: ICanvasContext -> String -> String -> String -> <Proc> String
52     
53     copyPaste :: ICanvasContext -> ICanvasContext -> [Resource] -> <Proc> Boolean
54     
55     renderSVG :: ICanvasContext -> <Proc> String
56
57 getSceneGraphProvider :: Diagram -> <Proc> ICanvasSceneGraphProvider
58 getSceneGraphProvider diagram = do
59     diagramName = syncRead(\() -> getSafeName diagram)
60     diagramRVI = "/" + diagramName
61     model = syncRead(\() -> fromJust $ possibleIndexRoot diagram)
62     composite = syncRead(\() -> compositeToDiagram' diagram)
63     getICanvasSceneGraphProvider model composite diagramRVI
64
65 getDiagramContext :: ICanvasSceneGraphProvider -> ICanvasContext
66 getDiagramContext provider = do
67     getCanvasContext provider
68     
69 getNodeTransform :: Diagram -> String -> <Proc> String
70 getNodeTransform diagram nodeName = do
71     diagramName = syncRead(\() -> getSafeName diagram)
72     diagramRVI = "/" + diagramName
73     model = syncRead(\() -> getPossibleModel diagram)
74     composite = syncRead(\() -> compositeToDiagram' diagram)
75     provider = getICanvasSceneGraphProvider model composite diagramRVI
76     context = getCanvasContext provider
77     getTransform context nodeName
78     
79 getNodeText :: Diagram -> String -> <Proc> String
80 getNodeText 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     getText context nodeName
88
89 getNodeCount :: Diagram -> <Proc> String
90 getNodeCount diagram = 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     getCount context