22 #include "pybind11/pybind11.h"
23 #include "pybind11/stl.h"
31 using namespace pybind11::literals;
38 static void declareSipTransformBase(
py::module &mod) {
39 py::class_<SipTransformBase, std::shared_ptr<SipTransformBase>>
cls(mod,
"_SipTransformBase");
41 cls.def(
"getPixelOrigin", &SipTransformBase::getPixelOrigin, py::return_value_policy::copy);
42 cls.def(
"getCdMatrix", &SipTransformBase::getCdMatrix, py::return_value_policy::copy);
43 cls.def(
"getPoly", &SipTransformBase::getPoly, py::return_value_policy::copy);
46 static void declareSipForwardTransform(
py::module &mod) {
47 py::class_<SipForwardTransform, std::shared_ptr<SipForwardTransform>, SipTransformBase>
cls(
48 mod,
"SipForwardTransform");
50 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
51 "pixelOrigin"_a,
"cdMatrix"_a,
"forwardSipPoly"_a);
52 cls.def(py::init<SipForwardTransform const &>(),
"other"_a);
54 cls.def_static(
"convert",
55 (SipForwardTransform(*)(PolynomialTransform
const &,
geom::Point2D const &,
58 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
59 cls.def_static(
"convert",
60 (SipForwardTransform(*)(ScaledPolynomialTransform
const &,
geom::Point2D const &,
63 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
64 cls.def_static(
"convert",
68 cls.def(
"__call__", &SipForwardTransform::operator(),
"in"_a);
69 cls.def(
"transformPixels", &SipForwardTransform::transformPixels,
"s"_a);
71 cls.def(
"linearize", &SipForwardTransform::linearize);
74 static void declareSipReverseTransform(
py::module &mod) {
75 py::class_<SipReverseTransform, std::shared_ptr<SipReverseTransform>, SipTransformBase>
cls(
76 mod,
"SipReverseTransform");
78 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
79 "pixelOrigin"_a,
"cdMatrix"_a,
"reverseSipPoly"_a);
80 cls.def(py::init<SipReverseTransform const &>(),
"other"_a);
82 cls.def_static(
"convert",
83 (SipReverseTransform(*)(PolynomialTransform
const &,
geom::Point2D const &,
86 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
87 cls.def_static(
"convert",
88 (SipReverseTransform(*)(ScaledPolynomialTransform
const &,
geom::Point2D const &,
91 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
92 cls.def_static(
"convert",
96 cls.def(
"__call__", &SipReverseTransform::operator(),
"in"_a);
97 cls.def(
"transformPixels", &SipReverseTransform::transformPixels,
"s"_a);
99 cls.def(
"linearize", &SipReverseTransform::linearize);
105 declareSipTransformBase(mod);
106 declareSipForwardTransform(mod);
107 declareSipReverseTransform(mod);
109 mod.def(
"makeWcs",
makeWcs,
"sipForward"_a,
"sipReverse"_a,
"skyOrigin"_a);
111 mod.def(
"rotateWcsPixelsBy90",
rotateWcsPixelsBy90,
"wcs"_a,
"nQuarter"_a,
"dimensions"_a);