tsubtitlessettings.cpp.svn-base

来自「ffshow源码」· SVN-BASE 代码 · 共 827 行 · 第 1/3 页

SVN-BASE
827
字号
   {"Ugaritic", _l("uga", NULL},   {"Umbundu", _l("umb", NULL},   {"Undetermined", _l("und", NULL},   {"Vai", _l("vai", NULL},   {"Venda", _l("ven", _l("ve")},   {"Votic", _l("vot", NULL},   {"Wakashan languages", _l("wak", NULL},   {"Walamo", _l("wal", NULL},   {"Walloon", _l("wln", _l("wa")},   {"Waray", _l("war", NULL},   {"Washo", _l("was", NULL},   {"Yakut", _l("sah", NULL},   {"Yao", _l("yao", NULL},   {"Yapese", _l("yap", NULL},   {"Yupik languages", _l("ypk", NULL},   {"Zande", _l("znd", NULL},   {"Zapotec", _l("zap", NULL},   {"Zenaga", _l("zen", NULL},   {"Zulu", _l("zul", _l("zu")},   {"Zuni", _l("zun", NULL},   {NULL, NULL, NULL}};*/const char_t* TsubtitlesSettings::durations[]={ _l("subtitle"), _l("line"), _l("character"), NULL};const char_t* TsubtitlesSettings::fixIls[]={ _l("English (may work with other languages)"), _l("French"), _l("Deutsch"), _l("Czech"), _l("Italian"), _l("Polish"), NULL};const TfilterIDFF TsubtitlesSettings::idffs={ /*name*/      _l("Subtitles"), /*id*/        IDFF_filterSubtitles, /*is*/        IDFF_isSubtitles, /*order*/     IDFF_orderSubtitles, /*show*/      IDFF_showSubtitles, /*full*/      IDFF_fullSubtitles, /*half*/      0, /*dlgId*/     IDD_SUBTITLES,};TsubtitlesSettings::TsubtitlesSettings(TintStrColl *Icoll,TfilterIDFFs *filters):TfilterSettingsVideo(sizeof(*this),Icoll,filters,&idffs),font(Icoll){ deepcopy=true; memset(flnm,0,sizeof(flnm)); half=0; static const TintOptionT<TsubtitlesSettings> iopts[]=  {   IDFF_isSubtitles            ,&TsubtitlesSettings::is                      ,0,0,_l(""),1,      _l("isSubtitles"), 0,   IDFF_showSubtitles          ,&TsubtitlesSettings::show                    ,0,0,_l(""),1,     _l("showSubtitles"), 1,   IDFF_orderSubtitles         ,&TsubtitlesSettings::order                   ,1,1,_l(""),1,     _l("orderSubtitles"), 0,   IDFF_fullSubtitles          ,&TsubtitlesSettings::full                    ,0,0,_l(""),1,     _l("fullSubtitles"), 1,   IDFF_subAutoFlnm            ,&TsubtitlesSettings::autoFlnm                ,0,0,_l(""),1,     _l("subAutoFlnm"), 1,   IDFF_subPosX                ,&TsubtitlesSettings::posX                    ,0,100,_l(""),1,     _l("subPosX"), 50,   IDFF_subPosY                ,&TsubtitlesSettings::posY                    ,0,100,_l(""),1,     _l("subPosY"), 90,   IDFF_subAlign               ,&TsubtitlesSettings::align                   ,0,3,_l(""),1,     _l("subAlign"), ALIGN_FFDSHOW,   IDFF_subIsExpand            ,&TsubtitlesSettings::isExpand                ,0,0,_l(""),1,     _l("subIsExpand"), -1,   IDFF_subExpand              ,&TsubtitlesSettings::expandCode              ,1,1,_l(""),1,     _l("subExpand"), 1,   IDFF_subDelay               ,&TsubtitlesSettings::delay                   ,1,1,_l("Subtitles delay"), 1,     _l("subDelay"), delayDef,   IDFF_subSpeed               ,&TsubtitlesSettings::speed                   ,1,INT_MAX/2,_l(""),1,     _l("subSpeed"), speedDef,   IDFF_subSpeed2              ,&TsubtitlesSettings::speed2                  ,1,INT_MAX/2,_l(""),1,     _l("subSpeed2"), speedDef,   IDFF_subStereoscopic        ,&TsubtitlesSettings::stereoscopic            ,0,0,_l(""),1,     _l("subStereoscopic"), 0,   IDFF_subStereoscopicPar     ,&TsubtitlesSettings::stereoscopicPar         ,-100,100,_l(""),1,     _l("subStereoscopicPar"), 0,   IDFF_subDefLang             ,&TsubtitlesSettings::deflang                 ,1,1,_l(""),1,     _l("subDefLang"), 0,   IDFF_subDefLang2            ,&TsubtitlesSettings::deflang2                ,1,1,_l(""),1,     _l("subDefLang2"), 0,   IDFF_subVobsub              ,&TsubtitlesSettings::vobsub                  ,0,0,_l(""),1,     _l("subVobsub"), 1,   IDFF_subVobsubAA            ,&TsubtitlesSettings::vobsubAA                ,0,4,_l(""),1,     _l("subVobsubAA"), 4,   IDFF_subVobsubAAswgauss     ,&TsubtitlesSettings::vobsubAAswgauss         ,1,2000,_l(""),1,     _l("subVobsubAAswgauss"), 700,   IDFF_subVobsubChangePosition,&TsubtitlesSettings::vobsubChangePosition    ,0,0,_l(""),1,     _l("subVobsubChangePosition"), 0,   IDFF_subVobsubScale         ,&TsubtitlesSettings::vobsubScale             ,0x10,0x300,_l(""),1,     _l("subVobsubScale"), 0x100,   IDFF_subLinespacing         ,&TsubtitlesSettings::linespacing             ,0,200,_l(""),1,     _l("subLinespacing"), 100,   IDFF_subTimeOverlap         ,&TsubtitlesSettings::timeoverlap             ,0,0,_l(""),1,     _l("subTimeOverlap"), 0,   IDFF_subIsMinDuration       ,&TsubtitlesSettings::isMinDuration           ,0,0,_l(""),1,     _l("subIsMinDuration"), 0,   IDFF_subMinDurationType     ,&TsubtitlesSettings::minDurationType         ,0,2,_l(""),1,     _l("subMinDurationType"), 1,   IDFF_subMinDurationSub      ,&TsubtitlesSettings::minDurationSubtitle     ,0,3600000,_l(""),1,     _l("subMinDurationSubtitle"), 3000,   IDFF_subMinDurationLine     ,&TsubtitlesSettings::minDurationLine         ,0,3600000,_l(""),1,     _l("subMinDurationLine"), 1500,   IDFF_subMinDurationChar     ,&TsubtitlesSettings::minDurationChar         ,0,3600000,_l(""),1,     _l("subMinDurationChar"), 30,   IDFF_subFix                 ,&TsubtitlesSettings::fix                     ,1,1,_l(""),1,     _l("subFix"),0,   IDFF_subFixLang             ,&TsubtitlesSettings::fixLang                 ,0,5,_l(""),1,     _l("subFixLang"),0,   IDFF_subOpacity             ,&TsubtitlesSettings::opacity                 ,0,256,_l(""),1,     _l("subOpacity"),256,   IDFF_subSplitBorder         ,&TsubtitlesSettings::splitBorder             ,0,4096,_l(""),1,     _l("subSplitBorder"),0,        IDFF_subCC                  ,&TsubtitlesSettings::cc                      ,0,0,_l(""),1,     _l("subCC"),1,          0  };  addOptions(iopts);  static const TstrOption sopts[]=  {    IDFF_subFilename ,(TstrVal)&TsubtitlesSettings::flnm    ,MAX_PATH ,_l(""),1,     _l("subFlnm"),_l(""),   IDFF_subFixDict  ,(TstrVal)&TsubtitlesSettings::fixDict ,60       ,_l(""),1,     _l("subFixDict"),_l(""),   0  }; addOptions(sopts); static const TcreateParamList2<Tlang> listLang(langs,&Tlang::desc);setParamList(IDFF_subDefLang,&listLang);setParamList(IDFF_subDefLang2,&listLang); static const TcreateParamList1 listVobsubAA(vobsubAAs);setParamList(IDFF_subVobsubAA,&listVobsubAA); static const TcreateParamList1 listAlign(alignments);setParamList(IDFF_subAlign,&listAlign); static const TcreateParamList1 listDurations(durations);setParamList(IDFF_subMinDurationType,&listDurations); static const TcreateParamList1 listIls(fixIls);setParamList(IDFF_subFixLang,&listIls);}void TsubtitlesSettings::copy(const TfilterSettings *src){ memcpy(((uint8_t*)this)+sizeof(Toptions),((uint8_t*)src)+sizeof(Toptions),sizeof(*this)-sizeof(font)-sizeof(Toptions)); font=((TsubtitlesSettings*)src)->font;}const char_t* TsubtitlesSettings::getLangDescr(const char_t *lang){ //short lang=(short)Ttranslate::lang2int(langS); for (int i=1;langs[i].desc;i++)  if (langs[i].lang && stricmp(langs[i].lang,lang)==0)   return langs[i].desc; return lang;}const char_t* TsubtitlesSettings::getLangDescrIso(const char_t *isolang){ for (int i=0;langs[i].desc;i++)  if (langs[i].isolang && stricmp(langs[i].isolang,isolang)==0)   return langs[i].desc; return isolang;}void TsubtitlesSettings::createFilters(size_t filtersorder,Tfilters *filters,TfilterQueue &queue) const{ idffOnChange(idffs,filters,queue.temporary); if ((is && show) || filters->isdvdproc)  {   TimgFilterSubtitles *sub=queueFilter<TimgFilterSubtitles>(filtersorder,filters,queue);    if (!queue.temporary)    {     setOnChange(IDFF_subAutoFlnm,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subTimeOverlap,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subIsMinDuration,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subMinDurationType,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subMinDurationSub,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subMinDurationLine,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subMinDurationChar,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subFix,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subFixLang,sub,&TimgFilterSubtitles::onSubFlnmChange);     setOnChange(IDFF_subFilename,sub,&TimgFilterSubtitles::onSubFlnmChangeStr);     setOnChange(IDFF_subFixDict,sub,&TimgFilterSubtitles::onSubFlnmChangeStr);    }   } }void TsubtitlesSettings::createPages(TffdshowPageDec *parent) const{ parent->addFilterPage<TsubtitlesPage>(&idffs); parent->addFilterPage<TsubtitlesTextPage>(&idffs); parent->addFilterPage<TfontPageSubtitles>(&idffs); parent->addFilterPage<TvobsubPage>(&idffs);}void TsubtitlesSettings::getPosHoriz(int x,char_t *s,Twindow *w,int id){ const char_t *posS; if (x<40) posS=_l("left"); else if (x>60) posS=_l("right"); else posS=_l("center"); tsprintf(s,_l("%s %3i%% (%s)"),w?w->_(id):_l("Horizontal position"),x,w?w->_(id,posS):posS);}void TsubtitlesSettings::getPosVert(int x,char_t *s,Twindow *w,int id){ const char_t *posS; if (x<40) posS=_l("top"); else if (x>60) posS=_l("bottom"); else posS=_l("center"); tsprintf(s,_l("%s %3i%% (%s)"),w?w->_(id):_l("Vertical position:"),x,w?w->_(id,posS):posS);}void TsubtitlesSettings::getExpand(int is,int code,int *x,int *y){ switch (code*(is?1:0))  {   case 0:*x=0;*y=0;return;   case 1:*x=4;*y=3;return;   case 2:*x=16;*y=9;return;   default:*x=std::max(1,(int)HIWORD(code));*y=std::max(1,(int)LOWORD(code));return;  }}void TsubtitlesSettings::getExpand(int *x,int *y) const{ getExpand(isExpand,expandCode,x,y);}bool TsubtitlesSettings::getTip(unsigned int pageId,char_t *buf,size_t len){ if (pageId==1)  {   char_t tipS[256];   char_t horiz[256],vert[256];getPosHoriz(posX,horiz,NULL,0);getPosVert(posY,vert,NULL,0);   tsprintf(tipS,_l("%s, %s"),horiz,vert);   if (delay!=delayDef)    strcatf(tipS,_l("\nDelay: %i ms"),delay);   if (speed!=speedDef || speed2!=speedDef)    strcatf(tipS,_l("\nSpeed: %i/%i"),speed,speed2);   strncpy(buf,tipS,len);   buf[len-1]='\0';   }  else if (pageId==2)  font.getTip(buf,len);  return true; }void TsubtitlesSettings::reg_op(TregOp &t){ TfilterSettingsVideo::reg_op(t); font.reg_op(t); if (isExpand==-1)  isExpand=expandCode?1:0;}const int* TsubtitlesSettings::getResets(unsigned int pageId){ if (pageId==0 || pageId==3)  {   static const int idResets[]={    IDFF_subVobsubAA,IDFF_subVobsubAAswgauss,IDFF_subVobsubChangePosition,IDFF_subVobsubScale,    0};   return idResets;   } else  return NULL; }

⌨️ 快捷键说明

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