///|
fn pdf_content_read_flate_inline_image_data(
  cursor : @core.ByteCursor,
) -> @core.PdfBytes raise @core.PdfError {
  match cursor.peek_byte() {
    value if @core.pdf_is_whitespace_byte(value) => cursor.nudge()
    _ => ()
  }
  let (_, length) = @flate.pdf_flate_decode_view_prefix(cursor.remaining_view())
  let data = cursor.read_view(length).to_owned()
  pdf_content_read_inline_image_end(cursor)
  data
}

///|
fn pdf_content_read_flate_inline_image_decoded(
  cursor : @core.ByteCursor,
) -> @core.PdfBytes raise @core.PdfError {
  match cursor.peek_byte() {
    value if @core.pdf_is_whitespace_byte(value) => cursor.nudge()
    _ => ()
  }
  let (decoded, length) = @flate.pdf_flate_decode_view_prefix(
    cursor.remaining_view(),
  )
  ignore(cursor.read_view(length))
  pdf_content_read_inline_image_end(cursor)
  decoded
}

///|
fn pdf_content_read_lzw_inline_image_data(
  cursor : @core.ByteCursor,
  dictionary : @syntax.PdfObject,
  decode_parms : @syntax.PdfObject?,
) -> @core.PdfBytes raise @core.PdfError {
  match cursor.peek_byte() {
    value if @core.pdf_is_whitespace_byte(value) => cursor.nudge()
    _ => ()
  }
  let with_decode_parms = match decode_parms {
    Some(value) =>
      dictionary.add_dict_entry(pdf_content_inline_dp_name(), value)
    None => dictionary
  }
  let (_, length) = @codec.pdf_lzw_decode_view_prefix(
    cursor.remaining_view(),
    early_change=pdf_lzw_early_change(with_decode_parms),
  )
  let data = cursor.read_view(length).to_owned()
  pdf_content_read_inline_image_end(cursor)
  data
}

///|
fn pdf_content_read_lzw_inline_image_decoded(
  cursor : @core.ByteCursor,
) -> @core.PdfBytes raise @core.PdfError {
  match cursor.peek_byte() {
    value if @core.pdf_is_whitespace_byte(value) => cursor.nudge()
    _ => ()
  }
  let (decoded, length) = @codec.pdf_lzw_decode_view_prefix(
    cursor.remaining_view(),
  )
  ignore(cursor.read_view(length))
  pdf_content_read_inline_image_end(cursor)
  decoded
}