diff --git a/src/origin.jl b/src/origin.jl index b92b6a2a..cb3a4d2c 100644 --- a/src/origin.jl +++ b/src/origin.jl @@ -33,3 +33,5 @@ Origin(I1::Int, In::Int...) = Origin((I1, In...)) Origin(n::Int) = Origin{Int}(n) (o::Origin)(A::AbstractArray) = o.index .- first.(axes(A)) + +Base.Broadcast.broadcastable(o::Origin) = Ref(o) diff --git a/test/origin.jl b/test/origin.jl index a49172cd..f9b8d2fa 100644 --- a/test/origin.jl +++ b/test/origin.jl @@ -27,4 +27,15 @@ using OffsetArrays: Origin oa = OffsetArray(a, -3, -3, -3) @test get_origin(OffsetArray(oa, Origin(0))) == (0, 0, 0) @test get_origin(OffsetArray(oa, Origin(1, 2, 3))) == (1, 2, 3) + + # Scalar broadcasting + let + a = [ [1,2,3], [4,5,6] ] + oa = OffsetVector.(a, Origin(0)) + @test get_origin.(oa) == [ (0,), (0,) ] + + a = [ [1 2; 3 4], [5 6 7; 8 9 10] ] + oa = OffsetArray.(a, Origin(0, -1)) + @test get_origin.(oa) == [ (0,-1), (0,-1) ] + end end