void BucketTool::mouseReleaseEvent( QMouseEvent *event ) { Layer* layer = mEditor->layers()->currentLayer(); if ( layer == NULL ) { return; } if ( event->button() == Qt::LeftButton ) { if ( layer->type() == Layer::BITMAP ) { BitmapImage *sourceImage = ( ( LayerBitmap * )layer )->getLastBitmapImageAtFrame( mEditor->currentFrame(), 0 ); Layer *targetLayer = layer; // by default int layerNumber = mEditor->layers()->currentLayerIndex(); // by default if ( mEditor->layers()->currentLayerIndex() > 0 ) { Layer *layer2 = mEditor->layers()->currentLayer( -1 ); if ( layer2->type() == Layer::BITMAP ) { targetLayer = layer2; layerNumber = layerNumber - 1; } } BitmapImage *targetImage = ( ( LayerBitmap * )targetLayer )->getLastBitmapImageAtFrame( mEditor->currentFrame(), 0 ); BitmapImage::floodFill( sourceImage, targetImage, getLastPoint().toPoint(), qRgba( 0, 0, 0, 0 ), mEditor->color()->frontColor().rgba(), 10 * 10, true ); mScribbleArea->setModified( layerNumber, mEditor->currentFrame() ); mScribbleArea->setAllDirty(); } else if ( layer->type() == Layer::VECTOR ) { mScribbleArea->clearBitmapBuffer(); VectorImage *vectorImage = ( ( LayerVector * )layer )->getLastVectorImageAtFrame( mEditor->currentFrame(), 0 ); if ( event->modifiers() == Qt::AltModifier ) { vectorImage->removeArea( getLastPoint() ); } else { QList<QPointF> path = mStrokePoints; if (path.size() < 10) { vectorImage->fill( getLastPoint(), mEditor->color()->frontColorNumber(), 3.0 / mEditor->view()->scaling() ); } else { vectorImage->fill( path, mEditor->color()->frontColorNumber(), 10.0 / mEditor->view()->scaling() ); } } mScribbleArea->setModified( mEditor->layers()->currentLayerIndex(), mEditor->currentFrame() ); mScribbleArea->setAllDirty(); } } endStroke(); }