8000 update htdocs - lots of small fixes · matplotlib/matplotlib@d1e79f9 · GitHub
[go: up one dir, main page]

Skip to content

Commit d1e79f9

Browse files
committed
update htdocs - lots of small fixes
svn path=/trunk/matplotlib/; revision=169
1 parent 0ff67f7 commit d1e79f9

File tree

8 files changed

+128
-45
lines changed

8 files changed

+128
-45
lines changed

DEVNOTES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ http://matplotlib.sourceforge.net
2626

2727
### Doing a release
2828

29+
0) Turn off all the build flags
30+
2931
0) when building the win installer, comment out the import ttfquery in
3032
build_fonttools
3133

TODO

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@
224224

225225
-- decreasing axes - James Boyle <boyle5@llnl.gov>
226226

227-
-- make rgb rgba
228227

229228
-- check out Helge's contour
230229

@@ -243,13 +242,13 @@
243242

244243
-- DONE 2004-02-25 fix setup.py to build ft2
245244

246-
-- TkAgg resize
245+
-- TkAgg resize (test on win32)
247246

248247
-- DONE TkAgg interactive on win32
249248

250249
-- DONE test mathdemo on win32
251250

252-
-- figure out what you want to do about mathtext on GTK for next relase
251+
-- DONE 2004-03-01 - figure out what you want to do about mathtext on GTK for next relase
253252

254253
-- DONE mathtext screenshot demo
255254

@@ -259,4 +258,8 @@
259258

260259
-- DONE - (Todd updated docs) - python2.2 no default tkinter
261260

262-
-- check out wx
261+
-- check out wx
262+
263+
-- DONE 2004-03-02 - fix ft2font clipping on agg
264+
265+
-- DONE 2004-03-02 - why are aliased lines of varying widths on agg?

examples/backend_driver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def drive(backend):
6565
times = {}
6666
backends = ['PS', 'GD', 'Paint', 'Agg', 'Template']
6767
#backends.extend([ 'GTK', 'WX', 'TkAgg'])
68-
backends = [ 'Agg', 'GD']
68+
backends = [ 'Agg']
6969

7070
for backend in backends:
7171
print 'testing %s' % backend

examples/mathtext_demo.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
"""
2+
3+
In order to use mathtext, you must build matplotlib.ft2font. This is
4+
built by default in the windows installer.
5+
6+
For other platforms, edit setup.py and set
7+
8+
BUILD_FT2FONT = True
9+
10+
"""
111
from matplotlib.matlab import *
212
subplot(111, axisbg='y')
313
plot([1,2,3])

examples/simple_plot.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from matplotlib.matlab import *
22

33
figure(1)
4-
t = arange(0.0, 1.0, 0.02)
4+
t = arange(0.0, 1.0, 0.01)
55
s = sin(2*2*pi*t)
6-
plot(t, s, 'x')
6+
plot(t, s)
77

88
xlabel('time (s)')
99
ylabel('voltage (mV)')
1010
title('About as simple as it gets, folks')
1111
grid(True)
12-
savefig('simple_plot',dpi=300)
12+
#savefig('simple_plot',dpi=300)
1313
show()

src/_backend_agg.cpp

Lines changed: 73 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,36 @@ double
4747
_points_to_pixels(RendererAggObject* renderer, double pt) {
4848
// convert a value in points to pixels depending on renderer dpi and
4949
// scrren pixels per inch
50-
return pt*PIXELS_PER_INCH/72.0*renderer->dpi/72.0;
50+
return (int)(pt*PIXELS_PER_INCH/72.0*renderer->dpi/72.0)+0.5;
5151

5252
}
5353

54+
55+
int
56+
_gc_antialiased(PyObject *gc) {
57+
58+
59+
// return whether to use antialiased drawing on the object; default true
60+
61+
62+
PyObject *antialiased;
63+
int isaa;
64+
int defaultVal=1;
65+
66+
//TODO: PyObject_GetAttrString returns ownership - do I need to manipulate the ref count here
67+
antialiased = PyObject_GetAttrString( gc, "_antialiased");
68+
69+
if (antialiased==NULL) {
70+
printf("Failed to find _antialiased attribute\n");
71+
return defaultVal; //defaultVal true
72+
}
73+
74+
isaa = (int)PyInt_AsLong(antialiased);
75+
76+
//printf("Returning antialiased=%d\n", isaa);
77+
return isaa;
78+
}
79+
5480
agg::gen_stroke::line_cap_e
5581
_gc_get_linecap(PyObject *gc) {
5682

@@ -294,13 +320,16 @@ newRendererAggObject(PyObject *args)
294320

295321
self->rbuf = new agg::rendering_buffer;
296322
self->rbuf->attach(buffer, width, height, stride);
297-
self->sline = new scanline;
298-
323+
self->sline_p8 = new scanline_p8;
324+
self->sline_bin = new scanline_bin;
325+
326+
299327
self->pixf = new pixfmt(*self->rbuf);
300328
self->rbase = new renderer_base(*self->pixf);
301329
self->rbase->clear(agg::rgba(1, 1, 1));
302330

303331
self->ren = new renderer(*self->rbase);
332+
self->ren_bin = new renderer_bin(*self->rbase);
304333
self->ras = new rasterizer();
305334
self->buffer = buffer;
306335
self->dpi = dpi;
@@ -358,7 +387,7 @@ RendererAgg_draw_ellipse(RendererAggObject *renderer, PyObject* args) {
358387
}
359388
renderer->ren->color(*facecolor);
360389
renderer->ras->add_path(path);
361-
renderer->ras->render(*renderer->sline, *renderer->ren);
390+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
362391
delete facecolor;
363392
}
364393

@@ -374,7 +403,7 @@ RendererAgg_draw_ellipse(RendererAggObject *renderer, PyObject* args) {
374403
renderer->ren->color(*edgecolor);
375404
//self->ras->gamma(agg::gamma_power(gamma));
376405
renderer->ras->add_path(stroke);
377-
renderer->ras->render(*renderer->sline, *renderer->ren);
406+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
378407
delete edgecolor;
379408
Py_INCREF(Py_None);
380409
return Py_None;
@@ -453,7 +482,7 @@ RendererAgg_draw_polygon(RendererAggObject *renderer, PyObject* args) {
453482
}
454483
renderer->ren->color(*facecolor);
455484
renderer->ras->add_path(path);
456-
renderer->ras->render(*renderer->sline, *renderer->ren);
485+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
457486
delete facecolor;
458487
}
459488

@@ -464,7 +493,7 @@ RendererAgg_draw_polygon(RendererAggObject *renderer, PyObject* args) {
464493
renderer->ren->color(*edgecolor);
465494
//self->ras->gamma(agg::gamma_power(gamma));
466495
renderer->ras->add_path(stroke);
467-
renderer->ras->render(*renderer->sline, *renderer->ren);
496+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
468497
delete edgecolor;
469498
Py_INCREF(Py_None);
470499
return Py_None;
@@ -505,7 +534,7 @@ RendererAgg_draw_rectangle(RendererAggObject *renderer, PyObject* args) {
505534
}
506535
renderer->ren->color(*facecolor);
507536
renderer->ras->add_path(path);
508-
renderer->ras->render(*renderer->sline, *renderer->ren);
537+
684D renderer->ras->render(*renderer->sline_p8, *renderer->ren);
509538
delete facecolor;
510539
}
511540

@@ -515,7 +544,7 @@ RendererAgg_draw_rectangle(RendererAggObject *renderer, PyObject* args) {
515544
renderer->ren->color(*edgecolor);
516545
//self->ras->gamma(agg::gamma_power(gamma));
517546
renderer->ras->add_path(stroke);
518-
renderer->ras->render(*renderer->sline, *renderer->ren);
547+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
519548
delete edgecolor;
520549
Py_INCREF(Py_None);
521550
return Py_None;
@@ -528,8 +557,7 @@ RendererAgg_draw_lines(RendererAggObject *renderer, PyObject* args) {
528557

529558
PyObject *gc;
530559
PyObject *x, *y;
531-
532-
560+
533561
if (!PyArg_ParseTuple(args, "OOO", &gc, &x, &y))
534562
return NULL;
535563

@@ -601,21 +629,20 @@ RendererAgg_draw_lines(RendererAggObject *renderer, PyObject* args) {
601629

602630
double thisX, thisY;
603631
unsigned winHeight = renderer->rbase->height();
604-
thisX = _seqitem_as_double(x, 0);
605-
thisY = winHeight - _seqitem_as_double(y, 0);
632+
thisX = (int)(_seqitem_as_double(x, 0))+0.5;
633+
thisY = (int)(winHeight - _seqitem_as_double(y, 0))+0.5;
606634
path.move_to(thisX, thisY);
607635
for (int i=1; i<Nx; ++i) {
608-
thisX = _seqitem_as_double(x, i);
609-
thisY = winHeight - _seqitem_as_double(y, i);
636+
thisX = (int)(_seqitem_as_double(x, i))+0.5;
637+
thisY = (int)(winHeight - _seqitem_as_double(y, i)) + 0.5;
610638
path.line_to(thisX, thisY);
611639
}
612640

613-
renderer->ren->color(*color);
641+
614642

615643

616644
if (! useDashes ) {
617645
agg::conv_stroke<agg::path_storage> stroke(path);
618-
stroke.width(1.0);
619646
stroke.line_cap(cap);
620647
stroke.line_join(join);
621648
stroke.width(lw);
@@ -648,18 +675,29 @@ RendererAgg_draw_lines(RendererAggObject *renderer, PyObject* args) {
648675
off = _points_to_pixels(renderer, _seqitem_as_double(dashSeq, 2*i+1));
649676
dash.add_dash(on, off);
650677
}
651-
stroke.width(1.0);
652678
stroke.line_cap(cap);
653679
stroke.line_join(join);
654680
stroke.width(lw);
655681
renderer->ras->add_path(stroke);
656682
Py_XDECREF(dashSeq);
657683
}
658-
659-
660684

685+
686+
if ( _gc_antialiased(gc) ) {
687+
//if ( 0 ) {
688+
renderer->ren->color(*color);
689+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
690+
}
691+
else {
692+
renderer->ren_bin->color(*color);
693+
renderer->ras->render(*renderer->sline_bin, *renderer->ren_bin);
694+
}
661695

662-
renderer->ras->render(*renderer->sline, *renderer->ren);
696+
697+
/*
698+
renderer->ren->color(*color);
699+
renderer->ras->render(*renderer->sline_p8, *renderer->ren);
700+
*/
663701
delete color;
664702

665703
Py_INCREF(Py_None);
@@ -722,16 +760,27 @@ RendererAgg_draw_text(RendererAggObject *renderer, PyObject* args) {
722760
//printf("%u %u %u %u %d %d\n", iwidth, iheight, font->image.width, font->image.height, x, y);
723761
pixfmt::color_type p;
724762
p.r = int(255*r); p.b = int(255*b); p.g = int(255*g); p.a = int(255*a);
725-
763+
726764
for (size_t i=0; i<font->image.width; ++i) {
727765
for (size_t j=0; j<font->image.height; ++j) {
728-
if (i+x>=iwidth) continue;
766+
if (i+x>=iwidth) continue;
729767
if (j+y>=iheight) continue;
768+
730769
renderer->pixf->blend_pixel(i+x, j+y, p,
731770
font->image.buffer[i + j*font->image.width]);
732-
}
771+
}
733772
}
773+
/* // display the chars to screen for debugging
774+
printf("\n\n%s\n", font->text);
775+
for ( size_t i = 0; i < font->image.height; i++ ) {
776+
printf("%u ", i);
777+
for ( size_t j = 0; j < font->image.width; j++ ) {
778+
printf("%3u ", font->image.buffer[j + i*font->image.width]);
734779
780+
}
781+
printf("\n");
782+
}
783+
*/
735784
Py_INCREF(Py_None);
736785
return Py_None;
737786

src/_backend_agg.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
*
33
* $Header$
44
* $Log$
5+
* Revision 1.3 2004/03/02 20:47:52 jdh2358
6+
* update htdocs - lots of small fixes
7+
*
58
* Revision 1.2 2004/02/23 16:20:57 jdh2358
69
* resynced cvs to freetype2
710
*
@@ -34,6 +37,7 @@
3437
#include "agg_pixfmt_rgba32.h"
3538
#include "agg_rasterizer_outline.h"
3639
#include "agg_rasterizer_scanline_aa.h"
40+
#include "agg_scanline_bin.h"
3741
#include "agg_renderer_outline_aa.h"
3842
#include "agg_renderer_raster_text.h"
3943
#include "agg_renderer_scanline.h"
@@ -65,9 +69,10 @@ typedef agg::pixel_formats_rgba32<agg::order_rgba32> pixfmt;
6569
//typedef agg::pixel_formats_rgb24<agg::order_bgr24> pixfmt;
6670
typedef agg::renderer_base<pixfmt> renderer_base;
6771
typedef agg::renderer_scanline_p_solid<renderer_base> renderer;
72+
typedef agg::renderer_scanline_bin_solid<renderer_base> renderer_bin;
6873
typedef agg::rasterizer_scanline_aa<> rasterizer;
69-
typedef agg::scanline_p8 scanline;
70-
74+
typedef agg::scanline_p8 scanline_p8;
75+
typedef agg::scanline_bin scanline_bin;
7176

7277

7378

@@ -86,9 +91,11 @@ typedef struct {
8691
pixfmt *pixf;
8792
renderer_base *rbase;
8893
renderer *ren;
94+
renderer_bin *ren_bin;
8995
rasterizer *ras;
9096
agg::int8u *buffer;
91-
scanline *sline;
97+
scanline_p8 *sline_p8;
98+
scanline_bin *sline_bin;
9299
size_t NUMBYTES; //the number of bytes in buffer
93100
double dpi;
94101
} RendererAggObject;

0 commit comments

Comments
 (0)
0