Example #1
0
File: adg-dim.c Project: bert/adg
/**
 * adg_dim_set_ref2_explicit:
 * @dim: an #AdgDim
 * @x: x coordinate of the second reference point
 * @y: y coordinate of the second reference point
 *
 * Sets the #AdgDim:ref2 property to the (@x, @y) explicit
 * coordinates. The old point is silently discarded,
 * unreferencing its model if that point was bound to a named
 * pair (hence, possibly destroying the model if this was the
 * last reference).
 *
 * Since: 1.0
 **/
void
adg_dim_set_ref2_explicit(AdgDim *dim, gdouble x, gdouble y)
{
    AdgPoint *point = adg_point_new();

    adg_point_set_pair_explicit(point, x, y);
    adg_dim_set_ref2(dim, point);

    adg_point_destroy(point);
}
Example #2
0
File: adg-dim.c Project: bert/adg
/**
 * adg_dim_set_ref2_from_model:
 * @dim: an #AdgDim
 * @model: the source #AdgModel
 * @ref2: a named pair in @model
 *
 * Binds #AdgDim:ref2 to the @ref2 named pair of @model. If @model
 * is <constant>NULL</constant>, the point will be unset. In any
 * case, the old point is silently discarded, unreferencing its
 * model if that point was bound to a named pair (hence, possibly
 * destroying the model if this was the last reference).
 *
 * The assignment is lazy so @ref2 could be not be present in @model.
 * Anyway, at the first access to this point an error will be raised
 * if the named pair is still missing.
 *
 * Since: 1.0
 **/
void
adg_dim_set_ref2_from_model(AdgDim *dim, AdgModel *model, const gchar *ref2)
{
    AdgPoint *point = adg_point_new();

    adg_point_set_pair_from_model(point, model, ref2);
    adg_dim_set_ref2(dim, point);

    adg_point_destroy(point);
}
Example #3
0
static void
_adg_property_ref2(void)
{
    AdgDim *dim;
    AdgModel *model;
    AdgPoint *origin, *explicit_point, *model_point;
    AdgPoint *ref2;

    dim = ADG_DIM(adg_rdim_new());
    model = ADG_MODEL(adg_path_new());
    origin = adg_point_new();
    explicit_point = adg_point_new();
    model_point = adg_point_new();

    adg_point_set_pair_explicit(origin, 0, 0);
    adg_point_set_pair_explicit(explicit_point, 123, 321);
    adg_model_set_named_pair(model, "named-pair", (CpmlPair *) explicit_point);
    adg_point_set_pair_from_model(model_point, model, "named-pair");

    /* Ensure ADG does not consider an explicit point equals to
     * a point bound to a named pair with the same coordinates */
    g_assert_false(adg_point_equal(explicit_point, model_point));

    ref2 = adg_dim_get_ref2(dim);
    g_assert_null(ref2);

    /* Using the public APIs */
    adg_dim_set_ref2_explicit(dim, 0, 0);
    ref2 = adg_dim_get_ref2(dim);
    g_assert_true(adg_point_equal(ref2, origin));

    adg_dim_set_ref2(dim, NULL);
    ref2 = adg_dim_get_ref2(dim);
    g_assert_null(ref2);

    adg_dim_set_ref2(dim, explicit_point);
    ref2 = adg_dim_get_ref2(dim);
    g_assert_true(adg_point_equal(ref2, explicit_point));

    adg_dim_set_ref2_from_model(dim, model, "dummy");
    ref2 = adg_dim_get_ref2(dim);
    g_assert_nonnull(ref2);

    adg_dim_set_ref2_from_model(dim, model, "named-pair");
    ref2 = adg_dim_get_ref2(dim);
    g_assert_true(adg_point_equal(ref2, model_point));

    /* Using GObject property methods */
    g_object_set(dim, "ref2", origin, NULL);
    g_object_get(dim, "ref2", &ref2, NULL);
    g_assert_true(adg_point_equal(ref2, origin));
    adg_point_destroy(ref2);

    g_object_set(dim, "ref2", NULL, NULL);
    g_object_get(dim, "ref2", &ref2, NULL);
    g_assert_null(ref2);

    g_object_set(dim, "ref2", explicit_point, NULL);
    g_object_get(dim, "ref2", &ref2, NULL);
    g_assert_true(adg_point_equal(ref2, explicit_point));
    adg_point_destroy(ref2);

    adg_dim_set_ref2_from_model(dim, model, "dummy");
    g_object_get(dim, "ref2", &ref2, NULL);
    g_assert_nonnull(ref2);
    adg_point_destroy(ref2);

    g_object_set(dim, "ref2", model_point, NULL);
    g_object_get(dim, "ref2", &ref2, NULL);
    g_assert_true(adg_point_equal(ref2, model_point));
    adg_point_destroy(ref2);

    adg_point_destroy(origin);
    adg_point_destroy(explicit_point);
    adg_point_destroy(model_point);
    adg_entity_destroy(ADG_ENTITY(dim));
    g_object_unref(model);
}