Пример #1
0
LRESULT Button::OwnerDrawProc(WPARAM wParam, LPARAM lParam)
{
    LPDRAWITEMSTRUCT pdis = LPDRAWITEMSTRUCT(lParam);

    int offsetY = (Height - PIC_SIZE) / 2;
    int offsetX = offsetY + 5;
    SIZE textSize;
    GetTextExtentPoint(pdis->hDC, Title, lstrlen(Title), &textSize);
    RECT rect = pdis->rcItem;
    rect.left = (Width - textSize.cx - PIC_SIZE - 2 * offsetX) / 2;
    rect.top = offsetY;
    HDC hdc = pdis->hDC;
    FrameRect(pdis->hDC, &pdis->rcItem, HBRUSH(GetStockObject(BLACK_BRUSH)));
    if (wParam == IDC_DRAW_BUTTON)
        BitBlt(pdis->hDC, rect.left + offsetX, offsetY, PIC_SIZE, PIC_SIZE, DrawButtonDC, 0, 0, SRCCOPY);
    else BitBlt(pdis->hDC, rect.left + offsetX, offsetY, PIC_SIZE, PIC_SIZE, ClearButtonDC, 0, 0, SRCCOPY);
    rect.left += PIC_SIZE + 2 * offsetX;
    DrawText(hdc, Title, lstrlen(Title), &rect, 0);

    return TRUE;
}
Пример #2
0
INT_PTR TlevelsPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            SelectObject(hdcGradient,oldHDCgradient);
            DeleteDC(hdcGradient);
            DeleteBitmap(bmpGradient);
            DeleteFont(fontGradient);
            SendMessage(GetDlgItem(m_hwnd,IDC_LBX_LEVELS_CURVES),WM_SETFONT,NULL,FALSE);
            DeleteFont(fontCurier);
            break;
        case WM_DRAWITEM:
            switch (wParam) {
                case IDC_BMP_HISTOGRAM: {
                    LPDRAWITEMSTRUCT dis=LPDRAWITEMSTRUCT(lParam);
                    int full=cfgGet(IDFF_levelsFullY);
                    StretchDIBits(dis->hDC,0,0,dis->rcItem.right,dis->rcItem.bottom,full?0:16,0,full?256:234-16+1,64,histogramBits,(BITMAPINFO*)&histogramBmp,DIB_RGB_COLORS,SRCCOPY);
                    wIn->draw(dis);
                    return TRUE;
                }
                case IDC_BMP_LEVELS_IN: {
                    LPDRAWITEMSTRUCT dis=LPDRAWITEMSTRUCT(lParam);
                    StretchBlt(dis->hDC,0,0,dis->rcItem.right,10,hdcGradient,0,0,256,1,SRCCOPY);
                    RECT r=dis->rcItem;
                    r.top=10;
                    FillRect(dis->hDC,&r,GetSysColorBrush(COLOR_BTNFACE));
                    if (filter && getCheck(IDC_CHB_LEVELS_INPUT_AUTO)) {
                        int min,max;
                        filter->getInAuto(&min,&max);
                        drawTriangle(dis,min,true);
                        drawTriangle(dis,max,true);
                    }
                    drawTriangle(dis,cfgGet(IDFF_levelsInMin));
                    drawTriangle(dis,cfgGet(IDFF_levelsInMax));
                    return TRUE;
                }
                case IDC_BMP_LEVELS_OUT: {
                    LPDRAWITEMSTRUCT dis=LPDRAWITEMSTRUCT(lParam);
                    StretchBlt(dis->hDC,0,0,dis->rcItem.right,10,hdcGradient,0,0,256,1,SRCCOPY);
                    RECT r=dis->rcItem;
                    r.top=10;
                    FillRect(dis->hDC,&r,GetSysColorBrush(COLOR_BTNFACE));
                    drawTriangle(dis,cfgGet(IDFF_levelsOutMin));
                    drawTriangle(dis,cfgGet(IDFF_levelsOutMax));
                    return TRUE;
                }
                case IDC_BMP_LEVELS_CURVES: {
                    LPDRAWITEMSTRUCT dis=LPDRAWITEMSTRUCT(lParam);
                    StretchDIBits(dis->hDC,0,0,dis->rcItem.right,dis->rcItem.bottom,0,0,256,256,histogramBits,(BITMAPINFO*)&curvesBmp,DIB_RGB_COLORS,SRCCOPY);
                    wCurves->draw(dis);
                    return TRUE;
                }
            }
            break;
        case WM_SETCURSOR:
            if (HWND(wParam)==hcurves) {
                if (wCurves->setCursor()) {
                    SetCursor(LoadCursor(NULL,IDC_SIZEALL));
                    setDlgResult(TRUE);
                }
                return TRUE;
            }
            break;
    }
    return TconfPageDecVideo::msgProc(uMsg,wParam,lParam);
}
Пример #3
0
INT_PTR TgraphPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            if (graphBits) {
                free(graphBits);
            }
            graphBits = NULL;
            if (frames) {
                delete []frames;
            }
            frames = NULL;
            deciE->setHgraph(NULL);
            KillTimer(m_hwnd, IDC_TMR_GRAPH);
            break;
        case WM_DRAWITEM:
            if (wParam == IDC_BMP_GRAPH) {
                LPDRAWITEMSTRUCT dis = LPDRAWITEMSTRUCT(lParam);
                SetDIBitsToDevice(dis->hDC, 0, 0, gx, gy, 0, 0, 0, gy, graphBits, (BITMAPINFO*)&graphBmp, DIB_RGB_COLORS);
                return TRUE;
            }
            break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_ED_OUTPUTDEBUGFILE:
                    if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) {
                        char_t debugfile[MAX_PATH];
                        GetDlgItemText(m_hwnd, IDC_ED_OUTPUTDEBUGFILE, debugfile, MAX_PATH);
                        cfgSet(IDFF_debugfile, debugfile);
                        return TRUE;
                    }
                    break;
            }
            break;
        case WM_TIMER:
            if (wParam == IDC_TMR_GRAPH) {
                if (!cfgGet(IDFF_enc_working)) {
                    return TRUE;
                }
                TencStats *stats = NULL;
                if (FAILED(deciE->getEncStats(&stats))) {
                    return TRUE;
                }
                //if (oldframescount>stats.count) t1=0;
                clock_t t2 = clock();
                setText(IDC_LBL_STATS_FPS, _l("%s %5.2f"), _(IDC_LBL_STATS_FPS), (t1 == 0) ? 0 : float(CLOCKS_PER_SEC * (stats->count - oldframescount) / float(t2 - t1)));
                t1 = t2;
                oldframescount = stats->count;

                setText(IDC_LBL_STATS_NUMFRAMES, _l("%s %i"), _(IDC_LBL_STATS_NUMFRAMES), stats->count, FALSE);
                setText(IDC_LBL_STATS_AVGQUANT, _l("%s %5.2f"), _(IDC_LBL_STATS_AVGQUANT), stats->count ? float(stats->sumQuants) / stats->count : 0.0f);
                setText(IDC_LBL_STATS_KBPS, _l("%s %i"), _(IDC_LBL_STATS_KBPS), stats->count ? int((8ULL * stats->sumFramesize * cfgGet(IDFF_enc_fpsRate)) / (1000ULL * stats->count * cfgGet(IDFF_enc_fpsScale))) : 0);
                char_t psnrYs[30], psnrUs[30], psnrVs[30];
                if (sup_PSNR(codecId) && cfgGet(IDFF_enc_psnr)) {
                    double psnrY, psnrU, psnrV;
                    stats->calcPSNR(&psnrY, &psnrU, &psnrV);
                    if (psnrY > 0) {
                        tsprintf(psnrYs, _l("%6.2f"), psnrY);
                    } else {
                        strcpy(psnrYs, _(IDC_LBL_STATS_PSNR, _l("exact")));
                    }
                    if (psnrU > 0) {
                        tsprintf(psnrUs, _l("%6.2f"), psnrU);
                    } else {
                        strcpy(psnrUs, _(IDC_LBL_STATS_PSNR, _l("exact")));
                    }
                    if (psnrV > 0) {
                        tsprintf(psnrVs, _l("%6.2f"), psnrV);
                    } else {
                        strcpy(psnrVs, _(IDC_LBL_STATS_PSNR, _l("exact")));
                    }
                    setText(IDC_LBL_STATS_PSNR, _l("%s %s,%s,%s"), _(IDC_LBL_STATS_PSNR), psnrYs, psnrUs, psnrVs);
                } else {
                    setText(IDC_LBL_STATS_PSNR, _l("%s %s"), _(IDC_LBL_STATS_PSNR), _(IDC_LBL_STATS_PSNR, _l("unknown")));
                }

                if (cfgGet(IDFF_enc_showGraph)) {
                    repaint(hg);
                }
                return TRUE;
            }
            break;
        case TencStats::MSG_FF_FRAME: {
            memmove(frames, frames + 1, sizeof(Tframe) * (gx - 1));
            frames[gx - 1].set(wParam, lParam);
            unsigned int maxframesize = 1;
            for (int i = 0; i < gx; i++)
                if (frames[i].size > maxframesize) {
                    maxframesize = frames[i].size;
                }
            if (oldmaxframesize != maxframesize) {
                oldmaxframesize = maxframesize;
                SetDlgItemInt(m_hwnd, IDC_LBL_GRAPH_MAXKB, maxframesize / 1024, FALSE);
                for (int i = 0; i < gx; i++) {
                    shiftGraph(frames[i]);
                }
            } else {
                shiftGraph(frames[gx - 1]);
            }
            return TRUE;
        }
        case TencStats::MSG_FF_CLEAR:
            t1 = 0;
            oldframescount = 0;
            graph2dlg();
            return TRUE;
    }
    return TconfPageEnc::msgProc(uMsg, wParam, lParam);
}