From b901b14d0e18afb59af78a40fe64de483ad94f8c Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Fri, 9 Jan 2009 00:43:41 +0100 Subject: [PATCH] [AdgEntity] Implemented adg_entity_point_to_pair() --- adg/adg-entity.c | 33 +++++++++++++++++++++++++++++++++ adg/adg-entity.h | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/adg/adg-entity.c b/adg/adg-entity.c index a44a629d..28051f61 100644 --- a/adg/adg-entity.c +++ b/adg/adg-entity.c @@ -649,6 +649,39 @@ adg_entity_apply(AdgEntity *entity, AdgStyleSlot style_slot, cairo_t *cr) } /** + * adg_entity_point_to_pair: + * @entity: an #AdgEntity + * @point: the source #AdgPoint + * @pair: the destination #AdgPair + * + * Converts @point to @pair using the model and paper matrix of @entity. + **/ +void +adg_entity_point_to_pair(AdgEntity *entity, + const AdgPoint *point, AdgPair *pair) +{ + const AdgMatrix *model_matrix; + const AdgMatrix *paper_matrix; + AdgPair model_pair, paper_pair; + + g_return_if_fail(ADG_IS_ENTITY(entity)); + g_return_if_fail(point != NULL); + g_return_if_fail(pair != NULL); + + model_matrix = ADG_ENTITY_GET_CLASS(entity)->get_model_matrix(entity); + paper_matrix = ADG_ENTITY_GET_CLASS(entity)->get_paper_matrix(entity); + + adg_pair_copy(&model_pair, &point->model); + cpml_pair_transform(&model_pair, model_matrix); + + adg_pair_copy(&paper_pair, &point->paper); + cpml_pair_transform(&paper_pair, paper_matrix); + + pair->x = model_pair.x + paper_pair.x; + pair->y = model_pair.y + paper_pair.y; +} + +/** * adg_entity_model_matrix_applied: * @entity: an #AdgEntity * diff --git a/adg/adg-entity.h b/adg/adg-entity.h index 995537f8..c60b4871 100644 --- a/adg/adg-entity.h +++ b/adg/adg-entity.h @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -116,6 +117,9 @@ AdgStyle * adg_entity_get_style (AdgEntity *entity, void adg_entity_apply (AdgEntity *entity, AdgStyleSlot style_slot, cairo_t *cr); +void adg_entity_point_to_pair (AdgEntity *entity, + const AdgPoint *point, + AdgPair *pair); gboolean adg_entity_model_matrix_applied (AdgEntity *entity); gboolean adg_entity_paper_matrix_applied (AdgEntity *entity); gboolean adg_entity_model_applied (AdgEntity *entity); -- 2.11.4.GIT