Given a function Intersect(Polygon, Line) -> List<Polygon> that intersects a convex polygon with a line and returns a list of polygons (that contains only the original polygon if the line does not intersect it or the two resulting polygons if the line does divide the origonal one) you can do something like the following to get all resulting polygons inside the rectangle:
List<Polygon> Divide(Rectangle rect, List<Line> lines)
{
// initialize result list with given rectangle as polygon
List<Polygon> polys;
polys.add(Polygon(rect));
for (Line line: lines)
{
List<Polygon> polysNew;
for (Polygon poly: polys)
polysNew.addAll(Intersect(poly, line));
polys = polysNew;
}
return polysNew;
}
For calculating the area of the polygons see e.g. here.