1*7dd7cddfSDavid du Colombier #include "../lib9.h" 2*7dd7cddfSDavid du Colombier 3*7dd7cddfSDavid du Colombier #include "../libdraw/draw.h" 4*7dd7cddfSDavid du Colombier 5*7dd7cddfSDavid du Colombier static 6*7dd7cddfSDavid du Colombier int 7*7dd7cddfSDavid du Colombier unitsperline(Rectangle r, int d, int bitsperunit) 8*7dd7cddfSDavid du Colombier { 9*7dd7cddfSDavid du Colombier ulong l, t; 10*7dd7cddfSDavid du Colombier 11*7dd7cddfSDavid du Colombier if(r.min.x >= 0){ 12*7dd7cddfSDavid du Colombier l = (r.max.x*d+bitsperunit-1)/bitsperunit; 13*7dd7cddfSDavid du Colombier l -= (r.min.x*d)/bitsperunit; 14*7dd7cddfSDavid du Colombier }else{ /* make positive before divide */ 15*7dd7cddfSDavid du Colombier t = (-r.min.x*d+bitsperunit-1)/bitsperunit; 16*7dd7cddfSDavid du Colombier l = t+(r.max.x*d+bitsperunit-1)/bitsperunit; 17*7dd7cddfSDavid du Colombier } 18*7dd7cddfSDavid du Colombier return l; 19*7dd7cddfSDavid du Colombier } 20*7dd7cddfSDavid du Colombier 21*7dd7cddfSDavid du Colombier int 22*7dd7cddfSDavid du Colombier wordsperline(Rectangle r, int d) 23*7dd7cddfSDavid du Colombier { 24*7dd7cddfSDavid du Colombier return unitsperline(r, d, 8*sizeof(ulong)); 25*7dd7cddfSDavid du Colombier } 26*7dd7cddfSDavid du Colombier 27*7dd7cddfSDavid du Colombier int 28*7dd7cddfSDavid du Colombier bytesperline(Rectangle r, int d) 29*7dd7cddfSDavid du Colombier { 30*7dd7cddfSDavid du Colombier return unitsperline(r, d, 8); 31*7dd7cddfSDavid du Colombier } 32