Commit Graph

566 Commits

Author SHA1 Message Date
stefan schippers 24f2af8c81 update keybinding documentation; add `/` command to show fullscreen image of keybindings also in Help menu) 2025-04-06 12:58:13 +02:00
stefan schippers 834d2c9757 draw_symbol(): draw text at end as done in draw() fo preserve stacking order of objects 2025-04-05 11:27:45 +02:00
stefan schippers 0b266d2bd0 merge in SuperChayan refactoring ( recompute_orthogonal_manhattanline() ) 2025-03-19 00:50:35 +01:00
stefan schippers 33591fa41d applied recent additions from SuperCgayan 2025-03-16 11:35:30 +01:00
stefan schippers a0a5d9876f drawtemp_manhattanline(): use local nl_xx[12] and nl_yy[12] variables, since xctx->nl_xx[12] and xctx->nl_yy[12] are used also in select_rect() which calls draw_selection() which calls drawtemp_manhattanline(). 2025-03-16 05:15:40 +01:00
stefan schippers 08397f7038 merge Chayan Deb changes for manhattan-style move objects and handle_key_press() refactor 2025-03-14 15:25:57 +01:00
stefan schippers f1901e055c clip graph point[].x values to prevent aliasing at absurdly deep zoom in values 2025-03-08 10:53:21 +01:00
stefan schippers d7d812c023 square grid points if grid_point_size is specified 2025-03-07 15:59:43 +01:00
stefan schippers fafd48eb31 new tcl variable grid_point_size to set size of grid points (for 4K+ displays) 2025-03-07 14:45:13 +01:00
stefan schippers efdd45f414 revert wrong fix (fix typo in draw_graph()) not a typo... 2025-02-28 19:19:06 +01:00
stefan schippers be1a0deb89 fix typo in draw_graph() 2025-02-28 18:04:56 +01:00
stefan schippers 0e438829c6 allow locked attached rectangles, so they can not be selected accidentally. Small resize of x/y graph axis labels 2025-02-22 10:33:13 +01:00
stefan schippers dc270aa029 resize a bit graph wave label / axis label sizes 2025-02-21 12:53:04 +01:00
stefan schippers 34fd430c13 svg_embedded_graph() and ps_embedded_graph() do not do a full redraw prior to graph rasterizing, draw only the current graph area. This avoid `overstrike` problems with superimposed text objects 2025-02-21 11:12:27 +01:00
stefan schippers 90bb42e7fa fix regression: no dashed graph bbox 2025-02-20 16:52:23 +01:00
stefan schippers 25db8b8f9a ellipses rendered in ps/pdf export. Do not allow to select objects with mouse button press if a poligon insertion is ongoing. my_fopen() for read mode open, check for regular file. More checks for failed fopen()s. 2025-02-18 02:25:55 +01:00
stefan schippers 9eb012e6a3 fix image in symbols rotation/flip for svg exports 2025-02-17 17:53:49 +01:00
stefan schippers 279d24288d proc rel_sym_path: resolve ~/... or relative paths (by prepending HOME or PWD) to input path before calculating relative symbol path. Added command `xschem load_symbol` 2025-02-15 00:50:02 +01:00
stefan schippers 89a8d8b719 same previous fix for resetwin() restore done in ps_embedded_graph() backported also in svg_embedded_graph() (not necessary here but safer) 2025-02-10 17:44:05 +01:00
stefan schippers 724869638e fix max size of graph bitmap calculation in svg_embedded_graph() and ps_embedded_graph() 2025-02-10 01:21:22 +01:00
stefan schippers 188e73cf8b place_symbol() and proc is_xschem_file: if /path/to/gen.tcl(arg1,arg2,arg3) is given remove (...) argument list before checking existence of generator file. Do not add () to generator filename if argument list already given. Do not include hidden texts in schematic boundbox for full zoom if show hidden_texts is not enabled. draw_graph(): do not wrap graphs using sweepvar_wrap if not dc (this includes: do not wrap multi-point OP sims). print_spice_element(): better @param lookup in instance prop_ptr, symbol template, parent instance prop_ptr (if instance based "additional" symbol) and parent instance symbol template string (use translate3()) 2025-02-09 02:46:45 +01:00
stefan schippers 0b3db90f19 one more argument to translate3() 2025-02-07 14:39:21 +01:00
stefan schippers 40fd937d51 shorted_instance(): fixed a bug: lvs_ignore active disallows evaluation of spice_ignore flags; ps_draw_symbol(): draw in grey or red ignored or shorted devices 2025-01-29 16:22:44 +01:00
stefan schippers 44cc37f013 optimization: comment out a call do dbg() in a deep, deep nested loop in draw_graph(), enable if needed 2025-01-27 15:33:46 +01:00
stefan schippers 0d325f6957 force a crosshair draw at end of draw() (draw_crosshair(7,...)), intuitive interface direct drag of instances: fix some non-working combinations when stretch mode (y) is enabled. 2025-01-27 01:49:06 +01:00
stefan schippers 8086b5581e redraw_w_a_l_r_p_z_rubbers(): include zoom_rectangle(RUBBER), only execute if (snapped) coordinates changed, draw_crosshair(): only execute if (snapped) coordinates changed, find_closest_net_or_symbol_pin() is moved into draw_crosshair() so its calls are also minimized, do not allow z (zoom rectangle) if pending STARTWIRE, STARTLINE etc are in progress. 2025-01-26 15:19:22 +01:00
stefan schippers 4700483fa4 draw_crosshair(): more logical what parameter values 2025-01-25 02:13:59 +01:00
stefan schippers 48264c0399 allow `xschem translate -1 string` to translate tokens that do not depend on specific instances; yet another change in wrap detection in graphs, always use simulator sweep-var instead of user specified sweep variable; simulated data will never wrap exactly to first value due to roundoff errors; -fast optionto `xschem hilight_netname` command 2025-01-24 03:52:20 +01:00
stefan schippers 7ee11e8dbc various fixes related to crosshair mouse display 2025-01-21 16:07:23 +01:00
stefan schippers 72d961aacd fix a regression where a mouse wheel zoom or schematic pan unexpectedly end an ongoing wire placement. Add xschemrc variable crosshair_size; if set to 0 draw full crosshair, if set to a small integer draw a small square around the mouse snapped coordinate 2025-01-21 15:38:19 +01:00
stefan schippers 99b0bba5b8 if big_grid_points is not set draw always thin axes and mouse crosshairs; dashed axes 2025-01-21 12:34:14 +01:00
stefan schippers ac8db614c0 infix_interface xschemrc variable (default=1) can be set to 0 to disable infix (need to click a point after bindkey); disable warnings from graphs with autoload=1 if no raw file or matching analysis found; add m parameter (multiplicity) to bsource.sym, cmos_example.sch; remove dependency on external model file, use ngspice provided mos model 8 bsim3 models. 2025-01-17 17:15:48 +01:00
stefan schippers c57c49fde8 Hiding the TEXT layer will disable only symbol texts on that layer, not all texts, `proc select_layers` make the widget non-modal 2025-01-16 20:37:19 +01:00
stefan schippers 8da888a119 fix uninitialized `raw` pointer in graph_fullxzoom() and graph_fullxzoom() 2025-01-12 00:08:41 +01:00
stefan schippers 66a6c913e3 removed warning msg 2025-01-11 22:45:42 +01:00
stefan schippers ef5d0e1b96 str_replace(): add parameter to specify number of substituitions (or all); replaced atof_spice() with atof_eng() in various parts related to numbers that do not come from spice netlists; fix numerical setting of cursors if log scale is set (wrong preset was shown); make wave labels in graph scale with gr->magx as X-axis labels; fix scaling roundoff issues in dtoa_eng(); add new `@spice_get_node <spice_node> ` token (where spice_node may contain @variables) in symbol texts to display indicated spice node value. Does not use TCL, thus faster and less "quoting hell" problems 2025-01-10 01:52:54 +01:00
stefan schippers ff7c767c4d propagate drawing graph Hcursor functions to SVG/PDF exports 2025-01-09 00:31:11 +01:00
stefan schippers 12a9276ee0 optimization in plotting routines: skip unwanted datasets, if no dc simulation there is no need to detect sweep variable wraps 2025-01-08 13:27:07 +01:00
stefan schippers a3e7610d83 horizontal cursors in graphs 2025-01-07 04:20:32 +01:00
stefan schippers 9fda7e2f96 wip: put code in place for horiz cursors in graphs 2025-01-06 13:14:12 +01:00
stefan schippers 69a23355fb refactor some debug print messages for NULL strings 2025-01-04 11:33:58 +01:00
stefan schippers c4ebc92aa2 update xschem go_back command (pas integer notitle to go_back() function; simplify wrap handling vs sweep variable in draw_graph(), graph_fullyzoom(), calc_custom_data_yrange(), find_closest_wave() 2024-12-21 13:05:33 +01:00
stefan schippers d03f3b52e1 bars for hystograms use squared lines, not rounded lines, added command `xschem raw pos_at node value` to find position (in raw file) where node = value 2024-12-19 23:53:11 +01:00
stefan schippers 7402385a82 fix regression from commit `graphs: always plot one point before x1 and one point after x2 of simulation`: 2-dimensional dc-sweeps did miss first or last point 2024-12-18 01:55:05 +01:00
stefan schippers 48d7522a8c remove debug messages 2024-12-10 00:37:26 +01:00
stefan schippers 893c48d7dd fix some HistH graph draw artifacts when panning/zooming the graph 2024-12-10 00:07:33 +01:00
stefan schippers 8bb69b65e9 HistogramH and HistogramV graph modes 2024-12-09 17:25:40 +01:00
stefan schippers 2ec8c61757 fix previous commit for digital graphs 2024-12-07 11:40:49 +01:00
stefan schippers f73cf30452 added a fix in draw_graph_points() to avoid waves to be drawn outside of the graph box container on Windows, where there is no working XSetCLipRectangles() 2024-12-07 00:56:04 +01:00
stefan schippers 963e877497 Allow wave expressions with spaces on a single line without quotes ("...."). Quotes can be used for wave expression on multiple lines. Side effect: multiple nodes can no more be specified on a single line separated with spaces. Use newlines 2024-12-05 02:54:08 +01:00
stefan schippers 17a564062c graphs: always plot one point before x1 and one point after x2 of simulation waves so they will extend to full graph area even if there are few simulation points. 2024-11-30 01:16:37 +01:00
stefan schippers f9b341ef98 revert last changes in draw_graph_points(). Optimization was already done. 2024-11-28 00:51:38 +01:00
stefan schippers b642d63215 avoid unneeded calls to draw_crosshair(1) if crosshair is not enabled. Double performance of draw_graph_points() (do not draw on xctx->window if XCopyArea drawing model (now the default) is enabled 2024-11-27 16:13:48 +01:00
stefan schippers ca6fb60ce7 added `legend` checkbutton in graph dialog box to switch off signal legend in analog graphs 2024-11-25 14:29:19 +01:00
stefan schippers 893bd20901 remove a clipping condition in draw_graph_points() as graph-area clip is set in draw_graph() 2024-11-21 10:58:15 +01:00
stefan schippers 67a4407952 fix typo in condition (draw_pixmap instead of save_pixmap) 2024-11-16 10:19:34 +01:00
stefan schippers 20359ed43e update license info. Remove unneeded newline saving in version line of .sch/.sym files, remove c89 flag based on lib versions 2024-11-12 20:23:18 +01:00
stefan schippers 346666e13d draw_graph_grid(): handle NaN in y-data , avoid infinite loop 2024-11-07 00:39:53 +01:00
stefan schippers 71d5481dc8 move definition of my_memmem() outside of an #ifdef 2024-10-28 19:15:13 +01:00
stefan schippers c342a1c41f update svgdraw and psprint to recognize svg embedded images. svgdraw exports it as embedded svg 2024-10-28 18:55:13 +01:00
stefan schippers 76c1425180 get_surface_from_file(): better error checking 2024-10-28 12:45:50 +01:00
stefan schippers 17146a7cf7 get_surface_from_b64data() for svg images: create cairo surface only if filter_data() went successfully 2024-10-28 12:12:11 +01:00
stefan schippers 2c82e26dcb when importing svg images with a svg->png filter (like rsvg-convert) keep source svg data in the image_data attribute instead of the rasterized data. This will make these images scalable and schematics will be smaller (if using small vector SVGs) 2024-10-27 03:04:55 +01:00
Stefan Schippers 426cf9c33a revert change "draw_image(): do RECTORDER() before taking *x1, *y1", as it messes up images in rotated /flipped symbols 2024-10-26 18:09:12 +02:00
stefan schippers baad052431 fix a potential crash (premature free() of pointer) when editing graph node names with % (dataset) specifier 2024-10-10 01:45:50 +02:00
stefan schippers 1b734d5202 fix refression (color of highlighted texts in only_probes view mode) 2024-10-07 15:50:29 +02:00
stefan schippers bb1a1557bc svg and ps/pdf export: do not include data for offscreen graphs or images to reduce file size 2024-09-24 11:10:30 +02:00
stefan schippers aaac47720f draw_image(): add cairo_flush() to flush pending paints. In some cases a black square was exported instead of the image... Update Changelog for upcoming 3.4.6 2024-09-23 23:17:19 +02:00
stefan schippers a79e4304d9 draw_image(): do RECTORDER() before taking *x1, *y1 2024-09-23 15:57:32 +02:00
stefan schippers a065fb93cc draw node names in graphs even if specified file / analysis (graph rawfile or sim_type attributes) is not loaded 2024-09-09 13:20:02 +02:00
stefan schippers ad96e222f1 if autoload is set in graph and a filename is given (rawfile graph attr) load raw file immediately when drawing graph. Don`t wait for user to load an intiial raw file to trigger auto loading 2024-09-08 13:43:29 +02:00
stefan schippers 1dd3e28b32 remove memory tracking alloc IDs 2024-09-06 22:27:05 +02:00
stefan schippers 391464bab9 fix another small memory leak due to tclvareval("xschem exit...")--> use tcleval() 2024-09-06 22:19:36 +02:00
stefan schippers 882f7f7434 fix memory leaks introduced since introduction of my_expand() 2024-09-06 18:33:09 +02:00
stefan schippers fddc4650d1 graphs will autoload (if autoload checked) raw data even if no raw file is specified in graph dialog box (use current loaded raw file, usually a different analysis) 2024-09-06 16:57:13 +02:00
stefan schippers 27c0fd1622 use atof_spice() instead of atof() to read cursor position data from graph attributes 2024-09-05 14:53:36 +02:00
stefan schippers a94e0363fd Add "private cursor" check box in graph dialog box. This allow the related graph to have separate "a" and "b" cursors. These cursor positions are saved with the schematic and are thus persistent when reloading the schematic. 2024-09-05 00:51:15 +02:00
stefan schippers 1a2a925fbf remove backslashes in translate3() call in draw_temp_symbol(), as done in draw_symbol() 2024-08-29 08:13:06 +02:00
stefan schippers eb7b9ae018 removed pointless my_strcat() in translate3() 2024-08-29 07:56:22 +02:00
stefan schippers a725838850 fix escape recognition in translate3(), so in symbol texts it is possible to write \\@name to an instance attribute to get literal @name in displayed text instead of the instance name. fix typo in tutorial_use_existing_subckt.html. some schematic updates (no more enable show_pin_net_names tcl variable) 2024-08-28 09:39:43 +02:00
stefan schippers 89eb02f188 add autoload checkbutton in graph properties to automatically load or not custom graph-specified raw files 2024-06-23 15:59:22 +02:00
stefan schippers d42ecf96c5 add attribute text_layer_n=lay, where n = text object inside symbol instance to change its layer 2024-06-21 13:18:52 +02:00
stefan schippers 9545eea546 fix tcleval called with 2 arguments on windows build in print_image() 2024-06-09 23:38:20 +02:00
stefan schippers 17bf6f3efb handle TABs in draw_string() (also ps and svg draw_string()), tcl var tabstop (default = 8) sets the tab positions. 2024-05-23 00:57:45 +02:00
stefan schippers 7b8acd97da do not allow wrap variable to be set in draw_graph() and graph_fullyzoom() if viewing multiple OP simulations converted to DC (allow_wrap) 2024-05-14 11:54:10 +02:00
stefan schippers c871efa627 xschem image rectangles: allow to fetch urls using filter="tcleval(wget --quiet http://.... -O -)" and image="" 2024-04-22 18:00:15 +02:00
stefan schippers 3d20b44ced translate3(): add eat_escapes parameter 2024-04-14 11:38:35 +02:00
stefan schippers 6de84a69e9 better detect wrap arounds (use sweep var, first column saved by ngspice) in multiple sweep dc sims 2024-04-10 12:25:22 +02:00
stefan schippers 60e55212d5 handle rot/flip transfofmations for ellipses inside symbols 2024-04-06 23:13:14 +02:00
stefan schippers ce1d4b4bbb initial support for drawing ellipses (from rectangle boxes) 2024-04-05 01:34:54 +02:00
stefan schippers 5e96c84992 simplify draw_graph(): reduce redundant arrays measure_p, measure_x, measure_prev_x to scalars 2024-04-01 23:33:15 +02:00
stefan schippers b004618c25 explicit parameters to interpolate_yval() 2024-04-01 23:23:45 +02:00
stefan schippers 1ed64e95ca optimize a bit draw_graph() (no allocate measure_*[] vars if no cursor) 2024-04-01 11:42:54 +02:00
stefan schippers 318c52cd0f cursor positions always saved in true x values (no log taken for logx axes) avoid too many log10() / pow(10, ...) conversions 2024-04-01 00:25:50 +02:00
stefan schippers 9c5a1a9816 handle cursor drawing in multiple graphs, some with log scale some others without 2024-03-31 13:27:12 +02:00
Stefan Schippers cab89d03d9 revert to commit 2024-03-26 18:48:48 2024-03-30 19:20:51 +01:00
stefan schippers 547bdec018 avoid rouding to 0 wave measures in show_node_measures() 2024-03-30 13:00:39 +01:00
stefan schippers 7756769a4e simplify node measurements and cursor handling 2024-03-30 11:25:02 +01:00
stefan schippers 89f494aa85 simplify node measurements --do not use this commit -- 2024-03-30 10:43:55 +01:00
stefan schippers 27c065327e improve cursor display and move with multiple graphs with different sweep variables (2) 2024-03-30 02:20:38 +01:00