@@ -699,7 +699,7 @@ _path_module::get_path_collection_extents(const Py::Tuple& args)
699
699
Py::Object
700
700
_path_module::point_in_path_collection (const Py::Tuple& args)
701
701
{
702
- args.verify_length (9 );
702
+ args.verify_length (10 );
703
703
704
704
// segments, trans, clipbox, colors, linewidths, antialiaseds
705
705
double x = Py::Float (args[0 ]);
@@ -711,6 +711,9 @@ _path_module::point_in_path_collection(const Py::Tuple& args)
711
711
Py::SeqBase<Py::Object> offsets_obj = args[6 ];
712
712
agg::trans_affine offset_trans = py_to_agg_transformation_matrix (args[7 ].ptr ());
713
713
bool filled = Py::Boolean (args[8 ]);
714
+ std::string offset_position = Py::String (args[9 ]);
715
+
716
+ bool data_offsets = (offset_position == " data" );
714
717
715
718
PyArrayObject* offsets = (PyArrayObject*)PyArray_FromObject (
716
719
offsets_obj.ptr (), PyArray_DOUBLE, 0 , 2 );
@@ -761,7 +764,11 @@ _path_module::point_in_path_collection(const Py::Tuple& args)
761
764
double xo = *(double *)PyArray_GETPTR2 (offsets, i % Noffsets, 0 );
762
765
double yo = *(double *)PyArray_GETPTR2 (offsets, i % Noffsets, 1 );
763
766
offset_trans.transform (&xo, &yo);
764
- trans *= agg::trans_affine_translation (xo, yo);
767
+ if (data_offsets) {
768
+ trans = agg::trans_affine_translation (xo, yo) * trans;
769
+ } else {
770
+ trans *= agg::trans_affine_translation (xo, yo);
771
+ }
765
772
}
766
773
767
774
if (filled)
0 commit comments