def recalcPosition(_cf, srcCld, dstCld, pos): if (1 if srcCld == Component.COMPONENT_Y else 0) == (1 if dstCld == Component.COMPONENT_Y else 0): return pos if srcCld == Component.COMPONENT_Y and dstCld != Component.COMPONENT_Y: return Position(pos.x >> ChromaScale, pos.y >> ChromaScale) return Position(pos.x << ChromaScale, pos.y << ChromaScale)
def __eq__(self, other): if self.chromaFormat != other.chromaFormat: return False if self.compID != other.compID: return False return Position.__eq__(self, other) and Size.__eq__(self, other)
def bottomRightComp(self, _compID): return recalcPosition( self.chromaFormat, self.compID, _compID, Position(self.x + self.width - 1, self.y + self.height - 1))
def bottomLeftComp(self, _compID): return recalcPosition(self.chromaFormat, self.compID, _compID, Position(self.x, self.y + self.height - 1))
def topRightComp(self, _compID): return recalcPosition(self.chromaFormat, self.compID, _compID, Position(self.x + self.width - 1, self.y))
def lumaPos(self): if self.compID != Component.COMPONENT_Y: return Position(self.x << ChromaScale, self.y << ChromaScale) return Position(self.x, self.y)
def chromaSize(self): if self.compID == Component.COMPONENT_Y: return Position(self.x >> ChromaScale, self.y >> ChromaScale) return Position(self.x, self.y)