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





Reply via email to