⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tffrect.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
#ifndef _TFFRECT_H_
#define _TFFRECT_H_

#include "rational.h"
#include "Crect.h"

struct Trect
{
 Trect(void):sar(1,1) {x=y=dx=dy=0;}
 Trect(const RECT &r):sar(1,1) {x=r.left;y=r.top;dx=r.right-r.left+1;dy=r.bottom-r.top+1;}
 Trect(const Trect &Ir,const Rational &Isar):sar(1,1) {x=Ir.x;y=Ir.y;dx=Ir.dx;dy=Ir.dy;}
 Trect(unsigned int Ix,unsigned int Iy,unsigned int Idx,unsigned int Idy):x(Ix),y(Iy),dx(Idx),dy(Idy),sar(1,1) {}
 Trect(unsigned int Ix,unsigned int Iy,unsigned int Idx,unsigned int Idy,unsigned int sarx,unsigned int sary):x(Ix),y(Iy),dx(Idx),dy(Idy),sar(sarx,sary) {}
 Trect(unsigned int Ix,unsigned int Iy,unsigned int Idx,unsigned int Idy,const Rational &Isar):x(Ix),y(Iy),dx(Idx),dy(Idy),sar(Isar) {}
 unsigned int x,y,dx,dy;
 Rational sar;
 const Rational dar(void) const
  {
   return (sar.num && sar.den && dx && dy)?Rational(sar.num*dx,sar.den*dy).reduce(32768):Rational(dx,dy);
  }
 void setDar(const Rational &dar)
  {
   sar=(dar.num && dar.den)?Rational((dy*dar.num)/double(dx*dar.den),32768):Rational(1,1);
  }
 operator RECT(void)
  {
   RECT ret={x,y,dx-1,dy-1};
   return ret;
  }
 operator CRect(void)
  {
   return CRect(CPoint(x,y),CSize(dx,dy));
  }
 static void calcNewSizeAspect(const Trect &in,int a1,int a2,Trect &out)
  {
   if (in.dx>in.dy) {out.dy=a2*in.dx/a1;out.dx=in.dx;}
   else             {out.dx=a1*in.dy/a2;out.dy=in.dy;}
   if (out.dx&3) out.dx=(out.dx/4+1)*4;
   if (out.dy&1) out.dy=(out.dy/2+1)*2;
  }
};
inline bool operator !=(const Trect &r1,const Trect &r2)
{
 return (r1.x!=r2.x) || (r1.y!=r2.y) || (r1.dx!=r2.dx) || (r1.dy!=r2.dy);
}
inline bool operator ==(const Trect &r1,const Trect &r2)
{
 return (r1.x==r2.x) && (r1.y==r2.y) && (r1.dx==r2.dx) && (r1.dy==r2.dy);
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -