champlain-adjustment.h 3.83 KB
Newer Older
1
/* champlain-adjustment.h: Adjustment object
Jiří Techet's avatar
Jiří Techet committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 *
 * Copyright (C) 2008 OpenedHand
 *
 * 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
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * Written by: Chris Lord <chris@openedhand.com>, inspired by GtkAdjustment
 */

23 24
#ifndef __CHAMPLAIN_ADJUSTMENT_H__
#define __CHAMPLAIN_ADJUSTMENT_H__
Jiří Techet's avatar
Jiří Techet committed
25 26 27 28 29 30

#include <glib-object.h>
#include <clutter/clutter.h>

G_BEGIN_DECLS

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#define CHAMPLAIN_TYPE_ADJUSTMENT champlain_adjustment_get_type ()

#define CHAMPLAIN_ADJUSTMENT(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST ((obj), CHAMPLAIN_TYPE_ADJUSTMENT, ChamplainAdjustment))
  
#define CHAMPLAIN_IS_ADJUSTMENT(obj) \
  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CHAMPLAIN_TYPE_ADJUSTMENT))
  
#define CHAMPLAIN_ADJUSTMENT_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_CAST ((klass), CHAMPLAIN_TYPE_ADJUSTMENT, ChamplainAdjustmentClass))
  
#define CHAMPLAIN_IS_ADJUSTMENT_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_TYPE ((klass), CHAMPLAIN_TYPE_ADJUSTMENT))
  
#define CHAMPLAIN_ADJUSTMENT_GET_CLASS(obj) \
  (G_TYPE_INSTANCE_GET_CLASS ((obj), CHAMPLAIN_TYPE_ADJUSTMENT, ChamplainAdjustmentClass))
Jiří Techet's avatar
Jiří Techet committed
47

Jiří Techet's avatar
Jiří Techet committed
48 49 50
typedef struct _ChamplainAdjustment ChamplainAdjustment;
typedef struct _ChamplainAdjustmentPrivate ChamplainAdjustmentPrivate;
typedef struct _ChamplainAdjustmentClass ChamplainAdjustmentClass;
Jiří Techet's avatar
Jiří Techet committed
51 52

/**
53
 * ChamplainAdjustment:
Jiří Techet's avatar
Jiří Techet committed
54 55
 *
 * Class for handling an interval between to values. The contents of
56
 * the #ChamplainAdjustment are private and should be accessed using the
Jiří Techet's avatar
Jiří Techet committed
57 58
 * public API.
 */
59
struct _ChamplainAdjustment
Jiří Techet's avatar
Jiří Techet committed
60 61 62 63
{
  /*< private >*/
  GObject parent_instance;

64
  ChamplainAdjustmentPrivate *priv;
Jiří Techet's avatar
Jiří Techet committed
65 66 67
};

/**
68
 * ChamplainAdjustmentClass:
Jiří Techet's avatar
Jiří Techet committed
69 70
 * @changed: Class handler for the ::changed signal.
 *
71
 * Base class for #ChamplainAdjustment.
Jiří Techet's avatar
Jiří Techet committed
72
 */
73
struct _ChamplainAdjustmentClass
Jiří Techet's avatar
Jiří Techet committed
74 75 76 77 78
{
  /*< private >*/
  GObjectClass parent_class;

  /*< public >*/
Jiří Techet's avatar
Jiří Techet committed
79
  void (*changed)(ChamplainAdjustment *adjustment);
Jiří Techet's avatar
Jiří Techet committed
80 81
};

82
GType champlain_adjustment_get_type (void) G_GNUC_CONST;
Jiří Techet's avatar
Jiří Techet committed
83

Jiří Techet's avatar
Jiří Techet committed
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
ChamplainAdjustment *champlain_adjustment_new (gdouble value,
    gdouble lower,
    gdouble upper,
    gdouble step_increment,
    gdouble page_increment,
    gdouble page_size);
gdouble champlain_adjustment_get_value (ChamplainAdjustment *adjustment);
void champlain_adjustment_set_value (ChamplainAdjustment *adjustment,
    gdouble value);
void champlain_adjustment_set_values (ChamplainAdjustment *adjustment,
    gdouble value,
    gdouble lower,
    gdouble upper,
    gdouble step_increment,
    gdouble page_increment,
    gdouble page_size);
void champlain_adjustment_get_values (ChamplainAdjustment *adjustment,
    gdouble *value,
    gdouble *lower,
    gdouble *upper,
    gdouble *step_increment,
    gdouble *page_increment,
    gdouble *page_size);

void champlain_adjustment_interpolate (ChamplainAdjustment *adjustment,
    gdouble value,
    guint n_frames,
    guint fps);

gboolean champlain_adjustment_get_elastic (ChamplainAdjustment *adjustment);
void champlain_adjustment_set_elastic (ChamplainAdjustment *adjustment,
    gboolean elastic);

gboolean champlain_adjustment_clamp (ChamplainAdjustment *adjustment,
    gboolean interpolate,
    guint n_frames,
    guint fps);
void champlain_adjustment_interpolate_stop (ChamplainAdjustment *adjustment);
Jiří Techet's avatar
Jiří Techet committed
122 123 124

G_END_DECLS

125
#endif /* __CHAMPLAIN_ADJUSTMENT_H__ */