[webkit-reviews] review cancelled: [Bug 10470] The Qt platform needs a KCanvas device : [Attachment 10107] Initial patch

bugzilla-request-daemon at opendarwin.org bugzilla-request-daemon at opendarwin.org
Fri Aug 18 03:11:09 PDT 2006


Eric Seidel <macdome at opendarwin.org> has cancelled Nikolas Zimmermann
<zimmermann at kde.org>'s request for review:
Bug 10470: The Qt platform needs a KCanvas device
http://bugzilla.opendarwin.org/show_bug.cgi?id=10470

Attachment 10107: Initial patch
http://bugzilla.opendarwin.org/attachment.cgi?id=10107&action=edit

------- Additional Comments from Eric Seidel <macdome at opendarwin.org>
Everything in WebKit should be one-class-per-file.  I made a mistake in not
doing that when I wrote the original KCanvas Quartz code.  I've never gone back
to fix it because it's already slated for death.  In the same sense, it's OK
that these are not one-class-per-file as they're temporary, but you should just
be aware.

Seems silly to compute the same thing twice:

+	 x1 = double(bbox.left()) + (double(gradientStart().x() / 100.0) *
double(bbox.width()));
+	 y1 = double(bbox.top()) + (double(gradientStart().y() / 100.0) *
double(bbox.height()));
+	 x2 = double(bbox.left()) + (double(gradientEnd().x() / 100.0)	*
double(bbox.width()));
+	 y2 = double(bbox.top()) + (double(gradientEnd().y() / 100.0) *
double(bbox.height()));

As you're already aware, much of this code violates the WebKit style
guidelines.  If you end up having to make other changes, you could consider
fixing some of it.

if(, { } on separate lines, * in the wrong place, are all examples of such.

I have a gut feeling that much, much more of this code could be pushed into a
more central cross-platform place.

the boundingbox mode related calculations are one example.

The quartz code is going to be redesigned to fill and stroke at once, for a
large performance boost on the Mac.  You should continue to keep that in mind
as you work with the Qt/cairo code.

Many of these header methods do not need named arguments:

+    virtual void draw(KRenderingDeviceContext *context, const RenderPath
*path, KCPaintTargetType type) const;
+    virtual bool setup(KRenderingDeviceContext *context, const RenderObject
*object, KCPaintTargetType type) const;
+    virtual void teardown(KRenderingDeviceContext *context, const RenderObject
*object, KCPaintTargetType type) const;

KCanvasPath makes me cringe.  I needs to be folded into Path, so as to avoid
the virtual method dispatch overhead.

Generally we don't leave things like this in:
+#if 1

Things that don't need {} can omit them.

+		 case QPainterPath::LineToElement:
+		 {
+		     newPath.lineTo(QPointF(cur.x, cur.y) * transform);
+		     break;
+		 }

I'm not actually sure what our style guidelines say about that though, so it's
your call.


I'm not sure you want this:

+	 //if (!CGContextIsPathEmpty(cgContext)) {

Also, that file needs apple's copyright, since clearly parts of the code were
copied from KCanvas Quartz


As I believe you're already aware, we generally use a slightly different form
for constructor definitions:
+KRenderingDeviceContextQt::KRenderingDeviceContextQt(QPainter *painter) :
m_painter(painter), m_path()

ask me on IRC if you need more info.

Overall the patch looks fine.  Since I think you have another one you're about
to post, I will remove the review flag on this instead of r+'ing it.



More information about the webkit-reviews mailing list