package shared

Layout_Constants :: struct {
	sidebar_width:       i32,
	right_margin:        i32,
	min_main_width:      i32,
	top_reserved_height: i32,
	min_lower_y:         i32,
	compact_height:      i32,
	wide_width:          i32,
}

LAYOUT :: Layout_Constants{
	sidebar_width       = 282,
	right_margin        = 20,
	min_main_width      = 960,
	top_reserved_height = 252,
	min_lower_y         = 450,
	compact_height      = 860,
	wide_width          = 1920,
}

Screen_Profile :: enum {
	Compact,
	Standard,
	Wide,
}

screen_profile :: proc(screen_w, screen_h: i32) -> Screen_Profile {
	if screen_h < LAYOUT.compact_height {
		return .Compact
	}
	if screen_w >= LAYOUT.wide_width {
		return .Wide
	}
	return .Standard
}

compute_main_width :: proc(screen_w: i32) -> i32 {
	w := screen_w - LAYOUT.sidebar_width - LAYOUT.right_margin
	if w < LAYOUT.min_main_width {
		return LAYOUT.min_main_width
	}
	return w
}

compute_lower_y :: proc(screen_h: i32) -> i32 {
	y := screen_h - LAYOUT.top_reserved_height
	if y < LAYOUT.min_lower_y {
		return LAYOUT.min_lower_y
	}
	return y
}

is_compact :: proc(screen_h: i32) -> bool {
	return screen_h < LAYOUT.compact_height
}
