Exemplo n.º 1
0
Arquivo: getTt.c Projeto: AZed/uvcdat
    struct table_text *getTt(char *str)
      {
       struct table_text *p,*p1;

/*		Search text table for attributes to be copied.	*/

       for (p1=&Tt_tab;p1 != NULL;p1=p1->next)
	  if (strcmp(str,p1->name) == 0) break;
       if (p1 == NULL)
	 {
	  err_warn(0,fperr,
	   "Warning - Text attributes (%s) can't be found for get.\n",str);
	  return NULL;
	 }

/*		Create a new table structure and copy to it.	*/

       if((p=(struct table_text *)malloc(sizeof(struct table_text)))==NULL)
	 {
	  err_warn(1,fperr,
	    "Error - memory for getting Text table (%s) not found.\n",str);
	  return 0;
	 }

       strcpy(p->name,p1->name);
       strcpy(p->proj,p1->proj);
       p->txfont=p1->txfont;
       p->txpr=p1->txpr;
       p->txexp=p1->txexp;
       p->txsp=p1->txsp;
       p->txci=p1->txci;
       p->txfci=p1->txfci;
       p->priority=p1->priority;
       p->tvp[0]=p1->tvp[0];
       p->tvp[1]=p1->tvp[1];
       p->tvp[2]=p1->tvp[2];
       p->tvp[3]=p1->tvp[3];
       p->twc[0]=p1->twc[0];
       p->twc[1]=p1->twc[1];
       p->twc[2]=p1->twc[2];
       p->twc[3]=p1->twc[3];
       if (copy_points( &p->tx, p1->tx) == 0) return 0;
       if (copy_points( &p->ty, p1->ty) == 0) return 0;
       if (copy_strings( &p->ts, p1->ts) == 0) return 0;
       p->next=NULL;

       return p;
      }
Exemplo n.º 2
0
Arquivo: getTl.c Projeto: AZed/uvcdat
    struct table_line *getTl(char *str)
      {
        float			deflt=1.0;
        struct table_line 	*p,*p1;
        extern int		copy_points();

/*		Search line table for attributes to be copied.	*/

       for (p1=&Tl_tab;p1 != NULL;p1=p1->next)
	  if (strcmp(str,p1->name) == 0) break;
       if (p1 == NULL)
	 {
	  err_warn(0,fperr,
	   "Warning - Line attributes (%s) can't be found for get.\n",str);
	  return NULL;
	 }

/*		Create a new line table structure and copy to it.	*/

       if((p=(struct table_line *)malloc(sizeof(struct table_line)))==NULL)
	 {
	  err_warn(1,fperr,
	    "Error - memory for getting Line table (%s) not found.\n",str);
	  return 0;
	 }

       strcpy(p->name,p1->name);
       strcpy(p->proj,p1->proj);
       copy_int_array( &p->ltyp, &p1->ltyp, &p->ltyp_size, p1->ltyp_size, 1 );
       copy_float_array( &p->lwsf, &p1->lwsf, &p->lwsf_size, p1->lwsf_size, &deflt );
       copy_int_array( &p->lci, &p1->lci, &p->lci_size, p1->lci_size, 241 );
       p->priority=p1->priority;
       p->lvp[0]=p1->lvp[0];
       p->lvp[1]=p1->lvp[1];
       p->lvp[2]=p1->lvp[2];
       p->lvp[3]=p1->lvp[3];
       p->lwc[0]=p1->lwc[0];
       p->lwc[1]=p1->lwc[1];
       p->lwc[2]=p1->lwc[2];
       p->lwc[3]=p1->lwc[3];
       if (copy_points( &p->lx, p1->lx) == 0) return 0;
       if (copy_points( &p->ly, p1->ly) == 0) return 0;
       p->next=NULL;

       return p;
      }
Exemplo n.º 3
0
	/**
	 copy from one to another.

	 \param other the other to copy from
	 */
	void copy(const PointHolder & other)
	{
		copy_points(other);
	}
Exemplo n.º 4
0
void
spline_line(F_spline *s)
{
    F_line	   *l;
    F_point        *tmppoint;

    /* Now we turn s into a line */
    if ((l = create_line()) == NULL)
	return;

    if (open_spline(s)) {
	l->type = T_POLYLINE;
	l->points = s->points;
    } else {
	l->type = T_POLYGON;
	if ((l->points = create_point())==NULL)
	    return;
	tmppoint = last_point(s->points);
	l->points->x = tmppoint->x;
	l->points->y = tmppoint->y;
	l->points->next = copy_points(s->points);
    }
    l->style = s->style;
    l->thickness = s->thickness;
    l->pen_color = s->pen_color;
    l->fill_color = s->fill_color;
    l->depth = s->depth;
    l->style_val = s->style_val;
    l->cap_style = s->cap_style;
    l->join_style = cur_joinstyle;
    l->pen_style = s->pen_style;
    l->radius = DEFAULT;
    l->fill_style = s->fill_style;
    if (s->for_arrow) {
	l->for_arrow = create_arrow();
	l->for_arrow->type = s->for_arrow->type;
	l->for_arrow->style = s->for_arrow->style;
	l->for_arrow->thickness = s->for_arrow->thickness;
	l->for_arrow->wd = s->for_arrow->wd;
	l->for_arrow->ht = s->for_arrow->ht;
    } else {
	l->for_arrow = NULL;
    }
    if (s->back_arrow) {
	l->back_arrow = create_arrow();
	l->back_arrow->type = s->back_arrow->type;
	l->back_arrow->style = s->back_arrow->style;
	l->back_arrow->thickness = s->back_arrow->thickness;
	l->back_arrow->wd = s->back_arrow->wd;
	l->back_arrow->ht = s->back_arrow->ht;
    } else {
	l->back_arrow = NULL;
    }

    /* now we have finished creating the line, we can get rid of the spline */
    delete_spline(s);

    /* and put in the new line */
    mask_toggle_linemarker(l);
    list_add_line(&objects.lines, l);
    redisplay_line(l);
    set_action_object(F_CONVERT, O_SPLINE);
    set_latestline(l);
    set_modifiedflag();
    return;
}
Exemplo n.º 5
0
void
line_spline(F_line *l, int type_value)
{
    F_spline	   *s;

    if (num_points(l->points) < CLOSED_SPLINE_MIN_NUM_POINTS) {
	put_msg("Not enough points for a spline");
	beep();
	return;
    }

    if ((s = create_spline()) == NULL)
        return;
    s->type = type_value;

    if (l->type == T_POLYGON)
	s->points = copy_points(l->points->next);
    else
	s->points = copy_points(l->points);

    s->style = l->style;
    s->thickness = l->thickness;
    s->pen_color = l->pen_color;
    s->fill_color = l->fill_color;
    s->depth = l->depth;
    s->style_val = l->style_val;
    s->cap_style = l->cap_style;
    s->pen_style = l->pen_style;
    s->fill_style = l->fill_style;
    s->sfactors = NULL;
    s->next = NULL;

    if (l->for_arrow) {
	s->for_arrow = create_arrow();
	s->for_arrow->type = l->for_arrow->type;
	s->for_arrow->style = l->for_arrow->style;
	s->for_arrow->thickness = l->for_arrow->thickness;
	s->for_arrow->wd = l->for_arrow->wd;
	s->for_arrow->ht = l->for_arrow->ht;
    } else {
	s->for_arrow = NULL;
    }
    if (l->back_arrow) {
	s->back_arrow = create_arrow();
	s->back_arrow->type = l->back_arrow->type;
	s->back_arrow->style = l->back_arrow->style;
	s->back_arrow->thickness = l->back_arrow->thickness;
	s->back_arrow->wd = l->back_arrow->wd;
	s->back_arrow->ht = l->back_arrow->ht;
    } else {
	s->back_arrow = NULL;
    }
    /* A spline must have an s parameter for each point */
    if (!make_sfactors(s)) {
	free_spline(&s);
	return;
    }

    /* Get rid of the line and draw the new spline */
    delete_line(l);
    /* now put back the new spline */
    mask_toggle_splinemarker(s);
    list_add_spline(&objects.splines, s);
    redisplay_spline(s);
    set_action_object(F_CONVERT, O_POLYLINE);
    set_latestspline(s);
    set_modifiedflag();
}
Exemplo n.º 6
0
static Bool
self_similar_normalized (struct state *st,
			 int       iterations,
			 double    x1,
			 double    y1,
			 double    x2,
			 double    y2,
			 double    maximum_x,
			 double    maximum_y,
			 double    minimum_x,
			 double    minimum_y,
			 int       segment_count,
			 Position* points)
{
    if (iterations == 0)
    {
	double delta_x = maximum_x - minimum_x;
	double delta_y = maximum_y - minimum_y;
	st->color_index = (int)(((double)(st->line_count * st->color_count))
			    / ((double)st->total_lines));
	++st->line_count;
	XSetForeground (st->dpy, st->context, st->colors [st->color_index].pixel);
	if (st->plot_maximum_x < x1) st->plot_maximum_x = x1;
	if (st->plot_maximum_x < x2) st->plot_maximum_x = x2;
	if (st->plot_maximum_y < y1) st->plot_maximum_y = y1;
	if (st->plot_maximum_y < y2) st->plot_maximum_y = y2;
	if (st->plot_minimum_x > x1) st->plot_minimum_x = x1;
	if (st->plot_minimum_x > x2) st->plot_minimum_x = x2;
	if (st->plot_minimum_y > y1) st->plot_minimum_y = y1;
	if (st->plot_minimum_y > y2) st->plot_minimum_y = y2;
	XDrawLine (st->dpy, st->pixmap, st->context,
		   (int)(((x1 - minimum_x) / delta_x) * st->width),
		   (int)(((maximum_y - y1) / delta_y) * st->height),
		   (int)(((x2 - minimum_x) / delta_x) * st->width),
		   (int)(((maximum_y - y2) / delta_y) * st->height));
    }
    else
    {
	int       index = 0;
	double    next_x = 0.0;
	double    next_y = 0.0;
	Position* replacement = (Position*)NULL;
	double    x = 0.0;
	double    y = 0.0;

	replacement = (Position*)(malloc (segment_count * sizeof (Segment)));
	copy_points (segment_count, points, replacement);
	assert (fabs ((replacement [segment_count - 1].x) - 1.0) < EPSILON);
	assert (fabs (replacement [segment_count - 1].y) < EPSILON);
	realign (x1, y1, x2, y2, segment_count, replacement);
        /* jwz: I don't understand what these assertions are supposed to
           be detecting, but let's just bail on the fractal instead of
           crashing. */
/*	assert (fabs (x2 - (replacement [segment_count - 1].x)) < EPSILON);
	assert (fabs (y2 - (replacement [segment_count - 1].y)) < EPSILON);*/
        if (fabs (x2 - (replacement [segment_count - 1].x)) >= EPSILON ||
            fabs (y2 - (replacement [segment_count - 1].y)) >= EPSILON) {
          free (replacement);
          return False;
        }
	x = x1;
	y = y1;
	for (index = 0; index < segment_count; ++index)
	{
	    next_x = replacement [index].x;
	    next_y = replacement [index].y;
	    if (!self_similar_normalized (st, 
				     iterations - 1, x, y, next_x, next_y,
				     maximum_x, maximum_y,
				     minimum_x, minimum_y,
				     segment_count, points)) {
              free(replacement);
              return False;
            }
	    x = next_x;
	    y = next_y;
	}
        free(replacement);
    }
    return True;
}
Exemplo n.º 7
0
Arquivo: getTt.c Projeto: AZed/uvcdat
    int chk_mov_Tt (struct table_text *pt)

      {
       struct table_text *ptb,*ptab;



       if (pt == NULL) return 0;
       	for (ptb=ptab=&Tt_tab;
		ptab!=NULL && cmpnbl(pt->name,ptab->name)!=0;
			ptb=ptab,ptab=ptab->next);

/*		Check if it's trying to overwrite the default.		*/

         if (ptab == &Tt_tab)
	  {
	   err_warn(1,fperr,"Error - can't replace the default (Tt_%s).\n",
				pt->name);
	   free((char *)pt);
	   return 0;
	  }

	if (ptab == NULL)
	  {
	   ptb->next=ptab=pt;
	  }
	else
	  {
/* 	    if (pt->txfont != ptab->txfont ) printf("txfont diff %d,%d\n",pt->txfont, ptab->txfont); */
/* 	    if (pt->txpr != ptab->txpr) printf("txpr diff %d,%d\n",pt->txpr, ptab->txpr); */
/* 	    if (pt->txexp != ptab->txexp ) printf("txexp diff\n"); */
/* 	    if (pt->txsp != ptab->txsp) printf("txsp diff\n");	        */
/* 	    if ( pt->txci != ptab->txci ) printf("txci diff %d,%d\n",pt->txci, ptab->txci); */
/* 	    if ( pt->priority != ptab->priority ) printf("priority diff\n"); */
/* 	    if (ptab->tvp[0] != pt->tvp[0] || ptab->tvp[1] != pt->tvp[1] || */
/* 		ptab->tvp[2] != pt->tvp[2] || ptab->tvp[3] != pt->tvp[3] ) printf("tvp diff\n"); */
/* 	    if ( ptab->twc[0] != pt->twc[0] || ptab->twc[1] != pt->twc[1] || */
/* 		 ptab->twc[2] != pt->twc[2] || ptab->twc[3] != pt->twc[3] ) printf("twc diff\n"); */
/* 	    if (compare_points(ptab->tx, pt->tx )!=1) printf("tx difff\n"); */
/* 	    if (compare_points(ptab->ty, pt->ty )!=1) printf("ty difff\n"); */
/* 	    if (compare_strings(ptab->ts, pt->ts )!=1) printf("ts diff %s %s\n",ptab->ts,pt->ts); */
/* 	    if (strcmp(ptab->proj,pt->proj) != 0) printf("proj diff\n"); */
	       
	   if (pt->txfont != ptab->txfont || pt->txpr != ptab->txpr ||
	       pt->txexp != ptab->txexp || pt->txsp != ptab->txsp ||
	       pt->txci != ptab->txci || pt->txfci != ptab->txfci || 
	       pt->priority != ptab->priority ||
               ptab->tvp[0] != pt->tvp[0] || ptab->tvp[1] != pt->tvp[1] ||
               ptab->tvp[2] != pt->tvp[2] || ptab->tvp[3] != pt->tvp[3] ||
               ptab->twc[0] != pt->twc[0] || ptab->twc[1] != pt->twc[1] ||
               ptab->twc[2] != pt->twc[2] || ptab->twc[3] != pt->twc[3] ||
               compare_points(ptab->tx, pt->tx )!=1 ||
	       compare_points(ptab->ty, pt->ty )!=1 ||
               compare_strings(ptab->ts, pt->ts )!=1 ||
	       (strcmp(ptab->proj,pt->proj) != 0)
	       )
	     {
	       strcpy(ptab->proj,pt->proj);
	       ptab->txfont=pt->txfont;
	       ptab->txpr=pt->txpr;
	       ptab->txexp=pt->txexp;
	       ptab->txsp=pt->txsp;
	       ptab->txci=pt->txci;
	       ptab->txfci=pt->txfci;
	       ptab->priority=pt->priority;
	       ptab->tvp[0]=pt->tvp[0];
	       ptab->tvp[1]=pt->tvp[1];
	       ptab->tvp[2]=pt->tvp[2];
	       ptab->tvp[3]=pt->tvp[3];
	       ptab->twc[0]=pt->twc[0];
	       ptab->twc[1]=pt->twc[1];
	       ptab->twc[2]=pt->twc[2];
	       ptab->twc[3]=pt->twc[3];
	       free_points( &ptab->tx );
	       free_points( &ptab->ty );
	       free_strings( &ptab->ts );
	       if (copy_points( &ptab->tx, pt->tx) == 0) return 0;
	       if (copy_points( &ptab->ty, pt->ty) == 0) return 0;
	       if (copy_strings( &ptab->ts, pt->ts) == 0) return 0;
	       free_points( &pt->tx );
	       free_points( &pt->ty );
	       free_strings( &pt->ts );
	       check_d_text(ptab->name);
	     }
	   free((char *)pt);
	   pt=NULL;
	  }
	if (!Inactive && fpout != NULL) prtTt(fpout,ptab);
	return 1;
      } 
Exemplo n.º 8
0
Arquivo: getTl.c Projeto: AZed/uvcdat
    int chk_mov_Tl (struct table_line *pt)

      {
       float		 deflt=1.0;
       struct table_line *ptb,*ptab;
       extern int	 copy_points();
       extern void	 free_points();

       if (pt == NULL) return 0;
       	for (ptb=ptab=&Tl_tab;
		ptab!=NULL && cmpnbl(pt->name,ptab->name)!=0;
			ptb=ptab,ptab=ptab->next);

/*		Check if it's trying to overwrite the default.		*/

         if (ptab == &Tl_tab)
	  {
	   err_warn(1,fperr,"Error - can't replace the default (Tl_%s).\n",
				pt->name);
	   free((char *)pt);
	   return 0;
	  }

	if (ptab == NULL)
	  {
	   ptb->next=ptab=pt;
	  }
	else
	  {
	   if (pt->ltyp != ptab->ltyp || pt->lwsf != ptab->lwsf ||
	       pt->lci != ptab->lci || pt->priority != ptab->priority ||
               ptab->lvp[0] != pt->lvp[0] || ptab->lvp[1] != pt->lvp[1] ||
               ptab->lvp[2] != pt->lvp[2] || ptab->lvp[3] != pt->lvp[3] ||
               ptab->lwc[0] != pt->lwc[0] || ptab->lwc[1] != pt->lwc[1] ||
               ptab->lwc[2] != pt->lwc[2] || ptab->lwc[3] != pt->lwc[3] ||
               ptab->lx != pt->lx || ptab->ly != pt->ly || (strcmp(ptab->proj,pt->proj) != 0)
               )
	     {
	      strcpy(ptab->proj,pt->proj);
	      copy_int_array( &ptab->ltyp,&pt->ltyp,&ptab->ltyp_size,pt->ltyp_size, 1 );
	      copy_float_array(&ptab->lwsf,&pt->lwsf,&ptab->lwsf_size,pt->lwsf_size,&deflt);
	      copy_int_array( &ptab->lci, &pt->lci, &ptab->lci_size, pt->lci_size, 241 );
              ptab->priority=pt->priority;
	      ptab->lvp[0]=pt->lvp[0];
	      ptab->lvp[1]=pt->lvp[1];
	      ptab->lvp[2]=pt->lvp[2];
	      ptab->lvp[3]=pt->lvp[3];
	      ptab->lwc[0]=pt->lwc[0];
	      ptab->lwc[1]=pt->lwc[1];
	      ptab->lwc[2]=pt->lwc[2];
	      ptab->lwc[3]=pt->lwc[3];
              free_points( &ptab->lx );
              free_points( &ptab->ly );
	      if (copy_points( &ptab->lx, pt->lx) == 0) return 0;
	      if (copy_points( &ptab->ly, pt->ly) == 0) return 0;
              free_points( &pt->lx );
              free_points( &pt->ly );
              if (pt->ltyp != NULL) free((char *) pt->ltyp); pt->ltyp = NULL;
              if (pt->lwsf != NULL) free((char *) pt->lwsf); pt->lwsf = NULL;
              if (pt->lci != NULL) free((char *) pt->lci); pt->lci = NULL;
	      free((char *)pt);
	      pt=NULL;
	      check_d_line(ptab->name);
	     }
	  }
	if (!Inactive && fpout != NULL) prtTl(fpout,ptab);
	return 1;
       }