[gtk/matthiasc/for-master] ngl: Be consistent about padding
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master] ngl: Be consistent about padding
- Date: Sat, 15 May 2021 13:01:56 +0000 (UTC)
commit d1949e48e9a0f87c6cd598fea4c217fd02740239
Author: Matthias Clasen <mclasen redhat com>
Date: Sat May 15 08:58:50 2021 -0400
ngl: Be consistent about padding
Make gsk_ngl_texture_library_pack always return
the position of the payload (ie add the padding
to the x/y that are returned), and compute
texture coordinates accurately in all cases
(we were fudging the padding for standalone
textures.
gsk/ngl/gskngltexturelibrary.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
---
diff --git a/gsk/ngl/gskngltexturelibrary.c b/gsk/ngl/gskngltexturelibrary.c
index 1e87fc6a6a..f34e3b170f 100644
--- a/gsk/ngl/gskngltexturelibrary.c
+++ b/gsk/ngl/gskngltexturelibrary.c
@@ -377,13 +377,13 @@ gsk_ngl_texture_library_pack (GskNglTextureLibrary *self,
entry->atlas = atlas;
entry->is_atlased = TRUE;
- entry->area.x = (float)(packed_x + padding) / atlas->width;
- entry->area.y = (float)(packed_y + padding) / atlas->height;
- entry->area.x2 = entry->area.x + (float)width / atlas->width;
- entry->area.y2 = entry->area.y + (float)height / atlas->height;
+ entry->area.x = (packed_x + padding) / (float)atlas->width;
+ entry->area.y = (packed_y + padding) / (float)atlas->height;
+ entry->area.x2 = (packed_x + padding + width) / (float)atlas->width;
+ entry->area.y2 = (packed_y + padding + height) / (float)atlas->height;
- *out_packed_x = packed_x;
- *out_packed_y = packed_y;
+ *out_packed_x = packed_x + padding;
+ *out_packed_y = packed_y + padding;
}
else
{
@@ -394,10 +394,10 @@ gsk_ngl_texture_library_pack (GskNglTextureLibrary *self,
entry->texture = texture;
entry->is_atlased = FALSE;
entry->accessed = TRUE;
- entry->area.x = 0.0f;
- entry->area.y = 0.0f;
- entry->area.x2 = 1.0f;
- entry->area.y2 = 1.0f;
+ entry->area.x = padding / (float) (padding + width + padding);
+ entry->area.y = padding / (float) (padding + height + padding);
+ entry->area.x2 = (padding + width) / (float) (padding + width + padding);
+ entry->area.y2 = (padding + height) / (float) (padding + height + padding);
*out_packed_x = padding;
*out_packed_y = padding;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]