[reportlab-users] diagonal ShadedRect and Clipping ?

Dirk Datzert reportlab-users@reportlab.com
Mon, 05 Aug 2002 22:00:25 +0200


Dies ist eine mehrteilige Nachricht im MIME-Format.
--------------8BA9F451681B6514BCEE61A9
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,

I'm writing a ShadedRect version with rotated shading area.
I attached an example png and a sample code (diagonal ShadedRect).

Question:

How can I use Path (which has isClipPath) for the right clipping ?
Where should I add the clip object ?
Can I do this with one clip object or do I need more than one ?

Regards,
Dirk


        def draw (self):
                plane = Group()
                bplane = Group()

                from math import sqrt

                rect = Rect(self.x,self.y,self.width,self.height)
                rect.fillColor   = None
                rect.strokeColor = self.strokeColor
                rect.strokeWidth = self.strokeWidth

                srect = ShadedRect()
                w,h = self.width, self.height
                d = sqrt(w**2+h**2)
                srect.width = d
                srect.height = 2*h*w/d
                srect.x = -srect.width/2
                srect.y = -srect.height/2
                srect.orientation = self.orientation
                srect.numShades = self.numShades
                srect.fillColorStart = self.fillColorStart
                srect.fillColorEnd = self.fillColorEnd
                srect.strokeColor = None
                srect.strokeWidth = 0
                srect.cylinderMode = self.cylinderMode

                clip = Path()
                clip.isClipPath = 1
                clip.moveTo(self.x,self.y)
                clip.lineTo(self.x+self.width,self.y)
                clip.lineTo(self.x+self.width,self.y+self.height)
                clip.lineTo(self.x,self.y+self.height)
                clip.fillColor = None
                clip.strokeColor = None
                clip.closePath()

                bplane.add(srect)
                bplane.rotate(self.angle)
                bplane.shift(self.x+self.width/2,self.y+self.height/2)

                plane.add(bplane)
                plane.add(rect)

                return plane
--------------8BA9F451681B6514BCEE61A9
Content-Type: image/png;
 name="manage_test"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="manage_test"

iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAykUlEQVR4nGL8//8/wygYBaNg
FIyCUTBSAQAAAP//YhpoB4yCUTAKRsEoGAUDCQAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8a
rQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA
//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgA
AAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AU
jGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgF
o2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfB
KBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqt
CEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD/
/xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAA
AAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSM
aAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWj
YBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8Eo
GAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0I
R8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//
Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAA
AP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxo
AAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNg
FIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgY
BaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhH
wSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8a
rQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA
//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgA
AAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AU
jGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfBKBgF
o2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqtCEfB
KBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD//xqt
CEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAAAAD/
/xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSMaAAA
AAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWjYBSM
aAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8EoGAWj
YBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0IR8Eo
GAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//Gq0I
R8EoGAWjYBSMaAAAAAD//xqtCEfBKBgFo2AUjGgAAAAA//8arQhHwSgYBaNgFIxoAAAAAP//
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
--------------8BA9F451681B6514BCEE61A9--