mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-10-06 18:06:33 +00:00
extract auto-padding code to shared logic
This commit is contained in:
@@ -952,31 +952,8 @@ fn setScreenSize(self: *OpenGL, dim: renderer.ScreenSize) !void {
|
||||
// Determine if we need to pad the window. For "auto" padding, we take
|
||||
// the leftover amounts on the right/bottom that don't fit a full grid cell
|
||||
// and we split them equal across all boundaries.
|
||||
|
||||
// The size of our full grid
|
||||
const grid_width = @intToFloat(f32, grid_size.columns) * self.cell_size.width;
|
||||
const grid_height = @intToFloat(f32, grid_size.rows) * self.cell_size.height;
|
||||
|
||||
// The empty space to the right of a line and bottom of the last row
|
||||
const space_right = @intToFloat(f32, dim.width) - grid_width;
|
||||
const space_bot = @intToFloat(f32, dim.height) - grid_height;
|
||||
|
||||
// The left/right padding is just an equal split.
|
||||
const padding_right = @floatToInt(i32, @floor(space_right / 2));
|
||||
const padding_left = padding_right;
|
||||
|
||||
// The top/bottom padding is interesting. Subjectively, lots of padding
|
||||
// at the top looks bad. So instead of always being equal (like left/right),
|
||||
// we force the top padding to be at most equal to the left, and the bottom
|
||||
// padding is the difference thereafter.
|
||||
const padding_top = @min(padding_left, @floatToInt(i32, @floor(space_bot / 2)));
|
||||
const padding_bot = @floatToInt(i32, space_bot - @intToFloat(f32, padding_top));
|
||||
|
||||
// The full padded dimensions of the renderable area.
|
||||
const padded_dim: renderer.ScreenSize = .{
|
||||
.width = dim.width - @intCast(u32, padding_left + padding_right),
|
||||
.height = dim.height - @intCast(u32, padding_bot + padding_top),
|
||||
};
|
||||
const padding = renderer.Padding.balanced(dim, grid_size, self.cell_size);
|
||||
const padded_dim = dim.subPadding(padding);
|
||||
|
||||
log.debug("screen size padded={} screen={} grid={} cell={}", .{ padded_dim, dim, grid_size, self.cell_size });
|
||||
|
||||
@@ -998,8 +975,8 @@ fn setScreenSize(self: *OpenGL, dim: renderer.ScreenSize) !void {
|
||||
// Update our viewport for this context to be the entire window.
|
||||
// OpenGL works in pixels, so we have to use the pixel size.
|
||||
try gl.viewport(
|
||||
padding_left,
|
||||
padding_bot,
|
||||
@floatToInt(i32, padding.left),
|
||||
@floatToInt(i32, padding.bottom),
|
||||
@intCast(i32, padded_dim.width),
|
||||
@intCast(i32, padded_dim.height),
|
||||
);
|
||||
|
Reference in New Issue
Block a user