table_read(): read csv files
This commit is contained in:
parent
354f027b9b
commit
1e3ac96085
|
|
@ -3299,7 +3299,7 @@ void new_polygon(int what)
|
|||
/* closed poly */
|
||||
if(what & END) {
|
||||
/* delete last rubber */
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1);
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1, 0);
|
||||
xctx->nl_polyx[xctx->nl_points] = xctx->nl_polyx[0];
|
||||
xctx->nl_polyy[xctx->nl_points] = xctx->nl_polyy[0];
|
||||
/* add point */
|
||||
|
|
@ -3321,12 +3321,12 @@ void new_polygon(int what)
|
|||
((what & ADD) && xctx->nl_polyx[xctx->nl_points-1] == xctx->nl_polyx[0] &&
|
||||
xctx->nl_polyy[xctx->nl_points-1] == xctx->nl_polyy[0]) ) {
|
||||
xctx->push_undo();
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1);
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1, 0);
|
||||
store_poly(-1, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points, xctx->rectcolor, 0, NULL);
|
||||
/* fprintf(errfp, "new_poly: finish: nl_points=%d\n", xctx->nl_points); */
|
||||
drawtemppolygon(xctx->gc[xctx->rectcolor], NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points);
|
||||
drawtemppolygon(xctx->gc[xctx->rectcolor], NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points, 0);
|
||||
xctx->ui_state &= ~STARTPOLYGON;
|
||||
drawpolygon(xctx->rectcolor, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points, 0, 0);
|
||||
drawpolygon(xctx->rectcolor, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points, 0, 0, 0);
|
||||
my_free(_ALLOC_ID_, &xctx->nl_polyx);
|
||||
my_free(_ALLOC_ID_, &xctx->nl_polyy);
|
||||
xctx->nl_maxpoints = xctx->nl_points = 0;
|
||||
|
|
@ -3334,10 +3334,10 @@ void new_polygon(int what)
|
|||
if(what & RUBBER)
|
||||
{
|
||||
/* fprintf(errfp, "new_poly: RUBBER\n"); */
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1);
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1, 0);
|
||||
xctx->nl_polyy[xctx->nl_points] = xctx->mousey_snap;
|
||||
xctx->nl_polyx[xctx->nl_points] = xctx->mousex_snap;
|
||||
drawtemppolygon(xctx->gc[xctx->rectcolor], NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1);
|
||||
drawtemppolygon(xctx->gc[xctx->rectcolor], NOW, xctx->nl_polyx, xctx->nl_polyy, xctx->nl_points+1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
130
src/draw.c
130
src/draw.c
|
|
@ -609,7 +609,9 @@ void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot,
|
|||
for(j=0;j< symptr->polygons[layer]; ++j)
|
||||
{
|
||||
int dash;
|
||||
int bezier;
|
||||
polygon = &(symptr->poly[layer])[j];
|
||||
bezier = !strboolcmp(get_tok_value(polygon->prop_ptr, "bezier", 0), "true");
|
||||
dash = (disabled == 1) ? 3 : polygon->dash;
|
||||
x = my_malloc(_ALLOC_ID_, sizeof(double) * polygon->points);
|
||||
y = my_malloc(_ALLOC_ID_, sizeof(double) * polygon->points);
|
||||
|
|
@ -618,7 +620,7 @@ void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot,
|
|||
x[k]+= x0;
|
||||
y[k] += y0;
|
||||
}
|
||||
drawpolygon(c, NOW, x, y, polygon->points, polygon->fill, dash); /* added fill */
|
||||
drawpolygon(c, NOW, x, y, polygon->points, polygon->fill, dash, bezier); /* added fill */
|
||||
my_free(_ALLOC_ID_, &x);
|
||||
my_free(_ALLOC_ID_, &y);
|
||||
}
|
||||
|
|
@ -828,8 +830,9 @@ void draw_temp_symbol(int what, GC gc, int n,int layer,short tmp_flip, short rot
|
|||
}
|
||||
for(j=0;j< symptr->polygons[layer]; ++j)
|
||||
{
|
||||
int bezier;
|
||||
polygon = &(symptr->poly[layer])[j];
|
||||
|
||||
bezier = !strboolcmp(get_tok_value(polygon->prop_ptr, "bezier", 0), "true");
|
||||
{ /* scope block so we declare some auxiliary arrays for coord transforms. 20171115 */
|
||||
int k;
|
||||
double *x = my_malloc(_ALLOC_ID_, sizeof(double) * polygon->points);
|
||||
|
|
@ -839,7 +842,7 @@ void draw_temp_symbol(int what, GC gc, int n,int layer,short tmp_flip, short rot
|
|||
x[k] += x0;
|
||||
y[k] += y0;
|
||||
}
|
||||
drawtemppolygon(gc, NOW, x, y, polygon->points);
|
||||
drawtemppolygon(gc, NOW, x, y, polygon->points, bezier);
|
||||
my_free(_ALLOC_ID_, &x);
|
||||
my_free(_ALLOC_ID_, &y);
|
||||
}
|
||||
|
|
@ -1188,33 +1191,6 @@ void drawline(int c, int what, double linex1, double liney1, double linex2, doub
|
|||
i=0;
|
||||
}
|
||||
}
|
||||
void drawbezier(void)
|
||||
{
|
||||
XPoint p[512];
|
||||
int i = 0;
|
||||
double t;
|
||||
double x1=100.0;
|
||||
double y1=-400.0;
|
||||
double x2=500.0;
|
||||
double y2=-800.0;
|
||||
double x3=800.0;
|
||||
double y3=-200.0;
|
||||
double x4=1100.0;
|
||||
double y4=-400.0;
|
||||
double x, y;
|
||||
|
||||
i = 0;
|
||||
for(t = 0; t <= 1.0; t += 0.00390625 /* 1/256 */) {
|
||||
x = pow(1-t, 3) * x1 + 3 * pow(1-t, 2) * t * x2 + 3 * (1-t) * pow(t, 2) * x3 + pow(t, 3) * x4;
|
||||
y = pow(1-t, 3) * y1 + 3 * pow(1-t, 2) * t * y2 + 3 * (1-t) * pow(t, 2) * y3 + pow(t, 3) * y4;
|
||||
p[i].x = (short)X_TO_SCREEN(x);
|
||||
p[i].y = (short)Y_TO_SCREEN(y);
|
||||
i++;
|
||||
}
|
||||
XDrawLines(display, xctx->window, xctx->gc[4], p, i, CoordModeOrigin);
|
||||
XDrawLines(display, xctx->save_pixmap, xctx->gc[4], p, i, CoordModeOrigin);
|
||||
|
||||
}
|
||||
|
||||
void drawtempline(GC gc, int what, double linex1,double liney1,double linex2,double liney2)
|
||||
{
|
||||
|
|
@ -1467,7 +1443,6 @@ void filledarc(int c, int what, double x, double y, double r, double a, double b
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void drawarc(int c, int what, double x, double y, double r, double a, double b, int arc_fill, int dash)
|
||||
{
|
||||
static int i=0;
|
||||
|
|
@ -1561,7 +1536,6 @@ void drawarc(int c, int what, double x, double y, double r, double a, double b,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void filledrect(int c, int what, double rectx1,double recty1,double rectx2,double recty2)
|
||||
{
|
||||
static int i=0;
|
||||
|
|
@ -1630,7 +1604,6 @@ void polygon_bbox(double *x, double *y, int points, double *bx1, double *by1, do
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void arc_bbox(double x, double y, double r, double a, double b,
|
||||
double *bx1, double *by1, double *bx2, double *by2)
|
||||
{
|
||||
|
|
@ -1688,11 +1661,40 @@ void arc_bbox(double x, double y, double r, double a, double b,
|
|||
|
||||
/* Convex Nonconvex Complex */
|
||||
#define Polygontype Nonconvex
|
||||
|
||||
static void drawbezier(Drawable w, GC gc, int c, double *x, double *y, int points, int fill)
|
||||
{
|
||||
XPoint p[512];
|
||||
int i = 0;
|
||||
double t;
|
||||
double xp, yp;
|
||||
|
||||
if(points == 4) {
|
||||
if(gc == xctx->gc[SELLAYER]) for(i = 0; i < points; i++) {
|
||||
drawtemparc(gc, NOW, x[i], y[i], cadhalfdotsize, 0., 360.);
|
||||
}
|
||||
i = 0;
|
||||
for(t = 0; t <= 1.0; t += 0.0078125/* 1/128 */) {
|
||||
xp = pow(1-t, 3) * x[0] + 3 * pow(1-t, 2) * t * x[1] + 3 * (1-t) * pow(t, 2) * x[2] + pow(t, 3) * x[3];
|
||||
yp = pow(1-t, 3) * y[0] + 3 * pow(1-t, 2) * t * y[1] + 3 * (1-t) * pow(t, 2) * y[2] + pow(t, 3) * y[3];
|
||||
p[i].x = (short)X_TO_SCREEN(xp);
|
||||
p[i].y = (short)Y_TO_SCREEN(yp);
|
||||
i++;
|
||||
}
|
||||
XDrawLines(display, w, gc, p, i, CoordModeOrigin);
|
||||
if(fill) {
|
||||
XFillPolygon(display, w, xctx->gcstipple[c], p, i, Polygontype, CoordModeOrigin);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Unused 'what' parameter used in spice data draw_graph()
|
||||
* to avoid unnecessary clipping (what = 0) */
|
||||
void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash)
|
||||
void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash, int flags)
|
||||
{
|
||||
double x1,y1,x2,y2;
|
||||
int fill, bezier;
|
||||
XPoint *p;
|
||||
int i;
|
||||
short sx, sy;
|
||||
|
|
@ -1719,36 +1721,49 @@ void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fil
|
|||
for(i=0;i<points; ++i) p[i].x = (short)X_TO_SCREEN(x[i]);
|
||||
for(i=0;i<points; ++i) p[i].y = (short)Y_TO_SCREEN(y[i]);
|
||||
}
|
||||
fill = xctx->fill_pattern && xctx->fill_type[c] &&
|
||||
poly_fill && (x[0] == x[points-1]) && (y[0] == y[points-1]);
|
||||
bezier = flags && points == 4;
|
||||
if(dash) {
|
||||
char dash_arr[2];
|
||||
dash_arr[0] = dash_arr[1] = (char)dash;
|
||||
XSetDashes(display, xctx->gc[c], 0, dash_arr, 1);
|
||||
XSetLineAttributes (display, xctx->gc[c], XLINEWIDTH(xctx->lw), xDashType, xCap, xJoin);
|
||||
}
|
||||
if(xctx->draw_window) XDrawLines(display, xctx->window, xctx->gc[c], p, points, CoordModeOrigin);
|
||||
if(xctx->draw_pixmap)
|
||||
XDrawLines(display, xctx->save_pixmap, xctx->gc[c], p, points, CoordModeOrigin);
|
||||
if(xctx->fill_pattern && xctx->fill_type[c]){
|
||||
if(poly_fill && (x[0] == x[points-1]) && (y[0] == y[points-1])) {
|
||||
if(xctx->draw_window)
|
||||
XFillPolygon(display, xctx->window, xctx->gcstipple[c], p, points, Polygontype, CoordModeOrigin);
|
||||
if(xctx->draw_pixmap)
|
||||
XFillPolygon(display, xctx->save_pixmap, xctx->gcstipple[c], p, points, Polygontype, CoordModeOrigin);
|
||||
if(xctx->draw_window) {
|
||||
if(bezier) {
|
||||
drawbezier(xctx->window, xctx->gc[c], c, x, y, points, fill);
|
||||
} else {
|
||||
XDrawLines(display, xctx->window, xctx->gc[c], p, points, CoordModeOrigin);
|
||||
}
|
||||
}
|
||||
if(xctx->draw_pixmap) {
|
||||
if(bezier) {
|
||||
drawbezier(xctx->save_pixmap, xctx->gc[c], c, x, y, points, fill);
|
||||
} else {
|
||||
XDrawLines(display, xctx->save_pixmap, xctx->gc[c], p, points, CoordModeOrigin);
|
||||
}
|
||||
}
|
||||
if(fill && !bezier) {
|
||||
if(xctx->draw_window)
|
||||
XFillPolygon(display, xctx->window, xctx->gcstipple[c], p, points, Polygontype, CoordModeOrigin);
|
||||
if(xctx->draw_pixmap)
|
||||
XFillPolygon(display, xctx->save_pixmap, xctx->gcstipple[c], p, points, Polygontype, CoordModeOrigin);
|
||||
}
|
||||
if(dash) {
|
||||
XSetLineAttributes (display, xctx->gc[c], XLINEWIDTH(xctx->lw) ,LineSolid, LINECAP , LINEJOIN);
|
||||
}
|
||||
my_free(_ALLOC_ID_, &p);
|
||||
}
|
||||
|
||||
void drawtemppolygon(GC gc, int what, double *x, double *y, int points)
|
||||
void drawtemppolygon(GC gc, int what, double *x, double *y, int points, int flags)
|
||||
{
|
||||
double x1,y1,x2,y2;
|
||||
double sx1,sy1,sx2,sy2;
|
||||
XPoint *p;
|
||||
int i;
|
||||
short sx, sy;
|
||||
int bezier;
|
||||
if(!has_x) return;
|
||||
polygon_bbox(x, y, points, &x1,&y1,&x2,&y2);
|
||||
sx1=X_TO_SCREEN(x1);
|
||||
|
|
@ -1757,18 +1772,25 @@ void drawtemppolygon(GC gc, int what, double *x, double *y, int points)
|
|||
sy2=Y_TO_SCREEN(y2);
|
||||
if( rectclip(xctx->areax1,xctx->areay1,xctx->areax2,xctx->areay2,&sx1,&sy1,&sx2,&sy2) ) {
|
||||
|
||||
bezier = flags && points == 4;
|
||||
if((fix_broken_tiled_fill || !_unix) && gc == xctx->gctiled) {
|
||||
MyXCopyAreaDouble(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
x1, y1, x2, y2, x1, y1, xctx->lw);
|
||||
x1 - cadhalfdotsize, y1 - cadhalfdotsize,
|
||||
x2 + cadhalfdotsize, y2 + cadhalfdotsize,
|
||||
x1 - cadhalfdotsize, y1 - cadhalfdotsize, xctx->lw);
|
||||
} else {
|
||||
p = my_malloc(_ALLOC_ID_, sizeof(XPoint) * points);
|
||||
for(i=0;i<points; ++i) {
|
||||
clip_xy_to_short(X_TO_SCREEN(x[i]), Y_TO_SCREEN(y[i]), &sx, &sy);
|
||||
p[i].x = sx;
|
||||
p[i].y = sy;
|
||||
if(bezier) {
|
||||
drawbezier(xctx->window, gc, 0, x, y, points, 0);
|
||||
} else {
|
||||
p = my_malloc(_ALLOC_ID_, sizeof(XPoint) * points);
|
||||
for(i=0;i<points; ++i) {
|
||||
clip_xy_to_short(X_TO_SCREEN(x[i]), Y_TO_SCREEN(y[i]), &sx, &sy);
|
||||
p[i].x = sx;
|
||||
p[i].y = sy;
|
||||
}
|
||||
XDrawLines(display, xctx->window, gc, p, points, CoordModeOrigin);
|
||||
my_free(_ALLOC_ID_, &p);
|
||||
}
|
||||
XDrawLines(display, xctx->window, gc, p, points, CoordModeOrigin);
|
||||
my_free(_ALLOC_ID_, &p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4140,8 +4162,10 @@ void draw(void)
|
|||
drawarc(cc, ADD, a->x, a->y, a->r, a->a, a->b, a->fill, a->dash);
|
||||
}
|
||||
if(xctx->enable_layer[c]) for(i=0;i<xctx->polygons[c]; ++i) {
|
||||
int bezier;
|
||||
xPoly *p = &xctx->poly[c][i];
|
||||
drawpolygon(cc, NOW, p->x, p->y, p->points, p->fill, p->dash);
|
||||
bezier = !strboolcmp(get_tok_value(p->prop_ptr, "bezier", 0), "true");
|
||||
drawpolygon(cc, NOW, p->x, p->y, p->points, p->fill, p->dash, bezier);
|
||||
}
|
||||
if(use_hash) init_inst_iterator(&ctx, x1, y1, x2, y2);
|
||||
else i = -1;
|
||||
|
|
|
|||
|
|
@ -1131,6 +1131,7 @@ static int edit_arc_property(void)
|
|||
static int edit_polygon_property(void)
|
||||
{
|
||||
int old_fill;
|
||||
int oldbezier, bezier;
|
||||
int k;
|
||||
double x1=0., y1=0., x2=0., y2=0.;
|
||||
int c, i, ii, old_dash;
|
||||
|
|
@ -1159,6 +1160,7 @@ static int edit_polygon_property(void)
|
|||
i = xctx->sel_array[ii].n;
|
||||
c = xctx->sel_array[ii].col;
|
||||
|
||||
oldbezier = !strboolcmp(get_tok_value(xctx->poly[c][i].prop_ptr,"bezier",0),"true") ;
|
||||
if(oldprop && preserve == 1) {
|
||||
set_different_token(&xctx->poly[c][i].prop_ptr, (char *) tclgetvar("retval"), oldprop);
|
||||
} else {
|
||||
|
|
@ -1166,6 +1168,7 @@ static int edit_polygon_property(void)
|
|||
}
|
||||
old_fill = xctx->poly[c][i].fill;
|
||||
old_dash = xctx->poly[c][i].dash;
|
||||
bezier = !strboolcmp(get_tok_value(xctx->poly[c][i].prop_ptr,"bezier",0),"true") ;
|
||||
if( !strboolcmp(get_tok_value(xctx->poly[c][i].prop_ptr,"fill",0),"true") )
|
||||
xctx->poly[c][i].fill =1;
|
||||
else
|
||||
|
|
@ -1176,7 +1179,7 @@ static int edit_polygon_property(void)
|
|||
xctx->poly[c][i].dash = (short)(d >= 0 ? d : 0);
|
||||
} else
|
||||
xctx->poly[c][i].dash = 0;
|
||||
if(old_fill != xctx->poly[c][i].fill || old_dash != xctx->poly[c][i].dash) {
|
||||
if(old_fill != xctx->poly[c][i].fill || old_dash != xctx->poly[c][i].dash || oldbezier != bezier) {
|
||||
if(!drw) {
|
||||
bbox(START,0.0,0.0,0.0,0.0);
|
||||
drw = 1;
|
||||
|
|
@ -1187,7 +1190,7 @@ static int edit_polygon_property(void)
|
|||
if(k==0 || xctx->poly[c][i].x[k] > x2) x2 = xctx->poly[c][i].x[k];
|
||||
if(k==0 || xctx->poly[c][i].y[k] > y2) y2 = xctx->poly[c][i].y[k];
|
||||
}
|
||||
bbox(ADD, x1, y1, x2, y2);
|
||||
bbox(ADD, x1-cadhalfdotsize, y1-cadhalfdotsize, x2+cadhalfdotsize, y2+cadhalfdotsize);
|
||||
}
|
||||
}
|
||||
if(drw) {
|
||||
|
|
|
|||
|
|
@ -305,8 +305,10 @@ void draw_selection(GC g, int interruptable)
|
|||
break;
|
||||
case POLYGON:
|
||||
{
|
||||
int bezier;
|
||||
double *x = my_malloc(_ALLOC_ID_, sizeof(double) *xctx->poly[c][n].points);
|
||||
double *y = my_malloc(_ALLOC_ID_, sizeof(double) *xctx->poly[c][n].points);
|
||||
bezier = !strboolcmp(get_tok_value(xctx->poly[c][n].prop_ptr, "bezier", 0), "true");
|
||||
if(xctx->poly[c][n].sel==SELECTED || xctx->poly[c][n].sel==SELECTED1) {
|
||||
for(k=0;k<xctx->poly[c][n].points; ++k) {
|
||||
if( xctx->poly[c][n].sel==SELECTED || xctx->poly[c][n].selected_point[k]) {
|
||||
|
|
@ -324,7 +326,7 @@ void draw_selection(GC g, int interruptable)
|
|||
y[k] = xctx->poly[c][n].y[k];
|
||||
}
|
||||
}
|
||||
drawtemppolygon(g, NOW, x, y, xctx->poly[c][n].points);
|
||||
drawtemppolygon(g, NOW, x, y, xctx->poly[c][n].points, bezier);
|
||||
}
|
||||
my_free(_ALLOC_ID_, &x);
|
||||
my_free(_ALLOC_ID_, &y);
|
||||
|
|
|
|||
|
|
@ -1300,7 +1300,10 @@ int table_read(const char *f)
|
|||
}
|
||||
line_ptr = line;
|
||||
while(*line_ptr) { /* non empty line ? */
|
||||
if(*line_ptr != ' ' && *line_ptr != '\t' && *line_ptr != '\n') empty = 0;
|
||||
if(*line_ptr != ' ' && *line_ptr != '\t' && *line_ptr != '\n') {
|
||||
empty = 0;
|
||||
break;
|
||||
}
|
||||
line_ptr++;
|
||||
}
|
||||
if(empty) {
|
||||
|
|
@ -1317,9 +1320,9 @@ int table_read(const char *f)
|
|||
line_ptr = line;
|
||||
field = 0;
|
||||
#ifdef __unix__
|
||||
while( (line_tok = strtok_r(line_ptr, " \t\n", &line_save)) ) {
|
||||
while( (line_tok = strtok_r(line_ptr, ", \t\n", &line_save)) ) {
|
||||
#else
|
||||
while( (line_tok = my_strtok_r(line_ptr, " \t\n", "", 0, &line_save)) ) {
|
||||
while( (line_tok = my_strtok_r(line_ptr, ", \t\n", "", 0, &line_save)) ) {
|
||||
#endif
|
||||
line_ptr = NULL;
|
||||
/* dbg(1,"%s ", line_tok); */
|
||||
|
|
|
|||
|
|
@ -5212,7 +5212,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
|
||||
/* test
|
||||
* Testmode ... */
|
||||
else if(0 && !strcmp(argv[1], "test") )
|
||||
else if(1 && !strcmp(argv[1], "test") )
|
||||
{
|
||||
Iterator_ctx ctx;
|
||||
Objectentry *objectptr;
|
||||
|
|
@ -5264,7 +5264,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
Tcl_ResetResult(interp);
|
||||
}
|
||||
else if(argc > 2 && atoi(argv[2]) == 3) {
|
||||
drawbezier();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
14
src/select.c
14
src/select.c
|
|
@ -867,9 +867,13 @@ void unselect_all(int dr)
|
|||
if(xctx->poly[c][i].sel)
|
||||
{
|
||||
int k;
|
||||
int bezier = !strboolcmp(get_tok_value(xctx->poly[c][i].prop_ptr, "bezier", 0), "true");
|
||||
for(k=0;k<xctx->poly[c][i].points; ++k) xctx->poly[c][i].selected_point[k] = 0;
|
||||
xctx->poly[c][i].sel = 0;
|
||||
if(dr) drawtemppolygon(xctx->gctiled, NOW, xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points);
|
||||
if(dr) {
|
||||
drawtemppolygon(xctx->gctiled, NOW,
|
||||
xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points, bezier);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1094,6 +1098,7 @@ void select_polygon(int c, int i, unsigned short select_mode, int fast )
|
|||
{
|
||||
char str[1024]; /* overflow safe */
|
||||
char s[256]; /* overflow safe */
|
||||
int bezier;
|
||||
if(!fast)
|
||||
{
|
||||
my_strncpy(s,xctx->poly[c][i].prop_ptr!=NULL?xctx->poly[c][i].prop_ptr:"<NULL>",S(s));
|
||||
|
|
@ -1104,12 +1109,15 @@ void select_polygon(int c, int i, unsigned short select_mode, int fast )
|
|||
my_snprintf(str, S(str), "n=%4d x0 = %.16g y0 = %.16g ...", i, xctx->poly[c][i].x[0], xctx->poly[c][i].y[0]);
|
||||
statusmsg(str,1);
|
||||
}
|
||||
bezier = !strboolcmp(get_tok_value(xctx->poly[c][i].prop_ptr, "bezier", 0), "true");
|
||||
xctx->poly[c][i].sel = select_mode;
|
||||
if(select_mode) {
|
||||
drawtemppolygon(xctx->gc[SELLAYER], NOW, xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points);
|
||||
drawtemppolygon(xctx->gc[SELLAYER], NOW,
|
||||
xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points, bezier);
|
||||
}
|
||||
else {
|
||||
drawtemppolygon(xctx->gctiled, NOW, xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points);
|
||||
drawtemppolygon(xctx->gctiled, NOW,
|
||||
xctx->poly[c][i].x, xctx->poly[c][i].y, xctx->poly[c][i].points, bezier);
|
||||
}
|
||||
if(xctx->poly[c][i].sel == SELECTED) set_first_sel(POLYGON, i, c);
|
||||
xctx->need_reb_sel_arr=1;
|
||||
|
|
|
|||
|
|
@ -1389,9 +1389,8 @@ extern void drawtemprect(GC gc, int what, double rectx1,double recty1,
|
|||
extern void drawtemparc(GC gc, int what, double x, double y, double r, double a, double b);
|
||||
extern void drawarc(int c, int what, double x, double y, double r, double a, double b, int arc_fill, int dash);
|
||||
extern void filledarc(int c, int what, double x, double y, double r, double a, double b);
|
||||
extern void drawtemppolygon(GC gc, int what, double *x, double *y, int points);
|
||||
extern void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash);
|
||||
extern void drawbezier(void);
|
||||
extern void drawtemppolygon(GC gc, int what, double *x, double *y, int points, int flags);
|
||||
extern void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash, int flags);
|
||||
extern void draw_temp_symbol(int what, GC gc, int n,int layer,
|
||||
short tmp_flip, short tmp_rot, double xoffset, double yoffset);
|
||||
extern void draw_temp_string(GC gc,int what, const char *str, short rot, short flip, int hcenter, int vcenter,
|
||||
|
|
|
|||
Loading…
Reference in New Issue