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