Exemplo n.º 1
0
static real
step_distance_from(Step *step, Point *point)
{
  Element *elem = &step->element;
  Rectangle rect;
  real dist;

  dist = distance_line_point(&step->north.pos,&step->NU1,
			     STEP_LINE_WIDTH,point);
  dist = MIN(dist,distance_line_point(&step->NU1,&step->NU2,
				      STEP_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&step->NU2,&step->A,
				      STEP_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&step->D,&step->SD1,
				      STEP_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&step->SD1,&step->SD2,
				      STEP_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&step->SD2,&step->south.pos,
				      STEP_LINE_WIDTH,point));

  rect.left = elem->corner.x;
  rect.right = elem->corner.x + elem->width;
  rect.top = elem->corner.y;
  rect.bottom = elem->corner.y + elem->height;
  dist = MIN(dist,distance_rectangle_point(&rect, point));
  return dist;
}
Exemplo n.º 2
0
static real
annotation_distance_from(Annotation *annotation, Point *point)
{
  Point *endpoints;
  Rectangle bbox;
  endpoints = &annotation->connection.endpoints[0];
  
  text_calc_boundingbox(annotation->text,&bbox);
  return MIN(distance_line_point(&endpoints[0], &endpoints[1], 
				 ANNOTATION_LINE_WIDTH, point),
	     distance_rectangle_point(&bbox,point));
}
Exemplo n.º 3
0
static real
box_distance_from(Box *box, Point *point)
{
  Element *elem = &box->element;
  Rectangle rect;

  rect.left = elem->corner.x - box->border_width/2;
  rect.right = elem->corner.x + elem->width + box->border_width/2;
  rect.top = elem->corner.y - box->border_width/2;
  rect.bottom = elem->corner.y + elem->height + box->border_width/2;
  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 4
0
static real
goal_distance_from(Goal *goal, Point *point)
{
  Element *elem = &goal->element;
  Rectangle rect;

  rect.left = elem->corner.x - GOAL_LINE_WIDTH/2;
  rect.right = elem->corner.x + elem->width + GOAL_LINE_WIDTH/2;
  rect.top = elem->corner.y - GOAL_LINE_WIDTH/2;
  rect.bottom = elem->corner.y + elem->height + GOAL_LINE_WIDTH/2;
  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 5
0
static real
newgroup_distance_from(NewGroup *group, Point *point)
{
  Element *elem = &group->element;
  Rectangle rect;

  rect.left = elem->corner.x;
  rect.right = elem->corner.x + elem->width;
  rect.top = elem->corner.y;
  rect.bottom = elem->corner.y + elem->height;
  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 6
0
Arquivo: other.c Projeto: UIKit0/dia
static real
other_distance_from(Other *other, Point *point)
{
  Element *elem = &other->element;
  Rectangle rect;

  rect.left = elem->corner.x - OTHER_LINE_WIDTH/2;
  rect.right = elem->corner.x + elem->width + OTHER_LINE_WIDTH/2;
  rect.top = elem->corner.y - OTHER_LINE_WIDTH/2;
  rect.bottom = elem->corner.y + elem->height + OTHER_LINE_WIDTH/2;
  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 7
0
static real
image_distance_from(EImage *image, Point *point)
{
  Element *elem = &image->element;
  Rectangle rect;

  rect.left = elem->corner.x - image->border_width;
  rect.right = elem->corner.x + elem->width + image->border_width;
  rect.top = elem->corner.y - image->border_width;
  rect.bottom = elem->corner.y + elem->height + image->border_width;
  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 8
0
Arquivo: textobj.c Projeto: GNOME/dia
static real
textobj_distance_from(Textobj *textobj, Point *point)
{
  if (textobj->text_angle != 0) {
    Point poly[4];

    _textobj_get_poly (textobj, poly);
    return distance_polygon_point(poly, 4, 0.0, point);
  }
  if (textobj->show_background)
    return distance_rectangle_point(&textobj->object.bounding_box, point);
  return text_distance_from(textobj->text, point);
}
Exemplo n.º 9
0
static real
transition_distance_from(Transition *transition, Point *point)
{
  real dist;
  dist = distance_rectangle_point(&transition->rceptbb,point);
  dist = MIN(dist,distance_line_point(&transition->C,&transition->D,
				      TRANSITION_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&transition->north.pos,&transition->NU1,
				      TRANSITION_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&transition->NU1,&transition->NU2,
				      TRANSITION_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&transition->NU2,&transition->SD1,
				      TRANSITION_LINE_WIDTH,point));
  /* A and B are on the [NU2; SD1] segment. */
  dist = MIN(dist,distance_line_point(&transition->SD1,&transition->SD2,
				      TRANSITION_LINE_WIDTH,point));
  dist = MIN(dist,distance_line_point(&transition->SD2,&transition->south.pos,
				      TRANSITION_LINE_WIDTH,point));

  return dist;
}
Exemplo n.º 10
0
static real
pgram_distance_from(Pgram *pgram, Point *point)
{
  Element *elem = &pgram->element;
  Rectangle rect;

  rect.left = elem->corner.x - pgram->border_width/2;
  rect.right = elem->corner.x + elem->width + pgram->border_width/2;
  rect.top = elem->corner.y - pgram->border_width/2;
  rect.bottom = elem->corner.y + elem->height + pgram->border_width/2;

  /* we do some fiddling with the left/right values to get good accuracy
   * without having to write a new distance checking routine */
  if (rect.top > point->y) {
    /* point above parallelogram */
    if (pgram->shear_grad > 0)
      rect.left  += pgram->shear_grad * (rect.bottom - rect.top);
    else
      rect.right += pgram->shear_grad * (rect.bottom - rect.top);
  } else if (rect.bottom < point->y) {
    /* point below parallelogram */
    if (pgram->shear_grad > 0)
      rect.right -= pgram->shear_grad * (rect.bottom - rect.top);
    else
      rect.left  -= pgram->shear_grad * (rect.bottom - rect.top);
  } else {
    /* point withing vertical interval of parallelogram -- modify
     * left and right sides to `unshear' the parallelogram.  This
     * increases accuracy for points near the  */
    if (pgram->shear_grad > 0) {
      rect.left  += pgram->shear_grad * (rect.bottom - point->y);
      rect.right -= pgram->shear_grad * (point->y - rect.top);
    } else {
      rect.left  -= pgram->shear_grad * (point->y - rect.top);
      rect.right += pgram->shear_grad * (rect.bottom - point->y);
    }
  }

  return distance_rectangle_point(&rect, point);
}
Exemplo n.º 11
0
static real
rendobj_distance_from(RenderObject *rend_obj, Point *point)
{
  Element *elem = &rend_obj->element;
  Rectangle rect;
  real dist;
  real text_dist;
  
  /* Todo: Make this better, more changeable by the user. */
  
  rect.left = elem->corner.x;
  rect.right = elem->corner.x + elem->width;
  rect.top = elem->corner.y ;
  rect.bottom = elem->corner.y + elem->height;

  dist = distance_rectangle_point(&rect, point);
  if (rend_obj->desc->use_text) {
    text_dist = text_distance_from(rend_obj->text, point);
    if (text_dist<dist)
      dist = text_dist;
  }
  return dist;
}
Exemplo n.º 12
0
static real
_dae_distance_from(DiagramAsElement *dae, Point *point)
{
  DiaObject *obj = &dae->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 13
0
static real
state_distance_from(State *state, Point *point)
{
  DiaObject *obj = &state->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 14
0
static real
function_distance_from(Function *pkg, Point *point)
{
  DiaObject *obj = &pkg->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 15
0
static real
basestation_distance_from(Basestation *basestation, Point *point)
{
    DiaObject *obj = &basestation->element.object;
    return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 16
0
static real
classicon_distance_from(Classicon *cicon, Point *point)
{
  DiaObject *obj = &cicon->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 17
0
static real
grid_object_distance_from(Grid_Object *grid_object, Point *point)
{
  DiaObject *obj = &grid_object->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 18
0
Arquivo: branch.c Projeto: UIKit0/dia
static real
branch_distance_from(Branch *branch, Point *point)
{
  DiaObject *obj = &branch->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 19
0
static real
largepackage_distance_from(LargePackage *pkg, Point *point)
{
  DiaObject *obj = &pkg->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 20
0
static real
chronoref_distance_from(Chronoref *chronoref, Point *point)
{
  DiaObject *obj = &chronoref->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 21
0
static real
analog_clock_distance_from(Analog_Clock *analog_clock, Point *point)
{
  DiaObject *obj = &analog_clock->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 22
0
Arquivo: node.c Projeto: UIKit0/dia
static real
node_distance_from(Node *node, Point *point)
{
  DiaObject *obj = &node->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 23
0
Arquivo: aadlbox.c Projeto: UIKit0/dia
real
aadlbox_distance_from(Aadlbox *aadlbox, Point *point)
{
  DiaObject *obj = &aadlbox->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 24
0
static real
smallpackage_distance_from(SmallPackage *pkg, Point *point)
{
  Object *obj = &pkg->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 25
0
static real
objet_distance_from(Objet *ob, Point *point)
{
  DiaObject *obj = &ob->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 26
0
Arquivo: usecase.c Projeto: GNOME/dia
static real
usecase_distance_from(Usecase *usecase, Point *point)
{
  DiaObject *obj = &usecase->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}
Exemplo n.º 27
0
static real
component_distance_from(Component *cmp, Point *point)
{
  DiaObject *obj = &cmp->element.object;
  return distance_rectangle_point(&obj->bounding_box, point);
}