ADG

Sign in or create your account | Project List | Help

ADG Commit Details

Date:2010-07-03 12:45:18 (2 months 7 days ago)
Author:Nicola Fontana
Commit:f53453693153af1057b94a1724beafcfa0a4f011
Message:[AdgADim] Added "has-extension[12]" properties


Similarily to the AdgLDim entity, added two flags to control the
rendering of the extension lines.
Files: src/adg/adg-adim.c (3 diffs)
src/adg/adg-adim.h (1 diff)
src/adg/tests/test-adim.c (2 diffs)

Change Details

src/adg/adg-adim.c
131131                               ADG_TYPE_POINT,
132132                               G_PARAM_READWRITE);
133133    g_object_class_install_property(gobject_class, PROP_ORG2, param);
134
135    param = g_param_spec_boolean("has-extension1",
136                                 P_("Has First Extension Line flag"),
137                                 P_("Show (TRUE) or hide (FALSE) the first extension line"),
138                                 TRUE, G_PARAM_READWRITE);
139    g_object_class_install_property(gobject_class, PROP_HAS_EXTENSION1, param);
140
141    param = g_param_spec_boolean("has-extension2",
142                                 P_("Has Second Extension Line flag"),
143                                 P_("Show (TRUE) or hide (FALSE) the second extension line"),
144                                 TRUE, G_PARAM_READWRITE);
145    g_object_class_install_property(gobject_class, PROP_HAS_EXTENSION2, param);
134146}
135147
136148static void
...... 
590602    data = adim->data;
591603
592604    return data->org2;
605}
606
607/**
608 * adg_adim_switch_extension1:
609 * @adim: an #AdgADim entity
610 * @new_state: the new state
611 *
612 * Shows (if @new_state is %TRUE) or hides (if @new_state is %FALSE)
613 * the first extension line of @adim.
614 **/
615void
616adg_adim_switch_extension1(AdgADim *adim, gboolean new_state)
617{
618    g_return_if_fail(ADG_IS_ADIM(adim));
619    g_return_if_fail(adg_is_boolean_value(new_state));
620    g_object_set(adim, "has-extension1", new_state, NULL);
621}
622
623/**
624 * adg_adim_has_extension1:
625 * @adim: an #AdgADim entity
626 *
627 * Checks if @adim should render the first extension line.
628 *
629 * Returns: %TRUE on first extension line presents, %FALSE otherwise
630 **/
631gboolean
632adg_adim_has_extension1(AdgADim *adim)
633{
634    AdgADimPrivate *data;
635
636    g_return_val_if_fail(ADG_IS_ADIM(adim), FALSE);
637
638    data = adim->data;
639
640    return data->has_extension1;
641}
642
643/**
644 * adg_adim_switch_extension2:
645 * @adim: an #AdgADim entity
646 * @new_state: the new new_state
647 *
648 * Shows (if @new_state is %TRUE) or hides (if @new_state is %FALSE)
649 * the second extension line of @adim.
650 **/
651void
652adg_adim_switch_extension2(AdgADim *adim, gboolean new_state)
653{
654    g_return_if_fail(ADG_IS_ADIM(adim));
655    g_return_if_fail(adg_is_boolean_value(new_state));
656    g_object_set(adim, "has-extension2", new_state, NULL);
657}
658
659/**
660 * adg_adim_has_extension2:
661 * @adim: an #AdgADim entity
662 *
663 * Checks if @adim should render the second extension line.
664 *
665 * Returns: %TRUE on first extension line presents, %FALSE otherwise
666 **/
667gboolean
668adg_adim_has_extension2(AdgADim *adim)
669{
670    AdgADimPrivate *data;
671
672    g_return_val_if_fail(ADG_IS_ADIM(adim), FALSE);
673
674    data = adim->data;
675
676    return data->has_extension2;
593677}
594678
595679
...... 
714798    pair.x += data->shift.to2.x;
715799    pair.y += data->shift.to2.y;
716800    cpml_pair_to_cairo(&pair, &data->cpml.data[12]);
801
802    /* Play with header lengths to show or hide the extension lines */
803    if (data->has_extension1) {
804        data->cpml.data[7].header.length = data->has_extension2 ? 2 : 6;
805    } else {
806        data->cpml.data[2].header.length = data->has_extension2 ? 7 : 11;
807    }
717808
718809    data->cpml.path.status = CAIRO_STATUS_SUCCESS;
719810
src/adg/adg-adim.h
9999                                                 AdgModel *model,
100100                                                 const gchar *org2);
101101AdgPoint * adg_adim_get_org2 (AdgADim *adim);
102void adg_adim_switch_extension1 (AdgADim *adim,
103                                                 gboolean new_state);
104gboolean adg_adim_has_extension1 (AdgADim *adim);
105void adg_adim_switch_extension2 (AdgADim *adim,
106                                                 gboolean new_state);
107gboolean adg_adim_has_extension2 (AdgADim *adim);
102108
103109G_END_DECLS
104110
src/adg/tests/test-adim.c
187187    adg_point_destroy(model_point);
188188    g_object_unref(adim);
189189    g_object_unref(model);
190}
191
192static void
193_adg_test_has_extension1(void)
194{
195    AdgADim *adim;
196    gboolean invalid_boolean;
197    gboolean has_extension1;
198
199    adim = adg_adim_new();
200    invalid_boolean = (gboolean) 1234;
201
202    /* Using the public APIs */
203    adg_adim_switch_extension1(adim, FALSE);
204    has_extension1 = adg_adim_has_extension1(adim);
205    g_assert(!has_extension1);
206
207    adg_adim_switch_extension1(adim, invalid_boolean);
208    has_extension1 = adg_adim_has_extension1(adim);
209    g_assert(!has_extension1);
210
211    adg_adim_switch_extension1(adim, TRUE);
212    has_extension1 = adg_adim_has_extension1(adim);
213    g_assert(has_extension1);
214
215    /* Using GObject property methods */
216    g_object_set(adim, "has-extension1", FALSE, NULL);
217    g_object_get(adim, "has-extension1", &has_extension1, NULL);
218    g_assert(!has_extension1);
219
220    g_object_set(adim, "has-extension1", invalid_boolean, NULL);
221    g_object_get(adim, "has-extension1", &has_extension1, NULL);
222    g_assert(!has_extension1);
223
224    g_object_set(adim, "has-extension1", TRUE, NULL);
225    g_object_get(adim, "has-extension1", &has_extension1, NULL);
226    g_assert(has_extension1);
227
228    g_object_unref(adim);
229}
230
231static void
232_adg_test_has_extension2(void)
233{
234    AdgADim *adim;
235    gboolean invalid_boolean;
236    gboolean has_extension2;
237
238    adim = adg_adim_new();
239    invalid_boolean = (gboolean) 1234;
240
241    /* Using the public APIs */
242    adg_adim_switch_extension2(adim, FALSE);
243    has_extension2 = adg_adim_has_extension2(adim);
244    g_assert(!has_extension2);
245
246    adg_adim_switch_extension2(adim, invalid_boolean);
247    has_extension2 = adg_adim_has_extension2(adim);
248    g_assert(!has_extension2);
249
250    adg_adim_switch_extension2(adim, TRUE);
251    has_extension2 = adg_adim_has_extension2(adim);
252    g_assert(has_extension2);
253
254    /* Using GObject property methods */
255    g_object_set(adim, "has-extension2", FALSE, NULL);
256    g_object_get(adim, "has-extension2", &has_extension2, NULL);
257    g_assert(!has_extension2);
258
259    g_object_set(adim, "has-extension2", invalid_boolean, NULL);
260    g_object_get(adim, "has-extension2", &has_extension2, NULL);
261    g_assert(!has_extension2);
262
263    g_object_set(adim, "has-extension2", TRUE, NULL);
264    g_object_get(adim, "has-extension2", &has_extension2, NULL);
265    g_assert(has_extension2);
266
267    g_object_unref(adim);
190268}
191269
192270
...... 
195273{
196274    adg_test_init(&argc, &argv);
197275
198    adg_test_add_func("/adg/adim/org1", _adg_test_org1);
199    adg_test_add_func("/adg/adim/org2", _adg_test_org2);
276    adg_test_add_func("/adg/adim/property/org1", _adg_test_org1);
277    adg_test_add_func("/adg/adim/property/org2", _adg_test_org2);
278    adg_test_add_func("/adg/adim/property/has-extension1", _adg_test_has_extension1);
279    adg_test_add_func("/adg/adim/property/has-extension2", _adg_test_has_extension2);
200280
201281    return g_test_run();
202282}
203283

Archive Download the corresponding diff file