Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1f0dbb9

Browse files
committed
Remove unnecessary data copying from draw_quad_mesh
svn path=/trunk/matplotlib/; revision=4379
1 parent e2df232 commit 1f0dbb9

1 file changed

Lines changed: 14 additions & 20 deletions

File tree

src/_backend_agg.cpp

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,8 @@ RendererAgg::draw_quad_mesh(const Py::Tuple& args){
10521052
}
10531053

10541054
set_clip_from_bbox(args[5]);
1055-
1055+
// Does it make sense to support offsets in QuadMesh?
1056+
// When would they be used?
10561057
Py::SeqBase<Py::Object> offsets;
10571058
Transformation* transOffset = NULL;
10581059
bool usingOffsets = args[7].ptr() != Py_None;
@@ -1079,37 +1080,30 @@ RendererAgg::draw_quad_mesh(const Py::Tuple& args){
10791080
std::pair<double, double> xyo, xy;
10801081

10811082
//do non-offset transformations
1082-
double* xCoordsa = new double[Nverts];
1083-
double* yCoordsa = new double[Nverts];
10841083
double* newXCoords = new double[Nverts];
10851084
double* newYCoords = new double[Nverts];
10861085
size_t k, q;
1087-
for(k=0; k < Nverts; k++)
1088-
{
1089-
xCoordsa[k] = *(double *)(xCoords -> data + k*(xCoords -> strides[0]));
1090-
yCoordsa[k] = *(double *)(yCoords -> data + k*(yCoords -> strides[0]));
1091-
}
1092-
transform->arrayOperator(Nverts, xCoordsa, yCoordsa, newXCoords, newYCoords);
1093-
delete xCoordsa;
1094-
delete yCoordsa;
1086+
transform->arrayOperator(Nverts, (const double *)xCoords->data,
1087+
(const double *)yCoords->data,
1088+
newXCoords, newYCoords);
10951089
if(usingOffsets)
10961090
{
10971091
double* xOffsets = new double[Noffsets];
10981092
double* yOffsets = new double[Noffsets];
10991093
double* newXOffsets = new double[Noffsets];
11001094
double* newYOffsets = new double[Noffsets];
11011095
for(k=0; k < Noffsets; k++)
1102-
{
1103-
Py::SeqBase<Py::Object> pos = Py::SeqBase<Py::Object>(offsets[k]);
1104-
xOffsets[k] = Py::Float(pos[0]);
1105-
yOffsets[k] = Py::Float(pos[1]);
1106-
}
1096+
{
1097+
Py::SeqBase<Py::Object> pos = Py::SeqBase<Py::Object>(offsets[k]);
1098+
xOffsets[k] = Py::Float(pos[0]);
1099+
yOffsets[k] = Py::Float(pos[1]);
1100+
}
11071101
transOffset->arrayOperator(Noffsets, xOffsets, yOffsets, newXOffsets, newYOffsets);
11081102
for(k=0; k < Nverts; k++)
1109-
{
1110-
newXCoords[k] += newXOffsets[k];
1111-
newYCoords[k] += newYOffsets[k];
1112-
}
1103+
{
1104+
newXCoords[k] += newXOffsets[k];
1105+
newYCoords[k] += newYOffsets[k];
1106+
}
11131107
delete xOffsets;
11141108
delete yOffsets;
11151109
delete newXOffsets;

0 commit comments

Comments
 (0)