[gtk+/resolution-independence: 1/24] make resolution and font options per monitor
- From: Davyd Madeley <davyd src gnome org>
- To: svn-commits-list gnome org
- Subject: [gtk+/resolution-independence: 1/24] make resolution and font options per monitor
- Date: Sat, 2 May 2009 02:17:06 -0400 (EDT)
commit c43a02ba554d2969529e2e9274206c7520cdf075
Author: David Zeuthen <davidz redhat com>
Date: Tue Aug 12 15:39:10 2008 -0400
make resolution and font options per monitor
For now, only add API and ignore the monitor number. An actual
implementation will depend on defining new X Settings.
---
docs/reference/gdk/gdk-sections.txt | 5 ++
gdk/gdk.symbols | 5 ++
gdk/gdkpango.c | 36 +++++++++++++++
gdk/gdkpango.h | 3 +
gdk/gdkscreen.c | 83 +++++++++++++++++++++++++++++++++++
gdk/gdkscreen.h | 13 +++++
6 files changed, 145 insertions(+), 0 deletions(-)
diff --git a/docs/reference/gdk/gdk-sections.txt b/docs/reference/gdk/gdk-sections.txt
index ce37ae1..aa20eb1 100644
--- a/docs/reference/gdk/gdk-sections.txt
+++ b/docs/reference/gdk/gdk-sections.txt
@@ -225,8 +225,12 @@ gdk_screen_broadcast_client_message
gdk_screen_get_setting
gdk_screen_get_font_options
gdk_screen_set_font_options
+gdk_screen_get_font_options_for_monitor
+gdk_screen_set_font_options_for_monitor
gdk_screen_get_resolution
gdk_screen_set_resolution
+gdk_screen_get_resolution_for_monitor
+gdk_screen_set_resolution_for_monitor
gdk_screen_get_active_window
gdk_screen_get_window_stack
<SUBSECTION Spawning>
@@ -874,6 +878,7 @@ gdk_pango_renderer_set_stipple
gdk_pango_renderer_set_override_color
gdk_pango_context_get
gdk_pango_context_get_for_screen
+gdk_pango_context_get_for_screen_for_monitor
gdk_pango_context_set_colormap
GdkPangoAttrEmbossed
GdkPangoAttrEmbossColor
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index cfb54c2..9dd91b7 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -889,6 +889,7 @@ gdk_pango_attr_embossed_new
gdk_pango_attr_stipple_new
gdk_pango_context_get
gdk_pango_context_get_for_screen
+gdk_pango_context_get_for_screen_for_monitor
#ifndef GDK_DISABLE_DEPRECATED
gdk_pango_context_set_colormap
#endif
@@ -1008,8 +1009,12 @@ gdk_screen_get_monitor_at_point
gdk_screen_get_monitor_at_window
gdk_screen_set_font_options
gdk_screen_get_font_options
+gdk_screen_set_font_options_for_monitor
+gdk_screen_get_font_options_for_monitor
gdk_screen_set_resolution
gdk_screen_get_resolution
+gdk_screen_get_resolution_for_monitor
+gdk_screen_set_resolution_for_monitor
#endif
#endif
diff --git a/gdk/gdkpango.c b/gdk/gdkpango.c
index a386403..27c09be 100644
--- a/gdk/gdkpango.c
+++ b/gdk/gdkpango.c
@@ -1496,5 +1496,41 @@ gdk_pango_context_get_for_screen (GdkScreen *screen)
return context;
}
+/**
+ * gdk_pango_context_get_for_screen_for_monitor:
+ * @screen: the #GdkScreen for which the context is to be created.
+ * @monitor_num: monitor number or -1 to use default monitor
+ *
+ * Like gdk_pango_context_get_for_screen() but also takes a monitor
+ * number.
+ *
+ * Return value: a new #PangoContext for @screen
+ *
+ * Since: 2.14
+ **/
+PangoContext *
+gdk_pango_context_get_for_screen_for_monitor (GdkScreen *screen,
+ gint monitor_num)
+{
+ PangoFontMap *fontmap;
+ PangoContext *context;
+ const cairo_font_options_t *options;
+ double dpi;
+
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ fontmap = pango_cairo_font_map_get_default ();
+
+ context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
+
+ options = gdk_screen_get_font_options_for_monitor (screen, monitor_num);
+ pango_cairo_context_set_font_options (context, options);
+
+ dpi = gdk_screen_get_resolution_for_monitor (screen, monitor_num);
+ pango_cairo_context_set_resolution (context, dpi);
+
+ return context;
+}
+
#define __GDK_PANGO_C__
#include "gdkaliasdef.c"
diff --git a/gdk/gdkpango.h b/gdk/gdkpango.h
index 39df0ef..d2e0af9 100644
--- a/gdk/gdkpango.h
+++ b/gdk/gdkpango.h
@@ -104,6 +104,9 @@ void gdk_pango_renderer_set_override_color (GdkPangoRenderer *gdk_renderer,
/************************************************************************/
+PangoContext *gdk_pango_context_get_for_screen_for_monitor (GdkScreen *screen,
+ gint monitor_num);
+
PangoContext *gdk_pango_context_get_for_screen (GdkScreen *screen);
#ifndef GDK_MULTIHEAD_SAFE
PangoContext *gdk_pango_context_get (void);
diff --git a/gdk/gdkscreen.c b/gdk/gdkscreen.c
index 17c09f9..1df89bb 100644
--- a/gdk/gdkscreen.c
+++ b/gdk/gdkscreen.c
@@ -429,6 +429,25 @@ gdk_screen_set_font_options (GdkScreen *screen,
}
/**
+ * gdk_screen_set_font_options_for_monitor:
+ * @screen: a #GdkScreen
+ * @options: a #cairo_font_options_t, or %NULL to unset any
+ * previously set default font options.
+ *
+ * Like gdk_screen_set_font_options() but per monitor.
+ *
+ * Since: 2.14
+ **/
+void
+gdk_screen_set_font_options_for_monitor (GdkScreen *screen,
+ gint monitor_num,
+ const cairo_font_options_t *options)
+{
+ /* TODO: need to implement per-monitor font options */
+ return gdk_screen_set_font_options (screen, options);
+}
+
+/**
* gdk_screen_get_font_options:
* @screen: a #GdkScreen
*
@@ -448,6 +467,26 @@ gdk_screen_get_font_options (GdkScreen *screen)
}
/**
+ * gdk_screen_get_font_options_for_monitor:
+ * @screen: a #GdkScreen
+ * @monitor_num: monitor number or -1 for default monitor
+ *
+ * Like gdk_screen_get_font_options() but per monitor.
+ *
+ * Return value: the current font options, or %NULL if no default
+ * font options have been set.
+ *
+ * Since: 2.14
+ **/
+const cairo_font_options_t *
+gdk_screen_get_font_options_for_monitor (GdkScreen *screen,
+ gint monitor_num)
+{
+ /* TODO: need to implement per-monitor font options */
+ return gdk_screen_get_font_options (screen);
+}
+
+/**
* gdk_screen_set_resolution:
* @screen: a #GdkScreen
* @dpi: the resolution in "dots per inch". (Physical inches aren't actually
@@ -497,6 +536,50 @@ gdk_screen_get_resolution (GdkScreen *screen)
return screen->resolution;
}
+/**
+ * gdk_screen_get_resolution_for_monitor:
+ * @screen: a #GdkScreen
+ * @monitor_num: monitor number or -1 for default monitor
+ *
+ * Like gdk_screen_get_resolution() but per monitor.
+ *
+ * Returns: the current resolution or -1 if no resolution has been
+ * set.
+ *
+ * Since: 2.14
+ **/
+gdouble
+gdk_screen_get_resolution_for_monitor (GdkScreen *screen,
+ gint monitor_num)
+{
+#if 0
+ /* Nifty trick to test RI - monitor 0 will have 3 times the user configured DPI */
+ return (monitor_num == 0 ? 3.0 : 1.0) * gdk_screen_get_resolution (screen);
+#endif
+ /* TODO: need to implement per-monitor resolution */
+ return gdk_screen_get_resolution (screen);
+}
+
+/**
+ * gdk_screen_set_resolution_for_monitor:
+ * @screen: a #GdkScreen
+ * @monitor_num: monitor number
+ * @dpi: the resolution in "dots per inch". (Physical inches aren't actually
+ * involved; the terminology is conventional.)
+ *
+ * Like gdk_screen_set_resolution() but per monitor.
+ *
+ * Since: 2.14
+ **/
+void
+gdk_screen_set_resolution_for_monitor (GdkScreen *screen,
+ gint monitor_num,
+ gdouble dpi)
+{
+ /* TODO: need to implement per-monitor resolution */
+ gdk_screen_set_resolution (screen, dpi);
+}
+
static void
gdk_screen_get_property (GObject *object,
guint prop_id,
diff --git a/gdk/gdkscreen.h b/gdk/gdkscreen.h
index b1f3b8e..1a6fc32 100644
--- a/gdk/gdkscreen.h
+++ b/gdk/gdkscreen.h
@@ -118,10 +118,23 @@ void gdk_screen_set_font_options (GdkScreen
const cairo_font_options_t *options);
const cairo_font_options_t *gdk_screen_get_font_options (GdkScreen *screen);
+void gdk_screen_set_font_options_for_monitor (GdkScreen *screen,
+ gint monitor_num,
+ const cairo_font_options_t *options);
+const cairo_font_options_t *gdk_screen_get_font_options_for_monitor (GdkScreen *screen,
+ gint monitor_num);
+
void gdk_screen_set_resolution (GdkScreen *screen,
gdouble dpi);
gdouble gdk_screen_get_resolution (GdkScreen *screen);
+gdouble gdk_screen_get_resolution_for_monitor (GdkScreen *screen,
+ gint monitor_num);
+
+void gdk_screen_set_resolution_for_monitor (GdkScreen *screen,
+ gint monitor_num,
+ gdouble dpi);
+
GdkWindow *gdk_screen_get_active_window (GdkScreen *screen);
GList *gdk_screen_get_window_stack (GdkScreen *screen);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]