\begin{lstlisting}[language=qvtc,label=lsting:QVTiExample,caption={QVTi mappings of colored nodes.}] | |
map HSV2MiddleRoot in ColorChanger { -- Mapping root nodes L to M | |
hsv() { hsvRoot : HSVNode | hsvRoot.parent = null;} | |
where() { | |
realize middleRoot : HSVNode2HLSNode | | |
middleRoot.hsv := hsvRoot; | |
middleRoot.rgb := hsv2rgb(hsvRoot.hsv); | |
} | |
map HSV2MiddleRecursion { -- recursive call to visit children | |
hsvNode := hsvRoot.children; | |
middleParent := middleRoot; | |
} | |
map Middle2HLSRoot { -- invoke middle to output mapping | |
middleNode := middleRoot; | |
} | |
} | |
map HSV2MiddleRecursion in ColorChanger { -- Mapping child nodes L to M | |
hsv(hsvNode : HSVNode | ) {} | |
where(middleParent : HSVNode2HLSNode | ) { | |
realize middleNode : HSVNode2HLSNode | | |
middleNode.parent := middleParent; | |
middleNode.hsv := hsvNode; | |
middleNode.rgb := hsv2rgb(hsvNode.hsv); | |
} | |
map HSV2MiddleRecursion { -- recursive call to visit children | |
hsvNode := hsvNode.children; | |
middleParent := middleNode; | |
} | |
} | |
map Middle2HLSRoot in ColorChanger { -- Mapping root nodes M to R | |
enforce hls() { realize hlsNode : HLSNode | } | |
where(middleNode : HSVNode2HLSNode) { | |
middleNode.hls := hlsNode; | |
hlsNode.parent := null; | |
hlsNode.hls := rgb2hls(middleNode.rgb); | |
} | |
map Middle2HLSRecursion { -- recursive call to visit children | |
middleNode := middleNode.children; | |
} | |
} | |
map Middle2HLSRecursion in ColorChanger { -- Mapping child nodes M to R | |
enforce hls() { realize hlsNode : HLSNode | } | |
where(middleNode : HSVNode2HLSNode |) { | |
middleNode.hls := hlsNode; | |
hlsNode.parent := middleNode.parent.hls; | |
hlsNode.hls := rgb2hls(middleNode.rgb); | |
} | |
map Middle2HLSRecursion { -- recursive call to visit children | |
middleNode := middleNode.children; | |
} | |
} | |
\end{lstlisting} |