libdraw: add scalesize

R=rsc
http://codereview.appspot.com/6855092
This commit is contained in:
Russ Cox 2012-11-25 22:15:57 -05:00
parent 323e7d0193
commit 9f3851871e
3 changed files with 24 additions and 0 deletions

View file

@ -351,6 +351,7 @@ extern Image* namedimage(Display*, char*);
extern int nameimage(Image*, char*, int);
extern Image* allocimagemix(Display*, u32int, u32int);
extern int drawsetlabel(char*);
extern int scalesize(Display*, int);
/*
* Colors

View file

@ -62,6 +62,9 @@ int gengetwindow(Display *d, char *winname,
Image **ip, Screen **sp, int ref)
.PP
.B
int scalesize(Display *d, int n)
.PP
.B
void cursorswitch(Cursor *curs)
.PP
.B
@ -502,6 +505,19 @@ and
.B Screen
variables for the new window.
.PP
Historically, Plan 9 graphics programs have used fixed-size graphics features that assume a narrow range of display densities, around 100 dpi: pixels (or dots) per inch.
The new field
.B display->dpi
contains the display's actual density if known, or else
.B DefaultDPI
(100).
.I Scalesize
scales the fixed pixel count
.I n
by
.BR display->dpi / DefaultDPI ,
rounding appropriately.
.PP
The mouse cursor is always displayed.
The initial cursor is an arrow.
.I Cursorswitch

View file

@ -428,3 +428,10 @@ bufimage(Display *d, int n)
return p;
}
int
scalesize(Display *d, int n)
{
if(d == nil || d->dpi <= DefaultDPI)
return n;
return (n*d->dpi+DefaultDPI/2)/DefaultDPI;
}