diff libvo/aspect.c @ 2053:720ca9249e4e

Monitor aspect stuff.
author atmos4
date Wed, 03 Oct 2001 14:41:53 +0000
parents
children f5146118777e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libvo/aspect.c	Wed Oct 03 14:41:53 2001 +0000
@@ -0,0 +1,32 @@
+/* Stuff for correct aspect scaling. */
+#include "aspect.h"
+
+float monitor_aspect=4.0/3.0;
+
+/* aspect is called with the source resolution and the
+ * resolution, that the scaled image should fit into
+ */
+
+rect_t aspect(int srcw, int srch, int fitinw, int fitinh){
+  rect_t r,z;
+  r.w=fitinw;
+  r.x=0;
+  r.h=(int)(((float)fitinw / (float)srcw * (float)srch)
+            * ((float)fitinh/((float)fitinw/monitor_aspect)));
+  r.h+=r.h%2; // round
+  r.y=(fitinh-r.h)/2;
+  z=r;
+  //printf("aspect rez x: %d y: %d  wh: %dx%d\n",r.x,r.y,r.w,r.h);
+  if(r.h>fitinh || r.h<srch){
+    r.h=fitinh;
+    r.y=0;
+    r.w=(int)(((float)fitinh / (float)srch * (float)srcw)
+              * ((float)fitinw/((float)fitinh/(1/monitor_aspect))));
+    r.w+=r.w%2; // round
+    r.x=(fitinw-r.w)/2;
+  }
+  if(r.w>fitinw) r=z;
+  //printf("aspect ret x: %d y: %d  wh: %dx%d\n",r.x,r.y,r.w,r.h);
+  return r;
+}
+