mirror of
https://github.com/brl/mutter.git
synced 2025-01-22 17:38:56 +00:00
Remove the single-stage units converters
The stage-with/height-percentage converters had been broken by the multiple-stages support of Clutter 0.8. They are also made useless by the fact that Units are now floating point values. The millimeters and typographic points converters also depended on the default stage, but they can be reworked to use the default DPI coming from the default Backend instead.
This commit is contained in:
parent
0be613109e
commit
93a0454c09
@ -6524,6 +6524,8 @@ parse_units (ClutterActor *self,
|
||||
|
||||
if (end[0] == '%' && end[1] == '\0')
|
||||
{
|
||||
ClutterActor *stage;
|
||||
|
||||
if (CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IS_TOPLEVEL)
|
||||
{
|
||||
g_warning ("Unable to set percentage of %s on a top-level "
|
||||
@ -6536,12 +6538,20 @@ parse_units (ClutterActor *self,
|
||||
goto out;
|
||||
}
|
||||
|
||||
stage = clutter_actor_get_stage (self);
|
||||
if (stage == NULL)
|
||||
stage = clutter_stage_get_default ();
|
||||
|
||||
if (dimension == PARSE_X ||
|
||||
dimension == PARSE_WIDTH ||
|
||||
dimension == PARSE_ANCHOR_X)
|
||||
retval = CLUTTER_UNITS_FROM_STAGE_WIDTH_PERCENTAGE (val);
|
||||
{
|
||||
retval = clutter_actor_get_widthu (stage) * val;
|
||||
}
|
||||
else
|
||||
retval = CLUTTER_UNITS_FROM_STAGE_HEIGHT_PERCENTAGE (val);
|
||||
{
|
||||
retval = clutter_actor_get_heightu (stage) * val;
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
@ -6556,7 +6566,12 @@ parse_units (ClutterActor *self,
|
||||
}
|
||||
else if (G_VALUE_HOLDS (&value, G_TYPE_DOUBLE))
|
||||
{
|
||||
gint val;
|
||||
ClutterActor *stage;
|
||||
gdouble val;
|
||||
|
||||
stage = clutter_actor_get_stage (self);
|
||||
if (stage == NULL)
|
||||
stage = clutter_stage_get_default ();
|
||||
|
||||
if (CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IS_TOPLEVEL)
|
||||
{
|
||||
@ -6569,14 +6584,18 @@ parse_units (ClutterActor *self,
|
||||
goto out;
|
||||
}
|
||||
|
||||
val = CLAMP (g_value_get_double (&value) * 100, 0, 100);
|
||||
val = g_value_get_double (&value);
|
||||
|
||||
if (dimension == PARSE_X ||
|
||||
dimension == PARSE_WIDTH ||
|
||||
dimension == PARSE_ANCHOR_X)
|
||||
retval = CLUTTER_UNITS_FROM_STAGE_WIDTH_PERCENTAGE (val);
|
||||
{
|
||||
retval = clutter_actor_get_widthu (stage) * val;
|
||||
}
|
||||
else
|
||||
retval = CLUTTER_UNITS_FROM_STAGE_HEIGHT_PERCENTAGE (val);
|
||||
{
|
||||
retval = clutter_actor_get_heightu (stage) * val;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -101,6 +101,58 @@
|
||||
#include "clutter-units.h"
|
||||
#include "clutter-private.h"
|
||||
|
||||
#define DPI_FALLBACK 96.0
|
||||
|
||||
/**
|
||||
* clutter_units_mm:
|
||||
* @mm: millimeters to convert
|
||||
*
|
||||
* Converts a value in millimeters to #ClutterUnit<!-- -->s at
|
||||
* the current DPI.
|
||||
*
|
||||
* Return value: the value in units
|
||||
*
|
||||
* Since: 1.0
|
||||
*/
|
||||
ClutterUnit
|
||||
clutter_units_mm (gdouble mm)
|
||||
{
|
||||
ClutterBackend *backend;
|
||||
gdouble dpi;
|
||||
|
||||
backend = clutter_get_default_backend ();
|
||||
dpi = clutter_backend_get_resolution (backend);
|
||||
if (dpi < 0)
|
||||
dpi = DPI_FALLBACK;
|
||||
|
||||
return mm * dpi / 25.4;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_units_pt:
|
||||
* @pt: typographic points to convert
|
||||
*
|
||||
* Converts a value in typographic points to #ClutterUnit<!-- -->s
|
||||
* at the current DPI.
|
||||
*
|
||||
* Return value: the value in units
|
||||
*
|
||||
* Since: 1.0
|
||||
*/
|
||||
ClutterUnit
|
||||
clutter_units_pt (gdouble pt)
|
||||
{
|
||||
ClutterBackend *backend;
|
||||
gdouble dpi;
|
||||
|
||||
backend = clutter_get_default_backend ();
|
||||
dpi = clutter_backend_get_resolution (backend);
|
||||
if (dpi < 0)
|
||||
dpi = DPI_FALLBACK;
|
||||
|
||||
return pt * dpi / 72.0;
|
||||
}
|
||||
|
||||
static GTypeInfo _info = {
|
||||
0,
|
||||
NULL,
|
||||
|
@ -4,9 +4,11 @@
|
||||
*
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Authored By Tomas Frydrych <tf@openedhand.com>
|
||||
* Authored By: Tomas Frydrych <tf@openedhand.com>
|
||||
* Emmanuele Bassu <ebassi@linux.intel.com>
|
||||
*
|
||||
* Copyright (C) 2007 OpenedHand
|
||||
* Copyright (C) 2007, 2008 OpenedHand
|
||||
* Copyright (C) 2009 Intel Corp.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -44,12 +46,6 @@ G_BEGIN_DECLS
|
||||
*/
|
||||
typedef float ClutterUnit;
|
||||
|
||||
/*
|
||||
* Currently CLUTTER_UNIT maps directly onto ClutterFixed. Nevertheless, the
|
||||
* _FROM_FIXED and _TO_FIXED macros should always be used in case that we
|
||||
* decide to change this relationship in the future.
|
||||
*/
|
||||
|
||||
#define CLUTTER_UNITS_FROM_INT(x) ((float)(x))
|
||||
#define CLUTTER_UNITS_TO_INT(x) ((int)(x))
|
||||
|
||||
@ -59,6 +55,20 @@ typedef float ClutterUnit;
|
||||
#define CLUTTER_UNITS_FROM_FIXED(x) (x)
|
||||
#define CLUTTER_UNITS_TO_FIXED(x) (x)
|
||||
|
||||
/**
|
||||
* CLUTTER_UNITS_FORMAT:
|
||||
*
|
||||
* Format string that should be used for scanning and printing units.
|
||||
* It is a string literal, but it does not include the percent sign to
|
||||
* allow precision and length modifiers between the percent sign and
|
||||
* the format:
|
||||
*
|
||||
* |[
|
||||
* g_print ("%" CLUTTER_UNITS_FORMAT, units);
|
||||
* ]|
|
||||
*
|
||||
* Since: 1.0
|
||||
*/
|
||||
#define CLUTTER_UNITS_FORMAT "f"
|
||||
|
||||
/**
|
||||
@ -81,9 +91,6 @@ typedef float ClutterUnit;
|
||||
*/
|
||||
#define CLUTTER_UNITS_TO_DEVICE(x) CLUTTER_UNITS_TO_INT ((x))
|
||||
|
||||
#define CLUTTER_UNITS_TMP_FROM_DEVICE(x) (x)
|
||||
#define CLUTTER_UNITS_TMP_TO_DEVICE(x) (x)
|
||||
|
||||
/**
|
||||
* CLUTTER_UNITS_FROM_PANGO_UNIT:
|
||||
* @x: value in Pango units
|
||||
@ -92,7 +99,7 @@ typedef float ClutterUnit;
|
||||
*
|
||||
* Since: 0.6
|
||||
*/
|
||||
#define CLUTTER_UNITS_FROM_PANGO_UNIT(x) ((float)(x / 1024))
|
||||
#define CLUTTER_UNITS_FROM_PANGO_UNIT(x) ((float)((x) / 1024))
|
||||
|
||||
/**
|
||||
* CLUTTER_UNITS_TO_PANGO_UNIT:
|
||||
@ -102,19 +109,7 @@ typedef float ClutterUnit;
|
||||
*
|
||||
* Since: 0.6
|
||||
*/
|
||||
#define CLUTTER_UNITS_TO_PANGO_UNIT(x) ((int)(x * 1024))
|
||||
|
||||
#define CLUTTER_UNITS_FROM_STAGE_WIDTH_PERCENTAGE(x) \
|
||||
((clutter_actor_get_widthu (clutter_stage_get_default ()) * x) / 100)
|
||||
|
||||
#define CLUTTER_UNITS_FROM_STAGE_HEIGHT_PERCENTAGE(x) \
|
||||
((clutter_actor_get_heightu (clutter_stage_get_default ()) * x) / 100)
|
||||
|
||||
#define CLUTTER_UNITS_FROM_PARENT_WIDTH_PERCENTAGE(a, x) \
|
||||
((clutter_actor_get_widthu (clutter_actor_get_parent (a)) * x) / 100)
|
||||
|
||||
#define CLUTTER_UNITS_FROM_PARENT_HEIGHT_PERCENTAGE(a, x) \
|
||||
((clutter_actor_get_heightu (clutter_actor_get_parent (a)) * x) / 100)
|
||||
#define CLUTTER_UNITS_TO_PANGO_UNIT(x) ((int)((x) * 1024))
|
||||
|
||||
/**
|
||||
* CLUTTER_UNITS_FROM_MM:
|
||||
@ -124,10 +119,7 @@ typedef float ClutterUnit;
|
||||
*
|
||||
* Since: 0.6
|
||||
*/
|
||||
#define CLUTTER_UNITS_FROM_MM(x) \
|
||||
(CLUTTER_UNITS_FROM_FLOAT ((((x) * clutter_stage_get_resolution ((ClutterStage *) clutter_stage_get_default ())) / 25.4)))
|
||||
|
||||
#define CLUTTER_UNITS_FROM_MMX(x) CLUTTER_UNITS_FROM_MM
|
||||
#define CLUTTER_UNITS_FROM_MM(x) (clutter_units_mm (x))
|
||||
|
||||
/**
|
||||
* CLUTTER_UNITS_FROM_POINTS:
|
||||
@ -137,8 +129,10 @@ typedef float ClutterUnit;
|
||||
*
|
||||
* Since: 0.6
|
||||
*/
|
||||
#define CLUTTER_UNITS_FROM_POINTS(x) \
|
||||
CLUTTER_UNITS_FROM_FLOAT ((((x) * clutter_stage_get_resolution ((ClutterStage *) clutter_stage_get_default ())) / 72.0))
|
||||
#define CLUTTER_UNITS_FROM_POINTS(x) (clutter_units_pt (x))
|
||||
|
||||
ClutterUnit clutter_units_mm (gdouble mm);
|
||||
ClutterUnit clutter_units_pt (gdouble pt);
|
||||
|
||||
#define CLUTTER_TYPE_UNIT (clutter_unit_get_type ())
|
||||
#define CLUTTER_TYPE_PARAM_UNIT (clutter_param_unit_get_type ())
|
||||
|
@ -29,25 +29,20 @@ clutter_media_get_type
|
||||
<TITLE>Unit conversion</TITLE>
|
||||
ClutterUnit
|
||||
CLUTTER_UNITS_FORMAT
|
||||
CLUTTER_UNITS_FROM_DEVICE
|
||||
CLUTTER_UNITS_TO_DEVICE
|
||||
CLUTTER_UNITS_FROM_FIXED
|
||||
CLUTTER_UNITS_TO_FIXED
|
||||
CLUTTER_UNITS_FROM_FLOAT
|
||||
CLUTTER_UNITS_TO_FLOAT
|
||||
CLUTTER_UNITS_FROM_INT
|
||||
CLUTTER_UNITS_TO_INT
|
||||
CLUTTER_UNITS_FROM_DEVICE
|
||||
CLUTTER_UNITS_TO_DEVICE
|
||||
CLUTTER_UNITS_FROM_FIXED
|
||||
CLUTTER_UNITS_TO_FIXED
|
||||
CLUTTER_UNITS_FROM_PANGO_UNIT
|
||||
CLUTTER_UNITS_TO_PANGO_UNIT
|
||||
CLUTTER_UNITS_TMP_FROM_DEVICE
|
||||
CLUTTER_UNITS_TMP_TO_DEVICE
|
||||
CLUTTER_UNITS_FROM_STAGE_WIDTH_PERCENTAGE
|
||||
CLUTTER_UNITS_FROM_STAGE_HEIGHT_PERCENTAGE
|
||||
CLUTTER_UNITS_FROM_PARENT_WIDTH_PERCENTAGE
|
||||
CLUTTER_UNITS_FROM_PARENT_HEIGHT_PERCENTAGE
|
||||
CLUTTER_UNITS_FROM_MM
|
||||
CLUTTER_UNITS_FROM_MMX
|
||||
CLUTTER_UNITS_FROM_POINTS
|
||||
clutter_units_mm
|
||||
clutter_units_pt
|
||||
|
||||
<SUBSECTION>
|
||||
CLUTTER_MAXUNIT
|
||||
|
Loading…
x
Reference in New Issue
Block a user