blob: 6918768e037bc5e148ae752242da62d24fd7bfec [file] [log] [blame]
/*
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
2004, 2005 Rob Buis <buis@kde.org>
This file is part of the KDE project
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <kurl.h>
#include <kdebug.h>
#include <kdom/Helper.h>
#include <kdom/Namespace.h>
#include <kcanvas/KCanvasView.h>
#include "ksvg.h"
#include "svgtags.h"
#include <ksvg2/KSVGView.h>
#include "SVGDocumentImpl.h"
#include "SVGSVGElementImpl.h"
#include "KSVGDocumentBuilder.h"
#include "SVGDOMImplementationImpl.h"
using namespace KSVG;
DocumentBuilder::DocumentBuilder(KSVGView *view) : KDOM::DocumentBuilder()
{
m_view = view;
}
DocumentBuilder::~DocumentBuilder()
{
}
bool DocumentBuilder::startDocument(const KURL &uri)
{
kdDebug(26001) << "KSVG::DocumentBuilder::startDocument, uri = " << uri.prettyURL() << endl;
SVGDOMImplementationImpl *factory = SVGDOMImplementationImpl::self();
SVGDocumentImpl *docImpl = static_cast<SVGDocumentImpl *>(factory->createDocument(KDOM::NS_SVG.handle(), KDOM::DOMString("svg:svg").handle(),
factory->defaultDocumentType(), false, m_view));
if(!docImpl)
return false;
DocumentBuilder::linkDocumentToCanvas(docImpl, m_view);
setDocument(docImpl); // Register in kdom...
return KDOM::DocumentBuilder::startDocument(uri);
}
#if 0
void DocumentBuilder::linkDocumentToCanvas(const SVGDocument &doc, KSVGView *view)
{
SVGDocumentImpl *docImpl = static_cast<SVGDocumentImpl *>(doc.handle());
if(!docImpl)
return;
DocumentBuilder::linkDocumentToCanvas(docImpl, view);
}
#endif
void DocumentBuilder::linkDocumentToCanvas(SVGDocumentImpl *docImpl, KSVGView *view)
{
docImpl->ref();
docImpl->setCanvasView((view ? view->canvasView() : 0));
docImpl->attach();
}
void DocumentBuilder::finishedDocument(SVGDocumentImpl *docImpl)
{
if(docImpl)
docImpl->finishedParsing();
}
bool DocumentBuilder::endDocument()
{
kdDebug(26001) << "KSVG::DocumentBuilder::endDocument" << endl;
KDOM::DocumentBuilder::endDocument();
DocumentBuilder::finishedDocument(static_cast<SVGDocumentImpl *>(document()));
return true;
}
// vim:ts=4:noet