def test_xmp_class(self):
        def config_context(context):
            context.request.width = 640
            context.request.height = 640

        size = 640, 640

        filt = self.get_filter("universalimages.filters.rmd", "rmd()", config_context=config_context)

        self.load_file("regions.jpg", filt.engine)
        api = Xmp_API(filt.engine.metadata)

        # Check the filter methods
        self.assertTrue(api.check_valid(size))
        self.assertTrue(api.check_allowed())

        # Check the meta data
        area = api.get_area_values_for("Xmp.rmd.CropArea")
        self.assertEqual(area["x"], 0.5)
        self.assertEqual(area["y"], 0.5)
        self.assertEqual(area["w"], 1)
        self.assertEqual(area["h"], 0.75)
        self.assertEqual(area["MinWidth"], 480)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (0, 80, 640, 560))

        area = api.get_area_values_for(b"Xmp.rmd.SafeArea")
        self.assertEqual(area["x"], 0.5)
        self.assertEqual(area["y"], 0.5)
        self.assertEqual(area["w"], 0.46875)
        self.assertEqual(area["h"], 0.3125)
        self.assertEqual(area["MaxWidth"], 300)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (170, 220, 470, 420))

        areas = api.get_area_values_for_array("Xmp.rmd.RecommendedFrames")
        self.assertEqual(len(areas), 1)
        area = areas[0]
        self.assertEqual(area["x"], 0.5)
        self.assertEqual(area["y"], 0.5)
        self.assertEqual(area["w"], 1)
        self.assertEqual(area["h"], 1)
        self.assertEqual(area["MinAspectRatio"], 1)
        self.assertEqual(area["MaxAspectRatio"], 1)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (0, 0, 640, 640))

        area = api.get_area_values_for("Xmp.rmd.PivotPoint")
        self.assertEqual(area["x"], 0.5)
        self.assertEqual(area["y"], 0.5)
    def test_xmp_class(self):

        size = 1200, 900
        filt = self.get_filter('universalimages.filters.rmd', 'rmd()')
        self.load_file('monks-regions.jpg', filt.engine)
        api = Xmp_API(filt.engine.metadata)

        # Check the filter methods
        self.assertTrue(api.check_valid(size))
        self.assertTrue(api.check_allowed())

        # Check the meta data
        area = api.get_area_values_for('Xmp.rmd.CropArea')
        self.assertEqual(area['x'], 0.5181107954545454)
        self.assertEqual(area['y'], 0.5274621212121212)
        self.assertEqual(area['w'], 0.9026988636363636)
        self.assertEqual(area['h'], 0.8011363636363636)
        self.assertEqual(area['MinWidth'], 400)

        area = api.get_area_values_for(b'Xmp.rmd.SafeArea')
        self.assertEqual(area['x'], 0.4776278409090909)
        self.assertEqual(area['y'], 0.5821496212121212)
        self.assertEqual(area['w'], 0.5987215909090909)
        self.assertEqual(area['h'], 0.556344696969697)
        self.assertEqual(area['MaxWidth'], 320)

        areas = api.get_area_values_for_array('Xmp.rmd.RecommendedFrames')
        self.assertEqual(len(areas), 2)
        area = areas[0]
        self.assertEqual(area['x'], 0.4557883522727273)
        self.assertEqual(area['y'], 0.5243844696969697)
        self.assertEqual(area['w'], 0.7120028409090909)
        self.assertEqual(area['h'], 0.9512310606060606)
        self.assertEqual(area['MinAspectRatio'], 1)
        self.assertEqual(area['MaxAspectRatio'], 1)

        area = areas[1]
        self.assertEqual(area['x'], 0.4362571022727273)
        self.assertEqual(area['y'], 0.5712594696969697)
        self.assertEqual(area['w'], 0.71484375)
        self.assertEqual(area['h'], 0.6283143939393939)
        self.assertEqual(area['MinWidth'], 340)
        self.assertEqual(area['MaxWidth'], 360)

        area = api.get_area_values_for('Xmp.rmd.PivotPoint')
        self.assertEqual(area, {})
    def test_xmp_class(self):

        size = 1200, 900
        filt = self.get_filter('universalimages.filters.rmd', 'rmd()')
        self.load_file('monks-regions.jpg', filt.engine)
        api = Xmp_API(filt.engine.metadata)

        # Check the filter methods
        self.assertTrue(api.check_valid(size))
        self.assertTrue(api.check_allowed())

        # Check the meta data
        area = api.get_area_values_for('Xmp.rmd.CropArea')
        self.assertEqual(area['x'], 0.5181107954545454)
        self.assertEqual(area['y'], 0.5274621212121212)
        self.assertEqual(area['w'], 0.9026988636363636)
        self.assertEqual(area['h'], 0.8011363636363636)
        self.assertEqual(area['MinWidth'], 400)

        area = api.get_area_values_for(b'Xmp.rmd.SafeArea')
        self.assertEqual(area['x'], 0.4776278409090909)
        self.assertEqual(area['y'], 0.5821496212121212)
        self.assertEqual(area['w'], 0.5987215909090909)
        self.assertEqual(area['h'], 0.556344696969697)
        self.assertEqual(area['MaxWidth'], 320)

        areas = api.get_area_values_for_array('Xmp.rmd.RecommendedFrames')
        self.assertEqual(len(areas), 2)
        area = areas[0]
        self.assertEqual(area['x'], 0.4557883522727273)
        self.assertEqual(area['y'], 0.5243844696969697)
        self.assertEqual(area['w'], 0.7120028409090909)
        self.assertEqual(area['h'], 0.9512310606060606)
        self.assertEqual(area['MinAspectRatio'], 1)
        self.assertEqual(area['MaxAspectRatio'], 1)

        area = areas[1]
        self.assertEqual(area['x'], 0.4362571022727273)
        self.assertEqual(area['y'], 0.5712594696969697)
        self.assertEqual(area['w'], 0.71484375)
        self.assertEqual(area['h'], 0.6283143939393939)
        self.assertEqual(area['MinWidth'], 340)
        self.assertEqual(area['MaxWidth'], 360)

        area = api.get_area_values_for('Xmp.rmd.PivotPoint')
        self.assertEqual(area, {})
    def test_xmp_class(self):
        def config_context(context):
            context.request.width = 640
            context.request.height = 640

        size = 640, 640

        filt = self.get_filter('universalimages.filters.rmd',
                               'rmd()',
                               config_context=config_context)

        self.load_file('regions.jpg', filt.engine)
        api = Xmp_API(filt.engine.metadata)

        # Check the filter methods
        self.assertTrue(api.check_valid(size))
        self.assertTrue(api.check_allowed())

        # Check the meta data
        area = api.get_area_values_for('Xmp.rmd.CropArea')
        self.assertEqual(area['x'], 0.5)
        self.assertEqual(area['y'], 0.5)
        self.assertEqual(area['w'], 1)
        self.assertEqual(area['h'], 0.75)
        self.assertEqual(area['MinWidth'], 480)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (0, 80, 640, 560))

        area = api.get_area_values_for(b'Xmp.rmd.SafeArea')
        self.assertEqual(area['x'], 0.5)
        self.assertEqual(area['y'], 0.5)
        self.assertEqual(area['w'], 0.46875)
        self.assertEqual(area['h'], 0.3125)
        self.assertEqual(area['MaxWidth'], 300)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (170, 220, 470, 420))

        areas = api.get_area_values_for_array('Xmp.rmd.RecommendedFrames')
        self.assertEqual(len(areas), 1)
        area = areas[0]
        self.assertEqual(area['x'], 0.5)
        self.assertEqual(area['y'], 0.5)
        self.assertEqual(area['w'], 1)
        self.assertEqual(area['h'], 1)
        self.assertEqual(area['MinAspectRatio'], 1)
        self.assertEqual(area['MaxAspectRatio'], 1)

        absolute_values = api.stArea_to_absolute(area, size)
        self.assertEqual(absolute_values, (0, 0, 640, 640))

        area = api.get_area_values_for('Xmp.rmd.PivotPoint')
        self.assertEqual(area['x'], 0.5)
        self.assertEqual(area['y'], 0.5)