[webkit-changes] cvs commit: SVGSupport/kcanvas/device/quartz
KCanvasViewQuartz.h KCanvasViewQuartz.mm
Eric
eseidel at opensource.apple.com
Sun Oct 2 23:15:10 PDT 2005
eseidel 05/10/02 23:15:09
Modified: . ChangeLog
WebCore+SVG dom_kdomnodetreewrapper.cpp
dom_kdomnodetreewrapper.h
kcanvas/device/quartz KCanvasViewQuartz.h
KCanvasViewQuartz.mm
Log:
Bug #: 5132
Submitted by: eseidel
Reviewed by: mjs
Fixes SVG animation support in Safari/WebKit.
http://bugzilla.opendarwin.org/show_bug.cgi?id=5132
* WebCore+SVG/dom_kdomnodetreewrapper.cpp:
(KDOMNodeTreeWrapperImpl::attach): setup kcanvasviewquartz
(KDOMNodeTreeWrapperImpl::detach): tear down kcanvasviewquartz
* WebCore+SVG/dom_kdomnodetreewrapper.h:
* kcanvas/device/quartz/KCanvasViewQuartz.h:
* kcanvas/device/quartz/KCanvasViewQuartz.mm: fix spaces
(KCanvasViewQuartz::KCanvasViewQuartz):
(KCanvasViewQuartz::~KCanvasViewQuartz):
(KCanvasViewQuartz::view):
(KCanvasViewQuartz::setView):
(KCanvasViewQuartz::renderObject): alternative to view
(KCanvasViewQuartz::setRenderObject):
(KCanvasViewQuartz::invalidateCanvasRect):
(KCanvasViewQuartz::viewToCanvasMatrix):
(KCanvasViewQuartz::canvasSizeChanged):
(KCanvasViewQuartz::viewHeight):
(KCanvasViewQuartz::viewWidth):
Revision Changes Path
1.184 +25 -0 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.183
retrieving revision 1.184
diff -u -r1.183 -r1.184
--- ChangeLog 3 Oct 2005 06:02:32 -0000 1.183
+++ ChangeLog 3 Oct 2005 06:15:04 -0000 1.184
@@ -1,3 +1,28 @@
+2005-10-02 Eric Seidel <eseidel at apple.com>
+
+ Reviewed by mjs.
+
+ Fixes SVG animation support in Safari/WebKit.
+ http://bugzilla.opendarwin.org/show_bug.cgi?id=5132
+
+ * WebCore+SVG/dom_kdomnodetreewrapper.cpp:
+ (KDOMNodeTreeWrapperImpl::attach): setup kcanvasviewquartz
+ (KDOMNodeTreeWrapperImpl::detach): tear down kcanvasviewquartz
+ * WebCore+SVG/dom_kdomnodetreewrapper.h:
+ * kcanvas/device/quartz/KCanvasViewQuartz.h:
+ * kcanvas/device/quartz/KCanvasViewQuartz.mm: fix spaces
+ (KCanvasViewQuartz::KCanvasViewQuartz):
+ (KCanvasViewQuartz::~KCanvasViewQuartz):
+ (KCanvasViewQuartz::view):
+ (KCanvasViewQuartz::setView):
+ (KCanvasViewQuartz::renderObject): alternative to view
+ (KCanvasViewQuartz::setRenderObject):
+ (KCanvasViewQuartz::invalidateCanvasRect):
+ (KCanvasViewQuartz::viewToCanvasMatrix):
+ (KCanvasViewQuartz::canvasSizeChanged):
+ (KCanvasViewQuartz::viewHeight):
+ (KCanvasViewQuartz::viewWidth):
+
2005-10-02 Alexey Proskuryakov <ap at nypop.com>
Reviewed by eseidel.
1.2 +13 -0 SVGSupport/WebCore+SVG/dom_kdomnodetreewrapper.cpp
Index: dom_kdomnodetreewrapper.cpp
===================================================================
RCS file: /cvs/root/SVGSupport/WebCore+SVG/dom_kdomnodetreewrapper.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- dom_kdomnodetreewrapper.cpp 23 Sep 2005 03:28:26 -0000 1.1
+++ dom_kdomnodetreewrapper.cpp 3 Oct 2005 06:15:08 -0000 1.2
@@ -31,6 +31,8 @@
#include "kdom/core/DocumentImpl.h"
#include "ksvg2/svg/SVGDocumentImpl.h"
+#include "ksvg2/KSVGView.h"
+#include "kcanvas/device/quartz/KCanvasViewQuartz.h"
using namespace khtml;
using namespace DOM;
@@ -57,9 +59,20 @@
RenderKCanvasWrapper *canvasWrapper = static_cast<RenderKCanvasWrapper*>(renderer());
SVGDocumentImpl *svgDoc = static_cast<KSVG::SVGDocumentImpl *>(m_wrappedDoc);
canvasWrapper->setCanvas(svgDoc->canvas());
+ KCanvasViewQuartz *canvasView = static_cast<KCanvasViewQuartz *>(svgDoc->svgView()->canvasView());
+ canvasView->setRenderObject(canvasWrapper);
}
}
+void KDOMNodeTreeWrapperImpl::detach()
+{
+ SVGDocumentImpl *svgDoc = static_cast<KSVG::SVGDocumentImpl *>(m_wrappedDoc);
+ KCanvasViewQuartz *canvasView = static_cast<KCanvasViewQuartz *>(svgDoc->svgView()->canvasView());
+ canvasView->setRenderObject(NULL);
+
+ ElementImpl::detach();
+}
+
RenderObject *KDOMNodeTreeWrapperImpl::createRenderer(RenderArena *arena, RenderStyle *style)
{
return new (arena) RenderKCanvasWrapper(this);
1.2 +1 -0 SVGSupport/WebCore+SVG/dom_kdomnodetreewrapper.h
Index: dom_kdomnodetreewrapper.h
===================================================================
RCS file: /cvs/root/SVGSupport/WebCore+SVG/dom_kdomnodetreewrapper.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- dom_kdomnodetreewrapper.h 23 Sep 2005 03:28:26 -0000 1.1
+++ dom_kdomnodetreewrapper.h 3 Oct 2005 06:15:08 -0000 1.2
@@ -50,6 +50,7 @@
virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
virtual void attach();
+ virtual void detach();
private:
KDOM::DocumentImpl *m_wrappedDoc;
1.3 +17 -3 SVGSupport/kcanvas/device/quartz/KCanvasViewQuartz.h
Index: KCanvasViewQuartz.h
===================================================================
RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasViewQuartz.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- KCanvasViewQuartz.h 1 Sep 2005 07:32:54 -0000 1.2
+++ KCanvasViewQuartz.h 3 Oct 2005 06:15:08 -0000 1.3
@@ -25,13 +25,26 @@
#import "KCanvasView.h"
+#ifdef __OBJC__
+ at class DrawView;
+#else
+class DrawView;
+#endif
+
+namespace khtml {
+ class RenderKCanvasWrapper;
+}
+
class KCanvasViewQuartz : public KCanvasView {
public:
KCanvasViewQuartz();
~KCanvasViewQuartz();
- NSView *view();
- void setView(NSView *view);
+ DrawView *view();
+ void setView(DrawView *view);
+
+ khtml::RenderKCanvasWrapper *renderObject();
+ void setRenderObject(khtml::RenderKCanvasWrapper *renderObject);
virtual void invalidateCanvasRect(const QRect &rect) const;
@@ -41,7 +54,8 @@
virtual int viewWidth() const;
private:
- NSView *m_view;
+ DrawView *m_view;
+ khtml::RenderKCanvasWrapper *m_renderObject;
virtual void canvasSizeChanged(int width, int height);
};
1.2 +41 -34 SVGSupport/kcanvas/device/quartz/KCanvasViewQuartz.mm
Index: KCanvasViewQuartz.mm
===================================================================
RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasViewQuartz.mm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- KCanvasViewQuartz.mm 9 Jul 2005 06:53:20 -0000 1.1
+++ KCanvasViewQuartz.mm 3 Oct 2005 06:15:08 -0000 1.2
@@ -27,70 +27,77 @@
#import "KCanvasViewQuartz.h"
#import "KCanvasMatrix.h"
+#import "render_kcanvaswrapper.h"
+#import "DrawViewPrivate.h"
-KCanvasViewQuartz::KCanvasViewQuartz()
-{
- m_view = nil;
+KCanvasViewQuartz::KCanvasViewQuartz() : m_view(0), m_renderObject(0)
+{
}
KCanvasViewQuartz::~KCanvasViewQuartz()
{
- [m_view release];
+ [m_view release];
+}
+
+DrawView *KCanvasViewQuartz::view()
+{
+ return m_view;
+}
+
+void KCanvasViewQuartz::setView(DrawView *view)
+{
+ id oldView = m_view;
+ m_view = [view retain];
+ [oldView release];
}
-NSView *KCanvasViewQuartz::view()
+khtml::RenderKCanvasWrapper *KCanvasViewQuartz::renderObject()
{
- return m_view;
+ return m_renderObject;
}
-void KCanvasViewQuartz::setView(NSView *view)
+void KCanvasViewQuartz::setRenderObject(khtml::RenderKCanvasWrapper *renderObject)
{
- id oldView = m_view;
- m_view = [view retain];
- [oldView release];
+ m_renderObject = renderObject;
}
void KCanvasViewQuartz::invalidateCanvasRect(const QRect &dirtyRect) const
{
-#ifndef APPLE_COMPILE_HACK
- // FIXME: I have a library inversion here
- // which will need to cut-out for the initial WebCore bringup
- if (dirtyRect.isValid()) {
- NSRect dirtyCanvasRect = NSRect(dirtyRect);
- dirtyCanvasRect.size.width += 1.0f; // FIXME: rounding? qrect error?
- dirtyCanvasRect.size.height += 1.0f;
- NSRect viewDirtyRect = [m_view mapCanvasRectToView:dirtyCanvasRect];
- viewDirtyRect.size.width += 1.0f; // FIXME: rounding? qrect error?
- viewDirtyRect.size.height += 1.0f;
- [m_view setNeedsDisplayInRect:viewDirtyRect];
- } else
-#endif
- [m_view setNeedsDisplay:YES];
+ if (m_renderObject)
+ m_renderObject->repaint();
+ else {
+ // transform logic should be in this class.
+ if (dirtyRect.isValid()) {
+ NSRect dirtyCanvasRect = NSRect(dirtyRect);
+ dirtyCanvasRect.size.width += 1.0f; // FIXME: rounding? qrect error?
+ dirtyCanvasRect.size.height += 1.0f;
+ NSRect viewDirtyRect = [m_view mapCanvasRectToView:dirtyCanvasRect];
+ viewDirtyRect.size.width += 1.0f; // FIXME: rounding? qrect error?
+ viewDirtyRect.size.height += 1.0f;
+ [m_view setNeedsDisplayInRect:viewDirtyRect];
+ } else
+ [m_view setNeedsDisplay:YES];
+ }
}
KCanvasMatrix KCanvasViewQuartz::viewToCanvasMatrix() const
{
-#ifndef APPLE_COMPILE_HACK
- // FIXME: Another library inversion.
return KCanvasMatrix([m_view transformFromViewToCanvas]);
-#else
- return KCanvasMatrix();
-#endif
}
void KCanvasViewQuartz::canvasSizeChanged(int width, int height) {
- //NSLog(@"canvas changed size: %f, %f", width, height);
+ //NSLog(@"canvas changed size: %f, %f", width, height);
}
int KCanvasViewQuartz::viewHeight() const
{
- NSLog(@"viewHeight not sure yet.");
- return 100;
+ NSLog(@"viewHeight not sure yet.");
+ return 100;
}
int KCanvasViewQuartz::viewWidth() const
{
- NSLog(@"viewWidth not sure yet.");
- return 100;
+ NSLog(@"viewWidth not sure yet.");
+ return 100;
}
More information about the webkit-changes
mailing list