Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#3657 closed defect (wontfix)

dojox.gfx VML renderer doesn't clip on surface's boundaries

Reported by: guest Owned by: Eugene Lazutkin
Priority: high Milestone: 1.0
Component: gfx (svg+vml) Version: 0.9
Keywords: dojox gfx vml Cc:
Blocked By: Blocking:

Description

dojox.gfx doesn't clip shapes which have some negative or overflowing coordinates. Look at the "matrix operations" part of test page in IE. The left side of the rects must be hidden, because they're in negative y-coordinate. But in FireFox?, using SVG, has cliped them properly. I require this problem solved immediately.

Change History (3)

comment:1 Changed 12 years ago by Eugene Lazutkin

Milestone: 0.91.0
severity: criticalnormal
Status: newassigned
Summary: dojox.gfx has a serious bug in VMLdojox.gfx VML renderer doesn't clip on surface's boundaries
  1. dojox.gfx does not support clipping in VML due to the VML deficiency.
  2. Next time instead of the generic bug title ("dojox.gfx has a serious bug in VML"), use a descriptive title, e.g., "dojox.gfx VML renderer doesn't clip on surface's boundaries".
  3. It is hard to "require" that this bug to be solved immediately because we are all volunteers, we have our hands full with many other things with our own priorities.
  4. I would be compelled to look at it immediately, if the request was supported by a monetary donation to the Dojo Foundation. ;-) Otherwise it'll be in the queue like some other things I have to attend.

All in all I'll keep it open --- I will try to find a way to fix it during the next bug-fixing marathon. I am changing its title, and its severity. BTW, there is no guarantee that this problem is solvable.

comment:2 Changed 12 years ago by Eugene Lazutkin

Resolution: wontfix
Status: assignedclosed

The only practical way to clip is to use the "clip" property of the parent. But in order to be clipped the parent should be absolutely positioned, which is not acceptable in many cases.

I mark this ticket as "wontfix" because it is simpler to do it in the user's code like that:

var parent = dojo.byId("test");
parent.style.position = "absolute";
parent.style.clip = "rect(0 500 500 0)";
var surface = dojox.gfx.createSurface(parent, 500, 500);
// continue adding children to the surface

This code will work for both SVG and VML.

The requirement to position the parent as "absolute" is way too strong to enforce it on dojox.gfx level.

comment:3 Changed 12 years ago by Eugene Lazutkin

(In [9840]) Minor cleanup of VML code, added commented out fix for #3657 (see ticket for explanations). References #3657.

Note: See TracTickets for help on using tickets.