--- a/src/reportlab/platypus/doctemplate.py Tue Jun 11 10:49:00 2013 +0100
+++ b/src/reportlab/platypus/doctemplate.py Tue Jul 02 10:17:00 2013 +0100
@@ -233,6 +233,25 @@
frame._leftExtraIndent += self.left
frame._rightExtraIndent += self.right
+class FrameBG(FrameActionFlowable):
+ """Start or stop coloring the frame background
+ left & right are distances from the edge of the frame to start stop colouring.
+ """
+ _ZEROSIZE=True
+ width=0
+ height=0
+ def __init__(self, bg=None, left=0, right=0, start=True):
+ self.bgLeft = _evalMeasurement(left)
+ self.bgRight = _evalMeasurement(right)
+ self.bg = bg
+ self.start = start
+
+ def frameAction(self, frame):
+ if self.start:
+ frame._frameBGs.append((self.bgLeft,self.bgRight,self.bg))
+ elif frame._frameBGs:
+ frame._frameBGs.pop()
+
class NotAtTopPageBreak(FrameActionFlowable):
def __init__(self):
pass
@@ -496,6 +515,7 @@
#context sensitive margins - set by story, not from outside
self._leftExtraIndent = 0.0
self._rightExtraIndent = 0.0
+ self._frameBGs = []
self._calc()
self.afterInit()
@@ -561,6 +581,7 @@
self._removeVars(('page','frame'))
self._leftExtraIndent = self.frame._leftExtraIndent
self._rightExtraIndent = self.frame._rightExtraIndent
+ self._frameBGs = self.frame._frameBGs
#detect infinite loops...
if self._curPageFlowableCount == 0:
self._emptyPages += 1
@@ -613,6 +634,7 @@
self.frame.drawBoundary(self.canv)
f._leftExtraIndent = self._leftExtraIndent
f._rightExtraIndent = self._rightExtraIndent
+ f._frameBGs = self._frameBGs
def handle_frameEnd(self,resume=0):
''' Handles the semantics of the end of a frame. This includes the selection of
@@ -621,6 +643,7 @@
self._removeVars(('frame',))
self._leftExtraIndent = self.frame._leftExtraIndent
self._rightExtraIndent = self.frame._rightExtraIndent
+ self._frameBGs = self.frame._frameBGs
f = self.frame
if hasattr(self,'_nextFrameIndex'):