jlec 14/03/13 08:16:23
Added:
pymol-1.7.0.4-fix-broken-label-scaling-on-Linux.patch
Log:
sci-chemistry/pymol: Backport fix for broken labels
(Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key
B9D4F231BD1558AB!)
Revision Changes Path
1.1
sci-chemistry/pymol/files/pymol-1.7.0.4-fix-broken-label-scaling-on-Linux.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-chemistry/pymol/files/pymol-1.7.0.4-fix-broken-label-scaling-on-Linux.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-chemistry/pymol/files/pymol-1.7.0.4-fix-broken-label-scaling-on-Linux.patch?rev=1.1&content-type=text/plain
Index: pymol-1.7.0.4-fix-broken-label-scaling-on-Linux.patch
===================================================================
>From 5c744d0dcf3ae717ce774e07e24812a543f4a866 Mon Sep 17 00:00:00 2001
From: speleo3 <speleo3@21428953-86e3-433d-9a34-2224224d0fc8>
Date: Mon, 10 Mar 2014 15:50:16 +0000
Subject: [PATCH] fix broken label scaling on Linux
- label scaling became distorted on window resizing
- minor readability update in label.vs (no change)
git-svn-id: svn://svn.code.sf.net/p/pymol/code/trunk@4069
21428953-86e3-433d-9a34-2224224d0fc8
---
pymol/data/shaders/label.vs | 17 ++++++++---------
pymol/layer1/Scene.c | 10 ----------
2 files changed, 8 insertions(+), 19 deletions(-)
diff --git a/pymol/data/shaders/label.vs b/pymol/data/shaders/label.vs
index b179530..58d9dad 100644
--- a/pymol/data/shaders/label.vs
+++ b/pymol/data/shaders/label.vs
@@ -21,16 +21,15 @@ uniform float fog_enabled; // actually bool
void main()
{
- vec4 transformedPosition = gl_ModelViewProjectionMatrix * attr_worldpos;
- transformedPosition.xyz = transformedPosition.xyz/transformedPosition.w;
- transformedPosition.w = 1.;
- transformedPosition.xy = transformedPosition.xy +
attr_screenworldoffset.xy/(screenSize*screenOriginVertexScale);
- transformedPosition.z = transformedPosition.z +
attr_screenworldoffset.z/(screenSize.x*screenOriginVertexScale);
- transformedPosition.x = transformedPosition.x + aspectRatioAdjustment *
attr_screenoffset.x * 2./screenSize.x;
- transformedPosition.y = transformedPosition.y + attr_screenoffset.y *
2./screenSize.y;
- gl_Position = transformedPosition;
+ vec4 pos = gl_ModelViewProjectionMatrix * attr_worldpos;
+ pos /= pos.w;
+ pos.xyz += attr_screenworldoffset / (screenSize.xyx *
screenOriginVertexScale);
+ pos.xy += attr_screenoffset.xy * 2. / screenSize *
vec2(aspectRatioAdjustment, 1.);
+
+ gl_Position = pos;
textureLookup = attr_texcoords;
- normalizedViewCoordinate = (gl_Position.xyz/gl_Position.w) / 2.0 + 0.5;
+ normalizedViewCoordinate = pos.xyz / 2.0 + 0.5;
+
if (fog_enabled > 0.5) {
vec3 eye_pos = vec3(gl_ModelViewMatrix * attr_worldpos);
fog = max(0.0, (gl_Fog.end - abs(eye_pos.z)) * gl_Fog.scale);
diff --git a/pymol/layer1/Scene.c b/pymol/layer1/Scene.c
index 639f737..59ee89e 100644
--- a/pymol/layer1/Scene.c
+++ b/pymol/layer1/Scene.c
@@ -1972,13 +1972,8 @@ void SceneGetImageSize(PyMOLGlobals * G, int *width, int
*height)
void SceneGetImageSizeFast(PyMOLGlobals * G, int *width, int *height)
{
register CScene *I = G->Scene;
- if(I->Image) {
- *width = I->Image->width;
- *height = I->Image->height;
- } else {
*width = I->Width;
*height = I->Height;
- }
}
void SceneGetImageSizeFastAdjustForGrid(PyMOLGlobals * G, int *width, int
*height){
register CScene *I = G->Scene;
@@ -1986,13 +1981,8 @@ void SceneGetImageSizeFastAdjustForGrid(PyMOLGlobals *
G, int *width, int *heigh
*width = I->grid.cur_viewport_size[0];
*height = I->grid.cur_viewport_size[1];
} else {
- if(I->Image) {
- *width = I->Image->width;
- *height = I->Image->height;
- } else {
*width = I->Width;
*height = I->Height;
- }
}
}
--
1.9.0