added commented lines for antialiasing; JL:cairo_set_line_width should only be called with has_x as xctx->cairo_ctx and xctx->cairo_save_ctx is NULL when run with -x; JL:XCopyArea must be called to draw correctly with Cairo on Windows

This commit is contained in:
stefan schippers 2022-12-02 16:43:01 +01:00
parent f18ed49f6f
commit b23988ccdf
5 changed files with 49 additions and 43 deletions

View File

@ -3540,9 +3540,11 @@ int XSetTile(Display* display, GC gc, Pixmap s_pixmap)
void MyXCopyArea(Display* display, Drawable src, Drawable dest, GC gc, int src_x, int src_y,
unsigned int width, unsigned int height, int dest_x, int dest_y)
{
#if !defined(__unix__) && defined(HAS_CAIRO)
#if !defined(__unix__)
XCopyArea(display, src, dest, gc, src_x, src_y, width, height, dest_x, dest_y);
#if defined(HAS_CAIRO)
my_cairo_fill(xctx->cairo_save_sfc, dest_x, dest_y, width, height);
#endif
#elif (defined(__unix__) && defined(HAS_CAIRO)) || DRAW_ALL_CAIRO==1
cairo_set_source_surface(xctx->cairo_ctx, xctx->cairo_save_sfc, 0, 0);
cairo_paint(xctx->cairo_ctx);
@ -3550,4 +3552,3 @@ void MyXCopyArea(Display* display, Drawable src, Drawable dest, GC gc, int src_x
XCopyArea(display, src, dest, gc, src_x, src_y, width, height, dest_x, dest_y);
#endif
}

View File

@ -1734,8 +1734,10 @@ void change_linewidth(double w)
xctx->areah = xctx->areay2 - xctx->areay1;
}
#if HAS_CAIRO==1
cairo_set_line_width(xctx->cairo_ctx, INT_WIDTH(xctx->lw));
cairo_set_line_width(xctx->cairo_save_ctx, INT_WIDTH(xctx->lw));
if(has_x) {
cairo_set_line_width(xctx->cairo_ctx, INT_WIDTH(xctx->lw));
cairo_set_line_width(xctx->cairo_save_ctx, INT_WIDTH(xctx->lw));
}
#endif
}
@ -1772,6 +1774,7 @@ static void resetcairo(int create, int clear, int force_or_resize)
}
xctx->cairo_save_ctx = cairo_create(xctx->cairo_save_sfc);
/* cairo_set_antialias (xctx->cairo_save_ctx, CAIRO_ANTIALIAS_NONE); */
cairo_select_font_face(xctx->cairo_save_ctx, tclgetvar("cairo_font_name"),
CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(xctx->cairo_save_ctx, 20);
@ -1792,6 +1795,7 @@ static void resetcairo(int create, int clear, int force_or_resize)
fprintf(errfp, "ERROR: invalid cairo surface\n");
}
xctx->cairo_ctx = cairo_create(xctx->cairo_sfc);
/* cairo_set_antialias (xctx->cairo_ctx, CAIRO_ANTIALIAS_NONE); */
cairo_select_font_face(xctx->cairo_ctx, tclgetvar("cairo_font_name"),
CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(xctx->cairo_ctx, 20);

View File

@ -7,23 +7,23 @@ S {}
E {}
B 2 860 -550 1360 -160 {flags=graph
y1 = 0
y2 = 6.6
y2 = 6
divy = 4
subdivy=1
x1=0
x2=24
x1=-0.0573452
x2=22.5919
divx=8
unitx=1
color=15
node=i(vload)
dataset=-1}
B 2 860 -790 1360 -550 {flags=graph
y1 = 0
y2 = 112
y1 = 7.29412e-05
y2 = 99.9997
divy = 4
subdivy=1
x1=0
x2=24
x1=-0.0573452
x2=22.5919
divx=8
unitx=1
color=8
@ -32,47 +32,43 @@ plus
i(vload)
*\\""
dataset=-1}
T {Voc = 22
Wp = 100W
Vmp = 17.5} 320 -550 0 0 0.4 0.4 {}
T {position the mouse close to one of the curves
and press 't' to display only that curve.
This allows you to annotate the active
waveform in the schematic.} 480 -470 0 0 0.3 0.3 {}
N 230 -440 230 -380 {
waveform in the schematic.} 480 -370 0 0 0.3 0.3 {}
N 430 -480 430 -420 {
lab=minus}
N 230 -530 230 -500 {
N 430 -570 430 -540 {
lab=mn}
N 90 -420 110 -420 {
N 290 -460 310 -460 {
lab=fade}
N 230 -660 230 -590 {
N 430 -700 430 -630 {
lab=pn}
N 230 -760 230 -720 {
N 430 -800 430 -760 {
lab=plus}
C {iopin.sym} 230 -760 2 1 {name=p1 lab=plus}
C {iopin.sym} 230 -380 2 1 {name=p2 lab=minus}
C {iopin.sym} 430 -800 2 1 {name=p1 lab=plus}
C {iopin.sym} 430 -420 2 1 {name=p2 lab=minus}
C {title.sym} 160 -40 0 0 {name=l1 author="Stefan Schippers" net_name=true}
C {ammeter.sym} 230 -470 2 1 {name=Vm}
C {lab_pin.sym} 230 -610 2 0 {name=l2 sig_type=std_logic lab=pn}
C {lab_pin.sym} 230 -510 2 0 {name=l3 sig_type=std_logic lab=mn}
C {isource_arith.sym} 230 -560 2 0 {name=G1
CUR="v(f) * 5.5 * (1 - exp( (v(pn,mn)
+ -21 - v(f)*2.5 ) * 0.6) -
+ 0.002 * (v(pn,mn) - 21 - v(f)*2.5))"
C {ammeter.sym} 430 -510 2 1 {name=Vm}
C {lab_pin.sym} 430 -650 2 0 {name=l2 sig_type=std_logic lab=pn}
C {lab_pin.sym} 430 -550 2 0 {name=l3 sig_type=std_logic lab=mn}
C {isource_arith.sym} 430 -600 2 0 {name=G1
CUR="v(f) * power * 2.16 / n * (1 - (3.5e-7 * exp( v(pn,mn) / n / 0.041)))"
}
C {ipin.sym} 90 -420 2 1 {name=p2 lab=fade}
C {ammeter.sym} 140 -420 3 0 {name=Vf}
C {lab_pin.sym} 170 -420 2 0 {name=l3 sig_type=std_logic lab=f}
C {ammeter.sym} 230 -690 2 1 {name=Vp}
C {ipin.sym} 290 -460 2 1 {name=p2 lab=fade}
C {ammeter.sym} 340 -460 3 0 {name=Vf}
C {lab_pin.sym} 370 -460 2 0 {name=l3 sig_type=std_logic lab=f}
C {ammeter.sym} 430 -730 2 1 {name=Vp}
C {code_shown.sym} 30 -280 0 0 {name=CONTROL
only_toplevel=true
value="
value=".param power=100
.param n=36
vload plus minus 0
vsun fade 0 0
vref minus 0 0
.control
save plus i(vload) i(vm) n(pn) v(mn)
dc vload 0 24 0.5 vsun 0.2 1.0 0.2
dc vload 0 48 0.2 vsun 0.2 1.0 0.2
write pv_ngspice.raw
quit
.endc
@ -262,7 +258,13 @@ AAAAAAAAAAA2QAAAAAAAADZAAAAAAAAAAADARn38MD4KQMBGffwwPgpAwEZ9/DA+CkAAAAAAAIA2QAAA
A0CQxRO3tvADQJDFE7e28ANAAAAAAAAAN0AAAAAAAAAAAAAAAAAAADdAAAAAAAAAN0AAAAAAAAAAAEB3KAhg5fY/QHcoCGDl9j9AdygIYOX2PwAAAAAAgDdAAAAAAAAA
AAAAAAAAAIA3QAAAAAAAgDdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QAAAAAAAAAAAAAAAAAAAOEAAAAAAAAA4QAAAAAAAAAAAgJ4EsCXg
/r+AngSwJeD+v4CeBLAl4P6/"}
C {ngspice_get_expr.sym} 280 -560 0 0 {name=r24
C {ngspice_get_expr.sym} 480 -600 0 0 {name=r24
node="[format %.4g [expr ([ngspice::get_voltage pn] - [ngspice::get_voltage mn]) * [ngspice::get_current Vm]]] W"
descr = power
}
C {launcher.sym} 1300 -90 0 0 {name=h2
descr="Reload waves"
tclcommand="
xschem raw_read $netlist_dir/[file tail [file rootname [xschem get current_name]]].raw
"
}

View File

@ -2,11 +2,11 @@ v {xschem version=3.1.0 file_version=1.2
}
G {}
K {type=subcircuit
format="@name @pinlist @symname m=@m"
format="@name @pinlist @symname power=@power n=@n m=@m"
template="name=X1 m=1"}
template="name=X1 power=100 n=36 m=1"}
V {}
S {}
E {}
@ -22,7 +22,6 @@ B 5 -42.5 -2.5 -37.5 2.5 {name=fade dir=in}
P 4 7 -35 -30 -25 -20 -20 -25 -15 -10 -30 -15 -25 -20 -35 -30 {}
P 4 7 -35 -5 -25 5 -20 0 -15 15 -30 10 -25 5 -35 -5 {}
T {@name} 15 -28.75 0 0 0.2 0.2 {}
T {Voc = 22
Wp = 100W
Vmp = 17.5} 30 -10 0 0 0.2 0.2 {}
T {Wp = @power
n = @n} 30 -10 0 0 0.2 0.2 {}
T {m=@m} -5 16.25 0 1 0.2 0.2 {}

View File

@ -275,7 +275,7 @@ tclcommand="
xschem raw_read $netlist_dir/[file tail [file rootname [xschem get current_name]]].raw tran
"
}
C {pv_ngspice.sym} 370 -360 0 0 {name=X1 m=1}
C {pv_ngspice.sym} 370 -360 0 0 {name=X1 m=1 power=100 n=36}
C {lab_pin.sym} 370 -280 0 0 {name=l12 lab=0 }
C {capa.sym} 510 -410 0 0 {name=C11
m=1