void BucketTool::mouseReleaseEvent(QMouseEvent *event) { Layer *layer = m_pEditor->getCurrentLayer(); if (layer == NULL) { return; } if (event->button() == Qt::LeftButton) { if (layer->type == Layer::BITMAP) { BitmapImage *sourceImage = ((LayerBitmap *)layer)->getLastBitmapImageAtFrame(m_pEditor->m_nCurrentFrameIndex, 0); Layer *targetLayer = layer; // by default int layerNumber = m_pEditor->m_nCurrentLayerIndex; // by default if (m_pEditor->m_nCurrentLayerIndex > 0) { Layer *layer2 = m_pEditor->getCurrentLayer(-1); if (layer2->type == Layer::BITMAP) { targetLayer = layer2; layerNumber = layerNumber - 1; } } BitmapImage *targetImage = ((LayerBitmap *)targetLayer)->getLastBitmapImageAtFrame(m_pEditor->m_nCurrentFrameIndex, 0); BitmapImage::floodFill(sourceImage, targetImage, getLastPoint().toPoint(), qRgba(0, 0, 0, 0), m_pEditor->colorManager()->frontColor().rgba(), 10 * 10, true); m_pScribbleArea->setModified(layerNumber, m_pEditor->m_nCurrentFrameIndex); m_pScribbleArea->setAllDirty(); } else if (layer->type == Layer::VECTOR) { VectorImage *vectorImage = ((LayerVector *)layer)->getLastVectorImageAtFrame(m_pEditor->m_nCurrentFrameIndex, 0); if (event->modifiers() == Qt::AltModifier) { vectorImage->removeArea(getLastPoint()); } else { m_pScribbleArea->floodFill(vectorImage, getLastPixel().toPoint(), qRgba(0, 0, 0, 0), qRgb(200, 200, 200), 100 * 100); } m_pScribbleArea->setModified(m_pEditor->m_nCurrentLayerIndex, m_pEditor->m_nCurrentFrameIndex); m_pScribbleArea->setAllDirty(); } } }
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(); }