Пример #1
0
void Selection::pasteToCanvas(net::Client *client, int layer) const
{
    if(m_pasteImage.isNull()) {
        qWarning("Selection::pasteToCanvas: nothing to paste");
        return;
    }

    if(m_shape.size()!=4) {
        qWarning("Paste selection is not a quad!");
        return;
    }

    const QRect rect = boundingRect();

    // Transform image to selection rectangle
    QPolygonF src({
        QPointF(0, 0),
        QPointF(m_pasteImage.width(), 0),
        QPointF(m_pasteImage.width(), m_pasteImage.height()),
        QPointF(0, m_pasteImage.height())
    });

    QPolygonF target = m_shape.translated(-m_shape.boundingRect().topLeft());

    QTransform transform;
    if(!QTransform::quadToQuad(src, target, transform)) {
        qWarning("Couldn't transform pasted image!");
        return;
    }

    // Paint transformed image
    QImage image(rect.size(), QImage::Format_ARGB32);
    image.fill(0);
    {
        QPainter imagep(&image);
        imagep.setRenderHint(QPainter::SmoothPixmapTransform);
        imagep.setTransform(transform);
        imagep.drawImage(0, 0, m_pasteImage);
    }

    // Merge image
    client->sendUndopoint();
    client->sendImage(layer, rect.x(), rect.y(), image);
}
Пример #2
0
bool ImageProvider::image_stright_checker(QImage find,int line, QString text){
    QImage lineimage(700,100,QImage::Format_RGB888);
    int blank = 20;

    QPainter imagep(&lineimage);
   // qDebug() << text;
        QRect rect(0,0,800,800);
    imagep.setPen(QPen(Qt::black));
    imagep.setFont(QFont("Arial",fontsize));
    imagep.fillRect(rect,Qt::white);
    imagep.drawText(0,fontsize+10, text);
    QColor findcolor;
    //qDebug() << "line" << line;
    for(int j=1;j<100;j++){
        findcolor= lineimage.pixel(line,j);
       // qDebug() << findcolor.blue();
        if(findcolor.blue() < 100){
         //   qDebug() << "TRUeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
            return true;
        }
    }

    return false;
}
Пример #3
0
QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
    QString hideline_str;
    fontsize = 30;
    int blank = 20;
     QImage image(500,500, QImage::Format_ARGB32_Premultiplied);
    QImage lineimage(700,100,QImage::Format_RGB888);

    QPainter imagep(&lineimage);

    imagep.setPen(QPen(Qt::black));
    imagep.setFont(QFont("Arial",fontsize));

    int linecount=0;

    QString fileName = "/home/sharemen-note/bunkasai/test.cpp";
    qDebug() << fileName;

 //   if(!fileName.isEmpty()){
    //QPixmap pix(800,800);
        //QImage image(this->size(), QImage::Format_ARG32_Premultiplied);
        fprintf(stderr,"checked");
    QPainter codepainter(&image);
    //codeimagePainter.drawImage(100,100,QImage("white.png"));
    //codeimagePainter.setCompositionMode(QPainter::CompositionMode_Xor);
    QRect rect(0,0,800,800);
    codepainter.fillRect(rect,Qt::white);
    imagep.fillRect(rect,Qt::white);
    codepainter.setPen(Qt::black);
    codepainter.setFont(QFont("Arial",fontsize));


    QFile filevar(fileName);
    fprintf(stderr,"test");
    if(!filevar.open(QIODevice::ReadOnly | QIODevice::Text)){}
    QTextStream in(&filevar);
    while(!in.atEnd()){
        linecount++;
        QString line = in.readLine();
        qDebug() << line;
        if(line.contains("@",Qt::CaseInsensitive)){
            hideline = linecount;
            atmark = true;
            hiderow= line.indexOf("@");
            hidenum = line.indexOf("@",hiderow+1);
            line.remove(hiderow,1);
            line.remove(hidenum-1,1);
            hideline_str = line;
            imagep.drawText(0, (fontsize+10)/*Qt::AlignCenter*/, hideline_str);
            hidenum= hidenum;
            qDebug() << hiderow*fontsize << hideline;
        }
        codepainter.drawText(0,(fontsize+10) * linecount, line );
    }









    int count=0;
    QString hideline_former;
    hideline_former = hideline_str.mid(0,hiderow);
    if(hideline_former.contains("\"",Qt::CaseInsensitive)){
        for(int i=0;i<hideline_former.length();i++){
            if(hideline_former.at(i) == 0x22){
                count++;
            }
        }
    }

    int count_inside=0;
    hideline_former = hideline_str.mid(hiderow,hidenum-hiderow-1);
    if(hideline_former.contains("\"",Qt::CaseInsensitive)){
        for(int i=0;i<hideline_former.length();i++){
            if(hideline_former.at(i) == 0x22){
                count_inside++;
            }
        }
    }











    int count_blank=0;
    int count_blank_first = 0;
    int count_blank_first_mark =0;
    int k;
    if(hideline_str.contains(Qt::Key_Space,Qt::CaseInsensitive)){
        for(int i=0;i<hideline_str.length();i++){
            if(hideline_str.at(i) == 0x20){
                count_blank++;
            }else{
                k=i;
                break;
            }
        }
    }

    bool atfirstmark = false;
    if(count_blank == hiderow){
        atfirstmark =true;
        qDebug() << "atfirsttime";
    //    if(count_blank ==0) count_blank_first--;
    }

    if(hideline_str.contains(Qt::Key_Space,Qt::CaseInsensitive)){
        for(int i=k+1;i<hideline_str.length();i++){
            if(hideline_str.at(i) == 0x20 && atfirstmark == false){
                count_blank_first++;
            }else if(i== hiderow|| atfirstmark == true){
                k=i;
                break;
            }
        }
    }

    if(hideline_str.contains(Qt::Key_Space,Qt::CaseInsensitive)){
        for(int i=k+1;i<hideline_str.length();i++){
            if(hideline_str.at(i) == 0x20){
                count_blank_first_mark++;
            }else if(i == hidenum -1){
                k=i;
                break;
            }
        }
    }









    qDebug() << count << count_inside;
    qDebug() << "blankcount" << count_blank;
    qDebug() << "hiderow" << hiderow;
    qDebug() << "hidenum" << hidenum;
    qDebug() << "countblankfirst" << count_blank_first;
    qDebug() << "countblankfirstmark" << count_blank_first_mark;

    bool black = false;
    int characount =0,beginpos=0,finishpos=0;
    for(int i=0;i<700;i++){
        if(image_stright_checker(lineimage,i,hideline_str)){
    //        qDebug()<< "helo";
              if(black == false){
                    black = true;
                    if(atfirstmark == true){
                        qDebug() << "atfirstmark";
                        beginpos = i;
                                break;
                    }
             }
        }else{
            if(black == true){
                black = false;

                characount++;
            }
                if(characount + count /*+ count_blank_first*/ >= hiderow - count_blank && atfirstmark == false){
                        beginpos = i;
                        i=700;
                        qDebug() << "break;";
                        break;
                }
        }
    }

    qDebug() <<"kakunin"<< hiderow << blank;
    qDebug() <<"kakunin" << characount << count;

    black = false;
    characount = 0;

    for(int i=0;i<700;i++){
        if(image_stright_checker(lineimage,i,hideline_str)){
    //        qDebug()<< "helo";
              if(black == false){
                    black = true;
             }
        }else{
            if(black == true){
                black = false;
                characount++;
            }
            if(characount - count_inside -count +count_blank_first + count_blank_first_mark>= hidenum - count_blank-1){
                    finishpos = i;
                    i=700;
                    qDebug() << "break;";
                    break;
            }
        }
    }








    QRect hiderect(beginpos,(fontsize+10) * (hideline-1),finishpos-beginpos,fontsize+10);

    codepainter.fillRect(hiderect,Qt::black);

    qDebug() <<"this is color test" << beginpos << finishpos;

    QRect hiderect2(beginpos,fontsize,finishpos-beginpos,fontsize+10);

    imagep.fillRect(hiderect2,Qt::black);

//    imagep.drawText(lineimage.rect(), Qt::AlignCenter, hideline_former);  //crashes program

    qDebug() << hiderow << hidenum;

    qDebug() << "blank" << count_blank << "count" << count;

    return QPixmap::fromImage(image);

}