| 12 | defaultSize = 512 |
| 13 | |
| 14 | class TestSceneRender(): |
| 15 | |
| 16 | def __init__(self, bgImg = None, fgImg = None, |
| 17 | deformation = False, speed = 0.25, **params): |
| 18 | self.time = 0.0 |
| 19 | self.timeStep = 1.0 / 30.0 |
| 20 | self.foreground = fgImg |
| 21 | self.deformation = deformation |
| 22 | self.speed = speed |
| 23 | |
| 24 | if bgImg is not None: |
| 25 | self.sceneBg = bgImg.copy() |
| 26 | else: |
| 27 | self.sceneBg = np.zeros(defaultSize, defaultSize, np.uint8) |
| 28 | |
| 29 | self.w = self.sceneBg.shape[0] |
| 30 | self.h = self.sceneBg.shape[1] |
| 31 | |
| 32 | if fgImg is not None: |
| 33 | self.foreground = fgImg.copy() |
| 34 | self.center = self.currentCenter = (int(self.w/2 - fgImg.shape[0]/2), int(self.h/2 - fgImg.shape[1]/2)) |
| 35 | |
| 36 | self.xAmpl = self.sceneBg.shape[0] - (self.center[0] + fgImg.shape[0]) |
| 37 | self.yAmpl = self.sceneBg.shape[1] - (self.center[1] + fgImg.shape[1]) |
| 38 | |
| 39 | self.initialRect = np.array([ (self.h/2, self.w/2), (self.h/2, self.w/2 + self.w/10), |
| 40 | (self.h/2 + self.h/10, self.w/2 + self.w/10), (self.h/2 + self.h/10, self.w/2)]).astype(int) |
| 41 | self.currentRect = self.initialRect |
| 42 | |
| 43 | def getXOffset(self, time): |
| 44 | return int( self.xAmpl*cos(time*self.speed)) |
| 45 | |
| 46 | |
| 47 | def getYOffset(self, time): |
| 48 | return int(self.yAmpl*sin(time*self.speed)) |
| 49 | |
| 50 | def setInitialRect(self, rect): |
| 51 | self.initialRect = rect |
| 52 | |
| 53 | def getRectInTime(self, time): |
| 54 | |
| 55 | if self.foreground is not None: |
| 56 | tmp = np.array(self.center) + np.array((self.getXOffset(time), self.getYOffset(time))) |
| 57 | x0, y0 = tmp |
| 58 | x1, y1 = tmp + self.foreground.shape[0:2] |
| 59 | return np.array([y0, x0, y1, x1]) |
| 60 | else: |
| 61 | x0, y0 = self.initialRect[0] + np.array((self.getXOffset(time), self.getYOffset(time))) |
| 62 | x1, y1 = self.initialRect[2] + np.array((self.getXOffset(time), self.getYOffset(time))) |
| 63 | return np.array([y0, x0, y1, x1]) |
| 64 | |
| 65 | def getCurrentRect(self): |
| 66 | |
| 67 | if self.foreground is not None: |
| 68 | |
| 69 | x0 = self.currentCenter[0] |
| 70 | y0 = self.currentCenter[1] |
| 71 | x1 = self.currentCenter[0] + self.foreground.shape[0] |
no outgoing calls
no test coverage detected