GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — ogdf-python/src/ogdf_python/pythonize/render.py at master · ogdf/ogdf-python

Expand file tree

/

render.py

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
113 lines (93 loc) · 3.5 KB
/

render.py

Copy path

File metadata and controls

113 lines (93 loc) · 3.5 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import functools
import tempfile
import cppyy
import itertools
import sys
SVGConf = None
def wrap_GraphIO(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
logger = cppyy.gbl.ogdf.GraphIO.logger
levels = {
l: getattr(logger, l)()
for l in [
"globalLogLevel",
"globalInternalLibraryLogLevel",
"globalMinimumLogLevel",
"localLogLevel",
]
}
logMode = logger.localLogMode()
statMode = logger.globalStatisticMode()
ret = stdout = stderr = None
try:
logger.localLogMode(type(logger).LogMode.Global)
logger.globalStatisticMode(False)
for l in levels:
getattr(logger, l)(type(logger).Level.Minor)
cppyy.gbl.ogdf_pythonization.BeginCaptureStdout()
cppyy.gbl.ogdf_pythonization.BeginCaptureStderr()
try:
ret = func(*args, **kwargs)
finally:
stdout = cppyy.gbl.ogdf_pythonization.EndCaptureStdout().decode("utf8", "replace").strip()
stderr = cppyy.gbl.ogdf_pythonization.EndCaptureStderr().decode("utf8", "replace").strip()
finally:
logger.localLogMode(logMode)
logger.globalStatisticMode(statMode)
for l, v in levels.items():
getattr(logger, l)(v)
if stdout and logger.is_lout(logger.Level.Medium):
print(stdout)
if stderr:
print(stderr, file=sys.stderr)
if not ret:
args = ', '.join(itertools.chain(map(repr, args), (f"{k}={v!r}" for k, v in kwargs.items())))
msg = f"GraphIO.{func.__name__}({args}) failed"
if stdout or stderr:
msg += ":"
if stdout:
msg += "\n" + stdout
if stderr:
msg += "\n" + stderr
else:
msg += " for unknown reason. Does the file exist?"
raise IOError(msg)
else:
return ret
wrapper.__overload__ = func.__overload__
return wrapper
def renderGraph(G):
cppyy.include("ogdf/planarity/PlanarizationLayout.h")
ogdf = cppyy.gbl.ogdf
GA = ogdf.GraphAttributes(G, ogdf.GraphAttributes.all)
ogdf.PlanarizationLayout().call(GA)
for n in G.nodes:
GA.label[n] = str(n.index())
return GA
def renderClusterGraph(CG):
cppyy.include("ogdf/cluster/ClusterPlanarizationLayout.h")
ogdf = cppyy.gbl.ogdf
CGA = ogdf.ClusterGraphAttributes(CG, ogdf.ClusterGraphAttributes.all)
cppyy.gbl.ogdf_pythonization.BeginCaptureStdout()
try:
ogdf.ClusterPlanarizationLayout().call(CG.getGraph(), CGA, CG)
finally:
stdout = cppyy.gbl.ogdf_pythonization.EndCaptureStdout().decode("utf8", "replace").strip()
for n in CG.getGraph().nodes:
CGA.label[n] = str(n.index())
return CGA
def GraphAttributes_to_svg(self):
global SVGConf
if SVGConf is None:
SVGConf = cppyy.gbl.ogdf.GraphIO.SVGSettings()
SVGConf.margin(50)
SVGConf.bezierInterpolation(False)
# SVGConf.curviness(0.1)
with tempfile.NamedTemporaryFile("w+t", suffix=".svg", prefix="ogdf-python-") as f:
cppyy.gbl.ogdf.GraphIO.drawSVG(self, f.name, SVGConf)
return f.read()
def Graph_to_svg(self):
return GraphAttributes_to_svg(renderGraph(self))
def ClusterGraph_to_svg(self):
return GraphAttributes_to_svg(renderClusterGraph(self))
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.