2007-05-22 09:31:40 +00:00
|
|
|
/* -*- mode:C; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
|
|
|
/*
|
|
|
|
* Clutter.
|
|
|
|
*
|
|
|
|
* An OpenGL based 'interactive canvas' library.
|
|
|
|
*
|
2009-01-21 17:10:36 +00:00
|
|
|
* Authored By: Tomas Frydrych <tf@openedhand.com>
|
|
|
|
* Emmanuele Bassu <ebassi@linux.intel.com>
|
2007-05-22 09:31:40 +00:00
|
|
|
*
|
2009-01-21 17:10:36 +00:00
|
|
|
* Copyright (C) 2007, 2008 OpenedHand
|
|
|
|
* Copyright (C) 2009 Intel Corp.
|
2007-05-22 09:31:40 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2008-10-30 17:04:34 +00:00
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
2007-05-22 09:31:40 +00:00
|
|
|
*/
|
|
|
|
|
2008-10-30 17:04:34 +00:00
|
|
|
#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
|
2009-06-03 10:12:09 +00:00
|
|
|
#error "Only <clutter/clutter.h> can be included directly."
|
2008-10-30 17:04:34 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __CLUTTER_UNITS_H__
|
|
|
|
#define __CLUTTER_UNITS_H__
|
2007-05-22 09:31:40 +00:00
|
|
|
|
2008-04-17 09:13:12 +00:00
|
|
|
#include <glib-object.h>
|
2009-05-07 13:16:01 +00:00
|
|
|
|
|
|
|
#include <cogl/cogl.h>
|
2007-05-22 09:31:40 +00:00
|
|
|
|
2007-05-25 12:07:24 +00:00
|
|
|
G_BEGIN_DECLS
|
|
|
|
|
2008-01-18 11:25:47 +00:00
|
|
|
/**
|
2009-06-03 10:12:09 +00:00
|
|
|
* ClutterUnits:
|
2008-01-18 11:25:47 +00:00
|
|
|
*
|
2009-06-03 10:12:09 +00:00
|
|
|
* An opaque structure, to be used to store sizing and positioning
|
|
|
|
* values along with their unit.
|
2008-01-18 11:25:47 +00:00
|
|
|
*
|
2012-08-27 08:48:36 +00:00
|
|
|
*
|
2008-01-18 11:25:47 +00:00
|
|
|
*/
|
2009-06-03 10:12:09 +00:00
|
|
|
typedef struct _ClutterUnits ClutterUnits;
|
2008-01-18 11:25:47 +00:00
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
struct _ClutterUnits
|
|
|
|
{
|
|
|
|
/*< private >*/
|
|
|
|
ClutterUnitType unit_type;
|
2008-01-18 11:25:47 +00:00
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
gfloat value;
|
2007-11-28 15:31:41 +00:00
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
/* pre-filled by the provided constructors */
|
2009-10-16 14:25:37 +00:00
|
|
|
|
|
|
|
/* cached pixel value */
|
2009-06-03 10:12:09 +00:00
|
|
|
gfloat pixels;
|
2009-10-16 14:25:37 +00:00
|
|
|
|
|
|
|
/* whether the :pixels field is set */
|
2009-06-03 10:12:09 +00:00
|
|
|
guint pixels_set;
|
2007-11-28 15:31:41 +00:00
|
|
|
|
2009-10-16 14:25:37 +00:00
|
|
|
/* the serial coming from the backend, used to evict the cache */
|
|
|
|
gint32 serial;
|
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
/* padding for eventual expansion */
|
2009-10-16 14:25:37 +00:00
|
|
|
gint32 __padding_1;
|
2009-06-03 10:12:09 +00:00
|
|
|
gint64 __padding_2;
|
|
|
|
};
|
2009-01-21 17:10:36 +00:00
|
|
|
|
2009-07-28 12:43:52 +00:00
|
|
|
GType clutter_units_get_type (void) G_GNUC_CONST;
|
|
|
|
ClutterUnitType clutter_units_get_unit_type (const ClutterUnits *units);
|
|
|
|
gfloat clutter_units_get_unit_value (const ClutterUnits *units);
|
|
|
|
|
|
|
|
ClutterUnits * clutter_units_copy (const ClutterUnits *units);
|
|
|
|
void clutter_units_free (ClutterUnits *units);
|
|
|
|
|
|
|
|
void clutter_units_from_pixels (ClutterUnits *units,
|
|
|
|
gint px);
|
|
|
|
void clutter_units_from_em (ClutterUnits *units,
|
|
|
|
gfloat em);
|
|
|
|
void clutter_units_from_em_for_font (ClutterUnits *units,
|
|
|
|
const gchar *font_name,
|
|
|
|
gfloat em);
|
|
|
|
void clutter_units_from_mm (ClutterUnits *units,
|
|
|
|
gfloat mm);
|
2009-10-06 16:47:34 +00:00
|
|
|
void clutter_units_from_cm (ClutterUnits *units,
|
|
|
|
gfloat cm);
|
2009-07-28 12:43:52 +00:00
|
|
|
void clutter_units_from_pt (ClutterUnits *units,
|
|
|
|
gfloat pt);
|
|
|
|
|
|
|
|
gfloat clutter_units_to_pixels (ClutterUnits *units);
|
|
|
|
|
|
|
|
gboolean clutter_units_from_string (ClutterUnits *units,
|
|
|
|
const gchar *str);
|
|
|
|
gchar * clutter_units_to_string (const ClutterUnits *units);
|
|
|
|
|
|
|
|
/* shorthands for the constructors */
|
|
|
|
#define clutter_units_pixels clutter_units_from_pixels
|
|
|
|
#define clutter_units_em clutter_units_from_em
|
|
|
|
#define clutter_units_em_for_font clutter_units_from_em_for_font
|
|
|
|
#define clutter_units_mm clutter_units_from_mm
|
2009-10-06 16:47:34 +00:00
|
|
|
#define clutter_units_cm clutter_units_from_cm
|
2009-07-28 12:43:52 +00:00
|
|
|
#define clutter_units_pt clutter_units_from_pt
|
2008-04-17 11:09:27 +00:00
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
#define CLUTTER_TYPE_UNITS (clutter_units_get_type ())
|
|
|
|
#define CLUTTER_TYPE_PARAM_UNITS (clutter_param_units_get_type ())
|
|
|
|
#define CLUTTER_PARAM_SPEC_UNITS(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), CLUTTER_TYPE_PARAM_UNITS, ClutterParamSpecUnits))
|
|
|
|
#define CLUTTER_IS_PARAM_SPEC_UNITS(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), CLUTTER_TYPE_PARAM_UNITS))
|
2008-04-17 11:09:27 +00:00
|
|
|
|
2008-04-17 09:13:12 +00:00
|
|
|
/**
|
2009-06-09 13:47:36 +00:00
|
|
|
* CLUTTER_VALUE_HOLDS_UNITS:
|
2008-04-17 09:13:12 +00:00
|
|
|
* @x: a #GValue
|
|
|
|
*
|
2009-06-03 10:12:09 +00:00
|
|
|
* Evaluates to %TRUE if @x holds a #ClutterUnits value
|
2008-04-17 09:13:12 +00:00
|
|
|
*
|
2012-08-27 08:48:36 +00:00
|
|
|
*
|
2008-04-17 09:13:12 +00:00
|
|
|
*/
|
2009-06-03 10:12:09 +00:00
|
|
|
#define CLUTTER_VALUE_HOLDS_UNITS(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_UNITS))
|
2008-04-17 09:13:12 +00:00
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
typedef struct _ClutterParamSpecUnits ClutterParamSpecUnits;
|
2008-04-17 09:13:12 +00:00
|
|
|
|
|
|
|
/**
|
2010-12-10 17:15:39 +00:00
|
|
|
* ClutterParamSpecUnits: (skip)
|
2009-06-03 10:12:09 +00:00
|
|
|
* @default_type: default type
|
|
|
|
* @default_value: default value
|
2008-04-17 09:13:12 +00:00
|
|
|
* @minimum: lower boundary
|
|
|
|
* @maximum: higher boundary
|
|
|
|
*
|
|
|
|
* #GParamSpec subclass for unit based properties.
|
|
|
|
*
|
2012-08-27 08:48:36 +00:00
|
|
|
*
|
2008-04-17 09:13:12 +00:00
|
|
|
*/
|
2009-06-03 10:12:09 +00:00
|
|
|
struct _ClutterParamSpecUnits
|
2008-04-17 09:13:12 +00:00
|
|
|
{
|
|
|
|
/*< private >*/
|
2009-06-03 10:12:09 +00:00
|
|
|
GParamSpec parent_instance;
|
2008-04-17 09:13:12 +00:00
|
|
|
|
|
|
|
/*< public >*/
|
2009-06-03 10:12:09 +00:00
|
|
|
ClutterUnitType default_type;
|
|
|
|
|
|
|
|
gfloat default_value;
|
|
|
|
gfloat minimum;
|
|
|
|
gfloat maximum;
|
2008-04-17 09:13:12 +00:00
|
|
|
};
|
|
|
|
|
2009-06-03 10:12:09 +00:00
|
|
|
GType clutter_param_units_get_type (void) G_GNUC_CONST;
|
2008-04-17 09:13:12 +00:00
|
|
|
|
2011-10-04 12:28:04 +00:00
|
|
|
GParamSpec * clutter_param_spec_units (const gchar *name,
|
|
|
|
const gchar *nick,
|
|
|
|
const gchar *blurb,
|
|
|
|
ClutterUnitType default_type,
|
|
|
|
gfloat minimum,
|
|
|
|
gfloat maximum,
|
|
|
|
gfloat default_value,
|
|
|
|
GParamFlags flags);
|
|
|
|
|
|
|
|
void clutter_value_set_units (GValue *value,
|
|
|
|
const ClutterUnits *units);
|
|
|
|
const ClutterUnits * clutter_value_get_units (const GValue *value);
|
2008-04-17 09:13:12 +00:00
|
|
|
|
2007-05-25 12:07:24 +00:00
|
|
|
G_END_DECLS
|
|
|
|
|
2008-10-30 17:04:34 +00:00
|
|
|
#endif /* __CLUTTER_UNITS_H__ */
|