Esempio n. 1
0
void Timeline::Render(QPainter& painter)
{
    std::vector<QImage*> onions;

    for (size_t i = 0; i < mLayers.size(); ++i)
    {
        Layer* layer = mLayers[i];
        if (!layer->IsEnabled())
        {
            continue;
        }
        if (layer->GetType() == LayerTypeRaster)
        {
            QImage* img = mLayers[i]->GetImage(mFrameIndex);
            if (img)
            {
                if (mEditor->IsOnionEnabled() && mLayerIndex == (int)i)
                {
                    if (layer->GetType() == LayerTypeRaster && layer->IsOnionEnabled())
                    {
                        RasterLayer* l = (RasterLayer*)mLayers[i];
                        QImage* prev = l->GetImage(l->GetPrevImageIndex(mFrameIndex));
                        if(prev && prev != img)
                        {
                            onions.push_back(prev);
                        }
                        QImage* next = l->GetImage(l->GetNextImageIndex(mFrameIndex));
                        if(next && next != img)
                        {
                            onions.push_back(next);
                        }
                    }
                }

                painter.setOpacity(layer->GetOpacity() / 255.0f);
                painter.drawImage(0, 0, *img);
            }
        }
        else if (layer->GetType() == LayerTypeTrace)
        {
            TraceLayer* tl = (TraceLayer*)layer;
            tl->Render(painter);
        }
    }

    painter.setOpacity(0.25f);
    for (size_t i = 0; i < onions.size(); ++i)
    {
        painter.drawImage(0, 0, *onions[i]);
    }
}
Esempio n. 2
0
void Timeline::UpdateCanvas()
{
    std::vector<QImage*> layerImages;
    std::vector<QImage*> onions;
    QImage* editImage = NULL;

    for (size_t i = 0; i < mLayers.size(); ++i)
    {
        if (!mLayers[i]->IsEnabled())
        {
            continue;
        }
        QImage* img = mLayers[i]->GetImage(mFrameIndex);
        if (img)
        {
            if (mLayerIndex == i)
            {
                if (mLayers[i]->GetType() == LayerTypeRaster)
                {
                    RasterLayer* l = (RasterLayer*)mLayers[i];
                    QImage* prev = l->GetImage(l->GetPrevImageIndex(mFrameIndex));
                    if(prev && prev != img)
                    {
                        onions.push_back(prev);
                    }
                    QImage* next = l->GetImage(l->GetNextImageIndex(mFrameIndex));
                    if(next && next != img)
                    {
                        onions.push_back(next);
                    }
                }

                editImage = img;
            }
            layerImages.push_back(img);
        }
    }
    mEditor->Load(editImage);
    update();
}