commit a208917e7a935c019095acd1acd8165f08a54b7a from: Rob Pike via: Russ Cox date: Tue Aug 24 14:16:32 2010 UTC acme: fix rounding in rows computation R=rsc CC=codebot http://codereview.appspot.com/2007045 commit - a06877afa9b778570f599e0e8fa83347426fa0b9 commit + a208917e7a935c019095acd1acd8165f08a54b7a blob - 21efdc2df7658b7db01d01f3452c964a5ad0722c blob + 544ba99d9f7c103bbff078ad76497eb2323ba494 --- CONTRIBUTORS +++ CONTRIBUTORS @@ -21,8 +21,9 @@ Mathieu Lonjaret Michael Teichgräber Michael Teichgräber Nikolai Saoukh +Rob Pike Russ Cox Tim Newsham Tony Lainson Venkatesh Srinivas -grai + blob - 36e244b4d1b90cceab99bbeb5e7df330f37bf5eb blob + c57a41b020bc45d34b115dbd33b27b514da1b00e --- src/cmd/acme/rows.c +++ src/cmd/acme/rows.c @@ -102,12 +102,14 @@ rowadd(Row *row, Column *c, int x) void rowresize(Row *row, Rectangle r) { - int i, dx, odx; - Rectangle r1, r2; + int i, dx, odx, deltax; + Rectangle or, r1, r2; Column *c; dx = Dx(r); odx = Dx(row->r); + or = row->r; + deltax = r.min.x - or.min.x; row->r = r; r1 = r; r1.max.y = r1.min.y + font->height; @@ -121,10 +123,11 @@ rowresize(Row *row, Rectangle r) for(i=0; incol; i++){ c = row->col[i]; r1.min.x = r1.max.x; + /* the test should not be necessary, but guarantee we don't lose a pixel */ if(i == row->ncol-1) r1.max.x = r.max.x; else - r1.max.x = r1.min.x+Dx(c->r)*dx/odx; + r1.max.x = (c->r.max.x-or.min.x)*Dx(r)/Dx(or) + deltax; if(i > 0){ r2 = r1; r2.max.x = r2.min.x+Border;