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); }