22#include "pybind11/pybind11.h"
24#include "pybind11/stl.h"
32using namespace pybind11::literals;
40 using PySipTransformBase = py::class_<SipTransformBase, std::shared_ptr<SipTransformBase>>;
42 wrappers.
wrapType(PySipTransformBase(wrappers.module,
"_SipTransformBase"), [](
auto &mod,
auto &cls) {
43 cls.def(
"getPixelOrigin", &SipTransformBase::getPixelOrigin, py::return_value_policy::copy);
44 cls.def(
"getCdMatrix", &SipTransformBase::getCdMatrix, py::return_value_policy::copy);
45 cls.def(
"getPoly", &SipTransformBase::getPoly, py::return_value_policy::copy);
50 using PySipForwardTransform =
51 py::class_<SipForwardTransform, std::shared_ptr<SipForwardTransform>, SipTransformBase>;
53 wrappers.
wrapType(PySipForwardTransform(wrappers.module,
"SipForwardTransform"), [](
auto &mod,
auto &cls) {
54 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
55 "pixelOrigin"_a,
"cdMatrix"_a,
"forwardSipPoly"_a);
56 cls.def(py::init<SipForwardTransform const &>(),
"other"_a);
58 cls.def_static(
"convert",
59 (SipForwardTransform(*)(PolynomialTransform const &, geom::Point2D const &,
60 geom::LinearTransform const &)) &
61 SipForwardTransform::convert,
62 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
63 cls.def_static(
"convert",
64 (SipForwardTransform(*)(ScaledPolynomialTransform const &, geom::Point2D const &,
65 geom::LinearTransform const &)) &
66 SipForwardTransform::convert,
67 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
68 cls.def_static(
"convert",
69 (SipForwardTransform(*)(ScaledPolynomialTransform const &)) &SipForwardTransform::convert,
72 cls.def(
"__call__", &SipForwardTransform::operator(),
"in"_a);
73 cls.def(
"transformPixels", &SipForwardTransform::transformPixels,
"s"_a);
75 cls.def(
"linearize", &SipForwardTransform::linearize);
80 using PySipReverseTransform =
81 py::class_<SipReverseTransform, std::shared_ptr<SipReverseTransform>, SipTransformBase>;
83 wrappers.
wrapType(PySipReverseTransform(wrappers.module,
"SipReverseTransform"), [](
auto &mod,
auto &cls) {
84 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
85 "pixelOrigin"_a,
"cdMatrix"_a,
"reverseSipPoly"_a);
86 cls.def(py::init<SipReverseTransform const &>(),
"other"_a);
88 cls.def_static(
"convert",
89 (SipReverseTransform(*)(PolynomialTransform const &, geom::Point2D const &,
90 geom::LinearTransform const &)) &
91 SipReverseTransform::convert,
92 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
93 cls.def_static(
"convert",
94 (SipReverseTransform(*)(ScaledPolynomialTransform const &, geom::Point2D const &,
95 geom::LinearTransform const &)) &
96 SipReverseTransform::convert,
97 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
98 cls.def_static(
"convert",
99 (SipReverseTransform(*)(ScaledPolynomialTransform const &)) &SipReverseTransform::convert,
102 cls.def(
"__call__", &SipReverseTransform::operator(),
"in"_a);
103 cls.def(
"transformPixels", &SipReverseTransform::transformPixels,
"s"_a);
105 cls.def(
"linearize", &SipReverseTransform::linearize);
112 declareSipTransformBase(wrappers);
113 declareSipForwardTransform(wrappers);
114 declareSipReverseTransform(wrappers);
116 wrappers.module.def(
"makeWcs", makeWcs,
"sipForward"_a,
"sipReverse"_a,
"skyOrigin"_a);
118 wrappers.module.def(
"rotateWcsPixelsBy90",
rotateWcsPixelsBy90,
"wcs"_a,
"nQuarter"_a,
"dimensions"_a);
A helper class for subdividing pybind11 module across multiple translation units (i....
PyType wrapType(PyType cls, ClassWrapperCallback function, bool setModuleName=true)
Add a type (class or enum) wrapper, deferring method and other attribute definitions until finish() i...
std::shared_ptr< afw::geom::SkyWcs > transformWcsPixels(afw::geom::SkyWcs const &wcs, geom::AffineTransform const &s)
Create a new SkyWcs whose pixel coordinate system has been transformed via an affine transform.
void wrapSipTransform(WrapperCollection &wrappers)
std::shared_ptr< afw::geom::SkyWcs > rotateWcsPixelsBy90(afw::geom::SkyWcs const &wcs, int nQuarter, geom::Extent2I const &dimensions)
Return a new SkyWcs that represents a rotation of the image it corresponds to about the image's cente...