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