mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 12:02:04 +00:00
Add units-from-em conversion
An em is a unit of measurement in typography, equal to the point size of the current font. It should be possible to convert a value expressed in em to ClutterUnits by using the current font and the current DPI as stored by the default backend.
This commit is contained in:
parent
93a0454c09
commit
ee883f30d4
@ -153,6 +153,56 @@ clutter_units_pt (gdouble pt)
|
|||||||
return pt * dpi / 72.0;
|
return pt * dpi / 72.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_units_em:
|
||||||
|
* @em: em to convert
|
||||||
|
*
|
||||||
|
* Converts a value in em to #ClutterUnit<!-- -->s at the
|
||||||
|
* current DPI.
|
||||||
|
*
|
||||||
|
* Return value: the value in units
|
||||||
|
*
|
||||||
|
* Since: 1.0
|
||||||
|
*/
|
||||||
|
ClutterUnit
|
||||||
|
clutter_units_em (gdouble em)
|
||||||
|
{
|
||||||
|
ClutterBackend *backend;
|
||||||
|
const gchar *font_name;
|
||||||
|
gdouble dpi;
|
||||||
|
ClutterUnit retval = 0;
|
||||||
|
|
||||||
|
backend = clutter_get_default_backend ();
|
||||||
|
|
||||||
|
dpi = clutter_backend_get_resolution (backend);
|
||||||
|
font_name = clutter_backend_get_font_name (backend);
|
||||||
|
if (G_LIKELY ((font_name && *font_name != '\0')))
|
||||||
|
{
|
||||||
|
PangoFontDescription *font_desc;
|
||||||
|
gdouble font_size = 0;
|
||||||
|
|
||||||
|
font_desc = pango_font_description_from_string (font_name);
|
||||||
|
if (G_LIKELY (font_desc != NULL))
|
||||||
|
{
|
||||||
|
gint pango_size;
|
||||||
|
gboolean is_absolute;
|
||||||
|
|
||||||
|
pango_size = pango_font_description_get_size (font_desc);
|
||||||
|
is_absolute =
|
||||||
|
pango_font_description_get_size_is_absolute (font_desc);
|
||||||
|
if (!is_absolute)
|
||||||
|
font_size = ((gdouble) font_size) / PANGO_SCALE;
|
||||||
|
|
||||||
|
pango_font_description_free (font_desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 10 points at 96 DPI is 12 pixels */
|
||||||
|
retval = 1.2 * font_size * dpi / 96.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
static GTypeInfo _info = {
|
static GTypeInfo _info = {
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -131,8 +131,19 @@ typedef float ClutterUnit;
|
|||||||
*/
|
*/
|
||||||
#define CLUTTER_UNITS_FROM_POINTS(x) (clutter_units_pt (x))
|
#define CLUTTER_UNITS_FROM_POINTS(x) (clutter_units_pt (x))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CLUTTER_UNITS_FROM_EM:
|
||||||
|
* @x: a value in em
|
||||||
|
*
|
||||||
|
* Converts a value in em into #ClutterUnit<!-- -->s
|
||||||
|
*
|
||||||
|
* Since: 1.0
|
||||||
|
*/
|
||||||
|
#define CLUTTER_UNITS_FROM_EM(x) (clutter_units_em (x))
|
||||||
|
|
||||||
ClutterUnit clutter_units_mm (gdouble mm);
|
ClutterUnit clutter_units_mm (gdouble mm);
|
||||||
ClutterUnit clutter_units_pt (gdouble pt);
|
ClutterUnit clutter_units_pt (gdouble pt);
|
||||||
|
ClutterUnit clutter_units_em (gdouble em);
|
||||||
|
|
||||||
#define CLUTTER_TYPE_UNIT (clutter_unit_get_type ())
|
#define CLUTTER_TYPE_UNIT (clutter_unit_get_type ())
|
||||||
#define CLUTTER_TYPE_PARAM_UNIT (clutter_param_unit_get_type ())
|
#define CLUTTER_TYPE_PARAM_UNIT (clutter_param_unit_get_type ())
|
||||||
|
@ -33,6 +33,8 @@ CLUTTER_UNITS_FROM_FLOAT
|
|||||||
CLUTTER_UNITS_TO_FLOAT
|
CLUTTER_UNITS_TO_FLOAT
|
||||||
CLUTTER_UNITS_FROM_INT
|
CLUTTER_UNITS_FROM_INT
|
||||||
CLUTTER_UNITS_TO_INT
|
CLUTTER_UNITS_TO_INT
|
||||||
|
|
||||||
|
<SUBSECTION>
|
||||||
CLUTTER_UNITS_FROM_DEVICE
|
CLUTTER_UNITS_FROM_DEVICE
|
||||||
CLUTTER_UNITS_TO_DEVICE
|
CLUTTER_UNITS_TO_DEVICE
|
||||||
CLUTTER_UNITS_FROM_FIXED
|
CLUTTER_UNITS_FROM_FIXED
|
||||||
@ -41,8 +43,10 @@ CLUTTER_UNITS_FROM_PANGO_UNIT
|
|||||||
CLUTTER_UNITS_TO_PANGO_UNIT
|
CLUTTER_UNITS_TO_PANGO_UNIT
|
||||||
CLUTTER_UNITS_FROM_MM
|
CLUTTER_UNITS_FROM_MM
|
||||||
CLUTTER_UNITS_FROM_POINTS
|
CLUTTER_UNITS_FROM_POINTS
|
||||||
|
CLUTTER_UNITS_FROM_EM
|
||||||
clutter_units_mm
|
clutter_units_mm
|
||||||
clutter_units_pt
|
clutter_units_pt
|
||||||
|
clutter_units_em
|
||||||
|
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
CLUTTER_MAXUNIT
|
CLUTTER_MAXUNIT
|
||||||
|
Loading…
Reference in New Issue
Block a user