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

📄 cfont.cpp

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      return TRUE;
     }
    else if (wParam==IDC_CBX_FONT_CHARSET)
     {
      DRAWITEMSTRUCT *dis=(DRAWITEMSTRUCT*)lParam;
      COLORREF crOldTextColor=GetTextColor(dis->hDC);
      COLORREF crOldBkColor=GetBkColor(dis->hDC);
      HBRUSH br;
      if ((dis->itemAction|ODA_SELECT) && (dis->itemState&ODS_SELECTED))
       {
        SetTextColor(dis->hDC,GetSysColor(COLOR_HIGHLIGHTTEXT));
        SetBkColor(dis->hDC,GetSysColor(COLOR_HIGHLIGHT));
        br=CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
       }
      else
       br=CreateSolidBrush(crOldBkColor);
      FillRect(dis->hDC,&dis->rcItem,br);
      if (int(dis->itemData)!=CB_ERR)
       {
        RECT r=dis->rcItem;r.left+=2;
        char_t text[70];SendMessage(cbxCharset,CB_GETLBTEXT,dis->itemID,LPARAM(text));
        if (!boldFont)
         {
          LOGFONT oldFont;
          HFONT hf=(HFONT)GetCurrentObject(dis->hDC,OBJ_FONT);
          GetObject(hf,sizeof(LOGFONT),&oldFont);
          oldFont.lfWeight=FW_BLACK;
          boldFont=CreateFontIndirect(&oldFont);
         }
        HGDIOBJ oldfont=NULL;
        if (validCharsets[dis->itemData])
         oldfont=SelectObject(dis->hDC,boldFont);
        DrawText(dis->hDC,text,(int)strlen(text),&r,DT_LEFT|DT_SINGLELINE|DT_VCENTER);
        if (oldfont)
         SelectObject(dis->hDC,oldfont);
       }
      SetTextColor(dis->hDC,crOldTextColor);
      SetBkColor(dis->hDC,crOldBkColor);
      DeleteObject(br);
      return TRUE;
     }
    else
     break;
  }
 return TconfPageDecVideo::msgProc(uMsg,wParam,lParam);
}

Twidget* TfontPage::createDlgItem(int id,HWND h)
{
 if (id==IDC_TBR_FONT_SIZE)
  {
   static const TbindTrackbar<TfontPageSubtitles> htbr={IDC_TBR_FONT_SIZE,IDFF_fontSizeA,NULL};
   return new TwidgetSubclassTbr(h,this,TbindTrackbars(&htbr));
  }
 else
  return TconfPageDecVideo::createDlgItem(id,h);
}
int TfontPage::getTbrIdff(int id,const TbindTrackbars bind)
{
 return getCheck(IDC_CHB_FONT_AUTOSIZE)?idff_fontsizea:idff_fontsizep;
}

bool TfontPage::reset(bool testonly)
{
 if (!testonly)
  {
   deci->resetParam(idff_fontname);
   deci->resetParam(idff_fontcharset);
   deci->resetParam(idff_fontautosize);
   deci->resetParam(idff_fontsizep);
   deci->resetParam(idff_fontsizea);
   deci->resetParam(idff_fontweight);
   deci->resetParam(idff_fontcolor);
   deci->resetParam(idff_fontoutlinestrength);
   deci->resetParam(idff_fontoutlineradius);
   deci->resetParam(idff_fontspacing);
   deci->resetParam(idff_fontxscale);
   deci->resetParam(idff_fontfast);
   deci->resetParam(idff_subshadowmode);
   deci->resetParam(idff_subshadowsize);
   deci->resetParam(idff_subshadowalpha);
  }
 return true;
}

void TfontPage::translate(void)
{
 TconfPageBase::translate();

 int sel=cbxGetCurSel(IDC_CBX_FONT_WEIGHT);
 cbxClear(IDC_CBX_FONT_WEIGHT);
 for (int i=0;TfontSettings::weights[i].name;i++)
  cbxAdd(IDC_CBX_FONT_WEIGHT,_(IDC_CBX_FONT_WEIGHT,TfontSettings::weights[i].name),TfontSettings::weights[i].id);
 cbxSetCurSel(IDC_CBX_FONT_WEIGHT,sel);

 cbxTranslate(IDC_CBX_FONT_SUBSHADOW_MODE,TfontSettings::shadowModes);
}

TfontPage::TfontPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff,int IfilterPageId):TconfPageDecVideo(Iparent,idff,IfilterPageId)
{
 dialogId=IDD_FONT;
}

//====================================== TfontPageSubtitles =====================================
TfontPageSubtitles::TfontPageSubtitles(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TfontPage(Iparent,idff,2)
{
 idff_fontcharset=IDFF_fontCharset;
 idff_fontname=IDFF_fontName;
 idff_fontautosize=IDFF_fontAutosize;
 idff_fontautosizevideowindow=IDFF_fontAutosizeVideoWindow;
 idff_fontsizep=IDFF_fontSizeP;
 idff_fontsizea=IDFF_fontSizeA;
 idff_fontspacing=IDFF_fontSpacing;
 idff_fontoutlinestrength=IDFF_fontOutlineStrength;
 idff_fontoutlineradius=IDFF_fontOutlineRadius;
 idff_fontweight=IDFF_fontWeight;
 idff_fontcolor=IDFF_fontColor;
 idff_fontxscale=IDFF_fontXscale;
 idff_fontfast=IDFF_fontFast;
 idff_subshadowmode=IDFF_fontShadowMode;
 idff_subshadowalpha=IDFF_fontShadowAlpha;
 idff_subshadowsize=IDFF_fontShadowSize;
 static const TbindCheckbox<TfontPageSubtitles> chb[]=
  {
   IDC_CHB_FONT_FAST,IDFF_fontFast,NULL,
   0,NULL,NULL
  };
 bindCheckboxes(chb);
 static const TbindTrackbar<TfontPageSubtitles> htbr[]=
  {
   IDC_TBR_FONT_SPACING,IDFF_fontSpacing,&TfontPageSubtitles::spacingxscale2dlg,
   IDC_TBR_FONT_OUTLINE_STRENGTH,IDFF_fontOutlineStrength,&TfontPageSubtitles::shadow2dlg,
   IDC_TBR_FONT_OUTLINE_RADIUS,IDFF_fontOutlineRadius,&TfontPageSubtitles::shadow2dlg,
   IDC_TBR_FONT_XSCALE,IDFF_fontXscale,&TfontPageSubtitles::spacingxscale2dlg,
   IDC_TBR_FONT_SUBSHADOW_SIZE,IDFF_fontShadowSize,&TfontPageSubtitles::shadowSize2dlg,
   IDC_TBR_FONT_SUBSHADOW_ALPHA,IDFF_fontShadowAlpha,&TfontPageSubtitles::shadowAlpha2dlg,
   0,0,NULL
  };
 bindHtracks(htbr);
 static const TbindCombobox<TfontPageSubtitles> cbx[]=
  {
   IDC_CBX_FONT_CHARSET,IDFF_fontCharset,BINDCBX_DATA,NULL,
   IDC_CBX_FONT_WEIGHT,IDFF_fontWeight,BINDCBX_DATA,NULL,
   IDC_CBX_FONT_NAME,IDFF_fontName,BINDCBX_TEXT,&TfontPageSubtitles::fillCharsets,
   IDC_CBX_FONT_SUBSHADOW_MODE,IDFF_fontShadowMode,BINDCBX_SEL,&TfontPageSubtitles::font2dlg,
   0
  };
 bindComboboxes(cbx);
}

void TfontPageSubtitles::shadow2dlg(void)
{
 int shadowmode=cfgGet(idff_subshadowmode);
 int outlineradius=cfgGet(idff_fontoutlineradius);
 tbrSet(IDC_TBR_FONT_OUTLINE_STRENGTH,cfgGet(idff_fontoutlinestrength),IDC_LBL_FONT_OUTLINE_STRENGTH);
 tbrSet(IDC_TBR_FONT_OUTLINE_RADIUS,outlineradius,IDC_LBL_FONT_OUTLINE_RADIUS);
 cbxSetCurSel(IDC_CBX_FONT_SUBSHADOW_MODE,shadowmode);
 static const int idShadows[]={IDC_LBL_FONT_SUBSHADOW_ALPHA,IDC_TBR_FONT_SUBSHADOW_ALPHA,IDC_LBL_FONT_SUBSHADOW_SIZE,IDC_TBR_FONT_SUBSHADOW_SIZE,0};
 enable(shadowmode!=3,idShadows);
 enable(shadowmode==3 || outlineradius==0,IDC_CHB_FONT_FAST);
}

void TfontPageSubtitles::shadowSize2dlg(void)
{
 if (idff_subshadowsize)
  {
   int shadowmode=cfgGet(idff_subshadowmode);
   int subshadowsize=cfgGet(idff_subshadowsize);
   tbrSet(IDC_TBR_FONT_SUBSHADOW_SIZE,cfgGet(idff_subshadowsize));
   if (subshadowsize == 0)
	setText(IDC_LBL_FONT_SUBSHADOW_SIZE,_l("%s disabled"),_(IDC_LBL_FONT_SUBSHADOW_SIZE),subshadowsize);
   else
	setText(IDC_LBL_FONT_SUBSHADOW_SIZE,_l("%s %i"),_(IDC_LBL_FONT_SUBSHADOW_SIZE),subshadowsize);
   enable(shadowmode==3 || subshadowsize==0,IDC_CHB_FONT_FAST);
  }
}

void TfontPageSubtitles::shadowAlpha2dlg(void)
{
  if (idff_subshadowalpha)
  {
   int subshadowalpha=cfgGet(idff_subshadowalpha);
   int displayValue = (int)subshadowalpha*100/255;
   tbrSet(IDC_TBR_FONT_SUBSHADOW_ALPHA,cfgGet(idff_subshadowalpha));
   if (displayValue == 0)
	   setText(IDC_LBL_FONT_SUBSHADOW_ALPHA,_l("%s transparent"),_(IDC_LBL_FONT_SUBSHADOW_ALPHA));
   else if (displayValue == 100)
	   setText(IDC_LBL_FONT_SUBSHADOW_ALPHA,_l("%s opaque"),_(IDC_LBL_FONT_SUBSHADOW_ALPHA));
   else
	   setText(IDC_LBL_FONT_SUBSHADOW_ALPHA,_l("%s %i%%"),_(IDC_LBL_FONT_SUBSHADOW_ALPHA), displayValue);

  }
}

//========================================= TfontPageOSD ========================================
TfontPageOSD::TfontPageOSD(TffdshowPageDec *Iparent):TfontPage(Iparent)
{
 idff_fontcharset=IDFF_OSDfontCharset;
 idff_fontname=IDFF_OSDfontName;
 idff_fontautosize=0;
 idff_fontautosizevideowindow=0;
 idff_fontsizep=IDFF_OSDfontSize;
 idff_fontsizea=0;
 idff_fontspacing=IDFF_OSDfontSpacing;
 idff_fontoutlinestrength=IDFF_OSDfontOutlineStrength;
 idff_fontoutlineradius=IDFF_OSDfontOutlineRadius;
 idff_fontweight=IDFF_OSDfontWeight;
 idff_fontcolor=IDFF_OSDfontColor;
 idff_fontxscale=IDFF_OSDfontXscale;
 idff_fontfast=IDFF_OSDfontFast;
 static const TbindCheckbox<TfontPageOSD> chb[]=
  {
   IDC_CHB_FONT_FAST,IDFF_OSDfontFast,NULL,
   0,NULL,NULL
  };
 bindCheckboxes(chb);
 static const TbindTrackbar<TfontPageOSD> htbr[]=
  {
   IDC_TBR_FONT_SPACING,IDFF_OSDfontSpacing,&TfontPageOSD::spacingxscale2dlg,
   IDC_TBR_FONT_OUTLINE_STRENGTH,IDFF_OSDfontOutlineStrength,&TfontPageOSD::shadow2dlg,
   IDC_TBR_FONT_OUTLINE_RADIUS,IDFF_OSDfontOutlineRadius,&TfontPageOSD::shadow2dlg,
   IDC_TBR_FONT_XSCALE,IDFF_OSDfontXscale,&TfontPageOSD::spacingxscale2dlg,
   0,0,NULL
  };
 bindHtracks(htbr);
 static const TbindCombobox<TfontPageOSD> cbx[]=
  {
   IDC_CBX_FONT_CHARSET,IDFF_OSDfontCharset,BINDCBX_DATA,NULL,
   IDC_CBX_FONT_WEIGHT,IDFF_OSDfontWeight,BINDCBX_DATA,NULL,
   IDC_CBX_FONT_NAME,IDFF_OSDfontName,BINDCBX_TEXT,&TfontPageOSD::fillCharsets,
   0
  };
 bindComboboxes(cbx);
}

void TfontPageOSD::shadow2dlg(void)
{
 int outlineradius=cfgGet(idff_fontoutlineradius);
 tbrSet(IDC_TBR_FONT_OUTLINE_STRENGTH,cfgGet(idff_fontoutlinestrength),IDC_LBL_FONT_OUTLINE_STRENGTH);
 tbrSet(IDC_TBR_FONT_OUTLINE_RADIUS,outlineradius,IDC_LBL_FONT_OUTLINE_RADIUS);
 static const int idShadows[]={IDC_LBL_FONT_SUBSHADOW_MODE,IDC_CBX_FONT_SUBSHADOW_MODE,IDC_LBL_FONT_SUBSHADOW_ALPHA,IDC_TBR_FONT_SUBSHADOW_ALPHA,IDC_LBL_FONT_SUBSHADOW_SIZE,IDC_TBR_FONT_SUBSHADOW_SIZE,0};
 enable(0,idShadows);
}

⌨️ 快捷键说明

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