@@ -699,7 +699,7 @@ _path_module::get_path_collection_extents(const Py::Tuple& args)
699699Py::Object
700700_path_module::point_in_path_collection (const Py::Tuple& args)
701701{
702- args.verify_length (9 );
702+ args.verify_length (10 );
703703
704704 // segments, trans, clipbox, colors, linewidths, antialiaseds
705705 double x = Py::Float (args[0 ]);
@@ -711,6 +711,9 @@ _path_module::point_in_path_collection(const Py::Tuple& args)
711711 Py::SeqBase<Py::Object> offsets_obj = args[6 ];
712712 agg::trans_affine offset_trans = py_to_agg_transformation_matrix (args[7 ].ptr ());
713713 bool filled = Py::Boolean (args[8 ]);
714+ std::string offset_position = Py::String (args[9 ]);
715+
716+ bool data_offsets = (offset_position == " data" );
714717
715718 PyArrayObject* offsets = (PyArrayObject*)PyArray_FromObject (
716719 offsets_obj.ptr (), PyArray_DOUBLE, 0 , 2 );
@@ -761,7 +764,11 @@ _path_module::point_in_path_collection(const Py::Tuple& args)
761764 double xo = *(double *)PyArray_GETPTR2 (offsets, i % Noffsets, 0 );
762765 double yo = *(double *)PyArray_GETPTR2 (offsets, i % Noffsets, 1 );
763766 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+ }
765772 }
766773
767774 if (filled)
0 commit comments