2009-02-05 20:53:08 +00:00
|
|
|
|
2012-01-23 04:33:36 +00:00
|
|
|
include_directories(BEFORE ${INC_BEFORE})
|
|
|
|
include_directories(
|
|
|
|
./dialogs
|
|
|
|
./dialog_about
|
|
|
|
${Boost_INCLUDE_DIR}
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
${CAIRO_INCLUDE_DIR}
|
2012-01-23 04:33:36 +00:00
|
|
|
../3d-viewer
|
|
|
|
../pcbnew
|
|
|
|
../polygon
|
|
|
|
${INC_AFTER}
|
|
|
|
)
|
|
|
|
|
2013-07-17 21:55:59 +00:00
|
|
|
# Generate header files containing shader programs
|
|
|
|
# Order of input files is significant
|
|
|
|
add_custom_command(
|
2013-06-30 17:31:16 +00:00
|
|
|
OUTPUT gal/opengl/shader_src.h
|
2013-07-17 21:55:59 +00:00
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
|
-DinputFiles="${PROJECT_SOURCE_DIR}/common/gal/opengl/shader.vert\\;${PROJECT_SOURCE_DIR}/common/gal/opengl/shader.frag"
|
|
|
|
-DoutputFile="shader_src.h"
|
|
|
|
-P ${CMAKE_MODULE_PATH}/Shaders.cmake
|
2013-06-30 17:31:16 +00:00
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/common/gal/opengl
|
2013-07-17 21:55:59 +00:00
|
|
|
COMMENT "Generating headers containing GLSL source code"
|
2013-06-30 17:31:16 +00:00
|
|
|
)
|
|
|
|
|
2013-07-17 21:55:59 +00:00
|
|
|
add_custom_target(
|
|
|
|
shader_headers ALL
|
2013-06-30 17:31:16 +00:00
|
|
|
DEPENDS gal/opengl/shader_src.h
|
|
|
|
)
|
|
|
|
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
set(GAL_SRCS
|
2013-07-23 16:39:07 +00:00
|
|
|
# Common part
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
drawpanel_gal.cpp
|
|
|
|
painter.cpp
|
|
|
|
gal/graphics_abstraction_layer.cpp
|
|
|
|
gal/stroke_font.cpp
|
|
|
|
gal/color4d.cpp
|
2013-07-23 16:39:07 +00:00
|
|
|
view/wx_view_controls.cpp
|
|
|
|
|
|
|
|
# OpenGL GAL
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
gal/opengl/opengl_gal.cpp
|
|
|
|
gal/opengl/shader.cpp
|
2013-07-22 08:41:12 +00:00
|
|
|
gal/opengl/vertex_item.cpp
|
|
|
|
gal/opengl/vertex_container.cpp
|
|
|
|
gal/opengl/cached_container.cpp
|
|
|
|
gal/opengl/noncached_container.cpp
|
|
|
|
gal/opengl/vertex_manager.cpp
|
|
|
|
gal/opengl/gpu_manager.cpp
|
2013-07-23 16:39:07 +00:00
|
|
|
gal/opengl/opengl_compositor.cpp
|
|
|
|
|
|
|
|
# Cairo GAL
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
gal/cairo/cairo_gal.cpp
|
2013-07-25 12:40:04 +00:00
|
|
|
gal/cairo/cairo_compositor.cpp
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
add_library(gal STATIC ${GAL_SRCS})
|
2013-07-17 21:55:59 +00:00
|
|
|
add_dependencies(gal shader_headers)
|
2013-04-09 14:12:18 +00:00
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
add_definitions(-DGLEW_STATIC)
|
|
|
|
endif(WIN32)
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
|
2012-01-23 04:33:36 +00:00
|
|
|
set(COMMON_ABOUT_DLG_SRCS
|
2010-09-01 13:31:20 +00:00
|
|
|
dialog_about/AboutDialog_main.cpp
|
|
|
|
dialog_about/dialog_about.cpp
|
|
|
|
dialog_about/dialog_about_base.cpp
|
2010-11-20 10:59:59 +00:00
|
|
|
dialogs/dialog_display_info_HTML_base.cpp
|
2012-03-08 17:47:23 +00:00
|
|
|
dialogs/dialog_exit_base.cpp
|
2011-08-31 14:59:20 +00:00
|
|
|
dialogs/dialog_image_editor.cpp
|
|
|
|
dialogs/dialog_image_editor_base.cpp
|
2010-11-20 10:59:59 +00:00
|
|
|
dialogs/dialog_get_component.cpp
|
|
|
|
dialogs/dialog_get_component_base.cpp
|
|
|
|
dialogs/dialog_hotkeys_editor.cpp
|
|
|
|
dialogs/dialog_hotkeys_editor_base.cpp
|
2013-01-10 12:18:43 +00:00
|
|
|
dialogs/dialog_list_selector_base.cpp
|
2010-11-20 10:59:59 +00:00
|
|
|
dialogs/dialog_page_settings_base.cpp
|
2012-01-23 04:33:36 +00:00
|
|
|
)
|
2010-09-01 13:31:20 +00:00
|
|
|
|
2013-07-19 18:27:22 +00:00
|
|
|
set(COMMON_PAGE_LAYOUT_SRCS
|
2013-07-22 16:45:22 +00:00
|
|
|
page_layout/title_block_shapes.cpp
|
2013-07-19 18:27:22 +00:00
|
|
|
page_layout/class_worksheet_dataitem.cpp
|
|
|
|
page_layout/class_worksheet_layout.cpp
|
|
|
|
page_layout/page_layout_default_description.cpp
|
|
|
|
page_layout/page_layout_graphic_items.cpp
|
|
|
|
page_layout/page_layout_reader_keywords.cpp
|
|
|
|
page_layout/page_layout_reader.cpp
|
|
|
|
)
|
2013-05-24 08:59:40 +00:00
|
|
|
|
2008-03-11 15:57:54 +00:00
|
|
|
set(COMMON_SRCS
|
2010-09-01 13:31:20 +00:00
|
|
|
${COMMON_ABOUT_DLG_SRCS}
|
2013-07-19 18:27:22 +00:00
|
|
|
${COMMON_PAGE_LAYOUT_SRCS}
|
2008-01-30 09:42:19 +00:00
|
|
|
base_struct.cpp
|
|
|
|
basicframe.cpp
|
2009-06-25 20:45:27 +00:00
|
|
|
bezier_curves.cpp
|
2011-08-24 07:33:55 +00:00
|
|
|
bitmap.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
block_commande.cpp
|
2010-01-05 08:48:49 +00:00
|
|
|
build_version.cpp
|
2011-08-31 14:59:20 +00:00
|
|
|
class_bitmap_base.cpp
|
2010-01-29 20:36:12 +00:00
|
|
|
class_colors_design_settings.cpp
|
2012-05-04 17:44:42 +00:00
|
|
|
class_layer_box_selector.cpp
|
2009-07-06 18:02:26 +00:00
|
|
|
class_marker_base.cpp
|
2009-12-11 04:55:24 +00:00
|
|
|
class_plotter.cpp
|
2009-07-23 15:37:00 +00:00
|
|
|
class_undoredo_container.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
common.cpp
|
|
|
|
common_plot_functions.cpp
|
|
|
|
common_plotHPGL_functions.cpp
|
|
|
|
common_plotPS_functions.cpp
|
2012-05-03 18:37:56 +00:00
|
|
|
common_plotPDF_functions.cpp
|
2009-06-21 13:37:27 +00:00
|
|
|
common_plotGERBER_functions.cpp
|
2009-06-30 10:43:20 +00:00
|
|
|
common_plotDXF_functions.cpp
|
2012-09-15 12:13:03 +00:00
|
|
|
common_plotSVG_functions.cpp
|
2009-06-21 13:37:27 +00:00
|
|
|
confirm.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
copy_to_clipboard.cpp
|
2012-03-22 07:02:49 +00:00
|
|
|
dialog_shim.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
displlst.cpp
|
2008-11-24 06:53:43 +00:00
|
|
|
dlist.cpp
|
2008-12-19 13:51:48 +00:00
|
|
|
drawframe.cpp
|
2008-12-05 16:03:05 +00:00
|
|
|
drawpanel.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
drawtxt.cpp
|
2009-12-11 04:55:24 +00:00
|
|
|
dsnlexer.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
edaappl.cpp
|
|
|
|
eda_dde.cpp
|
|
|
|
eda_doc.cpp
|
2011-01-14 17:43:30 +00:00
|
|
|
filter_reader.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
gestfich.cpp
|
2012-01-13 09:46:02 +00:00
|
|
|
getrunningmicrosecs.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
gr_basic.cpp
|
|
|
|
hotkeys_basic.cpp
|
2010-08-28 18:02:24 +00:00
|
|
|
hotkey_grid_table.cpp
|
2011-09-04 18:35:14 +00:00
|
|
|
html_messagebox.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
msgpanel.cpp
|
2010-08-09 02:03:16 +00:00
|
|
|
netlist_keywords.cpp
|
2010-03-08 06:18:40 +00:00
|
|
|
newstroke_font.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
projet_config.cpp
|
2013-04-08 21:04:45 +00:00
|
|
|
ptree.cpp
|
2013-04-25 16:29:35 +00:00
|
|
|
reporter.cpp
|
2009-12-11 04:55:24 +00:00
|
|
|
richio.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
selcolor.cpp
|
|
|
|
string.cpp
|
|
|
|
trigo.cpp
|
2012-02-16 20:03:33 +00:00
|
|
|
wildcards_and_files_ext.cpp
|
2008-01-30 09:42:19 +00:00
|
|
|
worksheet.cpp
|
2008-12-19 13:51:48 +00:00
|
|
|
wxwineda.cpp
|
2010-08-07 15:25:18 +00:00
|
|
|
xnode.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
zoom.cpp
|
2012-01-23 04:33:36 +00:00
|
|
|
)
|
2009-04-05 20:49:15 +00:00
|
|
|
|
2013-08-02 14:46:53 +00:00
|
|
|
enable_language(C CXX ASM)
|
|
|
|
set_source_files_properties(system/fcontext.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")
|
|
|
|
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
set(COMMON_SRCS
|
|
|
|
${COMMON_SRCS}
|
|
|
|
view/view.cpp
|
|
|
|
view/view_item.cpp
|
2013-08-02 14:46:53 +00:00
|
|
|
|
|
|
|
system/fcontext.s
|
|
|
|
|
|
|
|
tool/tool_base.cpp
|
|
|
|
tool/tool_manager.cpp
|
|
|
|
tool/tool_dispatcher.cpp
|
|
|
|
tool/tool_event.cpp
|
|
|
|
tool/tool_interactive.cpp
|
|
|
|
tool/context_menu.cpp
|
|
|
|
)
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
|
2012-02-08 15:06:06 +00:00
|
|
|
add_library(common STATIC ${COMMON_SRCS})
|
2009-02-05 20:53:08 +00:00
|
|
|
|
2009-04-05 20:49:15 +00:00
|
|
|
set(PCB_COMMON_SRCS
|
2012-01-23 04:53:21 +00:00
|
|
|
base_screen.cpp
|
2012-04-12 21:31:31 +00:00
|
|
|
eda_text.cpp
|
|
|
|
class_page_info.cpp
|
2012-08-23 19:15:58 +00:00
|
|
|
convert_basic_shapes_to_polygon.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
pcbcommon.cpp
|
2011-02-22 20:59:16 +00:00
|
|
|
footprint_info.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/basepcbframe.cpp
|
|
|
|
../pcbnew/class_board.cpp
|
|
|
|
../pcbnew/class_board_connected_item.cpp
|
2009-10-28 11:48:47 +00:00
|
|
|
../pcbnew/class_board_design_settings.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
../pcbnew/class_board_item.cpp
|
2010-01-18 12:37:53 +00:00
|
|
|
../pcbnew/class_dimension.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
../pcbnew/class_drawsegment.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/class_drc_item.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
../pcbnew/class_edge_mod.cpp
|
2009-07-18 11:44:19 +00:00
|
|
|
../pcbnew/class_netclass.cpp
|
2009-05-25 11:53:55 +00:00
|
|
|
../pcbnew/class_netinfo_item.cpp
|
2009-05-24 18:28:36 +00:00
|
|
|
../pcbnew/class_netinfolist.cpp
|
2009-08-01 19:26:05 +00:00
|
|
|
../pcbnew/class_marker_pcb.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/class_mire.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
../pcbnew/class_module.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/class_pad.cpp
|
|
|
|
../pcbnew/class_pad_draw_functions.cpp
|
|
|
|
../pcbnew/class_pcb_text.cpp
|
2009-04-05 20:49:15 +00:00
|
|
|
../pcbnew/class_text_mod.cpp
|
|
|
|
../pcbnew/class_track.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/class_zone.cpp
|
2012-02-06 05:44:19 +00:00
|
|
|
../pcbnew/class_zone_settings.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/classpcb.cpp
|
|
|
|
../pcbnew/collectors.cpp
|
2013-04-26 15:11:52 +00:00
|
|
|
../pcbnew/netlist_reader.cpp
|
|
|
|
../pcbnew/legacy_netlist_reader.cpp
|
|
|
|
../pcbnew/kicad_netlist_reader.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
../pcbnew/sel_layer.cpp
|
2012-04-05 18:27:56 +00:00
|
|
|
../pcbnew/pcb_plot_params.cpp
|
2012-04-17 01:35:43 +00:00
|
|
|
../pcbnew/io_mgr.cpp
|
2012-05-20 13:14:46 +00:00
|
|
|
../pcbnew/eagle_plugin.cpp
|
2012-04-17 01:35:43 +00:00
|
|
|
../pcbnew/legacy_plugin.cpp
|
|
|
|
../pcbnew/kicad_plugin.cpp
|
2012-12-28 20:52:12 +00:00
|
|
|
../pcbnew/gpcb_plugin.cpp
|
2011-12-08 18:23:44 +00:00
|
|
|
pcb_plot_params_keywords.cpp
|
2012-06-09 17:00:13 +00:00
|
|
|
pcb_keywords.cpp
|
|
|
|
../pcbnew/pcb_parser.cpp
|
2012-10-15 01:38:32 +00:00
|
|
|
fp_lib_table_keywords.cpp
|
2013-02-22 20:03:00 +00:00
|
|
|
fpid.cpp
|
2012-10-15 01:38:32 +00:00
|
|
|
fp_lib_table.cpp
|
2009-02-05 20:53:08 +00:00
|
|
|
)
|
2007-11-08 07:17:37 +00:00
|
|
|
|
Introduction of Graphics Abstraction Layer based rendering for pcbnew.
New classes:
- VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
- VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
- EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
- GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
- WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
- PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
- STROKE_FONT - Implements stroke font drawing using GAL methods.
Most important changes to Kicad original code:
* EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
* EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
* There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
* Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
* Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
* Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
* Removed tools/class_painter.h, as now it is extended and included in source code.
Build changes:
* GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
* When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
* GAL-related code is compiled into a static library (common/libgal).
* Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
2013-04-02 06:54:03 +00:00
|
|
|
set(PCB_COMMON_SRCS
|
|
|
|
${PCB_COMMON_SRCS}
|
|
|
|
../pcbnew/pcb_painter.cpp
|
|
|
|
)
|
2011-12-07 05:28:49 +00:00
|
|
|
|
2011-12-31 05:44:00 +00:00
|
|
|
# add -DPCBNEW to compilation of these PCBNEW sources
|
|
|
|
set_source_files_properties( ${PCB_COMMON_SRCS} PROPERTIES
|
|
|
|
COMPILE_DEFINITIONS "PCBNEW"
|
|
|
|
)
|
2011-12-07 05:28:49 +00:00
|
|
|
|
2012-02-08 15:06:06 +00:00
|
|
|
add_library(pcbcommon STATIC ${PCB_COMMON_SRCS})
|
2010-03-08 06:18:40 +00:00
|
|
|
|
2010-08-09 02:03:16 +00:00
|
|
|
# auto-generate netlist_lexer.h and netlist_keywords.cpp
|
2010-12-27 16:49:39 +00:00
|
|
|
make_lexer(
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/netlist.keywords
|
|
|
|
${PROJECT_SOURCE_DIR}/include/netlist_lexer.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/netlist_keywords.cpp
|
|
|
|
NL_T
|
2013-05-31 21:22:34 +00:00
|
|
|
|
|
|
|
# Pass header file with dependency on *_lexer.h as extra_arg
|
|
|
|
${CMAKE_PROJECT_SOURCE_DIR}/pcbnew/netlist_reader.h
|
2010-08-09 02:03:16 +00:00
|
|
|
)
|
|
|
|
|
2011-12-08 18:23:44 +00:00
|
|
|
# auto-generate pcb_plot_params_lexer.h and pcb_plot_params_keywords.cpp
|
|
|
|
make_lexer(
|
2012-01-23 04:33:36 +00:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/pcb_plot_params.keywords
|
2012-04-05 18:27:56 +00:00
|
|
|
${PROJECT_SOURCE_DIR}/include/pcb_plot_params_lexer.h
|
2012-01-23 04:33:36 +00:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/pcb_plot_params_keywords.cpp
|
|
|
|
PCBPLOTPARAMS_T
|
2013-05-31 21:22:34 +00:00
|
|
|
|
|
|
|
# Pass header file with dependency on *_lexer.h as extra_arg
|
|
|
|
${PROJECT_SOURCE_DIR}/pcbnew/pcb_plot_params.h
|
2012-01-23 04:33:36 +00:00
|
|
|
)
|
2011-12-08 18:23:44 +00:00
|
|
|
|
2012-06-09 17:00:13 +00:00
|
|
|
# auto-generate pcbnew_sexpr.h and pcbnew_sexpr.cpp
|
2013-05-31 21:22:34 +00:00
|
|
|
make_lexer(
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/pcb.keywords
|
|
|
|
${PROJECT_SOURCE_DIR}/include/pcb_lexer.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/pcb_keywords.cpp
|
|
|
|
PCB_KEYS_T
|
|
|
|
|
|
|
|
# Pass header file with dependency on *_lexer.h as extra_arg
|
|
|
|
${PROJECT_SOURCE_DIR}/pcbnew/pcb_parser.h
|
|
|
|
)
|
2012-06-09 17:00:13 +00:00
|
|
|
|
2012-10-15 01:38:32 +00:00
|
|
|
# auto-generate pcbnew s-expression footprint library table code.
|
2013-05-31 21:22:34 +00:00
|
|
|
make_lexer(
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fp_lib_table.keywords
|
|
|
|
${PROJECT_SOURCE_DIR}/include/fp_lib_table_lexer.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/fp_lib_table_keywords.cpp
|
|
|
|
FP_LIB_TABLE_T
|
|
|
|
)
|
2012-06-09 17:00:13 +00:00
|
|
|
|
2013-06-05 12:03:16 +00:00
|
|
|
# auto-generate page layout reader s-expression page_layout_reader_lexer.h
|
|
|
|
# and title_block_reader_keywords.cpp.
|
|
|
|
make_lexer(
|
2013-07-19 18:27:22 +00:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/page_layout/page_layout_reader.keywords
|
2013-06-05 12:03:16 +00:00
|
|
|
${PROJECT_SOURCE_DIR}/include/page_layout_reader_lexer.h
|
2013-07-19 18:27:22 +00:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/page_layout/page_layout_reader_keywords.cpp
|
2013-06-05 12:03:16 +00:00
|
|
|
TB_READER_T
|
|
|
|
)
|
|
|
|
|
2010-03-08 06:18:40 +00:00
|
|
|
# The dsntest may not build properly using MS Visual Studio.
|
|
|
|
if(NOT MSVC)
|
|
|
|
# This one gets made only when testing.
|
|
|
|
# to build it, first enable #define STAND_ALONE at top of dsnlexer.cpp
|
|
|
|
add_executable( dsntest EXCLUDE_FROM_ALL dsnlexer.cpp )
|
2012-04-09 06:53:24 +00:00
|
|
|
target_link_libraries( dsntest common ${wxWidgets_LIBRARIES} rt )
|
2010-03-08 06:18:40 +00:00
|
|
|
|
|
|
|
endif( NOT MSVC )
|