/** * 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; }
/** * 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; }