Пример #1
0
Файл: adg-dim.c Проект: bert/adg
static void
_adg_invalidate(AdgEntity *entity)
{
    AdgDimPrivate *data = ((AdgDim *) entity)->data;

    if (data->quote.value) {
        g_object_unref(data->quote.value);
        data->quote.value = NULL;
    }
    if (data->quote.entity)
        adg_entity_invalidate((AdgEntity *) data->quote.entity);
    if (data->ref1)
        adg_point_invalidate(data->ref1);
    if (data->ref2)
        adg_point_invalidate(data->ref2);
    if (data->pos)
        adg_point_invalidate(data->pos);

    if (_ADG_OLD_ENTITY_CLASS->invalidate)
        _ADG_OLD_ENTITY_CLASS->invalidate(entity);
}
Пример #2
0
static void
_adg_invalidate(AdgEntity *entity)
{
    AdgADim *adim;
    AdgADimPrivate *data;

    adim = (AdgADim *) entity;
    data = adim->data;

    _adg_dispose_trail(adim);
    _adg_dispose_markers(adim);
    data->geometry_arranged = FALSE;
    _adg_unset_trail(adim);

    if (data->org1)
        adg_point_invalidate(data->org1);
    if (data->org2)
        adg_point_invalidate(data->org2);

    if (_ADG_OLD_ENTITY_CLASS->invalidate)
        _ADG_OLD_ENTITY_CLASS->invalidate(entity);
}
Пример #3
0
static void
_adg_behavior_misc(void)
{
    AdgPoint *point, *dup_point;
    CpmlPair *pair,  *dup_pair;
    CpmlPair dummy_pair = { 3.4, 5.6 };

    point = adg_point_new();
    g_assert_nonnull(point);

    adg_point_set_pair_explicit(point, 1, 2);
    pair = (CpmlPair *) point;
    adg_assert_isapprox(pair->x, 1);
    adg_assert_isapprox(pair->y, 2);

    pair = adg_point_get_pair(point);
    g_assert_nonnull(pair);
    adg_assert_isapprox(pair->x, 1);
    adg_assert_isapprox(pair->y, 2);

    dup_point = adg_point_dup(point);
    g_assert_nonnull(dup_point);
    g_assert_true(dup_point != point);

    /* Should be a noop with explicit pairs */
    adg_point_invalidate(point);

    dup_pair = adg_point_get_pair(dup_point);
    g_assert_nonnull(dup_pair);
    g_assert_true(dup_pair != pair);

    adg_assert_isapprox(pair->x, dup_pair->x);
    adg_assert_isapprox(pair->y, dup_pair->y);
    g_assert_true(adg_point_equal(point, dup_point));

    g_free(dup_pair);
    adg_point_destroy(dup_point);

    dup_point = adg_point_new();
    adg_point_set_pair(dup_point, &dummy_pair);
    dup_pair = (CpmlPair *) dup_point;

    /* Should be a noop with explicit pairs */
    adg_point_invalidate(dup_point);

    adg_assert_isapprox(dup_pair->x, 3.4);
    adg_assert_isapprox(dup_pair->y, 5.6);
    g_assert_false(adg_point_equal(point, dup_point));

    adg_point_copy(dup_point, point);
    dup_pair = adg_point_get_pair(dup_point);
    g_assert_nonnull(dup_pair);
    g_assert_nonnull(dup_pair);

    adg_assert_isapprox(pair->x, dup_pair->x);
    adg_assert_isapprox(pair->y, dup_pair->y);
    g_assert_true(adg_point_equal(point, dup_point));

    g_free(pair);
    g_free(dup_pair);
    adg_point_destroy(point);
    adg_point_destroy(dup_point);
}