I have a graph `G`. The graph is a [planar graph](http://en.wikipedia.org/wiki/Planar_graph). 

I wish to find all the faces of the graph. I understand that [constructing a planar embedding is the way to find the faces ( or regions, or cycles)](https://cstheory.stackexchange.com/questions/3447/for-a-planar-graph-find-the-algorithm-that-constructs-a-cycle-basis-with-each-e), such that all the edges must be shared by at most 2 faces.

Is there a readily made implementation of planar embedding algorithm in C#? Either commercial or open source is fine.