kicad/include
John Beard 6f78bb6960 Add configuration of Hi-DPI canvas scaling in OpenGL
First, add automatic detection of toolkit DPI scaling options. For now, this
is, in order,

* Check the GDK_SCALE option under GTK+ (users can set this to force the scaling)
* Check the value from WX's GetContentScalingFactor(). This will start to work
  correctly from WX 3.1 and GTK+ 3.10.

Then, add a user-settable override in the main prefs panel, next to the icon
scaling. This is independent of the icon scaling options.

DPI handling is performed in a standalone class, so they can be shared between
the prefs UI and the OpenGL backend easily. Also means Cairo could use the same
interface in future.

Also adjust the OpenGL grid drawing code to use the computed scale factor,
which avoids over-thick grids in scaled environments (the user can manually
thicken the grid if wanted).

Fixes: lp:1797308
* https://bugs.launchpad.net/kicad/+bug/1797308

Cherry-pick of: 567bdd9b9 (master)
2019-03-25 15:16:18 +00:00
..
core pcbnew: locking connectivity using RAII 2018-12-20 11:04:08 -08:00
gal Add configuration of Hi-DPI canvas scaling in OpenGL 2019-03-25 15:16:18 +00:00
geometry Build: libpolygon provides its own includes 2019-02-04 19:29:31 -08:00
kicad_curl Replace WIN32 preprocessor symbol by the official symbol _WIN32, used almost everywhere 2018-10-20 09:22:24 +02:00
legacy_gal Remove debugging printf 2019-02-15 18:14:58 -08:00
legacy_wx eeschema-gal: Base refactoring before GALification of the eeschema legacy canvas. 2018-10-09 11:08:52 +01:00
libeval Clean up units infrastructure after g_UserUnit removal. 2018-07-17 15:12:36 +01:00
math BOX2: added compare operators 2018-10-10 17:26:32 +02:00
plugins Remove some extra semicolons 2017-11-09 19:52:18 +01:00
preview_items Pcbnew: fix 45-degree snapping of ruler and dimension tools 2018-07-24 15:01:02 +01:00
system Fix another compilation issue on PPC64 2019-02-27 11:23:23 -05:00
tool Fix init order to quiet warnings 2019-02-16 12:53:45 -08:00
ttl Remove some extra semicolons 2017-11-09 19:52:18 +01:00
view gtk3: Force GTK2-style input handling 2019-02-19 11:03:20 -08:00
widgets Symlib table: Need button handler for files 2019-03-02 20:05:28 -08:00
advanced_config.h Disable legacy canvas on GTK3 2018-12-28 11:36:09 -05:00
array_options.h Separate ARRAY_OPTIONS to own class in common 2019-01-30 15:41:35 -08:00
base_screen.h Fix up zoom and pan issues entering/leaving sheets. 2018-10-09 11:08:56 +01:00
base_struct.h Allow net-ties within footprints. 2018-10-23 20:54:42 +01:00
base_units.h units: Move common units and add tests 2019-01-08 09:29:32 -08:00
basic_gal.h fix misspelled 'allows to' -> 'allows one to' 2018-07-11 10:35:03 -04:00
bezier_curves.h DXF import: add import of DXF splines that are converted to Bezier curves. 2018-07-22 18:39:47 +02:00
bin_mod.h Fixed memory leaks 2018-12-20 10:05:58 +01:00
bitmap_base.h eeschema-gal: factor out EDA_DRAW_PANEL from BITMAP_BASE, remove some unnecessary includes of class_drawpanel.h 2018-10-09 11:08:52 +01:00
bitmap_types.h Bitmaps: move bitmap defs to bitmaps library 2019-02-04 19:29:31 -08:00
bitmaps.h Bitmaps: move bitmap defs to bitmaps library 2019-02-04 19:29:31 -08:00
block_commande.h Finish up the block rotate/mirror fixes. 2018-10-09 11:08:55 +01:00
board_design_settings.h Honour diff-pair dimension changes while routing. 2018-09-18 20:37:00 +01:00
board_printout.h Removed a redundant parameter from BOARD_PRINTOUT constructor 2018-10-31 19:17:30 +01:00
build_version.h More missing source license fixes. 2014-10-22 11:51:34 -04:00
class_board_item.h Break out getTrailingInt from MODULE 2019-01-30 15:41:36 -08:00
class_draw_panel_gal.h Fix incorrect (broken) canvas type saving in config. 2019-01-11 13:19:46 +01:00
collector.h SELECTION: Prevent double select/deselect. 2018-10-24 17:17:45 -07:00
colors.h Change from EDA_COLOR_T to COLOR4D globally; arbitrary color support 2017-02-22 17:35:00 +01:00
colors_design_settings.h rename files 2018-01-31 09:24:00 +01:00
commit.h Don't set dirty bit when adding MARKERs. 2018-04-09 21:19:11 +01:00
common.h Fixed memory leaks 2018-12-20 10:05:58 +01:00
config_map.h Fix a few doxygen warnings 2017-06-20 10:47:30 +02:00
config_params.h Consolidate design rules UI. 2018-07-17 15:12:34 +01:00
confirm.h Make ModEdit and LibEdit library tree actions more consistent. 2018-10-03 22:46:41 +01:00
convert_basic_shapes_to_polygon.h Better calculation of polygon clearance area of oval pads. Wip. 2018-01-20 19:34:50 +01:00
convert_to_biu.h Switch zone fillets to absolute-error algorithm. 2018-03-23 12:46:17 +00:00
dialog_configure_paths.h Centralise utilities for env variables. 2018-10-03 11:53:10 -04:00
dialog_edit_library_tables.h Add Manage Symbol and Footprint Library tables to project frame. 2018-07-19 21:46:41 +01:00
dialog_helpers.h Move symbol management to a standard Save As... model. 2018-07-25 14:41:20 +01:00
dialog_shim.h Dialog: Esc key closes a grid editor first. 2019-01-19 14:55:15 -05:00
dlist.h Refinement to commit #4993. 2014-07-14 16:43:21 +02:00
dpi_scaling.h Add configuration of Hi-DPI canvas scaling in OpenGL 2019-03-25 15:16:18 +00:00
draw_frame.h Revert "Change top selection drop-down to combobox" 2019-01-28 10:15:32 -08:00
draw_graphic_text.h DrawGraphicText: remove a static variable, and replace it (when needed) by a new parameter in argument list. 2018-04-07 19:57:26 +02:00
drc_item.h Eradicate g_UserUnit from ERC/DRC. 2018-07-17 15:12:16 +01:00
dsnlexer.h fix misspelled 'an other' -> 'another' 2018-04-08 13:24:37 -04:00
eagle_parser.h eagle: Handle DRC rule-based pad shapes 2019-02-04 07:06:49 +01:00
eda_base_frame.h Unify and correct Autosave functions 2019-03-18 10:27:09 -07:00
eda_dde.h Keep track of open sockets and dispose of them in d'tor. 2018-04-04 12:02:40 +01:00
eda_doc.h Move env var substitution into GetAssociatedDocument 2019-03-10 10:44:23 -07:00
eda_dockart.h Overhaul border drawing in all the Kicad frames. 2018-08-11 17:25:38 +01:00
eda_pattern_match.h Prevent implicit * from wildcard match in footprint 2018-05-01 16:49:20 -07:00
eda_rect.h Fix code after renaming files 2018-01-29 11:37:29 +01:00
eda_text.h Fix text size measurement. 2018-10-09 11:08:55 +01:00
enabler.h Prevent issuing a print command before the previous one is finished 2018-04-23 11:25:28 +02:00
enum_vector.h eeschema: Iterate through plugins when determining file format. 2017-10-20 08:38:38 +02:00
env_paths.h Footprint Wizard now also handles custom Env paths 2018-04-06 14:51:09 +01:00
env_vars.h Add configuration of Hi-DPI canvas scaling in OpenGL 2019-03-25 15:16:18 +00:00
executable_names.h Move executable name constants to own file 2017-03-23 09:23:45 -04:00
fctsys.h removed wx carbon include in fctsys as it is unnecessary 2015-12-12 23:03:35 +13:00
filename_resolver.h Fold 3D Search Paths dialog into Configure Paths. 2018-07-17 15:11:01 +01:00
filter_reader.h Removed all exception specifiers since deprecated. 2017-06-12 13:54:55 -04:00
footprint_filter.h Update footprint filter type-in to be implicit * 2018-05-08 10:44:14 -07:00
footprint_info.h Fix potential string iterator issue. 2019-03-02 08:20:53 -05:00
fp_lib_table.h Make ModEdit and LibEdit library tree actions more consistent. 2018-10-03 22:46:41 +01:00
frame_type.h Overhaul border drawing in all the Kicad frames. 2018-08-11 17:25:38 +01:00
gbr_metadata.h Drill files generation: add 3 structured comments in NC (Excellon) drill files and remove duplicate code. 2018-11-24 08:51:58 +01:00
gbr_netlist_metadata.h Pcbnew: fix minor issue in %TO.C advanced attribute, and avoid creating an unused D10 tool in Gerber files. 2017-07-02 16:41:31 +02:00
gestfich.h Doxygen comment improvements. 2017-06-13 19:47:46 -04:00
gl_context_mgr.h Reverted 6912 with minor changes (LockCtx requires to specify canvas that locks a context). 2016-06-13 16:43:33 +02:00
gr_basic.h eeschema: neatly wrap placeholder text in symbol chooser 2018-01-07 19:30:56 -07:00
grid_tricks.h Remove previous cell selection fixes in favour of slow-click hack. 2019-03-04 11:09:33 +00:00
hash_eda.h Hash functions for BOARD_ITEMs 2017-10-24 23:10:40 +02:00
hashtables.h Pcbnew: major swig fix. 2016-07-18 13:23:09 -04:00
hotkey_store.h Check for conflicts when reseting/undoing hotkey changes 2018-09-28 08:28:22 -04:00
hotkeys_basic.h Check for conflicts when reseting/undoing hotkey changes 2018-09-28 08:28:22 -04:00
html_messagebox.h Release mouse before closing HTML_MESSAGE_BOX. 2018-05-21 13:18:41 +01:00
i18n_utility.h Try to fix a compil issue on OSX (no viable conversion from 'const wxString' to 'const wxChar *', in colors.cpp) 2016-05-17 09:10:15 +02:00
id.h Fix translation issues with copy/paste block. 2018-10-30 11:33:49 +00:00
import_export.h Use _WIN32 instead of __MINGW32__ in 2 conditional compilations which are Windows specific, not especially mingw32 specific. 2016-03-01 16:55:44 +01:00
incremental_text_ctrl.h Fix a few doxygen warnings 2017-06-16 09:18:31 +02:00
intrusive_list.h Moved INTRUSIVE_LIST to a separate header 2017-06-23 18:51:00 +02:00
ki_exception.h Add KI_PARAM_ERROR, similar to std::invalid_argument but using wxString instead of std::string to throw errors. 2018-06-05 13:29:51 +02:00
ki_mutex.h More missing source license fixes. 2014-10-22 11:51:34 -04:00
kicad_device_context.h Minor coding style fixes in headers 2016-01-12 11:33:33 -05:00
kicad_string.h Fix potential string iterator issue. 2019-03-02 08:20:53 -05:00
kiface_i.h Fixed memory leaks 2018-12-20 10:05:58 +01:00
kiface_ids.h Make sure Cvpcb doesn't use its own FP_LIB_TABLE. 2018-05-01 21:49:03 +01:00
kiway.h Unified preferences dialog framework. 2018-07-17 15:11:17 +01:00
kiway_express.h Explicitly mark overriding functions. 2016-09-24 14:53:15 -04:00
kiway_mgr.h Minor coding style fixes in headers 2016-01-12 11:33:33 -05:00
kiway_player.h Unified preferences dialog framework. 2018-07-17 15:11:17 +01:00
layers_id_colors_and_visibility.h Allow cancel, delete or rescue when opening pcbs with undefined layers. 2018-12-07 00:26:10 +00:00
length.h.usuned Namespace KiGfx->KIGFX. 2013-10-14 16:13:35 +02:00
lib_id.h Fix LIB_ID illegal character tests. 2018-10-07 09:09:27 -04:00
lib_table_base.h LIB_TABLE_BASE: Const and unsigned fixes 2019-02-05 08:49:52 -08:00
lib_table_grid.h fix a minor compil warning 2018-05-06 12:49:35 +02:00
lib_tree_item.h More performance enhancements. 2018-08-06 13:49:27 +01:00
lockfile.h Doxygen comment improvements. 2017-06-13 19:47:46 -04:00
lru_cache.h 3D Viewer: complete refactor of the 3D viewer. 2016-07-19 13:35:25 -04:00
macros.h Replace DIM() macro 2019-01-06 08:43:12 -08:00
mail_type.h Implement double-click for other filetypes in project tree. 2018-08-29 19:59:02 +01:00
make_unique.h Add C++14-style std::make_unique 'polyfill' for C++11 2017-01-23 11:41:00 +01:00
marker_base.h classes MARKER rework: remove duplicate code. Better HitTest code (HitTest takes in account the actual shape) 2018-12-19 19:53:27 +01:00
md5_hash.h pcbnew: Optimized zone filling algorithm. 2017-12-05 14:54:57 +01:00
menus_helpers.h Make show/hide icons in menus a run time option, instead of compil option. 2017-03-02 15:45:54 +01:00
msgpanel.h Changed COLOR4D defines to static consts 2017-02-22 17:35:00 +01:00
multivector.h fix a segfault in library editor when importing symbols. 2017-10-12 10:38:48 +02:00
newstroke_font.h Fix incorrect (too small) bounding box EDA_TEXT, noticeable when chars like j or { are used in zone fill functions. 2016-03-11 13:08:34 +01:00
observable.h Fix a few doxygen warnings 2017-06-16 09:18:31 +02:00
origin_viewitem.h Implement undo/redo for origins in legacy 2018-01-27 19:51:44 -05:00
pad_shapes.h Add support for custom pad shape. Full support in DRC and PnS. 2017-09-19 09:02:53 +02:00
page_info.h Allows bigger max page size (120x120") in Eeschema, Gerbview and Page Layout Editor 2018-08-04 17:19:48 +02:00
painter.h Refactored and unified board editor and footprint editor print dialogs 2018-10-31 19:17:30 +01:00
panel_hotkeys_editor.h Add read-only option for hotkey list, use for list dialog 2018-10-04 07:47:21 -04:00
pcb_base_frame.h Init footprint chooser with current footprint. 2019-01-30 15:45:29 +00:00
pcb_display_options.h refactoring: renamed pcbstruct.h to pcb_display_options.h, DISPLAY_OPTIONS->PCB_DISPLAY_OPTIONS 2017-11-03 20:02:06 +01:00
pcb_screen.h Fix code after renaming files 2018-01-29 11:37:29 +01:00
pcbstruct.h pcbnew legacy: remove option to hide via drill 2016-05-10 16:47:37 -04:00
pgm_base.h Add configuration of Hi-DPI canvas scaling in OpenGL 2019-03-25 15:16:18 +00:00
plotter.h svg: Use grouping 2019-01-30 16:58:33 -08:00
printout.h Removed default line width setting from the printing dialog 2018-10-31 19:17:30 +01:00
profile.h PROF_COUNTER: add a helper method. 2019-03-14 05:49:30 -07:00
project.h Implement poor-man's RTTI for use over KiWAY. 2018-09-15 20:06:42 +01:00
properties.h Store information about buffering & caching in properties 2017-02-28 15:18:58 +01:00
ptree.h Removed all exception specifiers since deprecated. 2017-06-12 13:54:55 -04:00
refdes_utils.h Break out ref-des-centric functions to own header 2019-01-30 15:41:36 -08:00
reporter.h HTML_REPORT: RPT_ALL as sum of individual options 2018-11-23 20:31:27 -08:00
richio.h richio.h, class LINE_READER: prefix variable member names by "m_", like in other classes in Kicad. 2017-11-12 18:29:56 +01:00
scoped_set_reset.h Add context menu to GAL DRAWING_TOOL, including the zone menu 2017-01-11 10:41:08 +01:00
search_stack.h Implement poor-man's RTTI for use over KiWAY. 2018-09-15 20:06:42 +01:00
status_popup.h status_popup: Allow VECTOR2I input 2018-12-13 12:32:58 -08:00
streamwrapper.h Replace WIN32 preprocessor symbol by the official symbol _WIN32, used almost everywhere 2018-10-20 09:22:24 +02:00
sync_queue.h Fix SYNC_QUEUE build issue on Boost < 1.56 2017-03-24 10:09:08 -04:00
systemdirsappend.h Move SystemDirsAppend to own header 2017-03-23 09:23:45 -04:00
text_utils.h Added files missing in 602ecf75 2017-12-07 18:14:19 +01:00
title_block.h QA: Add TITLE_BLOCK tests 2018-11-08 08:28:20 -05:00
trace_helpers.h Document tracemask strings and add note in testing.md 2018-11-27 08:33:10 -05:00
trigo.h Minor fix in zones_by_polygon.cpp: When editing a non copper zone, some settings were not those of the edited zone. 2018-03-14 19:03:14 +01:00
undo_redo_container.h fix misspelled 'an other' -> 'another' 2018-04-08 13:24:37 -04:00
utf8.h change UTF8& operator+=( wchar_t ch ) to UTF8& operator+=( unsigned ch ), because swig does not like wchar_t. 2017-12-08 17:57:53 +01:00
validators.h Pcbnew: allow tab traversal of footprint orientation text control 2019-03-07 20:27:04 +00:00
wildcards_and_files_ext.h Wildcards: unify handling of all files wildcards 2019-01-09 08:57:42 -05:00
worksheet.h Fix code after renaming files 2018-01-29 11:37:29 +01:00
worksheet_dataitem.h Fix incorrect calculations in WORKSHEET_DATAITEM::GetMarkerSizeUi() 2018-09-06 11:48:53 +02:00
worksheet_shape_builder.h Constant-size page layout object handles w/respect to zoom. 2018-08-21 10:34:41 +01:00
worksheet_viewitem.h GAL canvases: add DrawBitmap(), using a basic brute force algo for OpenGL, and a optimized code for Cairo. In this fix the brute force means draw each pixel as a rectangle. It works fine, but could be optimized. 2018-07-30 00:13:30 +02:00
wxdataviewctrl_helpers.h Move wxDataViewCtrl manipulators out of dialog_choose_component.cpp 2017-03-30 21:47:14 -04:00
xnode.h Removed all exception specifiers since deprecated. 2017-06-12 13:54:55 -04:00