changeset 2053:720ca9249e4e

Monitor aspect stuff.
author atmos4
date Wed, 03 Oct 2001 14:41:53 +0000
parents 9af96cfbe175
children a74a82334f60
files cfg-mplayer.h libvo/aspect.c libvo/aspect.h
diffstat 3 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cfg-mplayer.h	Tue Oct 02 22:37:28 2001 +0000
+++ b/cfg-mplayer.h	Wed Oct 03 14:41:53 2001 +0000
@@ -64,6 +64,9 @@
 extern char * skinName;
 #endif
 
+/* from libvo/aspect.c */
+extern float monitor_aspect;
+
 /*
  * CONF_TYPE_FUNC_FULL :
  * allows own implemtations for passing the params
@@ -212,6 +215,7 @@
 	{"xy", &screen_size_xy, CONF_TYPE_INT, CONF_RANGE, 0, 4096},
 	{"aspect", &movie_aspect, CONF_TYPE_FLOAT, CONF_RANGE, 0.2, 3.0},
 	{"noaspect", &movie_aspect, CONF_TYPE_FLAG, 0, 0, 0},
+	{"monitoraspect", &monitor_aspect, CONF_TYPE_FLOAT, CONF_RANGE, 0.2, 3.0},
         {"vm", &vidmode, CONF_TYPE_FLAG, 0, 0, 1},
         {"novm", &vidmode, CONF_TYPE_FLAG, 0, 1, 0},
 	{"fs", &fullscreen, CONF_TYPE_FLAG, 0, 0, 1},
--- /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;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libvo/aspect.h	Wed Oct 03 14:41:53 2001 +0000
@@ -0,0 +1,15 @@
+#ifndef __ASPECT_H
+#define __ASPECT_H
+/* Stuff for correct aspect scaling. */
+
+typedef struct {
+  int x; /* x,y starting coordinate */
+  int y; /* of upper left corner    */
+  int w; /* width  */
+  int h; /* height */
+} rect_t;
+
+rect_t aspect(int srcw, int srch, int fitinw, int fitinh);
+
+#endif
+