Example #1
0
QImage * SeamCarver::extendWidth(int w_extent){

    QPolygon *ligneBest;// = listLignesMostSuitable.first();
    QRgb color1,color2;
    QRgb ligneColor = qRgb(255,255,255);
    int y_ligneBest;
    QPoint pp;
    QImage *dataRet = new QImage(imgOrigine->width(),imgOrigine->height()+2+NB_LIGNES_SEAM_CARVING,imgOrigine->format());
    ImageResizer *resizer = new ImageResizer;
    int delta_y,tmp_lect;
    QList<int> list_y_val;
    QListIterator<QPolygon *> qit(listLignesMostSuitable);

    for (int x=0; x < imgOrigine->width() ; x++)
    {
        qit.toFront();
        list_y_val.clear();
        while (qit.hasNext())
        {
            ligneBest=qit.next();
            list_y_val << (ligneBest->takeFirst()).y();
        }
        qSort(list_y_val);
        list_y_val << imgOrigine->height() + 1000;
        y_ligneBest = list_y_val.takeFirst();

        //        pp=ligneBest->takeFirst();
        //y_ligneBest=pp.y();
        delta_y=0;
        for (int y=0; y < imgOrigine->height() ; y++) {
            color1=imgOrigine->pixel(x,y);
            if (y != y_ligneBest)
            {
                dataRet->setPixel(x,y+delta_y,color1);
            } else
            {
                dataRet->setPixel(x,y_ligneBest+delta_y,ligneColor);
                dataRet->setPixel(x,y_ligneBest+delta_y+2+NB_LIGNES_SEAM_CARVING,ligneColor);
                color2=imgOrigine->pixel(x,y+1);
                resizer->interpol(dataRet,x,y_ligneBest+1+delta_y,NB_LIGNES_SEAM_CARVING+1,color1,color2,false);
                delta_y += NB_LIGNES_SEAM_CARVING+2;
            }
        }
    }
    return dataRet;
}