FIX_BROKEN_TILED_FILL can now be changed runtime (fix_broken_tiled_fill)
This commit is contained in:
parent
9316878559
commit
f3230ceb42
|
|
@ -511,6 +511,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li><kbd> abort_operation</kbd></li><pre>
|
||||
|
|
@ -668,6 +669,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
<li><kbd> currsch </kbd> hierarchy level of current schematic (start at 0) </li>
|
||||
<li><kbd> debug_var </kbd> debug level (0 = no debug, 1, 2, 3,...) </li>
|
||||
<li><kbd> draw_window </kbd> direct draw into window </li>
|
||||
<li><kbd> fix_broken_tiled_fill </kbd> get drawing method setting (for broken GPUs) </li>
|
||||
<li><kbd> format </kbd> alternate format attribute to use in netlist (or NULL) </li>
|
||||
<li><kbd> graph_lastsel </kbd> number of last graph that was clicked </li>
|
||||
<li><kbd> gridlayer </kbd> layer number for grid </li>
|
||||
|
|
@ -1060,6 +1062,8 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
afterward </pre>
|
||||
<li><kbd> reset_flags</kbd></li><pre>
|
||||
Reset cached instance and symbol cached flags (inst->flags, sym->flags) </pre>
|
||||
<li><kbd> resetwin create_pixmap clear_pixmap force w h</kbd></li><pre>
|
||||
internal command: calls resetwin() </pre>
|
||||
<li><kbd> resolved_net [net]</kbd></li><pre>
|
||||
if 'net' is given return its topmost full hierarchy name
|
||||
else returns the topmost full hierarchy name of selected net/pin/label.
|
||||
|
|
@ -1141,6 +1145,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
<li><kbd> color_ps </kbd> set color psoscript (1 or 0) </li>
|
||||
<li><kbd> constrained_move </kbd> set constrained move (1=horiz, 2=vert, 0=none) </li>
|
||||
<li><kbd> draw_window </kbd> set drawing to window (1 or 0) </li>
|
||||
<li><kbd> fix_broken_tiled_fill </kbd> alternate drawing method for broken GPUs </li>
|
||||
<li><kbd> format </kbd> set name of custom format attribute used for netlisting </li>
|
||||
<li><kbd> header_text </kbd> set header metadata (used for license info) </li>
|
||||
<li><kbd> hide_symbols </kbd> set to 0,1,2 for various hiding level of symbols </li>
|
||||
|
|
@ -1328,7 +1333,6 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -3452,17 +3452,17 @@ void select_rect(int what, int select)
|
|||
{
|
||||
RECTORDER(xctx->nl_xr,xctx->nl_yr,xctx->nl_xr2,xctx->nl_yr2);
|
||||
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
/*
|
||||
* MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
* xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
*/
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
/*
|
||||
* MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
* xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
*/
|
||||
|
||||
MyXCopyAreaDouble(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
xctx->nl_xr, xctx->nl_yr, xctx->nl_xr2, xctx->nl_yr2, xctx->nl_xr, xctx->nl_yr, xctx->lw);
|
||||
#else
|
||||
drawtemprect(xctx->gctiled, NOW, xctx->nl_xr,xctx->nl_yr,xctx->nl_xr2,xctx->nl_yr2);
|
||||
#endif
|
||||
MyXCopyAreaDouble(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
xctx->nl_xr, xctx->nl_yr, xctx->nl_xr2, xctx->nl_yr2, xctx->nl_xr, xctx->nl_yr, xctx->lw);
|
||||
} else {
|
||||
drawtemprect(xctx->gctiled, NOW, xctx->nl_xr,xctx->nl_yr,xctx->nl_xr2,xctx->nl_yr2);
|
||||
}
|
||||
|
||||
/* draw_selection(xctx->gc[SELLAYER], 0); */
|
||||
select_inside(xctx->nl_xr,xctx->nl_yr,xctx->nl_xr2,xctx->nl_yr2, xctx->nl_sel);
|
||||
|
|
|
|||
|
|
@ -992,17 +992,17 @@ void draw_crosshair(int del)
|
|||
xctx->draw_pixmap = 0;
|
||||
xctx->draw_window = 1;
|
||||
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
0, (int)Y_TO_SCREEN(xctx->prev_crossy) - 2 * INT_WIDTH(xctx->lw),
|
||||
xctx->xrect[0].width, 4 * INT_WIDTH(xctx->lw),
|
||||
0, (int)Y_TO_SCREEN(xctx->prev_crossy) - 2 * INT_WIDTH(xctx->lw));
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
0, (int)Y_TO_SCREEN(xctx->prev_crossy) - 2 * INT_WIDTH(xctx->lw),
|
||||
xctx->xrect[0].width, 4 * INT_WIDTH(xctx->lw),
|
||||
0, (int)Y_TO_SCREEN(xctx->prev_crossy) - 2 * INT_WIDTH(xctx->lw));
|
||||
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
(int)X_TO_SCREEN(xctx->prev_crossx) - 2 * INT_WIDTH(xctx->lw), 0,
|
||||
4 * INT_WIDTH(xctx->lw), xctx->xrect[0].height,
|
||||
(int)X_TO_SCREEN(xctx->prev_crossx) - 2 * INT_WIDTH(xctx->lw), 0);
|
||||
#endif
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0],
|
||||
(int)X_TO_SCREEN(xctx->prev_crossx) - 2 * INT_WIDTH(xctx->lw), 0,
|
||||
4 * INT_WIDTH(xctx->lw), xctx->xrect[0].height,
|
||||
(int)X_TO_SCREEN(xctx->prev_crossx) - 2 * INT_WIDTH(xctx->lw), 0);
|
||||
}
|
||||
draw_selection(xctx->gc[SELLAYER], 0);
|
||||
drawtempline(xctx->gctiled, NOW, X_TO_XSCHEM(xctx->areax1),
|
||||
xctx->prev_crossy, X_TO_XSCHEM(xctx->areax2), xctx->prev_crossy);
|
||||
|
|
@ -1184,16 +1184,16 @@ int draw_xhair = tclgetboolvar("draw_crosshair");
|
|||
break;
|
||||
}
|
||||
if(xctx->ui_state & STARTPAN) pan(RUBBER, mx, my);
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if ((xctx->ui_state & STARTWIRE) || (xctx->ui_state & STARTARC) ||
|
||||
(xctx->ui_state & STARTLINE) || (xctx->ui_state & STARTMOVE) ||
|
||||
(xctx->ui_state & STARTCOPY) || (xctx->ui_state & STARTRECT) ||
|
||||
(xctx->ui_state & STARTPOLYGON) || /* (xctx->ui_state & STARTPAN) || */
|
||||
(xctx->ui_state & STARTSELECT)) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if ((xctx->ui_state & STARTWIRE) || (xctx->ui_state & STARTARC) ||
|
||||
(xctx->ui_state & STARTLINE) || (xctx->ui_state & STARTMOVE) ||
|
||||
(xctx->ui_state & STARTCOPY) || (xctx->ui_state & STARTRECT) ||
|
||||
(xctx->ui_state & STARTPOLYGON) || /* (xctx->ui_state & STARTPAN) || */
|
||||
(xctx->ui_state & STARTSELECT)) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if(draw_xhair) {
|
||||
draw_crosshair(0);
|
||||
}
|
||||
|
|
|
|||
36
src/draw.c
36
src/draw.c
|
|
@ -406,9 +406,9 @@ void draw_temp_string(GC gctext, int what, const char *str, short rot, short fli
|
|||
int tmp;
|
||||
double dtmp;
|
||||
if(!has_x) return;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(gctext == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(gctext == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
dbg(2, "draw_string(): string=%s\n",str);
|
||||
if(!text_bbox(str, xscale, yscale, rot, flip, hcenter, vcenter, x1,y1,
|
||||
|
|
@ -728,9 +728,9 @@ void draw_temp_symbol(int what, GC gc, int n,int layer,short tmp_flip, short rot
|
|||
if(xctx->inst[n].ptr == -1) return;
|
||||
if(!has_x) return;
|
||||
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(gc == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(gc == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
if( (xctx->inst[n].flags & HIDE_INST) ||
|
||||
(xctx->hide_symbols==1 && (xctx->inst[n].ptr+ xctx->sym)->prop_ptr &&
|
||||
|
|
@ -1161,9 +1161,9 @@ void drawtempline(GC gc, int what, double linex1,double liney1,double linex2,dou
|
|||
double x1,y1,x2,y2;
|
||||
|
||||
if(!has_x) return;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(gc == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(gc == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
if(what & ADD)
|
||||
{
|
||||
|
|
@ -1238,9 +1238,9 @@ void drawtemparc(GC gc, int what, double x, double y, double r, double a, double
|
|||
double xx1, yy1, xx2, yy2; /* complete circle bbox in screen coords */
|
||||
|
||||
if(!has_x) return;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(gc == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(gc == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
if(what & ADD)
|
||||
{
|
||||
|
|
@ -1673,9 +1673,9 @@ void drawtemppolygon(GC g, int what, double *x, double *y, int points)
|
|||
int i;
|
||||
short sx, sy;
|
||||
if(!has_x) return;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(g == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(g == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
polygon_bbox(x, y, points, &x1,&y1,&x2,&y2);
|
||||
x1=X_TO_SCREEN(x1);
|
||||
|
|
@ -1767,9 +1767,9 @@ void drawtemprect(GC gc, int what, double rectx1,double recty1,double rectx2,dou
|
|||
double x1,y1,x2,y2;
|
||||
|
||||
if(!has_x) return;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(gc == xctx->gctiled) return;
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(gc == xctx->gctiled) return;
|
||||
}
|
||||
|
||||
if(what & NOW)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -131,6 +131,17 @@ Pixmap cad_icon_pixmap=0, cad_icon_mask=0;
|
|||
/* char *cad_icon[] */
|
||||
Pixmap *pixmap = NULL;
|
||||
Visual *visual;
|
||||
#ifdef __unix__
|
||||
int _unix = 1;
|
||||
#else
|
||||
int _unix = 0;
|
||||
#endif
|
||||
|
||||
#ifdef FIX_BROKEN_TILED_FILL
|
||||
int fix_broken_tiled_fill = 1;
|
||||
#else
|
||||
int fix_broken_tiled_fill = 0;
|
||||
#endif
|
||||
|
||||
/* ---------------------------------------------- */
|
||||
/* These variables are mirrored in tcl code */
|
||||
|
|
|
|||
28
src/move.c
28
src/move.c
|
|
@ -195,13 +195,13 @@ void draw_selection(GC g, int interruptable)
|
|||
|
||||
dbg(1,"draw_selection\n");
|
||||
if(g != xctx->gctiled) xctx->movelastsel = xctx->lastsel;
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
else {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
if(tclgetboolvar("draw_crosshair")) draw_crosshair(0);
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(g == xctx->gctiled) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
if(tclgetboolvar("draw_crosshair")) draw_crosshair(0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
for(i=0;i<xctx->movelastsel; ++i)
|
||||
{
|
||||
c = xctx->sel_array[i].col;n = xctx->sel_array[i].n;
|
||||
|
|
@ -678,10 +678,10 @@ void copy_objects(int what)
|
|||
if(tclgetintvar("connect_by_kissing") == 2) tclsetintvar("connect_by_kissing", 0);
|
||||
}
|
||||
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
}
|
||||
|
||||
xctx->move_rot = xctx->move_flip = 0;
|
||||
xctx->deltax = xctx->deltay = 0.;
|
||||
|
|
@ -1124,11 +1124,11 @@ void move_objects(int what, int merge, double dx, double dy)
|
|||
pop_undo(0, 0);
|
||||
if(tclgetintvar("connect_by_kissing") == 2) tclsetintvar("connect_by_kissing", 0);
|
||||
}
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(xctx->save_pixmap && xctx->window)
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
#endif
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
}
|
||||
|
||||
xctx->move_rot=xctx->move_flip=0;
|
||||
xctx->deltax=xctx->deltay=0.;
|
||||
|
|
|
|||
|
|
@ -1010,6 +1010,10 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
}
|
||||
break;
|
||||
case 'f':
|
||||
if(!strcmp(argv[2], "fix_broken_tiled_fill")) { /* get drawing method setting (for broken GPUs) */
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
Tcl_SetResult(interp, my_itoa(fix_broken_tiled_fill),TCL_VOLATILE);
|
||||
}
|
||||
if(!strcmp(argv[2], "format")) { /* alternate format attribute to use in netlist (or NULL) */
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
if(!xctx->format ) Tcl_SetResult(interp, "<NULL>",TCL_STATIC);
|
||||
|
|
@ -3317,6 +3321,17 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
Tcl_ResetResult(interp);
|
||||
}
|
||||
|
||||
/* resetwin create_pixmap clear_pixmap force w h
|
||||
* internal command: calls resetwin() */
|
||||
else if(!strcmp(argv[1], "resetwin"))
|
||||
{
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
if(argc > 6) {
|
||||
resetwin(atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), atoi(argv[5]), atoi(argv[6]));
|
||||
}
|
||||
Tcl_ResetResult(interp);
|
||||
}
|
||||
|
||||
/* resolved_net [net]
|
||||
* if 'net' is given return its topmost full hierarchy name
|
||||
* else returns the topmost full hierarchy name of selected net/pin/label.
|
||||
|
|
@ -3748,6 +3763,10 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
xctx->draw_window=atoi(argv[3]);
|
||||
}
|
||||
else if(!strcmp(argv[2], "fix_broken_tiled_fill")) { /* alternate drawing method for broken GPUs */
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
fix_broken_tiled_fill = atoi(argv[3]);
|
||||
}
|
||||
else if(!strcmp(argv[2], "format")) { /* set name of custom format attribute used for netlisting */
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
my_strdup(_ALLOC_ID_, &xctx->format, argv[3]);
|
||||
|
|
|
|||
12
src/select.c
12
src/select.c
|
|
@ -924,13 +924,13 @@ void unselect_all(int dr)
|
|||
xctx->ui_state &= ~SELECTION;
|
||||
my_snprintf(str, S(str), "%s/%s", user_conf_dir, ".selection.sch"); /* 20161115 PWD->HOME */
|
||||
xunlink(str);
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
if(xctx->save_pixmap && xctx->window) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
if(tclgetboolvar("draw_crosshair")) draw_crosshair(0);
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
if(xctx->save_pixmap && xctx->window) {
|
||||
MyXCopyArea(display, xctx->save_pixmap, xctx->window, xctx->gc[0], xctx->xrect[0].x, xctx->xrect[0].y,
|
||||
xctx->xrect[0].width, xctx->xrect[0].height, xctx->xrect[0].x, xctx->xrect[0].y);
|
||||
if(tclgetboolvar("draw_crosshair")) draw_crosshair(0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
dbg(2, "unselect_all(1): done\n");
|
||||
}
|
||||
|
||||
|
|
|
|||
23
src/xinit.c
23
src/xinit.c
|
|
@ -2096,10 +2096,8 @@ void resetwin(int create_pixmap, int clear_pixmap, int force, int w, int h)
|
|||
XFreeGC(display,xctx->gctiled);
|
||||
}
|
||||
if(create_pixmap) {
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
XGCValues gcv;
|
||||
unsigned long gcvm;
|
||||
#endif
|
||||
|
||||
#ifdef __unix__
|
||||
xctx->save_pixmap = XCreatePixmap(display, xctx->window,
|
||||
|
|
@ -2109,16 +2107,16 @@ void resetwin(int create_pixmap, int clear_pixmap, int force, int w, int h)
|
|||
xctx->xrect[0].width, xctx->xrect[0].height, screendepth);
|
||||
#endif
|
||||
|
||||
#if defined(FIX_BROKEN_TILED_FILL) || !defined(__unix__)
|
||||
gcv.function = GXnoop; /* disable all graphic operations with gctiled */
|
||||
gcvm = GCFunction;
|
||||
xctx->gctiled = XCreateGC(display,xctx->window, gcvm, &gcv); /* noop for gctiled */
|
||||
XSetFillStyle(display,xctx->gctiled,FillSolid);
|
||||
#else
|
||||
xctx->gctiled = XCreateGC(display,xctx->window,0L, NULL);
|
||||
XSetTile(display,xctx->gctiled, xctx->save_pixmap);
|
||||
XSetFillStyle(display,xctx->gctiled,FillTiled);
|
||||
#endif
|
||||
if(fix_broken_tiled_fill || !_unix) {
|
||||
gcv.function = GXnoop; /* disable all graphic operations with gctiled */
|
||||
gcvm = GCFunction;
|
||||
xctx->gctiled = XCreateGC(display,xctx->window, gcvm, &gcv); /* noop for gctiled */
|
||||
XSetFillStyle(display,xctx->gctiled,FillSolid);
|
||||
} else {
|
||||
xctx->gctiled = XCreateGC(display,xctx->window,0L, NULL);
|
||||
XSetTile(display,xctx->gctiled, xctx->save_pixmap);
|
||||
XSetFillStyle(display,xctx->gctiled,FillTiled);
|
||||
}
|
||||
|
||||
/* whenever a pixmap is recreated all GC attributes must be reissued */
|
||||
resetcairo(1, 0, 1); /* create, clear, force */
|
||||
|
|
@ -2490,6 +2488,7 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
l_width=atoi(tclgetvar("line_width"));
|
||||
if(tclgetboolvar("change_lw")) l_width = 0.0;
|
||||
cadlayers=atoi(tclgetvar("cadlayers"));
|
||||
fix_broken_tiled_fill = tclgetboolvar("fix_broken_tiled_fill");
|
||||
if(debug_var==-10) debug_var=0;
|
||||
my_snprintf(tmp, S(tmp), "%.16g",CADGRID);
|
||||
tclvareval("set_ne cadgrid ", tmp, NULL);
|
||||
|
|
|
|||
|
|
@ -1079,11 +1079,13 @@ typedef struct {
|
|||
|
||||
/* GLOBAL VARIABLES */
|
||||
|
||||
/*********** X11 specific globals ***********/
|
||||
/*********** X11/system specific globals ***********/
|
||||
extern Colormap colormap;
|
||||
extern unsigned char **pixdata;
|
||||
extern unsigned char pixdata_init[22][32];
|
||||
extern Display *display;
|
||||
extern int _unix; /* set to 1 on unix systems */
|
||||
extern int fix_broken_tiled_fill; /* if set to 1 work around some GPUs with rotten tiled fill operations */
|
||||
|
||||
#ifdef HAS_XCB
|
||||
extern xcb_connection_t *xcb_conn;
|
||||
|
|
|
|||
|
|
@ -5593,8 +5593,8 @@ set tctx::global_list {
|
|||
delay_flag dim_bg dim_value
|
||||
disable_unique_names do_all_inst draw_crosshair draw_grid draw_window edit_prop_pos edit_prop_size
|
||||
edit_symbol_prop_new_sel editprop_sympath en_hilight_conn_inst enable_dim_bg enable_stretch
|
||||
filetmp flat_netlist fullscreen gaw_fd gaw_tcp_address graph_bus graph_change_done graph_digital
|
||||
graph_linewidth_mult graph_logx
|
||||
filetmp fix_broken_tiled_fill flat_netlist fullscreen gaw_fd gaw_tcp_address graph_bus
|
||||
graph_change_done graph_digital graph_linewidth_mult graph_logx
|
||||
graph_logy graph_rainbow graph_raw_level graph_schname graph_sel_color graph_sel_wave
|
||||
graph_selected graph_sort graph_unlocked hide_empty_graphs hide_symbols hsize
|
||||
incr_hilight infowindow_text input_line_cmd input_line_data launcher_default_program
|
||||
|
|
@ -6116,9 +6116,6 @@ proc build_widgets { {topwin {} } } {
|
|||
-command {
|
||||
input_line "Enter grid spacing (float):" "xschem set cadgrid" $cadgrid
|
||||
}
|
||||
$topwin.menubar.view.menu add checkbutton -label "View only Probes" -variable only_probes \
|
||||
-accelerator {5} \
|
||||
-command { xschem only_probes }
|
||||
$topwin.menubar.view.menu add command -label "Toggle colorscheme" -accelerator {Shift+O} -command {
|
||||
xschem toggle_colorscheme
|
||||
xschem build_colors
|
||||
|
|
@ -6150,6 +6147,19 @@ proc build_widgets { {topwin {} } } {
|
|||
-command {
|
||||
if { $draw_window == 1} { xschem set draw_window 1} else { xschem set draw_window 0}
|
||||
}
|
||||
|
||||
$topwin.menubar.view.menu add checkbutton -label "Fix for GPUs with broken tiled fill" \
|
||||
-variable fix_broken_tiled_fill \
|
||||
-command {
|
||||
if { $fix_broken_tiled_fill == 1} {
|
||||
xschem set fix_broken_tiled_fill 1
|
||||
} else {
|
||||
xschem set fix_broken_tiled_fill 0
|
||||
}
|
||||
xschem resetwin 1 1 0 0 0
|
||||
xschem redraw
|
||||
}
|
||||
|
||||
$topwin.menubar.view.menu add checkbutton -label "Symbol text" -variable sym_txt \
|
||||
-accelerator {Ctrl+B} -command { xschem set sym_txt $sym_txt; xschem redraw }
|
||||
$topwin.menubar.view.menu add checkbutton -label "Toggle variable line width" -variable change_lw \
|
||||
|
|
@ -6278,6 +6288,9 @@ proc build_widgets { {topwin {} } } {
|
|||
xschem redraw } \
|
||||
-variable compare_sch \
|
||||
-accelerator {Alt-X}
|
||||
$topwin.menubar.hilight.menu add checkbutton -label "View only Probes" -variable only_probes \
|
||||
-accelerator {5} \
|
||||
-command { xschem only_probes }
|
||||
$topwin.menubar.hilight.menu add command \
|
||||
-label {Highlight net-pin mismatches on sel. instances} \
|
||||
-command "xschem net_pin_mismatch" \
|
||||
|
|
@ -6845,6 +6858,7 @@ set_ne dark_colorscheme 1
|
|||
set_ne enable_dim_bg 0
|
||||
set_ne dim_bg 0.0
|
||||
set_ne dim_value 0.0
|
||||
set_ne fix_broken_tiled_fill 0 ;# set to 1 on some broken X11 drivers / GPUs that show garbage on screen */
|
||||
##### set colors
|
||||
if {!$rainbow_colors} {
|
||||
set_ne cadlayers 22
|
||||
|
|
|
|||
|
|
@ -469,3 +469,10 @@
|
|||
#### Instead, additional drives can be added using XSCHEM_LIBRARY_PATH
|
||||
#### default: 1
|
||||
# set add_all_windows_drives 0
|
||||
|
||||
###########################################################################
|
||||
#### FIX GRAPHIC PROBLEMS ON SOME DRIVERS/GPU CONFIGURATIONS
|
||||
###########################################################################
|
||||
#### if you see garbage on screen / graphic artifacts while editing with
|
||||
#### xschem try to set this to 1. Default: not enabled (0)
|
||||
# set fix_broken_tiled_fill 0
|
||||
|
|
|
|||
Loading…
Reference in New Issue