Make the gl pixel clamping functions more widely available

This commit is contained in:
Kovid Goyal 2021-12-05 18:16:36 +05:30
parent 33de23d01d
commit 759feac95b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 18 additions and 18 deletions

View File

@ -121,6 +121,24 @@ typedef struct {
bool has_margins;
} ScrollData;
static inline float
gl_size(const unsigned int sz, const unsigned int viewport_size) {
// convert pixel sz to OpenGL co-ordinate system.
const float px = 2.f / viewport_size;
return px * sz;
}
static inline float
clamp_position_to_nearest_pixel(float pos, const unsigned int viewport_size) {
// clamp the specified opengl position to the nearest pixel
const float px = 2.f / viewport_size;
const float distance = pos + 1.f;
const float num_of_pixels = roundf(distance / px);
return -1.f + num_of_pixels * px;
}
GraphicsManager* grman_alloc(void);
void grman_clear(GraphicsManager*, bool, CellPixelSize fg);
const char* grman_handle_command(GraphicsManager *self, const GraphicsCommand *g, const uint8_t *payload, Cursor *c, bool *is_dirty, CellPixelSize fg);

View File

@ -588,24 +588,6 @@ render_window_title(OSWindow *os_window, Screen *screen UNUSED, GLfloat xstart,
return 2.f * (GLfloat)bar_height / (GLfloat)os_window->viewport_height;
}
static GLfloat
gl_size(const unsigned int sz, const unsigned int viewport_size) {
// convert sz to OpenGL co-ordinate system. Checks that mapping back via roundf()
// yields the same value.
const GLfloat px = 2.f / viewport_size;
GLfloat ans = px * sz;
const unsigned int mapped_val = (unsigned int)roundf((ans * viewport_size) / 2.f);
return ans + px * (sz - mapped_val);
}
static GLfloat
clamp_position_to_nearest_pixel(GLfloat pos, const unsigned int viewport_size) {
const GLfloat px = 2.f / viewport_size;
const GLfloat distance = pos + 1.f;
const GLfloat num_of_pixels = roundf(distance / px);
return -1.f + num_of_pixels * px;
}
static void
draw_window_logo(ssize_t vao_idx, OSWindow *os_window, const WindowLogoRenderData *wl, const CellRenderData *crd) {
if (os_window->live_resize.in_progress) return;