From: <md...@us...> - 2007-12-12 15:01:37
|
Revision: 4708 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4708&view=rev Author: mdboom Date: 2007-12-12 07:01:20 -0800 (Wed, 12 Dec 2007) Log Message: ----------- Merged revisions 4689-4706 via svnmerge from http://matplotlib.svn.sf.net/svnroot/matplotlib/trunk/matplotlib ........ r4697 | pkienzle | 2007-12-11 12:14:44 -0500 (Tue, 11 Dec 2007) | 1 line remove wx specific gui_repaint comment ........ r4698 | jdh2358 | 2007-12-11 16:17:59 -0500 (Tue, 11 Dec 2007) | 2 lines fixed text with dash bug ........ r4706 | mdboom | 2007-12-12 09:08:15 -0500 (Wed, 12 Dec 2007) | 2 lines Support alpha-blended text in the Agg and Svg backends. ........ Modified Paths: -------------- branches/transforms/examples/dashpointlabel.py branches/transforms/examples/lasso_demo.py branches/transforms/lib/matplotlib/backend_bases.py branches/transforms/lib/matplotlib/backends/backend_svg.py branches/transforms/lib/matplotlib/cbook.py branches/transforms/lib/matplotlib/patches.py branches/transforms/lib/matplotlib/text.py branches/transforms/src/_backend_agg.cpp Property Changed: ---------------- branches/transforms/ Property changes on: branches/transforms ___________________________________________________________________ Name: svnmerge-integrated - /trunk/matplotlib:1-4688 + /trunk/matplotlib:1-4706 Modified: branches/transforms/examples/dashpointlabel.py =================================================================== --- branches/transforms/examples/dashpointlabel.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/examples/dashpointlabel.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -1,4 +1,4 @@ -from matplotlib import pylab +import pylab DATA = ((1, 3), (2, 4), @@ -15,26 +15,27 @@ (1, 20, 30, 60, 10), ) -def test_dashpointlabel(save=False): - pylab.clf() - (x,y) = zip(*DATA) - pylab.plot(x, y, marker='o') - for i in xrange(len(DATA)): - (x,y) = DATA[i] - (dd, dl, r, dr, dp) = dash_style[i] - pylab.text(x, y, str((x,y)), withdash=True, - dashdirection=dd, - dashlength=dl, - rotation=r, - dashrotation=dr, - dashpush=dp, - ) - axis = pylab.gca() - axis.set_xlim((0.0, 5.0)) - axis.set_ylim((0.0, 5.0)) - if save: - pylab.savefig('dashpointlabel') - pylab.show() +fig = pylab.figure() +ax = fig.add_subplot(111) -if __name__ == '__main__': - test_dashpointlabel() + +(x,y) = zip(*DATA) +ax.plot(x, y, marker='o') +for i in xrange(len(DATA)): + (x,y) = DATA[i] + (dd, dl, r, dr, dp) = dash_style[i] + #print 'dashlen call', dl + t = ax.text(x, y, str((x,y)), withdash=True, + dashdirection=dd, + dashlength=dl, + rotation=r, + dashrotation=dr, + dashpush=dp, + ) + +ax.set_xlim((0.0, 5.0)) +ax.set_ylim((0.0, 5.0)) +#if save: +# pylab.savefig('dashpointlabel') +pylab.show() + Modified: branches/transforms/examples/lasso_demo.py =================================================================== --- branches/transforms/examples/lasso_demo.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/examples/lasso_demo.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -59,6 +59,7 @@ self.canvas.draw_idle() self.canvas.widgetlock.release(self.lasso) del self.lasso + def onpress(self, event): if self.canvas.widgetlock.locked(): return if event.inaxes is None: return Modified: branches/transforms/lib/matplotlib/backend_bases.py =================================================================== --- branches/transforms/lib/matplotlib/backend_bases.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/lib/matplotlib/backend_bases.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -843,7 +843,6 @@ a.set_facecolor('lightblue') else: self._active[a] = None self.draw_idle() - #self.gui_repaint() def pick(self, mouseevent): if not self.widgetlock.locked(): Modified: branches/transforms/lib/matplotlib/backends/backend_svg.py =================================================================== --- branches/transforms/lib/matplotlib/backends/backend_svg.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/lib/matplotlib/backends/backend_svg.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -296,7 +296,7 @@ color = rgb2hex(gc.get_rgb()[:3]) if rcParams['svg.embed_char_paths']: - svg = ['<g style="fill: %s" transform="' % color] + svg = ['<g style="fill: %s; opacity: %s" transform="' % (color, gc.get_alpha())] if angle != 0: svg.append('translate(%s,%s)rotate(%1.1f)' % (x,y,-angle)) elif x != 0 or y != 0: @@ -335,7 +335,8 @@ fontfamily = font.family_name fontstyle = prop.get_style() - style = 'font-size: %f; font-family: %s; font-style: %s; fill: %s;'%(fontsize, fontfamily,fontstyle, color) + style = ('font-size: %f; font-family: %s; font-style: %s; fill: %s; opacity: %s' % + (fontsize, fontfamily,fontstyle, color, gc.get_alpha())) if angle!=0: transform = 'transform="translate(%s,%s) rotate(%1.1f) translate(%s,%s)"' % (x,y,-angle,-x,-y) # Inkscape doesn't support rotate(angle x y) Modified: branches/transforms/lib/matplotlib/cbook.py =================================================================== --- branches/transforms/lib/matplotlib/cbook.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/lib/matplotlib/cbook.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -11,7 +11,7 @@ set = set except NameError: from sets import Set as set - + major, minor1, minor2, s, tmp = sys.version_info @@ -974,9 +974,9 @@ .get(). The objects being joined must be hashable. - + For example: - + >>> g = grouper.Grouper() >>> g.join('a', 'b') >>> g.join('b', 'c') @@ -989,7 +989,7 @@ True >>> g.joined('a', 'd') False - """ + """ def __init__(self, init=[]): mapping = self._mapping = {} for x in init: @@ -997,7 +997,7 @@ def __contains__(self, item): return item in self._mapping - + def join(self, a, *args): """ Join given arguments into the same set. @@ -1045,7 +1045,7 @@ """ return self._mapping.get(a, [a]) - + def simple_linear_interpolation(a, steps): steps = npy.floor(steps) new_length = ((len(a) - 1) * steps) + 1 @@ -1061,7 +1061,7 @@ for i in range(1, int(steps)): result[i::steps] = delta * i + a0 result[steps::steps] = a1 - + return result if __name__=='__main__': Modified: branches/transforms/lib/matplotlib/patches.py =================================================================== --- branches/transforms/lib/matplotlib/patches.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/lib/matplotlib/patches.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -1006,7 +1006,6 @@ dx = x1 - x0 dy = y1 - y0 dr2 = dx*dx + dy*dy - dr = npy.sqrt(dr2) D = x0*y1 - x1*y0 D2 = D*D discrim = dr2 - D2 @@ -1017,7 +1016,9 @@ y = (-D*dx) / dr2 yield x, y elif discrim > 0.0: - if dy < 0: + # The definition of "sign" here is different from + # npy.sign: we never want to get 0.0 + if dy < 0.0: sign_dy = -1.0 else: sign_dy = 1.0 @@ -1057,10 +1058,10 @@ x0, y0 = p0 x1, y1 = p1 for x, y in iter_circle_intersect_on_line_seg(x0, y0, x1, y1): - # Convert radians to angles theta = npy.arccos(x) if y < 0: theta = TWOPI - theta + # Convert radians to angles theta *= RAD2DEG if theta > theta1 and theta < theta2: thetas[theta] = None @@ -1072,7 +1073,6 @@ last_theta = theta1 theta1_rad = theta1 * DEG2RAD inside = box_path.contains_point((npy.cos(theta1_rad), npy.sin(theta1_rad))) - for theta in thetas: if inside: self._path = Path.arc(last_theta, theta, 8) Modified: branches/transforms/lib/matplotlib/text.py =================================================================== --- branches/transforms/lib/matplotlib/text.py 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/lib/matplotlib/text.py 2007-12-12 15:01:20 UTC (rev 4708) @@ -368,6 +368,11 @@ "Return the horizontal alignment as string" return self._horizontalalignment + + def _get_xy_display(self): + 'get the (possibly unit converted) transformed x,y in display coords' + return self.get_transform().transform_point((self._x, self._y)) + def get_position(self): "Return x, y as tuple" x = float(self.convert_xunits(self._x)) @@ -631,6 +636,8 @@ ACCEPTS: a matplotlib.font_manager.FontProperties instance """ + if is_string_like(fp): + fp = FontProperties(fp) self._fontproperties = fp artist.kwdocd['Text'] = artist.kwdoc(Text) @@ -731,6 +738,24 @@ #self.set_bbox(dict(pad=0)) + def get_position(self): + "Return x, y as tuple" + x = float(self.convert_xunits(self._dashx)) + y = float(self.convert_yunits(self._dashy)) + return x, y + + def get_prop_tup(self): + """ + Return a hashable tuple of properties + + Not intended to be human readable, but useful for backends who + want to cache derived information about text (eg layouts) and + need to know if the text has changed + """ + props = [p for p in Text.get_prop_tup(self)] + props.extend([self._x, self._y, self._dashlength, self._dashdirection, self._dashrotation, self._dashpad, self._dashpush]) + return tuple(props) + def draw(self, renderer): self.update_coords(renderer) Text.draw(self, renderer) @@ -808,7 +833,8 @@ cwd *= 1+dashpad/npy.sqrt(npy.dot(cwd,cwd)) cw = c2+(dashdirection*2-1)*cwd - self._x, self._y = inverse.transform_point(tuple(cw)) + newx, newy = inverse.transform_point(tuple(cw)) + self._x, self._y = newx, newy # Now set the window extent # I'm not at all sure this is the right way to do this. @@ -892,9 +918,6 @@ """ self._dashpush = dp - def get_position(self): - "Return x, y as tuple" - return self._dashx, self._dashy def set_position(self, xy): """ Modified: branches/transforms/src/_backend_agg.cpp =================================================================== --- branches/transforms/src/_backend_agg.cpp 2007-12-12 14:52:01 UTC (rev 4707) +++ branches/transforms/src/_backend_agg.cpp 2007-12-12 15:01:20 UTC (rev 4708) @@ -625,7 +625,7 @@ do { *output_span = _color; - output_span->a = input_span->v; + output_span->a = ((unsigned int)_color.a * (unsigned int)input_span->v) >> 8; ++output_span; ++input_span; } while (--len); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |