diff options
-rw-r--r-- | .gitlab-ci/ignore-image-argb32.txt | 1 | ||||
-rw-r--r-- | .gitlab-ci/ignore-image-rgb24.txt | 11 | ||||
-rw-r--r-- | .gitlab-ci/ignore-quartz-rgb24.txt | 7 | ||||
-rw-r--r-- | .gitlab-ci/ignore-recording-rgb24.txt | 8 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xcb-fallback-rgb24.txt | 6 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xcb-render-0-0-rgb24.txt | 6 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xcb-rgb24.txt | 4 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xcb-window&-rgb24.txt | 3 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xcb-window-rgb24.txt | 1 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xlib-fallback-rgb24.txt | 4 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xlib-render-0-0-rgb24.txt | 4 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xlib-rgb24.txt | 3 | ||||
-rw-r--r-- | .gitlab-ci/ignore-xlib-window-rgb24.txt | 2 | ||||
-rw-r--r-- | test/pdiff/pdiff.c | 38 |
14 files changed, 72 insertions, 26 deletions
diff --git a/.gitlab-ci/ignore-image-argb32.txt b/.gitlab-ci/ignore-image-argb32.txt index 84a246f17..c5b96d732 100644 --- a/.gitlab-ci/ignore-image-argb32.txt +++ b/.gitlab-ci/ignore-image-argb32.txt @@ -18,3 +18,4 @@ text-antialias-subpixel-vrgb text-pattern text-rotate text-unhinted-metrics +user-font-mask diff --git a/.gitlab-ci/ignore-image-rgb24.txt b/.gitlab-ci/ignore-image-rgb24.txt index 2ed564551..9017df695 100644 --- a/.gitlab-ci/ignore-image-rgb24.txt +++ b/.gitlab-ci/ignore-image-rgb24.txt @@ -1,13 +1,23 @@ +bug-source-cu clip-text culled-glyphs +dash-zero-length +degenerate-path extended-blend-alpha-mask +fill-and-stroke +fill-missed-stop +finer-grained-fallbacks ft-show-glyphs-positioning ft-text-vertical-layout-type1 ft-text-vertical-layout-type3 +gradient-alpha +gradient-constant-alpha halo-transform +new-sub-path overlapping-glyphs record1414x-select-font-face record1414x-text-transform +rel-path shifted-operator show-glyphs-advance subsurface @@ -20,3 +30,4 @@ text-antialias-subpixel-vrgb text-pattern text-rotate text-unhinted-metrics +user-font-mask diff --git a/.gitlab-ci/ignore-quartz-rgb24.txt b/.gitlab-ci/ignore-quartz-rgb24.txt index d2084bd31..58d226784 100644 --- a/.gitlab-ci/ignore-quartz-rgb24.txt +++ b/.gitlab-ci/ignore-quartz-rgb24.txt @@ -2,17 +2,18 @@ bug-361 bug-431 bug-448 bug-image-compositor +bug-source-cu coverage-rhombus culled-glyphs -extended-blend extended-blend-alpha extended-blend-alpha-mask extended-blend-mask -extended-blend-solid extended-blend-solid-alpha +fill-missed-stop ft-show-glyphs-positioning ft-text-vertical-layout-type1 ft-text-vertical-layout-type3 +gradient-alpha negative-stride-image operator-www radial-gradient @@ -41,6 +42,8 @@ record-replay-extend-reflect record-replay-extend-repeat record-select-font-face record-text-transform +rel-path +set-source shifted-operator simple-edge subsurface diff --git a/.gitlab-ci/ignore-recording-rgb24.txt b/.gitlab-ci/ignore-recording-rgb24.txt index 9ad61875d..39ba6df2e 100644 --- a/.gitlab-ci/ignore-recording-rgb24.txt +++ b/.gitlab-ci/ignore-recording-rgb24.txt @@ -3,12 +3,19 @@ clear-source clip-text coverage-rectangles culled-glyphs +dash-zero-length +degenerate-path extended-blend-alpha-mask +fill-and-stroke +fill-missed-stop finer-grained-fallbacks ft-show-glyphs-positioning ft-text-vertical-layout-type1 ft-text-vertical-layout-type3 +gradient-alpha +gradient-constant-alpha halo-transform +new-sub-path overlapping-glyphs pthread-same-source record1414x-fill-alpha @@ -22,6 +29,7 @@ recording-surface-extend-reflect recording-surface-extend-repeat recording-surface-over recording-surface-source +rel-path scale-offset-similar show-glyphs-advance subsurface diff --git a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt index 902ffa63d..9c4cd185e 100644 --- a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt +++ b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt @@ -1,15 +1,21 @@ clip-text coverage-intersecting-triangles culled-glyphs +dash-zero-length +degenerate-path extended-blend-alpha-mask fallback +fill-missed-stop ft-show-glyphs-positioning ft-text-vertical-layout-type1 ft-text-vertical-layout-type3 halo-transform +new-sub-path overlapping-glyphs record1414x-select-font-face record1414x-text-transform +record-replay-extend-pad +rel-path show-glyphs-advance subsurface subsurface-scale diff --git a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt index 1578b7e9a..c2d889e19 100644 --- a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt +++ b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt @@ -8,11 +8,15 @@ clip-stroke-unbounded clip-twice coverage-intersecting-triangles culled-glyphs +dash-zero-length +degenerate-path extended-blend-alpha-mask fallback +fill-missed-stop ft-text-vertical-layout-type1 hatchings mask +new-sub-path operator-source radial-gradient radial-gradient-mask @@ -25,8 +29,10 @@ recording-surface-extend-none recording-surface-over record-neg-extents-bounded record-paint-alpha-solid-clip +record-replay-extend-pad record-replay-extend-reflect record-replay-extend-repeat +rel-path rotated-clip text-antialias-subpixel text-antialias-subpixel-bgr diff --git a/.gitlab-ci/ignore-xcb-rgb24.txt b/.gitlab-ci/ignore-xcb-rgb24.txt index 6baceeb65..cbb1b2d37 100644 --- a/.gitlab-ci/ignore-xcb-rgb24.txt +++ b/.gitlab-ci/ignore-xcb-rgb24.txt @@ -3,7 +3,6 @@ arc-looping-dash bug-51910 bug-84115 bug-image-compositor -bug-source-cu bug-spline caps-05 caps-1 @@ -54,8 +53,6 @@ partial-clip-text-bottom partial-clip-text-left partial-coverage-reference partial-coverage-three-quarter-reference -push-group -push-group-color radial-gradient radial-gradient-mask radial-gradient-mask-source @@ -115,6 +112,7 @@ text-antialias-subpixel-rgb text-antialias-subpixel-vbgr text-antialias-subpixel-vrgb text-glyph-range +text-pattern text-rotate text-transform tighten-bounds diff --git a/.gitlab-ci/ignore-xcb-window&-rgb24.txt b/.gitlab-ci/ignore-xcb-window&-rgb24.txt index 8f6f96d5c..10b9c9c3a 100644 --- a/.gitlab-ci/ignore-xcb-window&-rgb24.txt +++ b/.gitlab-ci/ignore-xcb-window&-rgb24.txt @@ -46,8 +46,6 @@ partial-clip-text-bottom partial-clip-text-left partial-coverage-reference partial-coverage-three-quarter-reference -push-group -push-group-color radial-outer-focus record1414x-fill-alpha record1414x-self-intersecting @@ -102,6 +100,7 @@ text-antialias-subpixel-rgb text-antialias-subpixel-vbgr text-antialias-subpixel-vrgb text-glyph-range +text-pattern text-rotate text-transform tighten-bounds diff --git a/.gitlab-ci/ignore-xcb-window-rgb24.txt b/.gitlab-ci/ignore-xcb-window-rgb24.txt index 8f6f96d5c..26df57963 100644 --- a/.gitlab-ci/ignore-xcb-window-rgb24.txt +++ b/.gitlab-ci/ignore-xcb-window-rgb24.txt @@ -102,6 +102,7 @@ text-antialias-subpixel-rgb text-antialias-subpixel-vbgr text-antialias-subpixel-vrgb text-glyph-range +text-pattern text-rotate text-transform tighten-bounds diff --git a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt index d86d694a1..f4effb215 100644 --- a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt +++ b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt @@ -28,10 +28,12 @@ dash-infinite-loop dash-scale dash-zero-length degenerate-curve-to +degenerate-path degenerate-pen degenerate-rel-curve-to extended-blend-alpha-mask fallback +fill-missed-stop filter-bilinear-extents finer-grained-fallbacks font-matrix-translation @@ -52,6 +54,7 @@ line-width-tolerance long-dashed-lines mask-transformed-image mask-transformed-similar +new-sub-path operator-alpha-alpha over-above-source over-around-source @@ -71,6 +74,7 @@ recording-surface-extend-none recording-surface-over rectilinear-miter-limit reflected-stroke +rel-path select-font-face self-copy shifted-operator diff --git a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt index a5f0ec34f..fc31fb370 100644 --- a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt +++ b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt @@ -7,11 +7,14 @@ clip-text coverage-intersecting-triangles culled-glyphs curve-to-as-line-to +dash-zero-length +degenerate-path extended-blend-alpha-mask fallback fill-and-stroke fill-and-stroke-alpha fill-and-stroke-alpha-add +fill-missed-stop finer-grained-fallbacks ft-show-glyphs-positioning ft-text-vertical-layout-type1 @@ -22,6 +25,7 @@ infinite-join large-twin-antialias-mixed leaky-polygon mask +new-sub-path operator-clear operator-source overlapping-glyphs diff --git a/.gitlab-ci/ignore-xlib-rgb24.txt b/.gitlab-ci/ignore-xlib-rgb24.txt index 0a4c9f616..b7b11523b 100644 --- a/.gitlab-ci/ignore-xlib-rgb24.txt +++ b/.gitlab-ci/ignore-xlib-rgb24.txt @@ -4,7 +4,6 @@ bug-51910 bug-84115 bug-extents bug-image-compositor -bug-source-cu bug-spline caps-joins-05 caps-joins-curve @@ -76,8 +75,6 @@ partial-coverage-reference partial-coverage-three-quarter-reference path-stroke-twice pthread-show-text -push-group -push-group-color radial-gradient radial-gradient-mask radial-gradient-mask-source diff --git a/.gitlab-ci/ignore-xlib-window-rgb24.txt b/.gitlab-ci/ignore-xlib-window-rgb24.txt index 814bd7da6..ac83dd920 100644 --- a/.gitlab-ci/ignore-xlib-window-rgb24.txt +++ b/.gitlab-ci/ignore-xlib-window-rgb24.txt @@ -73,8 +73,6 @@ partial-coverage-reference partial-coverage-three-quarter-reference path-stroke-twice pthread-show-text -push-group -push-group-color radial-outer-focus record1414x-fill-alpha record1414x-select-font-face diff --git a/test/pdiff/pdiff.c b/test/pdiff/pdiff.c index 6e05552d6..119369858 100644 --- a/test/pdiff/pdiff.c +++ b/test/pdiff/pdiff.c @@ -17,6 +17,7 @@ #include "config.h" #include "lpyramid.h" +#include <assert.h> #include <math.h> #include <stdio.h> #include <stdlib.h> @@ -171,18 +172,21 @@ XYZToLAB (float x, float y, float z, float *L, float *A, float *B) } static uint32_t -_get_pixel (const uint32_t *data, int i) +_get_pixel (const uint32_t *data, int i, cairo_format_t format) { - return data[i]; + if (format == CAIRO_FORMAT_ARGB32) + return data[i]; + else + return data[i] | 0xff000000; } static unsigned char -_get_red (const uint32_t *data, int i) +_get_red (const uint32_t *data, int i, cairo_format_t format) { uint32_t pixel; uint8_t alpha; - pixel = _get_pixel (data, i); + pixel = _get_pixel (data, i, format); alpha = (pixel & 0xff000000) >> 24; if (alpha == 0) return 0; @@ -191,12 +195,12 @@ _get_red (const uint32_t *data, int i) } static unsigned char -_get_green (const uint32_t *data, int i) +_get_green (const uint32_t *data, int i, cairo_format_t format) { uint32_t pixel; uint8_t alpha; - pixel = _get_pixel (data, i); + pixel = _get_pixel (data, i, format); alpha = (pixel & 0xff000000) >> 24; if (alpha == 0) return 0; @@ -205,12 +209,12 @@ _get_green (const uint32_t *data, int i) } static unsigned char -_get_blue (const uint32_t *data, int i) +_get_blue (const uint32_t *data, int i, cairo_format_t format) { uint32_t pixel; uint8_t alpha; - pixel = _get_pixel (data, i); + pixel = _get_pixel (data, i, format); alpha = (pixel & 0xff000000) >> 24; if (alpha == 0) return 0; @@ -269,6 +273,7 @@ pdiff_compare (cairo_surface_t *surface_a, float F_freq[MAX_PYR_LEVELS - 2]; float csf_max; const uint32_t *data_a, *data_b; + cairo_format_t format_a, format_b; unsigned int pixels_failed; @@ -277,6 +282,11 @@ pdiff_compare (cairo_surface_t *surface_a, if (w < 3 || h < 3) /* too small for the Laplacian convolution */ return -1; + format_a = cairo_image_surface_get_format (surface_a); + format_b = cairo_image_surface_get_format (surface_b); + assert (format_a == CAIRO_FORMAT_RGB24 || format_a == CAIRO_FORMAT_ARGB32); + assert (format_b == CAIRO_FORMAT_RGB24 || format_b == CAIRO_FORMAT_ARGB32); + aX = xmalloc (dim * sizeof (float)); aY = xmalloc (dim * sizeof (float)); aZ = xmalloc (dim * sizeof (float)); @@ -297,15 +307,15 @@ pdiff_compare (cairo_surface_t *surface_a, for (x = 0; x < w; x++) { float r, g, b, l; i = x + y * w; - r = powf(_get_red (data_a, i) / 255.0f, gamma); - g = powf(_get_green (data_a, i) / 255.0f, gamma); - b = powf(_get_blue (data_a, i) / 255.0f, gamma); + r = powf(_get_red (data_a, i, format_a) / 255.0f, gamma); + g = powf(_get_green (data_a, i, format_a) / 255.0f, gamma); + b = powf(_get_blue (data_a, i, format_a) / 255.0f, gamma); AdobeRGBToXYZ(r,g,b,&aX[i],&aY[i],&aZ[i]); XYZToLAB(aX[i], aY[i], aZ[i], &l, &aA[i], &aB[i]); - r = powf(_get_red (data_b, i) / 255.0f, gamma); - g = powf(_get_green (data_b, i) / 255.0f, gamma); - b = powf(_get_blue (data_b, i) / 255.0f, gamma); + r = powf(_get_red (data_b, i, format_b) / 255.0f, gamma); + g = powf(_get_green (data_b, i, format_b) / 255.0f, gamma); + b = powf(_get_blue (data_b, i, format_b) / 255.0f, gamma); AdobeRGBToXYZ(r,g,b,&bX[i],&bY[i],&bZ[i]); XYZToLAB(bX[i], bY[i], bZ[i], &l, &bA[i], &bB[i]); |