use pdfrum_common::{Diagnostics, Limits};
use pdfrum_object::{Name, Resolve};
use pdfrum_page::BuildContext;
use pdfrum_parser::{PageDict, content_segments};
pub fn build_graph(
dict: &PageDict,
r: &impl Resolve,
limits: &Limits,
ctx: &mut BuildContext,
diags: &mut Diagnostics,
) -> pdfrum_page::Page {
let (bytes, ends) = content_segments(dict, r, limits, diags);
let ops = pdfrum_page::parse_content(&bytes, limits, diags);
let bounds = pdfrum_page::StreamBounds::from_joined(&bytes, ops.len(), &ends, limits);
let resources = pdfrum_page::Resources::for_page(
dict.inherited(&Name::from("Resources"), r)
.and_then(|object| object.resolve(r).ok()?.as_dict().cloned()),
);
pdfrum_page::build_page_streams(
&ops,
&bounds,
&dict.dict,
|key| dict.inherited(key, r),
&resources,
r,
ctx,
limits,
diags,
)
}