meshing on a per-face basis

I wish to write a meshing algorithm/ class that changes the parameters for discretising a face depending on the propeties of the face like Surface Area or bounding box volume, i was wondering what structure / datatype I should be using to achieve this, so far i am able to get the surface properties with : BRepGProp::SurfaceProperties(explorer.Current(), aProperties); am I correct in thinking that the code i need to write should inherit from the IMeshTools_MeshAlgoFactory, Class and if so how do I write this class?