2007-08-02 Emmanuele Bassi <ebassi@openedhand.com>

* clutter/eglnative/clutter-backend-egl.c:
	* clutter/eglx/clutter-backend-egl.c:
	* clutter/sdl/clutter-backend-sdl.c: Set the default resolution
	as 96.0 dpi for every backend (we already were under this
	assumption anyway, and this makes it easier to change this
	setting per-backend).

	* clutter/pango/pangoclutter-fontmap.c:
	* clutter/pango/pangoclutter.h: Allow setting the resolution
	for the PangoClutterFontMap object and provide the implementation
	for the PangoFcFontMap::get_resolution() virtual function. This
	allows to set the resolution of the PangoContext when retrieving
	it.

	* clutter/clutter-label.c (clutter_label_init): Set the
	resolution of the font map with the one the backend gives us.

	* clutter/clutter-entry.c (clutter_entry_init): Ditto.
This commit is contained in:
Emmanuele Bassi 2007-08-02 09:58:18 +00:00
parent 19e8b7aed4
commit 4ccfc2daa2
8 changed files with 65 additions and 4 deletions

View File

@ -1,3 +1,24 @@
2007-08-02 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglx/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c: Set the default resolution
as 96.0 dpi for every backend (we already were under this
assumption anyway, and this makes it easier to change this
setting per-backend).
* clutter/pango/pangoclutter-fontmap.c:
* clutter/pango/pangoclutter.h: Allow setting the resolution
for the PangoClutterFontMap object and provide the implementation
for the PangoFcFontMap::get_resolution() virtual function. This
allows to set the resolution of the PangoContext when retrieving
it.
* clutter/clutter-label.c (clutter_label_init): Set the
resolution of the font map with the one the backend gives us.
* clutter/clutter-entry.c (clutter_entry_init): Ditto.
2007-08-02 Emmanuele Bassi <ebassi@openedhand.com> 2007-08-02 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-color.c (clutter_color_subtract): Invert the * clutter/clutter-color.c (clutter_color_subtract): Invert the

View File

@ -727,8 +727,7 @@ clutter_entry_init (ClutterEntry *self)
if (G_UNLIKELY (_context == NULL)) if (G_UNLIKELY (_context == NULL))
{ {
_font_map = PANGO_CLUTTER_FONT_MAP (pango_clutter_font_map_new ()); _font_map = PANGO_CLUTTER_FONT_MAP (pango_clutter_font_map_new ());
pango_clutter_font_map_set_resolution (_font_map, resolution);
/* pango_clutter_font_map_set_resolution (font_map, 96.0, 96.0); */
_context = pango_clutter_font_map_create_context (_font_map); _context = pango_clutter_font_map_create_context (_font_map);
} }

View File

@ -482,10 +482,18 @@ clutter_label_init (ClutterLabel *self)
self->priv = priv = CLUTTER_LABEL_GET_PRIVATE (self); self->priv = priv = CLUTTER_LABEL_GET_PRIVATE (self);
if (_context == NULL) if (G_UNLIKELY (_context == NULL))
{ {
ClutterBackend *backend;
gdouble resolution;
backend = clutter_get_default_backend ();
resolution = clutter_backend_get_resolution (backend);
if (resolution < 0)
resolution = 96.0;
_font_map = PANGO_CLUTTER_FONT_MAP (pango_clutter_font_map_new ()); _font_map = PANGO_CLUTTER_FONT_MAP (pango_clutter_font_map_new ());
/* pango_clutter_font_map_set_resolution (font_map, 96.0, 96.0); */ pango_clutter_font_map_set_resolution (_font_map, resolution);
_context = pango_clutter_font_map_create_context (_font_map); _context = pango_clutter_font_map_create_context (_font_map);
} }

View File

@ -191,6 +191,7 @@ clutter_backend_egl_init (ClutterBackendEGL *backend_egl)
{ {
ClutterBackend *backend = CLUTTER_BACKEND (backend_egl); ClutterBackend *backend = CLUTTER_BACKEND (backend_egl);
clutter_backend_set_resolution (backend, 96.0);
clutter_backend_set_double_click_time (backend, 250); clutter_backend_set_double_click_time (backend, 250);
clutter_backend_set_double_click_distance (backend, 5); clutter_backend_set_double_click_distance (backend, 5);
} }

View File

@ -60,6 +60,7 @@ clutter_backend_egl_post_parse (ClutterBackend *backend,
if (backend_egl->xdpy) if (backend_egl->xdpy)
{ {
EGLBoolean status; EGLBoolean status;
double dpi;
CLUTTER_NOTE (MISC, "Getting the X screen"); CLUTTER_NOTE (MISC, "Getting the X screen");
@ -77,6 +78,10 @@ clutter_backend_egl_post_parse (ClutterBackend *backend,
backend_egl->edpy = eglGetDisplay(backend_egl->xdpy); backend_egl->edpy = eglGetDisplay(backend_egl->xdpy);
dpi = (((double) DisplayHeight (backend_egl->xdpy, backend_egl->xscreen_num) * 25.4)
/ (double) DisplayHeightMM (backend_egl->xdpy, backend_egl->xscreen_num));
clutter_backend_set_resolution (backend, dpi);
status = eglInitialize(backend_egl->edpy, status = eglInitialize(backend_egl->edpy,
&backend_egl->egl_version_major, &backend_egl->egl_version_major,
&backend_egl->egl_version_minor); &backend_egl->egl_version_minor);
@ -294,6 +299,7 @@ clutter_backend_egl_init (ClutterBackendEGL *backend_egl)
ClutterBackend *backend = CLUTTER_BACKEND (backend_egl); ClutterBackend *backend = CLUTTER_BACKEND (backend_egl);
/* FIXME: get from xsettings */ /* FIXME: get from xsettings */
clutter_backend_set_resolution (backend, 96.0);
clutter_backend_set_double_click_time (backend, 250); clutter_backend_set_double_click_time (backend, 250);
clutter_backend_set_double_click_distance (backend, 5); clutter_backend_set_double_click_distance (backend, 5);
} }

View File

@ -39,6 +39,8 @@ struct _PangoClutterFontMap
FT_Library library; FT_Library library;
double dpi;
/* Function to call on prepared patterns to do final /* Function to call on prepared patterns to do final
* config tweaking. * config tweaking.
*/ */
@ -150,6 +152,16 @@ _pango_clutter_font_map_get_library (PangoFontMap *fontmap_)
return fontmap->library; return fontmap->library;
} }
void
pango_clutter_font_map_set_resolution (PangoClutterFontMap *fontmap,
double dpi)
{
g_return_if_fail (PANGO_CLUTTER_IS_FONT_MAP (fontmap));
fontmap->dpi = dpi;
pango_clutter_font_map_substitute_changed (fontmap);
}
/** /**
* _pango_clutter_font_map_get_renderer: * _pango_clutter_font_map_get_renderer:
@ -194,6 +206,13 @@ pango_clutter_font_map_new_font (PangoFcFontMap *fcfontmap,
return (PangoFcFont *)_pango_clutter_font_new (PANGO_CLUTTER_FONT_MAP (fcfontmap), pattern); return (PangoFcFont *)_pango_clutter_font_new (PANGO_CLUTTER_FONT_MAP (fcfontmap), pattern);
} }
static double
pango_clutter_font_map_get_resolution (PangoFcFontMap *fcfontmap,
PangoContext *context)
{
return ((PangoClutterFontMap *)fcfontmap)->dpi;
}
static void static void
pango_clutter_font_map_class_init (PangoClutterFontMapClass *class) pango_clutter_font_map_class_init (PangoClutterFontMapClass *class)
{ {
@ -203,11 +222,13 @@ pango_clutter_font_map_class_init (PangoClutterFontMapClass *class)
gobject_class->finalize = pango_clutter_font_map_finalize; gobject_class->finalize = pango_clutter_font_map_finalize;
fcfontmap_class->default_substitute = pango_clutter_font_map_default_substitute; fcfontmap_class->default_substitute = pango_clutter_font_map_default_substitute;
fcfontmap_class->new_font = pango_clutter_font_map_new_font; fcfontmap_class->new_font = pango_clutter_font_map_new_font;
fcfontmap_class->get_resolution = pango_clutter_font_map_get_resolution;
} }
static void static void
pango_clutter_font_map_init (PangoClutterFontMap *fontmap) pango_clutter_font_map_init (PangoClutterFontMap *fontmap)
{ {
fontmap->library = NULL; fontmap->library = NULL;
fontmap->dpi = 96.0;
} }

View File

@ -61,6 +61,10 @@ pango_clutter_font_map_set_default_substitute
gpointer data, gpointer data,
GDestroyNotify notify); GDestroyNotify notify);
void
pango_clutter_font_map_set_resolution (PangoClutterFontMap *fontmap,
double dpi);
void void
pango_clutter_font_map_substitute_changed (PangoClutterFontMap *fontmap); pango_clutter_font_map_substitute_changed (PangoClutterFontMap *fontmap);

View File

@ -208,6 +208,7 @@ clutter_backend_sdl_init (ClutterBackendSDL *backend_sdl)
{ {
ClutterBackend *backend = CLUTTER_BACKEND (backend_sdl); ClutterBackend *backend = CLUTTER_BACKEND (backend_sdl);
clutter_backend_set_resolution (backend, 96.0);
clutter_backend_set_double_click_time (backend, 250); clutter_backend_set_double_click_time (backend, 250);
clutter_backend_set_double_click_distance (backend, 5); clutter_backend_set_double_click_distance (backend, 5);
} }