diff options
author | Thomas White <taw@physics.org> | 2024-02-02 15:10:12 +0100 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2024-02-06 16:59:35 +0100 |
commit | 85da29bd648334ddac81537c6309fefab68547a4 (patch) | |
tree | 1e17d7dfb520de25b91b3cb09ce4a956ee86d981 /julia/CrystFEL | |
parent | c1cd21679686f59d8f3533145108118419b40356 (diff) |
Julia: Add 'rotategroup!'
Diffstat (limited to 'julia/CrystFEL')
-rw-r--r-- | julia/CrystFEL/src/CrystFEL.jl | 3 | ||||
-rw-r--r-- | julia/CrystFEL/src/datatemplates.jl | 21 |
2 files changed, 22 insertions, 2 deletions
diff --git a/julia/CrystFEL/src/CrystFEL.jl b/julia/CrystFEL/src/CrystFEL.jl index 86637014..91af5d19 100644 --- a/julia/CrystFEL/src/CrystFEL.jl +++ b/julia/CrystFEL/src/CrystFEL.jl @@ -46,7 +46,8 @@ export SymOpList, asymmetricindices include("datatemplates.jl") using .DataTemplates -export DataTemplate, loaddatatemplate, wavelength, cameralength, translategroup! +export DataTemplate, loaddatatemplate, wavelength, cameralength +export translategroup!, rotategroup! include("peaklist.jl") using .PeakLists diff --git a/julia/CrystFEL/src/datatemplates.jl b/julia/CrystFEL/src/datatemplates.jl index 7ede6843..9632346e 100644 --- a/julia/CrystFEL/src/datatemplates.jl +++ b/julia/CrystFEL/src/datatemplates.jl @@ -3,7 +3,7 @@ module DataTemplates import ..CrystFEL: libcrystfel export DataTemplate, InternalDataTemplate, loaddatatemplate export wavelength, cameralength -export translategroup! +export translategroup!, rotategroup! # Represents the real C-side (opaque) structure. mutable struct InternalDataTemplate end @@ -105,4 +105,23 @@ function translategroup!(dtempl::DataTemplate, groupname, xshift, yshift, zshift end +""" + rotategroup!(datatemplate, groupname, angle, axis) + +Modifies `DataTemplate` by rotating the specified panel group by the specified +amount (in degrees) about the specified xaxis (:x, :y or :z). + +Corresponds to CrystFEL C API function `data_template_rotate_group`. +""" +function rotategroup!(dtempl::DataTemplate, groupname, angle, axis) + r = @ccall libcrystfel.data_template_rotate_group(dtempl.internalptr::Ptr{InternalDataTemplate}, + groupname::Cstring, + deg2rad(angle)::Cdouble, + String(axis)[1]::Cchar)::Cint + if r != 0 + throw(ErrorException("Failed to rotate DataTemplate")) + end + +end + end # of module |