summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-04-22 16:48:29 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-04-22 16:48:29 +0000
commit1bc9a86109da9c5b675e24af566febf6be72e71c (patch)
treed05810928fe643f5d530bc27d307c2ea61ab20ba /amiga
parent83914b9c3e87e3db536ee494ce0032cdb5e5d781 (diff)
downloadnetsurf-1bc9a86109da9c5b675e24af566febf6be72e71c.tar.gz
netsurf-1bc9a86109da9c5b675e24af566febf6be72e71c.tar.bz2
Aspect-corrected font DPI. Needs testing on a mode with non-square pixels and on a
widescreen monitor. svn path=/trunk/netsurf/; revision=12230
Diffstat (limited to 'amiga')
-rw-r--r--amiga/font.c55
1 files changed, 40 insertions, 15 deletions
diff --git a/amiga/font.c b/amiga/font.c
index d40726440..86429ee4b 100644
--- a/amiga/font.c
+++ b/amiga/font.c
@@ -17,26 +17,31 @@
*/
#include <assert.h>
-#include "css/css.h"
-#include "render/font.h"
-#include "amiga/gui.h"
-#include <proto/graphics.h>
-#include <proto/diskfont.h>
-#include <graphics/rpattr.h>
+
#include "amiga/font.h"
-#include "desktop/options.h"
+#include "amiga/gui.h"
#include "amiga/utf8.h"
+#include "amiga/options.h"
+#include "css/css.h"
+#include "css/utils.h"
+#include "render/font.h"
+#include "utils/log.h"
#include "utils/utf8.h"
+#include "utils/utils.h"
+
+#include <proto/diskfont.h>
+#include <proto/exec.h>
+#include <proto/graphics.h>
+#include <proto/Picasso96API.h>
+#include <proto/utility.h>
+
#include <diskfont/diskfonttag.h>
#include <diskfont/oterrors.h>
-#include <proto/Picasso96API.h>
-#include <proto/exec.h>
+#include <graphics/rpattr.h>
+
#ifdef __amigaos4__
#include <graphics/blitattr.h>
#endif
-#include "amiga/options.h"
-#include <proto/utility.h>
-#include "utils/utils.h"
#define NSA_UNICODE_FONT PLOT_FONT_FAMILY_COUNT
@@ -613,9 +618,29 @@ void ami_close_fonts(void)
}
}
-ULONG ami_font_setdevicedpi(int dpi)
+void ami_font_setdevicedpi(int id)
{
- ami_devicedpi = (dpi<<16) | dpi;
+ DisplayInfoHandle dih;
+ struct DisplayInfo dinfo;
+ Point dinfo_res;
+ ULONG ydpi = FIXTOINT(nscss_screen_dpi);
+ ULONG xdpi = ydpi;
+
+ if(id)
+ {
+ if(dih = FindDisplayInfo(id))
+ {
+ if(GetDisplayInfoData(dih, &dinfo, sizeof(struct DisplayInfo),
+ DTAG_DISP, 0))
+ {
+ dinfo_res = dinfo.Resolution;
+ xdpi = (dinfo_res.y / dinfo_res.x) * ydpi;
+
+ LOG(("XDPI = %ld, YDPI = %ld (DisplayInfo resolution %ld x %ld)",
+ xdpi, ydpi, dinfo_res.x , dinfo_res.y));
+ }
+ }
+ }
- return ami_devicedpi;
+ ami_devicedpi = (xdpi << 16) | ydpi;
}