SourceForge logo
SourceForge logo
Menu

matplotlib-checkins — Commit notification. DO NOT POST to this list, just subscribe to it.

You can subscribe to this list here.

2007 Jan
Feb
Mar
Apr
May
Jun
Jul
(115)
Aug
(120)
Sep
(137)
Oct
(170)
Nov
(461)
Dec
(263)
2008 Jan
(120)
Feb
(74)
Mar
(35)
Apr
(74)
May
(245)
Jun
(356)
Jul
(240)
Aug
(115)
Sep
(78)
Oct
(225)
Nov
(98)
Dec
(271)
2009 Jan
(132)
Feb
(84)
Mar
(74)
Apr
(56)
May
(90)
Jun
(79)
Jul
(83)
Aug
(296)
Sep
(214)
Oct
(76)
Nov
(82)
Dec
(66)
2010 Jan
(46)
Feb
(58)
Mar
(51)
Apr
(77)
May
(58)
Jun
(126)
Jul
(128)
Aug
(64)
Sep
(50)
Oct
(44)
Nov
(48)
Dec
(54)
2011 Jan
(68)
Feb
(52)
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
(1)
2018 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S

1
(4)
2
3
(2)
4
(3)
5
(5)
6
(1)
7
(3)
8
9
(3)
10
(3)
11
(6)
12
(2)
13
(4)
14
(1)
15
(2)
16
(1)
17
(6)
18
(8)
19
20
(1)
21
22
23
(3)
24
(2)
25
(2)
26
(1)
27
(2)
28
(7)
29
(2)
30
(4)




Showing results of 78

<< < 1 2 3 4 (Page 4 of 4)
From: <ef...@us...> - 2008年09月01日 22:27:09
Revision: 6059
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6059&view=rev
Author: efiring
Date: 2008年09月01日 22:27:07 +0000 (2008年9月01日)
Log Message:
-----------
Improve backend_driver error reporting.
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/image_nonuniform.py
 trunk/matplotlib/examples/pylab_examples/stix_fonts_demo.py
 trunk/matplotlib/examples/tests/backend_driver.py
Modified: trunk/matplotlib/examples/pylab_examples/image_nonuniform.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/image_nonuniform.py	2008年09月01日 21:09:09 UTC (rev 6058)
+++ trunk/matplotlib/examples/pylab_examples/image_nonuniform.py	2008年09月01日 22:27:07 UTC (rev 6059)
@@ -13,7 +13,7 @@
 x = np.linspace(-4, 4, 9)
 x2 = x**3
 y = np.linspace(-4, 4, 9)
-print 'Size %d points' % (len(x) * len(y))
+#print 'Size %d points' % (len(x) * len(y))
 z = np.sqrt(x[np.newaxis,:]**2 + y[:,np.newaxis]**2)
 
 fig = figure()
Modified: trunk/matplotlib/examples/pylab_examples/stix_fonts_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/stix_fonts_demo.py	2008年09月01日 21:09:09 UTC (rev 6058)
+++ trunk/matplotlib/examples/pylab_examples/stix_fonts_demo.py	2008年09月01日 22:27:07 UTC (rev 6059)
@@ -31,7 +31,7 @@
 axis([0, 3, -len(tests), 0])
 yticks(arange(len(tests)) * -1)
 for i, s in enumerate(tests):
- print (i, s.encode("ascii", "backslashreplace"))
+ #print (i, s.encode("ascii", "backslashreplace"))
 text(0.1, -i, s, fontsize=32)
 
 savefig('stix_fonts_example')
Modified: trunk/matplotlib/examples/tests/backend_driver.py
===================================================================
--- trunk/matplotlib/examples/tests/backend_driver.py	2008年09月01日 21:09:09 UTC (rev 6058)
+++ trunk/matplotlib/examples/tests/backend_driver.py	2008年09月01日 22:27:07 UTC (rev 6059)
@@ -204,7 +204,7 @@
 os.unlink(os.path.join(path,fname))
 else:
 os.mkdir(backend)
-
+ failures = []
 for fullpath in files:
 
 print ('\tdriving %-40s' % (fullpath)),
@@ -257,10 +257,14 @@
 print (end_time - start_time), ret
 #os.system('%s %s %s' % (python, tmpfile_name, switchstring))
 os.remove(tmpfile_name)
+ if ret:
+ failures.append(fullpath)
+ return failures
 
 
 if __name__ == '__main__':
 times = {}
+ failures = {}
 default_backends = ['agg', 'ps', 'svg', 'pdf', 'template']
 if len(sys.argv)==2 and sys.argv[1]=='--clean':
 localdirs = [d for d in glob.glob('*') if os.path.isdir(d)]
@@ -299,13 +303,16 @@
 switchstring = ' '.join(switches)
 print 'testing %s %s' % (backend, switchstring)
 t0 = time.time()
- drive(backend, python, switches)
+ failures[backend] = drive(backend, python, switches)
 t1 = time.time()
 times[backend] = (t1-t0)/60.0
 
 # print times
 for backend, elapsed in times.items():
 print 'Backend %s took %1.2f minutes to complete' % ( backend, elapsed)
+ failed = failures[backend]
+ if failed:
+ print ' Failures: ', failed
 if 'Template' in times:
 print '\ttemplate ratio %1.3f, template residual %1.3f' % (
 elapsed/times['Template'], elapsed-times['Template'])
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2008年09月01日 21:09:11
Revision: 6058
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6058&view=rev
Author: efiring
Date: 2008年09月01日 21:09:09 +0000 (2008年9月01日)
Log Message:
-----------
Update CHANGELOG for Lielens NonUniformImage patch
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/axes.py
 trunk/matplotlib/lib/matplotlib/pyplot.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2008年09月01日 21:06:34 UTC (rev 6057)
+++ trunk/matplotlib/CHANGELOG	2008年09月01日 21:09:09 UTC (rev 6058)
@@ -1,3 +1,6 @@
+2008年09月01日 Added support for bilinear interpolation in
+ NonUniformImage; patch by Gregory Lielens. - EF
+
 2008年08月28日 Added support for multiple histograms with data of
 different length - MM
 
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py	2008年09月01日 21:06:34 UTC (rev 6057)
+++ trunk/matplotlib/lib/matplotlib/axes.py	2008年09月01日 21:09:09 UTC (rev 6058)
@@ -6216,7 +6216,7 @@
 elif len(x.shape)==2 and x.shape[1]<x.shape[0]:
 warnings.warn('2D hist should be nsamples x nvariables; this looks transposed')
 except ValueError:
- # multiple hist with data of different length 
+ # multiple hist with data of different length
 if iterable(x[0]) and not is_string_like(x[0]):
 tx = []
 for i in xrange(len(x)):
Modified: trunk/matplotlib/lib/matplotlib/pyplot.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/pyplot.py	2008年09月01日 21:06:34 UTC (rev 6057)
+++ trunk/matplotlib/lib/matplotlib/pyplot.py	2008年09月01日 21:09:09 UTC (rev 6058)
@@ -2354,7 +2354,7 @@
 except:
 hold(b)
 raise
- 
+
 hold(b)
 return ret
 if Axes.barbs.__doc__ is not None:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2008年09月01日 21:06:37
Revision: 6057
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6057&view=rev
Author: efiring
Date: 2008年09月01日 21:06:34 +0000 (2008年9月01日)
Log Message:
-----------
Bilinear interp in NonUniformImage; slightly modified patch by Gregory Lielens
Includes a bugfix in _image.pcolor2.
Replaced pylab_examples/pcolor_nonuniform.py with the more
aptly-named image_nonuniform.py, modified it to show both
interpolation types, and added it to backend_driver.py.
Modified Paths:
--------------
 trunk/matplotlib/examples/tests/backend_driver.py
 trunk/matplotlib/lib/matplotlib/image.py
 trunk/matplotlib/src/_image.cpp
Added Paths:
-----------
 trunk/matplotlib/examples/pylab_examples/image_nonuniform.py
Removed Paths:
-------------
 trunk/matplotlib/examples/pylab_examples/pcolor_nonuniform.py
Added: trunk/matplotlib/examples/pylab_examples/image_nonuniform.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/image_nonuniform.py	 (rev 0)
+++ trunk/matplotlib/examples/pylab_examples/image_nonuniform.py	2008年09月01日 21:06:34 UTC (rev 6057)
@@ -0,0 +1,55 @@
+'''
+This illustrates the NonUniformImage class, which still needs
+an axes method interface; either a separate interface, or a
+generalization of imshow.
+'''
+
+from matplotlib.pyplot import figure, show
+import numpy as np
+from matplotlib.image import NonUniformImage
+
+interp='nearest'
+
+x = np.linspace(-4, 4, 9)
+x2 = x**3
+y = np.linspace(-4, 4, 9)
+print 'Size %d points' % (len(x) * len(y))
+z = np.sqrt(x[np.newaxis,:]**2 + y[:,np.newaxis]**2)
+
+fig = figure()
+fig.suptitle('NonUniformImage class')
+ax = fig.add_subplot(221)
+im = NonUniformImage(ax, interpolation=interp, extent=(-4,4,-4,4))
+im.set_data(x, y, z)
+ax.images.append(im)
+ax.set_xlim(-4,4)
+ax.set_ylim(-4,4)
+ax.set_title(interp)
+
+ax = fig.add_subplot(222)
+im = NonUniformImage(ax, interpolation=interp, extent=(-64,64,-4,4))
+im.set_data(x2, y, z)
+ax.images.append(im)
+ax.set_xlim(-64,64)
+ax.set_ylim(-4,4)
+ax.set_title(interp)
+
+interp = 'bilinear'
+
+ax = fig.add_subplot(223)
+im = NonUniformImage(ax, interpolation=interp, extent=(-4,4,-4,4))
+im.set_data(x, y, z)
+ax.images.append(im)
+ax.set_xlim(-4,4)
+ax.set_ylim(-4,4)
+ax.set_title(interp)
+
+ax = fig.add_subplot(224)
+im = NonUniformImage(ax, interpolation=interp, extent=(-64,64,-4,4))
+im.set_data(x2, y, z)
+ax.images.append(im)
+ax.set_xlim(-64,64)
+ax.set_ylim(-4,4)
+ax.set_title(interp)
+
+show()
Deleted: trunk/matplotlib/examples/pylab_examples/pcolor_nonuniform.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/pcolor_nonuniform.py	2008年08月30日 10:11:37 UTC (rev 6056)
+++ trunk/matplotlib/examples/pylab_examples/pcolor_nonuniform.py	2008年09月01日 21:06:34 UTC (rev 6057)
@@ -1,26 +0,0 @@
-from matplotlib.pyplot import figure, show
-import numpy as np
-from matplotlib.image import NonUniformImage
-
-x = np.arange(-4, 4, 0.005)
-y = np.arange(-4, 4, 0.005)
-print 'Size %d points' % (len(x) * len(y))
-z = np.sqrt(x[np.newaxis,:]**2 + y[:,np.newaxis]**2)
-
-fig = figure()
-ax = fig.add_subplot(111)
-im = NonUniformImage(ax, extent=(-4,4,-4,4))
-im.set_data(x, y, z)
-ax.images.append(im)
-ax.set_xlim(-4,4)
-ax.set_ylim(-4,4)
-
-fig2 = figure()
-ax = fig2.add_subplot(111)
-x2 = x**3
-im = NonUniformImage(ax, extent=(-64,64,-4,4))
-im.set_data(x2, y, z)
-ax.images.append(im)
-ax.set_xlim(-64,64)
-ax.set_ylim(-4,4)
-show()
Modified: trunk/matplotlib/examples/tests/backend_driver.py
===================================================================
--- trunk/matplotlib/examples/tests/backend_driver.py	2008年08月30日 10:11:37 UTC (rev 6056)
+++ trunk/matplotlib/examples/tests/backend_driver.py	2008年09月01日 21:06:34 UTC (rev 6057)
@@ -66,6 +66,7 @@
 'image_demo2.py',
 'image_masked.py',
 'image_origin.py',
+ 'image_nonuniform.py',
 'invert_axes.py',
 'layer_images.py',
 'legend_auto.py',
Modified: trunk/matplotlib/lib/matplotlib/image.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/image.py	2008年08月30日 10:11:37 UTC (rev 6056)
+++ trunk/matplotlib/lib/matplotlib/image.py	2008年09月01日 21:06:34 UTC (rev 6057)
@@ -392,13 +392,14 @@
 def __init__(self, ax,
 **kwargs
 ):
+ interp = kwargs.pop('interpolation', 'nearest')
 AxesImage.__init__(self, ax,
 **kwargs)
+ AxesImage.set_interpolation(self, interp)
 
 def make_image(self, magnification=1.0):
 if self._A is None:
 raise RuntimeError('You must first set the image array')
-
 x0, y0, v_width, v_height = self.axes.viewLim.bounds
 l, b, r, t = self.axes.bbox.extents
 width = (round(r) + 0.5) - (round(l) - 0.5)
@@ -407,10 +408,13 @@
 height *= magnification
 im = _image.pcolor(self._Ax, self._Ay, self._A,
 height, width,
- (x0, x0+v_width, y0, y0+v_height))
+ (x0, x0+v_width, y0, y0+v_height),
+ self._interpd[self._interpolation])
+
 fc = self.axes.patch.get_facecolor()
 bg = mcolors.colorConverter.to_rgba(fc, 0)
 im.set_bg(*bg)
+ im.is_grayscale = self.is_grayscale
 return im
 
 def set_data(self, x, y, A):
@@ -430,9 +434,11 @@
 if len(A.shape) == 2:
 if A.dtype != np.uint8:
 A = (self.cmap(self.norm(A))*255).astype(np.uint8)
+ self.is_grayscale = self.cmap.is_gray()
 else:
 A = np.repeat(A[:,:,np.newaxis], 4, 2)
 A[:,:,3] = 255
+ self.is_grayscale = True
 else:
 if A.dtype != np.uint8:
 A = (255*A).astype(np.uint8)
@@ -441,6 +447,7 @@
 B[:,:,0:3] = A
 B[:,:,3] = 255
 A = B
+ self.is_grayscale = False
 self._A = A
 self._Ax = x
 self._Ay = y
@@ -450,8 +457,8 @@
 raise NotImplementedError('Method not supported')
 
 def set_interpolation(self, s):
- if s != None and s != 'nearest':
- raise NotImplementedError('Only nearest neighbor supported')
+ if s != None and not s in ('nearest','bilinear'):
+ raise NotImplementedError('Only nearest neighbor and bilinear interpolations are supported')
 AxesImage.set_interpolation(self, s)
 
 def get_extent(self):
Modified: trunk/matplotlib/src/_image.cpp
===================================================================
--- trunk/matplotlib/src/_image.cpp	2008年08月30日 10:11:37 UTC (rev 6056)
+++ trunk/matplotlib/src/_image.cpp	2008年09月01日 21:06:34 UTC (rev 6057)
@@ -1138,21 +1138,211 @@
 return Py::asObject(imo);
 }
 
+// utilities for irregular grids
+void _bin_indices_middle(unsigned int *irows, int nrows, float *ys1, int ny,float dy, float y_min)
+{ int i,j, j_last;
+ unsigned int * rowstart = irows;
+ float *ys2 = ys1+1;
+ float *yl = ys1 + ny ;
+ float yo = y_min + dy/2.0;
+ float ym = 0.5f*(*ys1 + *ys2);
+ // y/rows
+ j = 0;
+ j_last = j;
+ for (i=0;i<nrows;i++,yo+=dy,rowstart++) {
+ while(ys2 != yl && yo > ym) {
+ ys1 = ys2;
+ ys2 = ys1+1;
+ ym = 0.5f*(*ys1 + *ys2);
+ j++;
+ }
+ *rowstart = j - j_last;
+ j_last = j;
+ }
+}
 
+void _bin_indices_middle_linear(float *arows, unsigned int *irows, int nrows, float *y, int ny,float dy, float y_min)
+{ int i;
+ int ii = 0;
+ int iilast = ny-1;
+ float sc = 1/dy;
+ int iy0 = (int)floor(sc * (y[ii] - y_min) );
+ int iy1 = (int)floor(sc * (y[ii+1] - y_min) );
+ float invgap=1.0f/(iy1-iy0);
+ for (i=0; i<nrows && i<=iy0; i++) {
+ irows[i] = 0;
+ arows[i] = 1.0;
+ //std::cerr<<"i="<<i<<" ii="<<0<<" a="<< arows[i]<< std::endl;
+ }
+ for (; i<nrows; i++) {
+ while (i > iy1 && ii < iilast) {
+ ii++;
+ iy0 = iy1;
+ iy1 = (int)floor(sc * (y[ii+1] - y_min));
+ invgap=1.0f/(iy1-iy0);
+ }
+ if (i >= iy0 && i <= iy1) {
+ irows[i] = ii;
+ arows[i]=(iy1-i)*invgap;
+ //std::cerr<<"i="<<i<<" ii="<<ii<<" a="<< arows[i]<< std::endl;
+ }
+ else break;
+ }
+ for (; i<nrows; i++) {
+ irows[i] =iilast-1;
+ arows[i] = 0.0;
+ //std::cerr<<"i="<<i<<" ii="<<iilast-1<<" a="<< arows[i]<< std::endl;
+ }
+}
+
+void _bin_indices(int *irows, int nrows, double *y, int ny,
+ double sc, double offs)
+{
+ int i;
+ if (sc*(y[ny-1] - y[0]) > 0)
+ {
+ int ii = 0;
+ int iilast = ny-1;
+ int iy0 = (int)floor(sc * (y[ii] - offs));
+ int iy1 = (int)floor(sc * (y[ii+1] - offs));
+ for (i=0; i<nrows && i<iy0; i++) {
+ irows[i] = -1;
+ }
+ for (; i<nrows; i++) {
+ while (i > iy1 && ii < iilast) {
+ ii++;
+ iy0 = iy1;
+ iy1 = (int)floor(sc * (y[ii+1] - offs));
+ }
+ if (i >= iy0 && i <= iy1) irows[i] = ii;
+ else break;
+ }
+ for (; i<nrows; i++) {
+ irows[i] = -1;
+ }
+ }
+ else
+ {
+ int iilast = ny-1;
+ int ii = iilast;
+ int iy0 = (int)floor(sc * (y[ii] - offs));
+ int iy1 = (int)floor(sc * (y[ii-1] - offs));
+ for (i=0; i<nrows && i<iy0; i++) {
+ irows[i] = -1;
+ }
+ for (; i<nrows; i++) {
+ while (i > iy1 && ii > 1) {
+ ii--;
+ iy0 = iy1;
+ iy1 = (int)floor(sc * (y[ii-1] - offs));
+ }
+ if (i >= iy0 && i <= iy1) irows[i] = ii-1;
+ else break;
+ }
+ for (; i<nrows; i++) {
+ irows[i] = -1;
+ }
+ }
+}
+
+void _bin_indices_linear(float *arows, int *irows, int nrows, double *y, int ny,
+ double sc, double offs)
+{
+ int i;
+ if (sc*(y[ny-1] - y[0]) > 0)
+ {
+ int ii = 0;
+ int iilast = ny-1;
+ int iy0 = (int)floor(sc * (y[ii] - offs));
+ int iy1 = (int)floor(sc * (y[ii+1] - offs));
+ float invgap=1.0/(iy1-iy0);
+ for (i=0; i<nrows && i<iy0; i++) {
+ irows[i] = -1;
+ }
+ for (; i<nrows; i++) {
+ while (i > iy1 && ii < iilast) {
+ ii++;
+ iy0 = iy1;
+ iy1 = (int)floor(sc * (y[ii+1] - offs));
+ invgap=1.0/(iy1-iy0);
+ }
+ if (i >= iy0 && i <= iy1) {
+ irows[i] = ii;
+ arows[i]=(iy1-i)*invgap;
+ }
+ else break;
+ }
+ for (; i<nrows; i++) {
+ irows[i] = -1;
+ }
+ }
+ else
+ {
+ int iilast = ny-1;
+ int ii = iilast;
+ int iy0 = (int)floor(sc * (y[ii] - offs));
+ int iy1 = (int)floor(sc * (y[ii-1] - offs));
+ float invgap=1.0/(iy1-iy0);
+ for (i=0; i<nrows && i<iy0; i++) {
+ irows[i] = -1;
+ }
+ for (; i<nrows; i++) {
+ while (i > iy1 && ii > 1) {
+ ii--;
+ iy0 = iy1;
+ iy1 = (int)floor(sc * (y[ii-1] - offs));
+ invgap=1.0/(iy1-iy0);
+ }
+ if (i >= iy0 && i <= iy1) {
+ irows[i] = ii-1;
+ arows[i]=(i-iy0)*invgap;
+ }
+ else break;
+ }
+ for (; i<nrows; i++) {
+ irows[i] = -1;
+ }
+ }
+}
+
+
+
 char __image_module_pcolor__doc__[] =
 "pcolor(x, y, data, rows, cols, bounds)\n"
 "\n"
-"Generate a psudo-color image from data on a non-univorm grid using\n"
-"nearest neighbour interpolation.\n"
+"Generate a pseudo-color image from data on a non-uniform grid using\n"
+"nearest neighbour or linear interpolation.\n"
 "bounds = (x_min, x_max, y_min, y_max)\n"
+"interpolation = NEAREST or BILINEAR \n"
 ;
+
+void _pcolor_cleanup(PyArrayObject* x, PyArrayObject* y, PyArrayObject *d,
+ unsigned int * rowstarts ,unsigned int*colstarts ,
+ float *acols , float *arows) {
+ if (x)
+ Py_XDECREF(x);
+ if (y)
+ Py_XDECREF(y);
+ if(d)
+ Py_XDECREF(d);
+ if(rowstarts)
+ PyMem_Free(rowstarts);
+ if(colstarts)
+ PyMem_Free(colstarts);
+ if(acols)
+ PyMem_Free(acols);
+ if(arows)
+ PyMem_Free(arows);
+ return;
+}
+ 
 Py::Object
 _image_module::pcolor(const Py::Tuple& args) {
 _VERBOSE("_image_module::pcolor");
 
 
- if (args.length() != 6)
- throw Py::TypeError("Incorrect number of arguments (6 expected)");
+ if (args.length() != 7)
+ throw Py::TypeError("Incorrect number of arguments (7 expected)");
 
 Py::Object xp = args[0];
 Py::Object yp = args[1];
@@ -1160,6 +1350,7 @@
 unsigned int rows = Py::Int(args[3]);
 unsigned int cols = Py::Int(args[4]);
 Py::Tuple bounds = args[5];
+ unsigned int interpolation = Py::Int(args[6]);
 
 if (rows > 1 << 15 || cols > 1 << 15) {
 throw Py::ValueError("rows and cols must both be less than 32768");
@@ -1179,26 +1370,29 @@
 // Check we have something to output to
 if (rows == 0 || cols ==0)
 throw Py::ValueError("Cannot scale to zero size");
-
+ 
+ PyArrayObject *x = NULL; PyArrayObject *y = NULL; PyArrayObject *d = NULL;
+ unsigned int * rowstarts = NULL; unsigned int*colstarts = NULL;
+ float *acols = NULL; float *arows = NULL;
+ 
 // Get numpy arrays
- PyArrayObject *x = (PyArrayObject *) PyArray_ContiguousFromObject(xp.ptr(), PyArray_FLOAT, 1, 1);
- if (x == NULL)
+ x = (PyArrayObject *) PyArray_ContiguousFromObject(xp.ptr(), PyArray_FLOAT, 1, 1);
+ if (x == NULL) {
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::ValueError("x is of incorrect type (wanted 1D float)");
- PyArrayObject *y = (PyArrayObject *) PyArray_ContiguousFromObject(yp.ptr(), PyArray_FLOAT, 1, 1);
+ }
+ y = (PyArrayObject *) PyArray_ContiguousFromObject(yp.ptr(), PyArray_FLOAT, 1, 1);
 if (y == NULL) {
- Py_XDECREF(x);
- throw Py::ValueError("y is of incorrect type (wanted 1D float)");
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
+ throw Py::ValueError("y is of incorrect type (wanted 1D float)");
 }
- PyArrayObject *d = (PyArrayObject *) PyArray_ContiguousFromObject(dp.ptr(), PyArray_UBYTE, 3, 3);
+ d = (PyArrayObject *) PyArray_ContiguousFromObject(dp.ptr(), PyArray_UBYTE, 3, 3);
 if (d == NULL) {
- Py_XDECREF(x);
- Py_XDECREF(y);
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::ValueError("data is of incorrect type (wanted 3D UInt8)");
 }
 if (d->dimensions[2] != 4) {
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::ValueError("data must be in RGBA format");
 }
 
@@ -1206,26 +1400,21 @@
 int nx = x->dimensions[0];
 int ny = y->dimensions[0];
 if (nx != d->dimensions[1] || ny != d->dimensions[0]) {
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::ValueError("data and axis dimensions do not match");
 }
 
 // Allocate memory for pointer arrays
- unsigned int * rowstarts = reinterpret_cast<unsigned int*>(PyMem_Malloc(sizeof(unsigned int)*rows));
- if (rowstarts == NULL) {
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
+ rowstarts = reinterpret_cast<unsigned int*>(PyMem_Malloc(sizeof(unsigned int)*rows));
+ arows = reinterpret_cast<float *>(PyMem_Malloc(sizeof(float)*rows));
+ if (rowstarts == NULL || arows == NULL ) {
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::MemoryError("Cannot allocate memory for lookup table");
 }
- unsigned int * colstarts = reinterpret_cast<unsigned int*>(PyMem_Malloc(sizeof(unsigned int*)*cols));
- if (colstarts == NULL) {
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
- PyMem_Free(rowstarts);
+ colstarts = reinterpret_cast<unsigned int*>(PyMem_Malloc(sizeof(unsigned int)*cols));
+ acols = reinterpret_cast<float*>(PyMem_Malloc(sizeof(float)*cols));
+ if (colstarts == NULL || acols == NULL) {
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::MemoryError("Cannot allocate memory for lookup table");
 }
 
@@ -1238,54 +1427,17 @@
 size_t NUMBYTES(rows * cols * 4);
 agg::int8u *buffer = new agg::int8u[NUMBYTES];
 if (buffer == NULL) {
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
- PyMem_Free(rowstarts);
- PyMem_Free(colstarts);
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 throw Py::MemoryError("Could not allocate memory for image");
 }
+ 
 
 // Calculate the pointer arrays to map input x to output x
- unsigned int i, j, j_last;
+ unsigned int i, j;
 unsigned int * colstart = colstarts;
 unsigned int * rowstart = rowstarts;
 float *xs1 = reinterpret_cast<float*>(x->data);
 float *ys1 = reinterpret_cast<float*>(y->data);
- float *xs2 = xs1+1;
- float *ys2 = ys1+1;
- float *xl = xs1 + nx - 1;
- float *yl = ys1 + ny - 1;
- float xo = x_min + dx/2.0;
- float yo = y_min + dy/2.0;
- float xm = 0.5*(*xs1 + *xs2);
- float ym = 0.5*(*ys1 + *ys2);
- // x/cols
- j = 0;
- j_last = j;
- for (i=0;i<cols;i++,xo+=dx,colstart++) {
- while(xs2 != xl && xo > xm) {
- xs1 = xs2;
- xs2 = xs1+1;
- xm = 0.5f*(*xs1 + *xs2);
- j++;
- }
- *colstart = j - j_last;
- j_last = j;
- }
- // y/rows
- j = 0;
- j_last = j;
- for (i=0;i<rows;i++,yo+=dy,rowstart++) {
- while(ys2 != yl && yo > ym) {
- ys1 = ys2;
- ys2 = ys1+1;
- ym = 0.5f*(*ys1 + *ys2);
- j++;
- }
- *rowstart = j - j_last;
- j_last = j;
- }
 
 
 // Copy data to output buffer
@@ -1297,87 +1449,82 @@
 agg::int8u * position = buffer;
 agg::int8u * oldposition = NULL;
 start = reinterpret_cast<unsigned char*>(d->data);
- for(i=0;i<rows;i++,rowstart++)
- {
- if (i > 0 && *rowstart == 0) {
- memcpy(position, oldposition, rowsize*sizeof(agg::int8u));
- oldposition = position;
- position += rowsize;
- } else {
- oldposition = position;
- start += *rowstart * inrowsize;
- inposition = start;
- for(j=0,colstart=colstarts;j<cols;j++,position+=4,colstart++) {
- inposition += *colstart * 4;
- memcpy(position, inposition, 4*sizeof(agg::int8u));
+ int s0 = d->strides[0];
+ int s1 = d->strides[1];
+ 
+ if(interpolation == Image::NEAREST) {
+ _bin_indices_middle(colstart, cols, xs1, nx,dx,x_min);
+ _bin_indices_middle(rowstart, rows, ys1, ny, dy,y_min);
+ for(i=0;i<rows;i++,rowstart++)
+ {
+ if (i > 0 && *rowstart == 0) {
+ memcpy(position, oldposition, rowsize*sizeof(agg::int8u));
+ oldposition = position;
+ position += rowsize;
+ } else {
+ oldposition = position;
+ start += *rowstart * inrowsize;
+ inposition = start;
+ for(j=0,colstart=colstarts;j<cols;j++,position+=4,colstart++) {
+ inposition += *colstart * 4;
+ memcpy(position, inposition, 4*sizeof(agg::int8u));
+ }
 }
 }
 }
+ else if(interpolation == Image::BILINEAR) {
+ _bin_indices_middle_linear(acols, colstart, cols, xs1, nx,dx,x_min);
+ _bin_indices_middle_linear(arows, rowstart, rows, ys1, ny, dy,y_min);
+ double a00,a01,a10,a11,alpha,beta;
+ 
+ 
+ agg::int8u * start00;
+ agg::int8u * start01;
+ agg::int8u * start10;
+ agg::int8u * start11;
+ // Copy data to output buffer
+ for (i=0; i<rows; i++)
+ {
+ for (j=0; j<cols; j++)
+ {
+ alpha=arows[i];
+ beta=acols[j];
+ 
+ a00=alpha*beta;
+ a01=alpha*(1.0-beta);
+ a10=(1.0-alpha)*beta;
+ a11=1.0-a00-a01-a10;
+ 
+ start00=(agg::int8u *)(start + s0*rowstart[i] + s1*colstart[j]);
+ start01=start00+s1;
+ start10=start00+s0;
+ start11=start10+s1;
+ position[0] =(agg::int8u)(start00[0]*a00+start01[0]*a01+start10[0]*a10+start11[0]*a11);
+ position[1] =(agg::int8u)(start00[1]*a00+start01[1]*a01+start10[1]*a10+start11[1]*a11);
+ position[2] =(agg::int8u)(start00[2]*a00+start01[2]*a01+start10[2]*a10+start11[2]*a11);
+ position[3] =(agg::int8u)(start00[3]*a00+start01[3]*a01+start10[3]*a10+start11[3]*a11);
+ position += 4;
+ }
+ }
+ 
+ }
 
+
 // Attatch output buffer to output buffer
 imo->rbufOut = new agg::rendering_buffer;
 imo->bufferOut = buffer;
 imo->rbufOut->attach(imo->bufferOut, imo->colsOut, imo->rowsOut, imo->colsOut * imo->BPP);
 
- Py_XDECREF(x);
- Py_XDECREF(y);
- Py_XDECREF(d);
- PyMem_Free(rowstarts);
- PyMem_Free(colstarts);
+ 
+ _pcolor_cleanup(x,y,d,rowstarts,colstarts,acols,arows);
 
 return Py::asObject(imo);
-}
+ 
 
-void _bin_indices(int *irows, int nrows, double *y, int ny,
- double sc, double offs)
-{
- int i;
- if (sc*(y[ny-1] - y[0]) > 0)
- {
- int ii = 0;
- int iilast = ny-1;
- int iy0 = (int)floor(sc * (y[ii] - offs));
- int iy1 = (int)floor(sc * (y[ii+1] - offs));
- for (i=0; i<nrows && i<iy0; i++) {
- irows[i] = -1;
- }
- for (; i<nrows; i++) {
- while (i > iy1 && ii < iilast) {
- ii++;
- iy0 = iy1;
- iy1 = (int)floor(sc * (y[ii+1] - offs));
- }
- if (i >= iy0 && i <= iy1) irows[i] = ii;
- else break;
- }
- for (; i<nrows; i++) {
- irows[i] = -1;
- }
- }
- else
- {
- int iilast = ny-1;
- int ii = iilast;
- int iy0 = (int)floor(sc * (y[ii] - offs));
- int iy1 = (int)floor(sc * (y[ii-1] - offs));
- for (i=0; i<nrows && i<iy0; i++) {
- irows[i] = -1;
- }
- for (; i<nrows; i++) {
- while (i > iy1 && ii > 1) {
- ii--;
- iy0 = iy1;
- iy1 = (int)floor(sc * (y[ii-1] - offs));
- }
- if (i >= iy0 && i <= iy1) irows[i] = ii-1;
- else break;
- }
- for (; i<nrows; i++) {
- irows[i] = -1;
- }
- }
+ 
 }
 
+
 char __image_module_pcolor2__doc__[] =
 "pcolor2(x, y, data, rows, cols, bounds, bg)\n"
 "\n"
@@ -1477,7 +1624,7 @@
 Py_XDECREF(bg);
 throw Py::MemoryError("Cannot allocate memory for lookup table");
 }
- int * jcols = reinterpret_cast<int*>(PyMem_Malloc(sizeof(int*)*cols));
+ int * jcols = reinterpret_cast<int*>(PyMem_Malloc(sizeof(int)*cols));
 if (jcols == NULL) {
 Py_XDECREF(x);
 Py_XDECREF(y);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

Showing results of 78

<< < 1 2 3 4 (Page 4 of 4)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /