Ejemplo n.º 1
0
void Editor::duplicateKey()
{
    Layer* layer = mObject->getLayer( layers()->currentLayerIndex() );
    if ( layer != NULL )
    {
        if ( layer->type() == Layer::VECTOR )
        {
            mScribbleArea->selectAll();
            clipboardVectorOk = true;
            g_clipboardVectorImage = *( ( ( LayerVector* )layer )->getLastVectorImageAtFrame( currentFrame(), 0 ) );  // copy the image (that works but I should also provide a copy() method)
            addNewKey();
            VectorImage* vectorImage = ( ( LayerVector* )layer )->getLastVectorImageAtFrame( currentFrame(), 0 );
            vectorImage->paste( g_clipboardVectorImage ); // paste the clipboard
            mScribbleArea->setModified( layers()->currentLayerIndex(), currentFrame() );
            mScribbleArea->update();
        }
        if ( layer->type() == Layer::BITMAP )
        {
            mScribbleArea->selectAll();
            copy();
            addNewKey();
            paste();
        }
    }
}
Ejemplo n.º 2
0
bool Editor::importVectorImage( QString filePath )
{
    Q_ASSERT( layers()->currentLayer()->type() == Layer::VECTOR );

    backup( tr( "ImportImg" ) );

    auto layer = static_cast<LayerVector*>( layers()->currentLayer() );

    VectorImage* vectorImage = ( ( LayerVector* )layer )->getVectorImageAtFrame( currentFrame() );
    if ( vectorImage == NULL )
    {
        addNewKey();
        vectorImage = ( ( LayerVector* )layer )->getVectorImageAtFrame( currentFrame() );
    }
    VectorImage* importedVectorImage = new VectorImage;
    bool ok = importedVectorImage->read( filePath );
    if ( ok )
    {
        importedVectorImage->selectAll();
        vectorImage->paste( *importedVectorImage );
    }
    /*
    else
    {
        QMessageBox::warning( mMainWindow,
                              tr( "Warning" ),
                              tr( "Unable to load vector image.<br><b>TIP:</b> Use Vector layer to import vectors." ),
                              QMessageBox::Ok,
                              QMessageBox::Ok );
    }
    */
    return ok;
}
Ejemplo n.º 3
0
bool Editor::importBitmapImage( QString filePath )
{
    backup( tr( "ImportImg" ) );

    QImageReader reader( filePath );

    Q_ASSERT( layers()->currentLayer()->type() == Layer::BITMAP );
    auto layer = static_cast<LayerBitmap*>( layers()->currentLayer() );

    QImage img( reader.size(), QImage::Format_ARGB32_Premultiplied );

    while ( reader.read( &img ) )
    {
        if ( img.isNull() || reader.nextImageDelay() <= 0 )
        {
            break;
        }

        if ( !layer->keyExists( currentFrame() ) )
        {
            addNewKey();
        }
        BitmapImage* bitmapImage = layer->getBitmapImageAtFrame( currentFrame() );

        QRect boundaries = img.rect();
        boundaries.moveTopLeft( mScribbleArea->getCentralPoint().toPoint() - QPoint( boundaries.width() / 2, boundaries.height() / 2 ) );

        BitmapImage* importedBitmapImage = new BitmapImage( boundaries, img );
        bitmapImage->paste( importedBitmapImage );

        scrubTo( currentFrame() + 1 );
    }

    return true;
}
Ejemplo n.º 4
0
bool Editor::importVectorImage(QString filePath)
{
    Q_ASSERT(layers()->currentLayer()->type() == Layer::VECTOR);

    auto layer = static_cast<LayerVector*>(layers()->currentLayer());

    VectorImage* vectorImage = (static_cast<LayerVector*>(layer))->getVectorImageAtFrame(currentFrame());
    if (vectorImage == nullptr)
    {
        addNewKey();
        vectorImage = (static_cast<LayerVector*>(layer))->getVectorImageAtFrame(currentFrame());
    }

    VectorImage importedVectorImage;
    bool ok = importedVectorImage.read(filePath);
    if (ok)
    {
        importedVectorImage.selectAll();
        vectorImage->paste(importedVectorImage);

        backup(tr("Import Image"));
    }

    return ok;
}
bool Editor::importBitmapImage( QString filePath )
{
    backup( tr( "ImportImg" ) );
    qDebug(filePath.toLatin1().data());
    QImageReader reader( filePath );

    Q_ASSERT( layers()->currentLayer()->type() == Layer::BITMAP );
    auto layer = static_cast<LayerBitmap*>( layers()->currentLayer() );

    QImage img;//( reader.size(), QImage::Format_ARGB32_Premultiplied );
    img.load(filePath);
    while ( reader.read( &img ) )
    {/*
        if ( img.isNull() || reader.nextImageDelay() <= 0 )
        {
            qDebug("why not image");
            break;
        }*/

        if ( !layer->keyExists( currentFrame() ) )
        {
            qDebug("why not imagesadfsdaf ssd");
            addNewKey();
        }


        BitmapImage* bitmapImage = layer->getBitmapImageAtFrame( currentFrame() );

        QRect boundaries = img.rect();

        boundaries.moveTopLeft( mScribbleArea->getCentralPoint().toPoint() - QPoint( boundaries.width() / 2, boundaries.height() / 2 ) );
        BitmapImage* importedBitmapImage = new BitmapImage( boundaries, img );
        bitmapImage->paste( importedBitmapImage );

      if(layers()->currentLayerIndex()>2)
      {
        //下面用来框出倒入的图片
        mScribbleArea->mySelection.moveTopLeft(mScribbleArea->getCentralPoint().toPoint() - QPoint( boundaries.width()/1.5, boundaries.height()/1.5) );//这个是为了将值赋给QRectF
        mScribbleArea->mySelection.moveBottomRight(mScribbleArea->getCentralPoint().toPoint() + QPoint( boundaries.width()/1.5, boundaries.height()/1.5));
        mScribbleArea->mySelection.setTopLeft(mScribbleArea->getCentralPoint().toPoint() - QPoint( boundaries.width()/1.5, boundaries.height()/1.5));
        mScribbleArea->mySelection.setBottomRight(mScribbleArea->getCentralPoint().toPoint() + QPoint( boundaries.width()/1.5, boundaries.height()/1.5));
        //mScribbleArea->mySelection.moveBottomRight(QPoint( boundaries.width()/2, boundaries.height()/2));
        mScribbleArea->setSelection( mScribbleArea->mySelection, true );
        mScribbleArea->myTransformedSelection = mScribbleArea->mySelection.adjusted( 0, 0, 0, 0 );
        mScribbleArea->myTempTransformedSelection = mScribbleArea->mySelection.adjusted( 0, 0, 0, 0 );
        mScribbleArea->update();
        mScribbleArea->mIncludeImg[mLayerManager->currentLayerIndex()]=mScribbleArea->mySelection;
        tools()->setCurrentTool(MOVE);
       }
       // scrubTo( currentFrame() + 1 );
    }

    return true;
}
Ejemplo n.º 6
0
void LWPGradient::event(LWPPanel panel, int x, int y, int w, int h, int mx, int my, int md[3], int kq)
{
	int redraw = 0;
	if (!md[2])	// hasn't dragged yet, so select
	{
		LWPGradientKey * prevSel = sel;
		select(x, y, w, h, mx);
		redraw = 1;
		dragging = 0;
		if (sel)	// a key was selected
		{
			if (md[1] < h*0.25)			// selected drag gadget
			{
				if (kq && sel != head && sel != tail)	// qualifiers held down, so delete the key
				{
					LWPGradientKey * k = sel;
					remove(k);
					delete k;
				}
				else dragging = 1;
			}
			else if (md[1] > h*0.70)	// selected color gadget
			{
				if (kq && prevSel)	// qualifiers held down, so paste key
				{
					sel->col = prevSel->col;
				}
				else HandleColor(sel->col);
			}
			else	// just clicked in the middle of the key
			{
				if (sel == prevSel) sel = 0;	// unselect
			}
		}
		else		// no key selected, so create a new key
		{
			addNewKey(double(md[0]) / double(w - 1));
			if (kq && prevSel) sel->col = prevSel->col;	// copy key if qualifier held down
		}
	}
	else	// is dragging
	{
		if (sel && dragging)	// we're dragging a selected key
		{
			sel->setXOffset(w, md[0]); redraw = 1;
		}
	}
	if (redraw) draw(panel, x, y, w, h);
}
bool Editor::importVectorImage( QString filePath )
{
    Q_ASSERT( layers()->currentLayer()->type() == Layer::VECTOR );

    backup( tr( "ImportImg" ) );

    auto layer = static_cast<LayerVector*>( layers()->currentLayer() );

    VectorImage* vectorImage = ( ( LayerVector* )layer )->getVectorImageAtFrame( currentFrame() );
    if ( vectorImage == NULL )
    {
        addNewKey();
        vectorImage = ( ( LayerVector* )layer )->getVectorImageAtFrame( currentFrame() );
    }
//    mScribbleArea->clearBitmapBuffer();
//    qreal tol = mScribbleArea->getCurveSmoothing() / mEditor->view()->scaling();
//    BezierCurve curve( mStrokePoints, mStrokePressures, tol );
//    curve.setWidth( properties.width );
//    curve.setFeather( properties.feather );
//    curve.setInvisibility( false );
//    curve.setVariableWidth( mScribbleArea->usePressure() );
//    curve.setColourNumber( mEditor->color()->frontColorNumber() );

//    auto pLayerVector = static_cast< LayerVector* >( layer );
//    VectorImage* vectorImage = pLayerVector->getLastVectorImageAtFrame( mEditor->currentFrame(), 0 );
//    vectorImage->addCurve( curve, mEditor->view()->scaling() );

//    mScribbleArea->setModified( mEditor->layers()->currentLayerIndex(), mEditor->currentFrame() );
//    mScribbleArea->setAllDirty();
    VectorImage* importedVectorImage = new VectorImage;
    bool ok = importedVectorImage->read( filePath );
    if ( ok )
    {
        importedVectorImage->selectAll();
        vectorImage->paste( *importedVectorImage );
    }
    /*
    else
    {
        QMessageBox::warning( mMainWindow,
                              tr( "Warning" ),
                              tr( "Unable to load vector image.<br><b>TIP:</b> Use Vector layer to import vectors." ),
                              QMessageBox::Ok,
                              QMessageBox::Ok );
    }
    */
    return ok;
}
Ejemplo n.º 8
0
bool Editor::importBitmapImage(QString filePath, int space)
{
    QImageReader reader(filePath);

    Q_ASSERT(layers()->currentLayer()->type() == Layer::BITMAP);
    auto layer = static_cast<LayerBitmap*>(layers()->currentLayer());

    QImage img(reader.size(), QImage::Format_ARGB32_Premultiplied);
    if (img.isNull())
    {
        return false;
    }

    while (reader.read(&img))
    {
        if (!layer->keyExists(currentFrame()))
        {
            addNewKey();
        }
        BitmapImage* bitmapImage = layer->getBitmapImageAtFrame(currentFrame());

        BitmapImage importedBitmapImage(mScribbleArea->getCentralPoint().toPoint() - QPoint(img.width() / 2, img.height() / 2), img);
        bitmapImage->paste(&importedBitmapImage);

        if (space > 1) {
            scrubTo(currentFrame() + space);
        } else {
            scrubTo(currentFrame() + 1);
        }

        backup(tr("Import Image"));

        // Workaround for tiff import getting stuck in this loop
        if (!reader.supportsAnimation())
        {
            break;
        }
    }

    return true;
}
void QSoftKeyDesignToolWidget::on_BtnAdd_clicked()
{
    emit addNewKey();
}