| 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 | ||
|---|---|---|
| 131 | 131 | ADG_TYPE_POINT, |
| 132 | 132 | G_PARAM_READWRITE); |
| 133 | 133 | 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); | |
| 134 | 146 | } |
| 135 | 147 | |
| 136 | 148 | static void |
| ... | ... | |
| 590 | 602 | data = adim->data; |
| 591 | 603 | |
| 592 | 604 | 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 | **/ | |
| 615 | void | |
| 616 | adg_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 | **/ | |
| 631 | gboolean | |
| 632 | adg_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 | **/ | |
| 651 | void | |
| 652 | adg_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 | **/ | |
| 667 | gboolean | |
| 668 | adg_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; | |
| 593 | 677 | } |
| 594 | 678 | |
| 595 | 679 | |
| ... | ... | |
| 714 | 798 | pair.x += data->shift.to2.x; |
| 715 | 799 | pair.y += data->shift.to2.y; |
| 716 | 800 | 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 | } | |
| 717 | 808 | |
| 718 | 809 | data->cpml.path.status = CAIRO_STATUS_SUCCESS; |
| 719 | 810 | |
| src/adg/adg-adim.h | ||
|---|---|---|
| 99 | 99 | AdgModel *model, |
| 100 | 100 | const gchar *org2); |
| 101 | 101 | AdgPoint * adg_adim_get_org2 (AdgADim *adim); |
| 102 | void adg_adim_switch_extension1 (AdgADim *adim, | |
| 103 | gboolean new_state); | |
| 104 | gboolean adg_adim_has_extension1 (AdgADim *adim); | |
| 105 | void adg_adim_switch_extension2 (AdgADim *adim, | |
| 106 | gboolean new_state); | |
| 107 | gboolean adg_adim_has_extension2 (AdgADim *adim); | |
| 102 | 108 | |
| 103 | 109 | G_END_DECLS |
| 104 | 110 | |
| src/adg/tests/test-adim.c | ||
|---|---|---|
| 187 | 187 | adg_point_destroy(model_point); |
| 188 | 188 | g_object_unref(adim); |
| 189 | 189 | g_object_unref(model); |
| 190 | } | |
| 191 | ||
| 192 | static 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 | ||
| 231 | static 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); | |
| 190 | 268 | } |
| 191 | 269 | |
| 192 | 270 | |
| ... | ... | |
| 195 | 273 | { |
| 196 | 274 | adg_test_init(&argc, &argv); |
| 197 | 275 | |
| 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); | |
| 200 | 280 | |
| 201 | 281 | return g_test_run(); |
| 202 | 282 | } |
| 203 | 283 | |
