コード例 #1
0
void ImageTokenizer::finish()
{
    if (!m_parserStopped && m_doc->imageElement()) {
        CachedImage* cachedImage = m_doc->cachedImage();
        RefPtr<SharedBuffer> data = m_doc->frame()->loader()->documentLoader()->mainResourceData();

        // If this is a multipart image, make a copy of the current part, since the resource data
        // will be overwritten by the next part.
        if (m_doc->frame()->loader()->documentLoader()->isLoadingMultipartContent())
            data = data->copy();

        cachedImage->data(data.release(), true);
        cachedImage->finish();

        cachedImage->setResponse(m_doc->frame()->loader()->documentLoader()->response());

        IntSize size = cachedImage->imageSize(pageZoomFactor(m_doc));
        if (size.width()) {
            // Compute the title, we use the decoded filename of the resource, falling
            // back on the (decoded) hostname if there is no path.
            String fileName = decodeURLEscapeSequences(m_doc->url().lastPathComponent());
            if (fileName.isEmpty())
                fileName = m_doc->url().host();
            m_doc->setTitle(imageTitle(fileName, size));
        }

        m_doc->imageChanged();
    }

    m_doc->finishedParsing();
}
コード例 #2
0
void ImageEventListener::handleEvent(ScriptExecutionContext*, Event* event)
{
    if (event->type() == eventNames().resizeEvent)
        m_doc->windowSizeChanged();
    else if (event->type() == eventNames().clickEvent) {
        MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
        m_doc->imageClicked(mouseEvent->x(), mouseEvent->y());
    }
}
コード例 #3
0
ファイル: ImageDocument.cpp プロジェクト: Gin-Rye/duibrowser
bool ImageTokenizer::writeRawData(const char* data, int len)
{
    CachedImage* cachedImage = m_doc->cachedImage();
    cachedImage->data(m_doc->frame()->loader()->documentLoader()->mainResourceData(), false);

    m_doc->imageChanged();
    
    return false;
}
コード例 #4
0
ファイル: ImageDocument.cpp プロジェクト: Gin-Rye/duibrowser
void ImageEventListener::handleEvent(Event* event, bool isWindowEvent)
{
    if (event->type() == eventNames().resizeEvent)
        m_doc->windowSizeChanged();
    else if (event->type() == eventNames().clickEvent) {
        MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
        m_doc->imageClicked(mouseEvent->x(), mouseEvent->y());
    }
}
コード例 #5
0
void ImageEventListener::handleEvent(ExecutionContext*, Event* event)
{
    if (event->type() == EventTypeNames::resize) {
        m_doc->windowSizeChanged(ImageDocument::ScaleOnlyUnzoomedDocument);
    } else if (event->type() == EventTypeNames::click && event->isMouseEvent()) {
        MouseEvent* mouseEvent = toMouseEvent(event);
        m_doc->imageClicked(mouseEvent->x(), mouseEvent->y());
    }
}
コード例 #6
0
ファイル: ImageDocument.cpp プロジェクト: Gin-Rye/duibrowser
void ImageTokenizer::finish()
{
    if (!m_parserStopped && m_doc->imageElement()) {
        CachedImage* cachedImage = m_doc->cachedImage();
        RefPtr<SharedBuffer> data = m_doc->frame()->loader()->documentLoader()->mainResourceData();

        // If this is a multipart image, make a copy of the current part, since the resource data
        // will be overwritten by the next part.
        if (m_doc->frame()->loader()->documentLoader()->isLoadingMultipartContent())
            data = data->copy();

        cachedImage->data(data.release(), true);
        cachedImage->finish();

        cachedImage->setResponse(m_doc->frame()->loader()->documentLoader()->response());

        IntSize size = cachedImage->imageSize(m_doc->frame()->pageZoomFactor());
        if (size.width())
            m_doc->setTitle(imageTitle(cachedImage->response().suggestedFilename(), size));

        m_doc->imageChanged();
    }

    m_doc->finishedParsing();
}
コード例 #7
0
bool ImageTokenizer::writeRawData(const char*, int)
{
    Frame* frame = m_doc->frame();
    Settings* settings = frame->settings();
    if (!frame->loader()->client()->allowImages(!settings || settings->areImagesEnabled()))
        return false;

    CachedImage* cachedImage = m_doc->cachedImage();
    cachedImage->data(frame->loader()->documentLoader()->mainResourceData(), false);

    m_doc->imageChanged();

    return false;
}
コード例 #8
0
void ImageDocumentElement::willMoveToNewOwnerDocument()
{
    if (m_imageDocument) {
        m_imageDocument->disconnectImageElement();
        m_imageDocument = 0;
    }
    HTMLImageElement::willMoveToNewOwnerDocument();
}
コード例 #9
0
void ImageDocumentElement::didMoveToNewDocument(Document* oldDocument)
{
    if (m_imageDocument) {
        m_imageDocument->disconnectImageElement();
        m_imageDocument = nullptr;
    }
    HTMLImageElement::didMoveToNewDocument(oldDocument);
}
コード例 #10
0
//-----------------------------------------------------------------------------
int ModeConvertImage::process()
{
    // check input and template files exists
    if (QFile::exists(this->mInputFilename))
    {
        // check dodocument name
        QString docNameWS = this->mDocumentName;
        docNameWS.remove(QRegExp("\\s"));
        if (!docNameWS.isEmpty())
        {
            // check preset exists
            if (Preset::presetsList().contains(this->mPresetName))
            {
                Preset::setSelectedName(this->mPresetName);

                // load image from input file
                QImage imageLoaded;
                if (imageLoaded.load(this->mInputFilename))
                {
                    QImage imageConverted = imageLoaded.convertToFormat(QImage::Format_ARGB32);

                    ImageDocument imageDocument;
                    QStringList keys = imageDocument.dataContainer()->keys();

                    // process all keys (1 in image document)
                    QStringListIterator iterator(keys);
                    while (iterator.hasNext())
                    {
                        QString key = iterator.next();
                        imageDocument.dataContainer()->setImage(key, &imageConverted);

                        imageDocument.setDocumentName(docNameWS);
                        imageDocument.dataContainer()->setInfo("converted filename", QVariant(this->mOuputFilename));

                        // save to output file
                        QFile file(this->mOuputFilename);
                        if (file.open(QFile::WriteOnly))
                        {
                            Preset preset;
                            preset.load(this->mPresetName);

                            // optional template file
                            if(!this->mTemplateFilename.isEmpty() && QFile::exists(this->mTemplateFilename))
                            {
                                preset.templates()->setImage(this->mTemplateFilename);
                            }

                            QString result = imageDocument.convert(&preset);

                            file.write(result.toUtf8());
                            file.close();

                            if (imageDocument.outputFilename() != this->mOuputFilename)
                            {
                                imageDocument.setOutputFilename(this->mOuputFilename);
                            }
                        }
                    }

                    return 0;
                }
            }
        }
    }

    return 1;
}