mirror of https://github.com/GNOME/gimp.git
94 lines
2.9 KiB
Scheme
94 lines
2.9 KiB
Scheme
; test PDB methods that change selection by another object
|
|
; such as a color or a channel
|
|
|
|
|
|
|
|
(script-fu-use-v3)
|
|
|
|
; Function to reset the selection
|
|
(define (testResetSelection testImage)
|
|
(test! "Resetting selection to none")
|
|
(assert `(gimp-selection-none ,testImage))
|
|
(assert `(gimp-selection-is-empty ,testImage))
|
|
; The value of the selection mask at coords 64,64 is 0
|
|
; A value of the selection mask is in range [0,255]
|
|
(assert `(= (gimp-selection-value ,testImage 64 64)
|
|
0)))
|
|
|
|
|
|
; setup
|
|
(define testImage (testing:load-test-image-basic-v3))
|
|
(define testLayer (vector-ref (cadr (gimp-image-get-layers testImage ))
|
|
0))
|
|
; a layer mask from alpha
|
|
(define testLayerMask (gimp-layer-create-mask
|
|
testLayer
|
|
ADD-MASK-ALPHA))
|
|
(gimp-layer-add-mask testLayer testLayerMask)
|
|
|
|
|
|
|
|
(test! "new image has no initial selection")
|
|
; returns #t
|
|
(assert `(gimp-selection-is-empty ,testImage))
|
|
|
|
|
|
|
|
(test! "selection by given color")
|
|
|
|
; returns void
|
|
(assert `(gimp-image-select-color ,testImage CHANNEL-OP-ADD ,testLayer "black"))
|
|
; effective: test image has some black pixels, now selection is not empty
|
|
(assert `(not (gimp-selection-is-empty ,testImage)))
|
|
|
|
|
|
(testResetSelection testImage)
|
|
|
|
(test! "selection by picking coords")
|
|
; !!! This is not the same as the menu item Select>By Color
|
|
; That menu item selects all pixels of a picked color.
|
|
; The PDB procedure selects a contiguous area (not disconnected pixels)
|
|
; and is more affected by settings in the context particularly sample-transparent.
|
|
; This test fails if you pick a coord that is transparent,
|
|
; since sample-transparent defaults to false?
|
|
;
|
|
; The test image has a non-transparent pixel at 64,64
|
|
; but a transparent pixel at 125,125
|
|
|
|
|
|
; gimp-image-select-contiguous-color does not throw
|
|
(assert `(gimp-image-select-contiguous-color ,testImage CHANNEL-OP-ADD ,testLayer 64 64))
|
|
; effective, now selection is not empty
|
|
(assert `(not (gimp-selection-is-empty ,testImage)))
|
|
; effective, the selection value at the picked coords is "totally selected"
|
|
(assert `(= (gimp-selection-value ,testImage 64 64)
|
|
255))
|
|
|
|
|
|
(testResetSelection testImage)
|
|
|
|
(test! "selection from item same layer")
|
|
|
|
; selection from the layer itself: selects same as layer's alpha
|
|
(assert `(gimp-image-select-item ,testImage CHANNEL-OP-ADD ,testLayer))
|
|
; effective: selection is not empty
|
|
(assert `(not (gimp-selection-is-empty ,testImage)))
|
|
|
|
(testResetSelection testImage)
|
|
|
|
(test! "selection from layer mask")
|
|
|
|
; layer mask to selection succeeds
|
|
(assert `(gimp-image-select-item ,testImage CHANNEL-OP-ADD ,testLayerMask))
|
|
; effective: selection is not empty
|
|
(assert `(not (gimp-selection-is-empty ,testImage)))
|
|
|
|
; TODO selection from
|
|
; channel, vectors
|
|
; TODO selection from layer group? fails?
|
|
|
|
|
|
; for debugging individual test file:
|
|
; (gimp-display-new testImage)
|
|
|
|
(script-fu-use-v2) |