use super::{APP_ID_GPKG, PAGE_SIZE, SQLITE_MAGIC, USER_VERSION_130};
pub fn write_file_header(
out: &mut [u8; 100],
page_size: u32,
page_count: u32,
app_id: u32,
user_version: u32,
) {
out[0..16].copy_from_slice(SQLITE_MAGIC);
let page_size_raw: u16 = if page_size == 65536 {
1
} else {
page_size as u16
};
let ps_bytes = page_size_raw.to_be_bytes();
out[16] = ps_bytes[0];
out[17] = ps_bytes[1];
out[18] = 1;
out[19] = 1;
out[20] = 0;
out[21] = 64; out[22] = 32; out[23] = 32;
out[24..28].copy_from_slice(&1u32.to_be_bytes());
out[28..32].copy_from_slice(&page_count.to_be_bytes());
out[32..36].copy_from_slice(&0u32.to_be_bytes());
out[36..40].copy_from_slice(&0u32.to_be_bytes());
out[40..44].copy_from_slice(&1u32.to_be_bytes());
out[44..48].copy_from_slice(&4u32.to_be_bytes());
out[48..52].copy_from_slice(&0i32.to_be_bytes());
out[52..56].copy_from_slice(&0u32.to_be_bytes());
out[56..60].copy_from_slice(&1u32.to_be_bytes());
out[60..64].copy_from_slice(&user_version.to_be_bytes());
out[64..68].copy_from_slice(&0u32.to_be_bytes());
out[68..72].copy_from_slice(&app_id.to_be_bytes());
for b in &mut out[72..92] {
*b = 0;
}
out[92..96].copy_from_slice(&1u32.to_be_bytes());
out[96..100].copy_from_slice(&3_040_001u32.to_be_bytes());
}
pub fn make_gpkg_header(page_count: u32) -> [u8; 100] {
let mut buf = [0u8; 100];
write_file_header(
&mut buf,
PAGE_SIZE as u32,
page_count,
APP_ID_GPKG,
USER_VERSION_130,
);
buf
}