blob: 46f3e850c2910572ccaf05f721ac8d69016d6440 [file] [log] [blame]
\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}