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(); } } }
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; }
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; }
void Editor::paste() { if((cutFlag||copyFlag)&&layers()->currentLayerIndex()>2) { newBitmapLayer(); } Layer* layer = mObject->getLayer( layers()->currentLayerIndex() ); if ( layer != NULL ) { if ( layer->type() == Layer::BITMAP && g_clipboardBitmapImage.image() != NULL ) { backup( tr( "Paste" ) ); BitmapImage tobePasted = g_clipboardBitmapImage.copy(); qDebug() << "to be pasted --->" << tobePasted.image()->size(); if ( mScribbleArea->somethingSelected ) { QRectF selection = mScribbleArea->getSelection(); if ( g_clipboardBitmapImage.width() <= selection.width() && g_clipboardBitmapImage.height() <= selection.height() ) { tobePasted.moveTopLeft( selection.topLeft() ); } else { tobePasted.transform( selection, true ); } } auto pLayerBitmap = static_cast< LayerBitmap* >( layer ); pLayerBitmap->getLastBitmapImageAtFrame( currentFrame(), 0 )->paste( &tobePasted ); // paste the clipboard } else if ( layer->type() == Layer::VECTOR && clipboardVectorOk ) { backup( tr( "Paste" ) ); mScribbleArea->deselectAll(); VectorImage* vectorImage = ( ( LayerVector* )layer )->getLastVectorImageAtFrame( currentFrame(), 0 ); vectorImage->paste( g_clipboardVectorImage ); // paste the clipboard mScribbleArea->setSelection( vectorImage->getSelectionRect(), true ); //((LayerVector*)layer)->getLastVectorImageAtFrame(backupFrame, 0)->modification(); ???? } } mScribbleArea->updateCurrentFrame(); if((cutFlag&&!mScribbleArea->somethingSelected)||(copyFlag&&mScribbleArea->somethingSelected)) { mScribbleArea->mySelection=cutArea; 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); } cutFlag =0; copyFlag =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() ); } // 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; }
void Editor::paste() { Layer* layer = mObject->getLayer( layers()->currentLayerIndex() ); if ( layer != NULL ) { if ( layer->type() == Layer::BITMAP && g_clipboardBitmapImage.image() != NULL ) { backup( tr( "Paste" ) ); BitmapImage tobePasted = g_clipboardBitmapImage.copy(); qDebug() << "to be pasted --->" << tobePasted.image()->size(); if ( mScribbleArea->somethingSelected ) { QRectF selection = mScribbleArea->getSelection(); if ( g_clipboardBitmapImage.width() <= selection.width() && g_clipboardBitmapImage.height() <= selection.height() ) { tobePasted.moveTopLeft( selection.topLeft() ); } else { tobePasted.transform( selection, true ); } } auto pLayerBitmap = static_cast< LayerBitmap* >( layer ); pLayerBitmap->getLastBitmapImageAtFrame( currentFrame(), 0 )->paste( &tobePasted ); // paste the clipboard } else if ( layer->type() == Layer::VECTOR && clipboardVectorOk ) { backup( tr( "Paste" ) ); mScribbleArea->deselectAll(); VectorImage* vectorImage = ( ( LayerVector* )layer )->getLastVectorImageAtFrame( currentFrame(), 0 ); vectorImage->paste( g_clipboardVectorImage ); // paste the clipboard mScribbleArea->setSelection( vectorImage->getSelectionRect(), true ); //((LayerVector*)layer)->getLastVectorImageAtFrame(backupFrame, 0)->modification(); ???? } } mScribbleArea->updateCurrentFrame(); }