///|
/// 印刷設定をパースする
fn parse_print_settings(reader~ : Reader) -> PrintSettings {
// 印刷出力範囲の基点(X,Y)
let origin_x = reader.read_double()
let origin_y = reader.read_double()
// 印刷出力倍率
let scale = reader.read_double()
// 印刷90度回転・基準点位置
let rotation_setting = reader.read_dword()
{ origin_x, origin_y, scale, rotation_setting }
}
///|
/// 日光設定をパースする
fn parse_sunpou_settings(reader~ : Reader) -> SunpouSettings {
// 14個のDWORDをスキップ(予備)
for _ in 0..<14 {
let _ = reader.read_dword()
}
// 日光設定 (m_lnSunpou1〜5)
let sunpou1 = reader.read_dword()
let sunpou2 = reader.read_dword()
let sunpou3 = reader.read_dword()
let sunpou4 = reader.read_dword()
let sunpou5 = reader.read_dword()
// 予備 (1個のDWORD)
let dummy = reader.read_dword()
// 線の最大幅
let max_line_width = reader.read_dword()
{ sunpou1, sunpou2, sunpou3, sunpou4, sunpou5, dummy, max_line_width }
}
///|
/// レイヤ名とグループ名をパースする
fn parse_layer_names(
reader~ : Reader,
layer_groups~ : Array[LayerGroup],
) -> Array[LayerGroup] {
// parse_sunpou_settingsで既に日光設定等を読み取っているため、
// ここではスキップ処理は不要
// レイヤ名を256個読み取る (16グループ x 16レイヤ)
let layer_names = Array::new()
for _g_idx in 0..<16 {
let group_layer_names = Array::new()
for _l_idx in 0..<16 {
let name = read_cstring(reader~)
group_layer_names.push(name)
}
layer_names.push(group_layer_names)
}
// グループレイヤ名を16個読み取る
let group_names = Array::new()
for _g_idx in 0..<16 {
let name = read_cstring(reader~)
group_names.push(name)
}
// 読み取った名前をlayer_groupsに反映
let result = Array::new()
for g_idx in 0.. Array[LayerGroup] {
let result = Array::new()
for g_idx in 0..