/**
 * as_screenshot_equal:
 * @screenshot1: a #AsScreenshot instance.
 * @screenshot2: a #AsScreenshot instance.
 *
 * Checks if two screenshots are the same.
 *
 * Returns: %TRUE for success
 *
 * Since: 0.5.7
 **/
gboolean
as_screenshot_equal (AsScreenshot *screenshot1, AsScreenshot *screenshot2)
{
	AsScreenshotPrivate *priv1 = GET_PRIVATE (screenshot1);
	AsScreenshotPrivate *priv2 = GET_PRIVATE (screenshot2);
	AsImage *im1;
	AsImage *im2;

	/* trivial */
	if (screenshot1 == screenshot2)
		return TRUE;

	/* check for equality */
	if (priv1->priority != priv2->priority)
		return FALSE;
	if (priv1->images->len != priv2->images->len)
		return FALSE;
	if (g_strcmp0 (as_screenshot_get_caption (screenshot1, NULL),
		       as_screenshot_get_caption (screenshot2, NULL)) != 0)
		return FALSE;

	/* check source images */
	im1 = as_screenshot_get_source (screenshot1);
	im2 = as_screenshot_get_source (screenshot2);
	if (im1 != NULL && im2 != NULL) {
		if (!as_image_equal (im1, im2))
			return FALSE;
	}

	/* success */
	return TRUE;
}
Example #2
0
/**
 * gs_appstream_are_screenshots_perfect:
 */
static gboolean
gs_appstream_are_screenshots_perfect (AsApp *app)
{
	AsImage *image;
	AsScreenshot *screenshot;
	GPtrArray *screenshots;
	guint height;
	guint i;
	guint width;

	screenshots = as_app_get_screenshots (app);
	if (screenshots->len == 0)
		return FALSE;
	for (i = 0; i < screenshots->len; i++) {

		/* get the source image as the thumbs will be resized & padded */
		screenshot = g_ptr_array_index (screenshots, i);
		image = as_screenshot_get_source (screenshot);
		if (image == NULL)
			return FALSE;

		width = as_image_get_width (image);
		height = as_image_get_height (image);

		/* too small */
		if (width < AS_IMAGE_LARGE_WIDTH || height < AS_IMAGE_LARGE_HEIGHT)
			return FALSE;

		/* too large */
		if (width > AS_IMAGE_LARGE_WIDTH * 2 || height > AS_IMAGE_LARGE_HEIGHT * 2)
			return FALSE;

		/* not 16:9 */
		if ((width / 16) * 9 != height)
			return FALSE;
	}
	return TRUE;
}