view libvo/aspect.c @ 2058:b840d0913383

Fix case where srch, srcw and fitinw and fitinh are really the same variables.
author atmos4
date Wed, 03 Oct 2001 17:40:56 +0000
parents f5146118777e
children 7f27b212e07b
line wrap: on
line source

/* Stuff for correct aspect scaling. */

float monitor_aspect=4.0/3.0;

/* aspect is called with the source resolution and the
 * resolution, that the scaled image should fit into
 */

void aspect(int *srcw, int *srch, int fitinw, int fitinh){
  int srcwcp, srchcp;
  srcwcp=*srcw; srchcp=*srch;
  srcwcp=fitinw;
  srchcp=(int)(((float)fitinw / (float)*srcw * (float)*srch)
            * ((float)fitinh/((float)fitinw/monitor_aspect)));
  srchcp+=srchcp%2; // round
  //printf("aspect rez wh: %dx%d (org: %dx%d)\n",srcwcp,srchcp,*srcw,*srch);
  if(srchcp>fitinh || srchcp<*srch){
    srchcp=fitinh;
    srcwcp=(int)(((float)fitinh / (float)*srch * (float)*srcw)
              * ((float)fitinw/((float)fitinh/(1/monitor_aspect))));
    srcwcp+=srcwcp%2; // round
  }
  //printf("aspect ret wh: %dx%d (org: %dx%d)\n",srcwcp,srchcp,*srcw,*srch);
  *srcw=srcwcp; *srch=srchcp;
}