Beispiel #1
0
void rbTexture2Rescale(RBTexture2 * pDestTex, RBTexture2 const * pSrcTex)
{
    // This algorithm is very inefficient
    
    size_t const dWidth = pDestTex->width;
    size_t const dHeight = pDestTex->height;
    size_t const dStride = pDestTex->stride;
    size_t const oversample = 8;
    float const swmul = 1.0f / (dWidth * oversample);
    float const shmul = 1.0f / (dHeight * oversample);
    float const cs = 1.0f / (oversample * oversample);
    
    RB_ASSERT_TEXTURE2_VALID(pDestTex);
    RB_ASSERT_TEXTURE2_VALID(pSrcTex);
    
    for(size_t j = 0; j < dHeight; ++j) {
        for(size_t i = 0; i < dWidth; ++i) {
            RBColorTemp ct = colortempf(0.0f, 0.0f, 0.0f, 0.0f);
            
            for(size_t v = 0; v < oversample; ++v) {
                for(size_t u = 0; u < oversample; ++u) {
                    ct = ctadd(ct, ctscale(t2sampnc(pSrcTex,
                        vector2((float)((i * oversample + u) + 0.5f) * swmul,
                            (float)((j * oversample + v) + 0.5f) * shmul)),
                        cs));
                }
            }
            pDestTex->data[j * dStride + i] = colorct(ct);
        }
    }
}
//=========
kf::kf(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::kf){
    init=true;

    ctadd(tf,ctf);
    ui->setupUi(this);
    setWindowTitle(parent->windowTitle());
    setWindowFlags(windowFlags()|Qt::WindowMinMaxButtonsHint);
    ui->ggf->gorow(0);
}