mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-20 00:21:31 +00:00
1) Add 32 Cu Layers.
2) Change from legacy Cu stack to counting down from top=(F_Cu or 0). The old Cu stack required knowing the count of Cu layers to make sense of the layer number when converting to many exported file types. The new Cu stack is more commonly used, although ours still gives B_Cu a fixed number. 3) Introduce class LSET and enum LAYER_ID. 4) Change *.kicad_pcb file format version to 4 from 3. 5) Change fixed names Inner1_Cu-Inner14_Cu to In1_Cu-In30_Cu and their meanings are typically flipped. 6) Moved the #define LAYER_N_* stuff into legacy_plugin.cpp where they can die a quiet death, and switch to enum LAYER_ID symbols throughout. 7) Removed the LEGACY_PLUGIN::Save() and FootprintSave() functions. You will need to convert to the format immediately, *.kicad_pcb and *.kicad_mod (=pretty) since legacy format was never going to know about 32 Cu layers and additional technical layers and the reversed Cu stack.
This commit is contained in:
parent
21b70093b0
commit
4578ea8b9e
3d-viewer
bitmap2component
common
CMakeLists.txtclass_colors_design_settings.cppclass_layer_box_selector.cppcommon_plotSVG_functions.cppdraw_frame.cpppcbcommon.cpp
eeschema
gerbview
class_gbr_layer_box_selector.hclass_gbr_layout.hclass_gbr_screen.cppclass_gerber_draw_item.hclass_gerbview_layer_widget.cppclass_gerbview_layer_widget.h
dialogs
draw_gerber_screen.cppgerbview_frame.cppgerbview_frame.hselect_layers_to_pcb.cppinclude
class_board_design_settings.hclass_board_item.hclass_colors_design_settings.hclass_layer_box_selector.hclass_pcb_screen.hdraw_frame.hlayers_id_colors_and_visibility.hpcbcommon.h
view
wxBasePcbFrame.hwxEeschemaStruct.hwxPcbStruct.hpagelayout_editor
pcbnew
autorouter
basepcbframe.cppblock.cppboard_items_to_polygon_shape_transform.cppclass_board.cppclass_board.hclass_board_design_settings.cppclass_dimension.cppclass_dimension.hclass_drawsegment.cppclass_edge_mod.cppclass_mire.cppclass_mire.hclass_module.cppclass_module.hclass_pad.cppclass_pad.hclass_pad_draw_functions.cppclass_pcb_layer_box_selector.cppclass_pcb_layer_box_selector.hclass_pcb_layer_widget.cppclass_pcb_layer_widget.hclass_text_mod.cppclass_track.cppclass_track.hclass_zone.hclass_zone_settings.cppclass_zone_settings.hclasspcb.cppclean.cppcollectors.cppcollectors.hconnect.cppdeltrack.cppdialogs
dialog_SVG_print.cppdialog_SVG_print.hdialog_SVG_print_base.cppdialog_SVG_print_base.fbpdialog_SVG_print_base.hdialog_copper_zones.cppdialog_edit_module_for_BoardEditor.cppdialog_gendrill.cppdialog_global_deletion.cppdialog_graphic_item_properties.cppdialog_graphic_item_properties_for_Modedit.cppdialog_keepout_area_properties.cppdialog_layers_setup.cppdialog_layers_setup_base.cppdialog_layers_setup_base.fbpdialog_layers_setup_base.hdialog_pad_properties.cppdialog_pcb_text_properties.cppdialog_plot.cppdialog_plot.hdialog_print_using_printer.cpp
dimension.cppdrag.hdragsegm.cppdrc.cppdrc_clearance_test_functions.cppeagle_plugin.cppeagle_plugin.hedgemod.cppedit.cppedit_pcb_text.cppeditedge.cppeditrack-part2.cppeditrack.cppexporters
export_d356.cppexport_gencad.cppexport_idf.cppexport_vrml.cppgen_drill_report_files.cppgen_modules_placefile.cppgendrill_Excellon_writer.cppgendrill_Excellon_writer.h
files.cppglobaleditpad.cppgpcb_plugin.cpphotkeys_board_editor.cppimport_dxf
initpcb.cppinvoke_pcb_dialog.hkicad_plugin.cppkicad_plugin.hlayer_widget.cpplayer_widget.hlegacy_plugin.cpplegacy_plugin.hloadcmp.cppmagnetic_tracks_functions.cppmodule_editor_frame.hmodules.cppmove_or_drag_track.cppmuonde.cpponleftclick.cpppad_edition_functions.cpppcad2kicadpcb_plugin
pcb_painter.cpppcb_parser.cpppcb_parser.hpcb_plot_params.cpppcb_plot_params.hpcbframe.cpppcbnew.cpppcbnew.hpcbnew_config.cpppcbplot.cpppcbplot.hplot_board_layers.cppplot_brditems_plotter.cppprint_board_functions.cppprintout_controler.cppprintout_controler.hrouter
sel_layer.cppspecctra.cppspecctra.hspecctra_export.cppspecctra_import.cppswap_layers.cpptarget_edit.cpptools
tr_modif.cpptracepcb.cppzones_by_polygon.cppzones_convert_brd_items_to_polygons_with_Boost.cppzones_non_copper_type_functions.cpppolygon
@ -55,11 +55,11 @@ extern void CheckGLError();
|
||||
/* Helper function
|
||||
* returns true if aLayer should be displayed, false otherwise
|
||||
*/
|
||||
static bool Is3DLayerEnabled( LAYER_NUM aLayer );
|
||||
static bool Is3DLayerEnabled( LAYER_ID aLayer );
|
||||
|
||||
/* returns the Z orientation parameter 1.0 or -1.0 for aLayer
|
||||
* Z orientation is 1.0 for all layers but "back" layers:
|
||||
* LAYER_N_BACK , ADHESIVE_N_BACK, SOLDERPASTE_N_BACK ), SILKSCREEN_N_BACK
|
||||
* B_Cu , B_Adhes, B_Paste ), B_SilkS
|
||||
* used to calculate the Z orientation parameter for glNormal3f
|
||||
*/
|
||||
static GLfloat Get3DLayer_Z_Orientation( LAYER_NUM aLayer );
|
||||
@ -205,18 +205,18 @@ static inline void SetGLTechLayersColor( LAYER_NUM aLayer )
|
||||
{
|
||||
switch( aLayer )
|
||||
{
|
||||
case SOLDERPASTE_N_BACK:
|
||||
case SOLDERPASTE_N_FRONT:
|
||||
case B_Paste:
|
||||
case F_Paste:
|
||||
SetGLColor( DARKGRAY, 0.7 );
|
||||
break;
|
||||
|
||||
case SILKSCREEN_N_BACK:
|
||||
case SILKSCREEN_N_FRONT:
|
||||
case B_SilkS:
|
||||
case F_SilkS:
|
||||
SetGLColor( LIGHTGRAY, 0.9 );
|
||||
break;
|
||||
|
||||
case SOLDERMASK_N_BACK:
|
||||
case SOLDERMASK_N_FRONT:
|
||||
case B_Mask:
|
||||
case F_Mask:
|
||||
SetGLEpoxyColor( 0.7 );
|
||||
break;
|
||||
|
||||
@ -278,12 +278,21 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
bool throughHolesListBuilt = false; // flag to build the through hole polygon list only once
|
||||
bool hightQualityMode = false;
|
||||
|
||||
for( LAYER_NUM layer = FIRST_COPPER_LAYER; layer <= LAST_COPPER_LAYER;
|
||||
++layer )
|
||||
LSET cu_set = LSET::AllCuMask( g_Parm_3D_Visu.m_CopperLayersCount );
|
||||
|
||||
#if 1
|
||||
LAYER_ID cu_seq[MAX_CU_LAYERS]; // preferred sequence, could have called CuStack()
|
||||
// but I assume that's backwards
|
||||
|
||||
for( unsigned i=0; i<DIM(cu_seq); ++i )
|
||||
cu_seq[i] = LAYER_ID( B_Cu - i );
|
||||
|
||||
for( LSEQ cu = cu_set.Seq( cu_seq, DIM(cu_seq) ); cu; ++cu )
|
||||
#else
|
||||
for( LSEQ cu = cu_set.CuStack(); cu; ++cu )
|
||||
#endif
|
||||
{
|
||||
if( layer != LAST_COPPER_LAYER
|
||||
&& layer >= g_Parm_3D_Visu.m_CopperLayersCount )
|
||||
continue;
|
||||
LAYER_ID layer = *cu;
|
||||
|
||||
// Skip non enabled layers in normal mode,
|
||||
// and internal layers in realistic mode
|
||||
@ -295,7 +304,7 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
currLayerHoles.RemoveAllContours();
|
||||
|
||||
// Draw tracks:
|
||||
for( TRACK* track = pcb->m_Track; track != NULL; track = track->Next() )
|
||||
for( TRACK* track = pcb->m_Track; track; track = track->Next() )
|
||||
{
|
||||
if( !track->IsOnLayer( layer ) )
|
||||
continue;
|
||||
@ -325,7 +334,7 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
}
|
||||
|
||||
// draw pads
|
||||
for( MODULE* module = pcb->m_Modules; module != NULL; module = module->Next() )
|
||||
for( MODULE* module = pcb->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
module->TransformPadsShapesWithClearanceToPolygon( layer,
|
||||
bufferPolys,
|
||||
@ -345,7 +354,7 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
{
|
||||
D_PAD* pad = module->Pads();
|
||||
|
||||
for( ; pad != NULL; pad = pad->Next() )
|
||||
for( ; pad; pad = pad->Next() )
|
||||
pad->BuildPadDrillShapePolygon( allLayerHoles, 0,
|
||||
segcountLowQuality );
|
||||
}
|
||||
@ -439,7 +448,7 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
}
|
||||
|
||||
// Draw vias holes (vertical cylinders)
|
||||
for( const TRACK* track = pcb->m_Track; track != NULL; track = track->Next() )
|
||||
for( const TRACK* track = pcb->m_Track; track; track = track->Next() )
|
||||
{
|
||||
const VIA *via = dynamic_cast<const VIA*>(track);
|
||||
|
||||
@ -448,9 +457,9 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
}
|
||||
|
||||
// Draw pads holes (vertical cylinders)
|
||||
for( const MODULE* module = pcb->m_Modules; module != NULL; module = module->Next() )
|
||||
for( const MODULE* module = pcb->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
for( D_PAD* pad = module->Pads(); pad != NULL; pad = pad->Next() )
|
||||
for( D_PAD* pad = module->Pads(); pad; pad = pad->Next() )
|
||||
Draw3DPadHole( pad );
|
||||
}
|
||||
|
||||
@ -459,12 +468,14 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
( realistic_mode || g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY ) ) )
|
||||
{
|
||||
int copper_thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
|
||||
|
||||
// a small offset between substrate and external copper layer to avoid artifacts
|
||||
// when drawing copper items on board
|
||||
int epsilon = Millimeter2iu( 0.01 );
|
||||
int zpos = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK );
|
||||
int board_thickness = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_FRONT )
|
||||
- g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK );
|
||||
int zpos = g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu );
|
||||
int board_thickness = g_Parm_3D_Visu.GetLayerZcoordBIU( F_Cu )
|
||||
- g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu );
|
||||
|
||||
// items on copper layers and having a thickness = copper_thickness
|
||||
// are drawn from zpos - copper_thickness/2 to zpos + copper_thickness
|
||||
// therefore substrate position is copper_thickness/2 to
|
||||
@ -476,11 +487,11 @@ void EDA_3D_CANVAS::BuildBoard3DView()
|
||||
SetGLEpoxyColor();
|
||||
else
|
||||
{
|
||||
EDA_COLOR_T color = g_ColorsSettings.GetLayerColor( EDGE_N );
|
||||
EDA_COLOR_T color = g_ColorsSettings.GetLayerColor( Edge_Cuts );
|
||||
SetGLColor( color, 0.7 );
|
||||
}
|
||||
|
||||
glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( LAYER_N_FRONT ) );
|
||||
glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( F_Cu ) );
|
||||
KI_POLYGON_SET currLayerPolyset;
|
||||
KI_POLYGON_SET polysetHoles;
|
||||
|
||||
@ -515,6 +526,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
// to reduce time calculations
|
||||
// for holes and items which do not need
|
||||
// a fine representation
|
||||
|
||||
double correctionFactorLQ = 1.0 / cos( M_PI / (segcountLowQuality * 2) );
|
||||
|
||||
CPOLYGONS_LIST bufferPolys;
|
||||
@ -537,7 +549,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
int thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
|
||||
|
||||
// Add via holes
|
||||
for( VIA* via = GetFirstVia( pcb->m_Track ); via != NULL;
|
||||
for( VIA* via = GetFirstVia( pcb->m_Track ); via;
|
||||
via = GetFirstVia( via->Next() ) )
|
||||
{
|
||||
VIATYPE_T viatype = via->GetViaType();
|
||||
@ -551,12 +563,12 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
}
|
||||
|
||||
// draw pads holes
|
||||
for( MODULE* module = pcb->m_Modules; module != NULL; module = module->Next() )
|
||||
for( MODULE* module = pcb->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
// Add pad hole, if any
|
||||
D_PAD* pad = module->Pads();
|
||||
|
||||
for( ; pad != NULL; pad = pad->Next() )
|
||||
for( ; pad; pad = pad->Next() )
|
||||
pad->BuildPadDrillShapePolygon( allLayerHoles, 0,
|
||||
segcountLowQuality );
|
||||
}
|
||||
@ -566,9 +578,21 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
KI_POLYGON_SET brdpolysetHoles;
|
||||
allLayerHoles.ExportTo( brdpolysetHoles );
|
||||
|
||||
for( LAYER_NUM layer = FIRST_NON_COPPER_LAYER; layer <= LAST_NON_COPPER_LAYER;
|
||||
++layer )
|
||||
static const LAYER_ID sequence[] = {
|
||||
B_Adhes,
|
||||
F_Adhes,
|
||||
B_Paste,
|
||||
F_Paste,
|
||||
B_SilkS,
|
||||
F_SilkS,
|
||||
B_Mask,
|
||||
F_Mask,
|
||||
};
|
||||
|
||||
for( LSEQ seq = pcb->GetEnabledLayers().Seq( sequence, DIM( sequence ) ); seq; ++seq )
|
||||
{
|
||||
LAYER_ID layer = *seq;
|
||||
|
||||
// Skip user layers, which are not drawn here
|
||||
if( IsUserLayer( layer) )
|
||||
continue;
|
||||
@ -576,7 +600,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
if( !Is3DLayerEnabled( layer ) )
|
||||
continue;
|
||||
|
||||
if( layer == EDGE_N && g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY ) )
|
||||
if( layer == Edge_Cuts && g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY ) )
|
||||
continue;
|
||||
|
||||
bufferPolys.RemoveAllContours();
|
||||
@ -603,14 +627,14 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
}
|
||||
}
|
||||
|
||||
for( MODULE* module = pcb->m_Modules; module != NULL; module = module->Next() )
|
||||
for( MODULE* module = pcb->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
if( layer == SILKSCREEN_N_FRONT || layer == SILKSCREEN_N_BACK )
|
||||
if( layer == F_SilkS || layer == B_SilkS )
|
||||
{
|
||||
D_PAD* pad = module->Pads();
|
||||
int linewidth = g_DrawDefaultLineThickness;
|
||||
|
||||
for( ; pad != NULL; pad = pad->Next() )
|
||||
for( ; pad; pad = pad->Next() )
|
||||
{
|
||||
if( !pad->IsOnLayer( layer ) )
|
||||
continue;
|
||||
@ -651,7 +675,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
|
||||
// Solder mask layers are "negative" layers.
|
||||
// Shapes should be removed from the full board area.
|
||||
if( layer == SOLDERMASK_N_BACK || layer == SOLDERMASK_N_FRONT )
|
||||
if( layer == B_Mask || layer == F_Mask )
|
||||
{
|
||||
bufferPcbOutlines.ExportTo( currLayerPolyset );
|
||||
bufferPolys.Append( allLayerHoles );
|
||||
@ -659,8 +683,8 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
currLayerPolyset -= polyset;
|
||||
}
|
||||
// Remove holes from Solder paste layers and siklscreen
|
||||
else if( layer == SOLDERPASTE_N_BACK || layer == SOLDERPASTE_N_FRONT
|
||||
|| layer == SILKSCREEN_N_BACK || layer == SILKSCREEN_N_FRONT )
|
||||
else if( layer == B_Paste || layer == F_Paste
|
||||
|| layer == B_SilkS || layer == F_SilkS )
|
||||
{
|
||||
bufferPolys.ExportTo( currLayerPolyset );
|
||||
currLayerPolyset -= brdpolysetHoles;
|
||||
@ -674,11 +698,11 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
int thickness = g_Parm_3D_Visu.GetLayerObjectThicknessBIU( layer );
|
||||
int zpos = g_Parm_3D_Visu.GetLayerZcoordBIU( layer );
|
||||
|
||||
if( layer == EDGE_N )
|
||||
if( layer == Edge_Cuts )
|
||||
{
|
||||
thickness = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_FRONT )
|
||||
- g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK );
|
||||
zpos = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK )
|
||||
thickness = g_Parm_3D_Visu.GetLayerZcoordBIU( F_Cu )
|
||||
- g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu );
|
||||
zpos = g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu )
|
||||
+ (thickness / 2);
|
||||
}
|
||||
else
|
||||
@ -703,6 +727,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function BuildBoard3DAuxLayers
|
||||
* Called by CreateDrawGL_List()
|
||||
@ -713,13 +738,25 @@ void EDA_3D_CANVAS::BuildBoard3DAuxLayers()
|
||||
{
|
||||
const int segcountforcircle = 16;
|
||||
double correctionFactor = 1.0 / cos( M_PI / (segcountforcircle * 2) );
|
||||
BOARD* pcb = GetBoard();
|
||||
BOARD* pcb = GetBoard();
|
||||
|
||||
CPOLYGONS_LIST bufferPolys;
|
||||
|
||||
bufferPolys.reserve( 5000 ); // Reserve for items not on board
|
||||
|
||||
for( LAYER_NUM layer = FIRST_USER_LAYER; layer <= LAST_USER_LAYER;
|
||||
++layer )
|
||||
static const LAYER_ID sequence[] = {
|
||||
Dwgs_User,
|
||||
Cmts_User,
|
||||
Eco1_User,
|
||||
Eco2_User,
|
||||
Edge_Cuts,
|
||||
Margin
|
||||
};
|
||||
|
||||
for( LSEQ aux( sequence, sequence+DIM(sequence) ); aux; ++aux )
|
||||
{
|
||||
LAYER_ID layer = *aux;
|
||||
|
||||
if( !Is3DLayerEnabled( layer ) )
|
||||
continue;
|
||||
|
||||
@ -747,7 +784,7 @@ void EDA_3D_CANVAS::BuildBoard3DAuxLayers()
|
||||
}
|
||||
}
|
||||
|
||||
for( MODULE* module = pcb->m_Modules; module != NULL; module = module->Next() )
|
||||
for( MODULE* module = pcb->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
module->TransformPadsShapesWithClearanceToPolygon( layer,
|
||||
bufferPolys,
|
||||
@ -1067,7 +1104,7 @@ void EDA_3D_CANVAS::Draw3DGrid( double aGriSizeMM )
|
||||
|
||||
void EDA_3D_CANVAS::Draw3DViaHole( const VIA* aVia )
|
||||
{
|
||||
LAYER_NUM top_layer, bottom_layer;
|
||||
LAYER_ID top_layer, bottom_layer;
|
||||
int inner_radius = aVia->GetDrillValue() / 2;
|
||||
int thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
|
||||
|
||||
@ -1115,7 +1152,7 @@ void MODULE::ReadAndInsert3DComponentShape( EDA_3D_CANVAS* glcanvas,
|
||||
glRotatef( 180.0, 0.0, 0.0, 1.0 );
|
||||
}
|
||||
|
||||
for( ; shape3D != NULL; shape3D = shape3D->Next() )
|
||||
for( ; shape3D; shape3D = shape3D->Next() )
|
||||
{
|
||||
shape3D->SetLoadNonTransparentObjects( aAllowNonTransparentObjects );
|
||||
shape3D->SetLoadTransparentObjects( aAllowTransparentObjects );
|
||||
@ -1141,15 +1178,15 @@ void EDA_3D_CANVAS::Draw3DPadHole( const D_PAD* aPad )
|
||||
// Store here the points to approximate hole by segments
|
||||
CPOLYGONS_LIST holecornersBuffer;
|
||||
int thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
|
||||
int height = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_FRONT ) -
|
||||
g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK );
|
||||
int height = g_Parm_3D_Visu.GetLayerZcoordBIU( F_Cu ) -
|
||||
g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu );
|
||||
|
||||
if( g_Parm_3D_Visu.IsRealisticMode() )
|
||||
SetGLCopperColor();
|
||||
else
|
||||
SetGLColor( DARKGRAY );
|
||||
|
||||
int holeZpoz = g_Parm_3D_Visu.GetLayerZcoordBIU( LAYER_N_BACK ) + thickness / 2;
|
||||
int holeZpoz = g_Parm_3D_Visu.GetLayerZcoordBIU( B_Cu ) + thickness / 2;
|
||||
int holeHeight = height - thickness;
|
||||
|
||||
if( drillsize.x == drillsize.y ) // usual round hole
|
||||
@ -1187,7 +1224,7 @@ void EDA_3D_CANVAS::Draw3DPadHole( const D_PAD* aPad )
|
||||
}
|
||||
|
||||
|
||||
bool Is3DLayerEnabled( LAYER_NUM aLayer )
|
||||
static bool Is3DLayerEnabled( LAYER_ID aLayer )
|
||||
{
|
||||
DISPLAY3D_FLG flg;
|
||||
bool realistic_mode = g_Parm_3D_Visu.IsRealisticMode();
|
||||
@ -1196,44 +1233,44 @@ bool Is3DLayerEnabled( LAYER_NUM aLayer )
|
||||
// check the flags
|
||||
switch( aLayer )
|
||||
{
|
||||
case ADHESIVE_N_BACK:
|
||||
case ADHESIVE_N_FRONT:
|
||||
case B_Adhes:
|
||||
case F_Adhes:
|
||||
flg = FL_ADHESIVE;
|
||||
break;
|
||||
|
||||
case SOLDERPASTE_N_BACK:
|
||||
case SOLDERPASTE_N_FRONT:
|
||||
case B_Paste:
|
||||
case F_Paste:
|
||||
flg = FL_SOLDERPASTE;
|
||||
break;
|
||||
|
||||
case SILKSCREEN_N_BACK:
|
||||
case SILKSCREEN_N_FRONT:
|
||||
case B_SilkS:
|
||||
case F_SilkS:
|
||||
flg = FL_SILKSCREEN;
|
||||
break;
|
||||
|
||||
case SOLDERMASK_N_BACK:
|
||||
case SOLDERMASK_N_FRONT:
|
||||
case B_Mask:
|
||||
case F_Mask:
|
||||
flg = FL_SOLDERMASK;
|
||||
break;
|
||||
|
||||
case DRAW_N:
|
||||
case COMMENT_N:
|
||||
case Dwgs_User:
|
||||
case Cmts_User:
|
||||
if( realistic_mode )
|
||||
return false;
|
||||
|
||||
flg = FL_COMMENTS;
|
||||
break;
|
||||
|
||||
case ECO1_N:
|
||||
case ECO2_N:
|
||||
case Eco1_User:
|
||||
case Eco2_User:
|
||||
if( realistic_mode )
|
||||
return false;
|
||||
|
||||
flg = FL_ECO;
|
||||
break;
|
||||
|
||||
case LAYER_N_BACK:
|
||||
case LAYER_N_FRONT:
|
||||
case B_Cu:
|
||||
case F_Cu:
|
||||
return g_Parm_3D_Visu.m_BoardSettings->IsLayerVisible( aLayer )
|
||||
|| realistic_mode;
|
||||
break;
|
||||
@ -1256,11 +1293,11 @@ GLfloat Get3DLayer_Z_Orientation( LAYER_NUM aLayer )
|
||||
{
|
||||
double nZ = 1.0;
|
||||
|
||||
if( ( aLayer == LAYER_N_BACK )
|
||||
|| ( aLayer == ADHESIVE_N_BACK )
|
||||
|| ( aLayer == SOLDERPASTE_N_BACK )
|
||||
|| ( aLayer == SILKSCREEN_N_BACK )
|
||||
|| ( aLayer == SOLDERMASK_N_BACK ) )
|
||||
if( ( aLayer == B_Cu )
|
||||
|| ( aLayer == B_Adhes )
|
||||
|| ( aLayer == B_Paste )
|
||||
|| ( aLayer == B_SilkS )
|
||||
|| ( aLayer == B_Mask ) )
|
||||
nZ = -1.0;
|
||||
|
||||
return nZ;
|
||||
|
@ -132,53 +132,52 @@ void INFO3D_VISU::InitSettings( BOARD* aBoard )
|
||||
// Fill remaining unused copper layers and front layer zpos
|
||||
// with m_EpoxyThickness
|
||||
// Solder mask and Solder paste have the same Z position
|
||||
for( ; layer <= LAST_COPPER_LAYER; layer++ )
|
||||
for( ; layer < MAX_CU_LAYERS; layer++ )
|
||||
{
|
||||
m_LayerZcoord[layer] = m_EpoxyThickness;
|
||||
}
|
||||
|
||||
// calculate z position for each non copper layer
|
||||
for( int layer_id = FIRST_NON_COPPER_LAYER; layer_id < NB_PCB_LAYERS; layer_id++ )
|
||||
for( int layer_id = MAX_CU_LAYERS; layer_id < LAYER_ID_COUNT; layer_id++ )
|
||||
{
|
||||
double zpos;
|
||||
|
||||
switch( layer_id )
|
||||
{
|
||||
case ADHESIVE_N_BACK:
|
||||
case B_Adhes:
|
||||
zpos = zpos_copper_back - 3 * zpos_offset;
|
||||
break;
|
||||
|
||||
case ADHESIVE_N_FRONT:
|
||||
case F_Adhes:
|
||||
zpos = zpos_copper_front + 3 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SOLDERPASTE_N_BACK:
|
||||
case B_Paste:
|
||||
zpos = zpos_copper_back - 1 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SOLDERPASTE_N_FRONT:
|
||||
case F_Paste:
|
||||
zpos = zpos_copper_front + 1 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SOLDERMASK_N_BACK:
|
||||
case B_Mask:
|
||||
zpos = zpos_copper_back - 1 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SOLDERMASK_N_FRONT:
|
||||
case F_Mask:
|
||||
zpos = zpos_copper_front + 1 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SILKSCREEN_N_BACK:
|
||||
case B_SilkS:
|
||||
zpos = zpos_copper_back - 2 * zpos_offset;
|
||||
break;
|
||||
|
||||
case SILKSCREEN_N_FRONT:
|
||||
case F_SilkS:
|
||||
zpos = zpos_copper_front + 2 * zpos_offset;
|
||||
break;
|
||||
|
||||
default:
|
||||
zpos = zpos_copper_front +
|
||||
(layer_id - FIRST_NON_COPPER_LAYER + 4) * zpos_offset;
|
||||
zpos = zpos_copper_front + (layer_id - MAX_CU_LAYERS + 4) * zpos_offset;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -196,8 +195,8 @@ void INFO3D_VISU::InitSettings( BOARD* aBoard )
|
||||
double INFO3D_VISU::GetModulesZcoord3DIU( bool aIsFlipped )
|
||||
{
|
||||
if( aIsFlipped )
|
||||
return m_LayerZcoord[LAYER_N_BACK] - ( m_CopperThickness / 2 );
|
||||
return m_LayerZcoord[B_Cu] - ( m_CopperThickness / 2 );
|
||||
else
|
||||
return m_LayerZcoord[LAYER_N_FRONT] + ( m_CopperThickness / 2 );
|
||||
return m_LayerZcoord[F_Cu] + ( m_CopperThickness / 2 );
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ public:
|
||||
double m_CurrentZpos; // temporary storage of current value of Z position,
|
||||
// used in some calculation
|
||||
private:
|
||||
double m_LayerZcoord[NB_LAYERS]; // Z position of each layer (normalized)
|
||||
double m_LayerZcoord[LAYER_ID_COUNT]; // Z position of each layer (normalized)
|
||||
double m_CopperThickness; // Copper thickness (normalized)
|
||||
double m_EpoxyThickness; // Epoxy thickness (normalized)
|
||||
double m_NonCopperLayerThickness; // Non copper layers thickness
|
||||
@ -188,11 +188,12 @@ public: INFO3D_VISU();
|
||||
*
|
||||
* Note: if m_drawFlags[FL_USE_COPPER_THICKNESS] is not set, returns 0
|
||||
*/
|
||||
int GetLayerObjectThicknessBIU( int aLayerId) const
|
||||
int GetLayerObjectThicknessBIU( int aLayerId ) const
|
||||
{
|
||||
return aLayerId >= FIRST_NON_COPPER_LAYER ?
|
||||
GetNonCopperLayerThicknessBIU() :
|
||||
GetCopperThicknessBIU();
|
||||
return IsCopperLayer( aLayerId ) ?
|
||||
GetCopperThicknessBIU() :
|
||||
GetNonCopperLayerThicknessBIU()
|
||||
;
|
||||
}
|
||||
|
||||
bool IsRealisticMode() { return GetFlag( FL_USE_REALISTIC_MODE ); }
|
||||
|
@ -355,7 +355,7 @@ void BITMAPCONV_INFO::OuputOnePolygon( KPolygon & aPolygon )
|
||||
|
||||
case PCBNEW_LEGACY_EMP:
|
||||
{
|
||||
LAYER_NUM layer = SILKSCREEN_N_FRONT;
|
||||
LAYER_NUM layer = F_SilkS;
|
||||
int width = 1;
|
||||
fprintf( m_Outfile, "DP %d %d %d %d %d %d %d\n",
|
||||
0, 0, 0, 0,
|
||||
|
@ -250,6 +250,7 @@ set( PCB_COMMON_SRCS
|
||||
eda_text.cpp
|
||||
class_page_info.cpp
|
||||
pcbcommon.cpp
|
||||
lset.cpp
|
||||
footprint_info.cpp
|
||||
../pcbnew/basepcbframe.cpp
|
||||
../pcbnew/class_board.cpp
|
||||
|
@ -15,8 +15,7 @@
|
||||
/* Initial colors values: optimized for Pcbnew, but are also Ok for Eeschema
|
||||
* these values are superseded by config reading
|
||||
*/
|
||||
static const EDA_COLOR_T default_layer_color[LAYERSCOLORSBUFFERSIZE] =
|
||||
{
|
||||
static const EDA_COLOR_T default_layer_color[] = {
|
||||
GREEN, BLUE, LIGHTGRAY, BROWN,
|
||||
RED, MAGENTA, LIGHTGRAY, MAGENTA,
|
||||
DARKGRAY, BLUE, GREEN, CYAN,
|
||||
@ -34,8 +33,8 @@ static const EDA_COLOR_T default_layer_color[LAYERSCOLORSBUFFERSIZE] =
|
||||
DARKGRAY
|
||||
};
|
||||
|
||||
static const EDA_COLOR_T default_items_color[LAYERSCOLORSBUFFERSIZE] =
|
||||
{
|
||||
|
||||
static const EDA_COLOR_T default_items_color[] = {
|
||||
LIGHTGRAY, // unused
|
||||
CYAN, // VIA_MICROVIA_VISIBLE
|
||||
BROWN, // VIA_BBLIND_VISIBLE
|
||||
@ -56,13 +55,24 @@ static const EDA_COLOR_T default_items_color[LAYERSCOLORSBUFFERSIZE] =
|
||||
LIGHTGRAY, LIGHTGRAY, LIGHTGRAY
|
||||
};
|
||||
|
||||
|
||||
COLORS_DESIGN_SETTINGS::COLORS_DESIGN_SETTINGS()
|
||||
{
|
||||
for( unsigned ii = 0; ii < DIM(m_LayersColors); ii++ )
|
||||
m_LayersColors[ii] = default_layer_color[ii];
|
||||
for( unsigned src = 0, dst = 0; dst < DIM(m_LayersColors); ++dst )
|
||||
{
|
||||
m_LayersColors[dst] = default_layer_color[src++];
|
||||
|
||||
for( unsigned ii = 0; ii < DIM(m_ItemsColors); ii++ )
|
||||
m_ItemsColors[ii] = default_items_color[ii];
|
||||
if( src >= DIM( default_layer_color ) )
|
||||
src = 0; // wrap the source.
|
||||
}
|
||||
|
||||
for( unsigned src = 0, dst = 0; dst < DIM(m_ItemsColors); ++dst )
|
||||
{
|
||||
m_ItemsColors[dst] = default_items_color[src++];
|
||||
|
||||
if( src >= DIM( default_items_color ) )
|
||||
src = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -13,19 +13,11 @@
|
||||
|
||||
LAYER_SELECTOR::LAYER_SELECTOR()
|
||||
{
|
||||
m_layerorder = true;
|
||||
m_layerhotkeys = true;
|
||||
m_hotkeys = NULL;
|
||||
}
|
||||
|
||||
|
||||
bool LAYER_SELECTOR::SetLayersOrdered( bool value )
|
||||
{
|
||||
m_layerorder = value;
|
||||
return m_layerorder;
|
||||
}
|
||||
|
||||
|
||||
bool LAYER_SELECTOR::SetLayersHotkeys( bool value )
|
||||
{
|
||||
m_layerhotkeys = value;
|
||||
@ -33,7 +25,7 @@ bool LAYER_SELECTOR::SetLayersHotkeys( bool value )
|
||||
}
|
||||
|
||||
|
||||
void LAYER_SELECTOR::SetBitmapLayer( wxBitmap& aLayerbmp, LAYER_NUM aLayer )
|
||||
void LAYER_SELECTOR::SetBitmapLayer( wxBitmap& aLayerbmp, LAYER_ID aLayer )
|
||||
{
|
||||
wxMemoryDC bmpDC;
|
||||
wxBrush brush;
|
||||
@ -120,12 +112,15 @@ int LAYER_BOX_SELECTOR::SetLayerSelection( LAYER_NUM layer )
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
void LAYER_BOX_SELECTOR::ResyncBitmapOnly()
|
||||
{
|
||||
LAYER_NUM elements = GetCount();
|
||||
for( LAYER_NUM i = FIRST_LAYER; i < elements; ++i )
|
||||
int elements = GetCount();
|
||||
|
||||
for( LAYER_NUM i = 0; i < elements; ++i )
|
||||
{
|
||||
wxBitmap layerbmp( 14, 14 );
|
||||
SetBitmapLayer( layerbmp, i );
|
||||
SetBitmapLayer( layerbmp, LAYER_ID( i ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -420,14 +420,14 @@ void SVG_PLOTTER::PlotPoly( const std::vector<wxPoint>& aCornerList,
|
||||
|
||||
switch( aFill )
|
||||
{
|
||||
case NO_FILL:
|
||||
fprintf( outputFile, "<polyline fill=\"none;\"\n" );
|
||||
break;
|
||||
case NO_FILL:
|
||||
fprintf( outputFile, "<polyline fill=\"none;\"\n" );
|
||||
break;
|
||||
|
||||
case FILLED_WITH_BG_BODYCOLOR:
|
||||
case FILLED_SHAPE:
|
||||
fprintf( outputFile, "<polyline style=\"fill-rule:evenodd;\"\n" );
|
||||
break;
|
||||
case FILLED_WITH_BG_BODYCOLOR:
|
||||
case FILLED_SHAPE:
|
||||
fprintf( outputFile, "<polyline style=\"fill-rule:evenodd;\"\n" );
|
||||
break;
|
||||
}
|
||||
|
||||
DPOINT pos = userToDeviceCoordinates( aCornerList[0] );
|
||||
|
@ -327,7 +327,7 @@ void EDA_DRAW_FRAME::ToolOnRightClick( wxCommandEvent& event )
|
||||
}
|
||||
|
||||
|
||||
void EDA_DRAW_FRAME::PrintPage( wxDC* aDC,LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData )
|
||||
void EDA_DRAW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMask, bool aPrintMirrorMode, void* aData )
|
||||
{
|
||||
wxMessageBox( wxT("EDA_DRAW_FRAME::PrintPage() error") );
|
||||
}
|
||||
|
@ -43,16 +43,6 @@
|
||||
class MODULE;
|
||||
|
||||
|
||||
/* Look up Table for conversion copper layer count -> general copper layer
|
||||
* mask: */
|
||||
LAYER_MSK g_TabAllCopperLayerMask[NB_COPPER_LAYERS] = {
|
||||
0x0001, 0x8001, 0x8003, 0x8007,
|
||||
0x800F, 0x801F, 0x803F, 0x807F,
|
||||
0x80FF, 0x81FF, 0x83FF, 0x87FF,
|
||||
0x8FFF, 0x9FFF, 0xCFFF, 0xFFFF
|
||||
};
|
||||
|
||||
|
||||
DISPLAY_OPTIONS DisplayOpt; // Display options for board items
|
||||
|
||||
int g_AnchorColor = BLUE;
|
||||
@ -71,124 +61,20 @@ int g_PadCMPColor = RED;
|
||||
*/
|
||||
DLIST<TRACK> g_CurrentTrackList;
|
||||
|
||||
LAYER_NUM FlipLayer( LAYER_NUM oldlayer )
|
||||
void AccumulateDescription( wxString &aDesc, const wxString &aItem )
|
||||
{
|
||||
switch( oldlayer )
|
||||
{
|
||||
case LAYER_N_BACK:
|
||||
return LAYER_N_FRONT;
|
||||
|
||||
case LAYER_N_FRONT:
|
||||
return LAYER_N_BACK;
|
||||
|
||||
case SILKSCREEN_N_BACK:
|
||||
return SILKSCREEN_N_FRONT;
|
||||
|
||||
case SILKSCREEN_N_FRONT:
|
||||
return SILKSCREEN_N_BACK;
|
||||
|
||||
case ADHESIVE_N_BACK:
|
||||
return ADHESIVE_N_FRONT;
|
||||
|
||||
case ADHESIVE_N_FRONT:
|
||||
return ADHESIVE_N_BACK;
|
||||
|
||||
case SOLDERMASK_N_BACK:
|
||||
return SOLDERMASK_N_FRONT;
|
||||
|
||||
case SOLDERMASK_N_FRONT:
|
||||
return SOLDERMASK_N_BACK;
|
||||
|
||||
case SOLDERPASTE_N_BACK:
|
||||
return SOLDERPASTE_N_FRONT;
|
||||
|
||||
case SOLDERPASTE_N_FRONT:
|
||||
return SOLDERPASTE_N_BACK;
|
||||
|
||||
// No change for the other layers
|
||||
default:
|
||||
return oldlayer;
|
||||
}
|
||||
if( !aDesc.IsEmpty() )
|
||||
aDesc << wxT(", ");
|
||||
aDesc << aItem;
|
||||
}
|
||||
|
||||
|
||||
LAYER_MSK FlipLayerMask( LAYER_MSK aMask )
|
||||
{
|
||||
LAYER_MSK newMask;
|
||||
|
||||
newMask = aMask & ~(LAYER_BACK | LAYER_FRONT |
|
||||
SILKSCREEN_LAYER_BACK | SILKSCREEN_LAYER_FRONT |
|
||||
ADHESIVE_LAYER_BACK | ADHESIVE_LAYER_FRONT |
|
||||
SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT |
|
||||
SOLDERPASTE_LAYER_BACK | SOLDERPASTE_LAYER_FRONT |
|
||||
ADHESIVE_LAYER_BACK | ADHESIVE_LAYER_FRONT);
|
||||
|
||||
if( aMask & LAYER_BACK )
|
||||
newMask |= LAYER_FRONT;
|
||||
|
||||
if( aMask & LAYER_FRONT )
|
||||
newMask |= LAYER_BACK;
|
||||
|
||||
if( aMask & SILKSCREEN_LAYER_BACK )
|
||||
newMask |= SILKSCREEN_LAYER_FRONT;
|
||||
|
||||
if( aMask & SILKSCREEN_LAYER_FRONT )
|
||||
newMask |= SILKSCREEN_LAYER_BACK;
|
||||
|
||||
if( aMask & ADHESIVE_LAYER_BACK )
|
||||
newMask |= ADHESIVE_LAYER_FRONT;
|
||||
|
||||
if( aMask & ADHESIVE_LAYER_FRONT )
|
||||
newMask |= ADHESIVE_LAYER_BACK;
|
||||
|
||||
if( aMask & SOLDERMASK_LAYER_BACK )
|
||||
newMask |= SOLDERMASK_LAYER_FRONT;
|
||||
|
||||
if( aMask & SOLDERMASK_LAYER_FRONT )
|
||||
newMask |= SOLDERMASK_LAYER_BACK;
|
||||
|
||||
if( aMask & SOLDERPASTE_LAYER_BACK )
|
||||
newMask |= SOLDERPASTE_LAYER_FRONT;
|
||||
|
||||
if( aMask & SOLDERPASTE_LAYER_FRONT )
|
||||
newMask |= SOLDERPASTE_LAYER_BACK;
|
||||
|
||||
if( aMask & ADHESIVE_LAYER_BACK )
|
||||
newMask |= ADHESIVE_LAYER_FRONT;
|
||||
|
||||
if( aMask & ADHESIVE_LAYER_FRONT )
|
||||
newMask |= ADHESIVE_LAYER_BACK;
|
||||
|
||||
return newMask;
|
||||
}
|
||||
|
||||
LAYER_NUM ExtractLayer( LAYER_MSK aMask )
|
||||
{
|
||||
if( aMask == NO_LAYERS )
|
||||
return UNSELECTED_LAYER;
|
||||
|
||||
LAYER_NUM candidate = UNDEFINED_LAYER;
|
||||
|
||||
// Scan all the layers and take note of the first set; if other are
|
||||
// then found return UNDEFINED_LAYER
|
||||
for( LAYER_NUM i = FIRST_LAYER; i < NB_LAYERS; ++i )
|
||||
{
|
||||
if( aMask & GetLayerMask( i ) )
|
||||
{
|
||||
if( candidate == UNDEFINED_LAYER )
|
||||
candidate = i;
|
||||
else
|
||||
return UNDEFINED_LAYER;
|
||||
}
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
wxString LayerMaskDescribe( const BOARD *aBoard, LAYER_MSK aMask )
|
||||
wxString LayerMaskDescribe( const BOARD *aBoard, LSET aMask )
|
||||
{
|
||||
// Try the single or no- layer case (easy)
|
||||
LAYER_NUM layer = ExtractLayer( aMask );
|
||||
switch( layer )
|
||||
LAYER_ID layer = aMask.ExtractLayer();
|
||||
|
||||
switch( (int) layer )
|
||||
{
|
||||
case UNSELECTED_LAYER:
|
||||
return _( "No layers" );
|
||||
@ -203,24 +89,19 @@ wxString LayerMaskDescribe( const BOARD *aBoard, LAYER_MSK aMask )
|
||||
// Try to be smart and useful, starting with outer copper
|
||||
// (which are more important than internal ones)
|
||||
wxString layerInfo;
|
||||
if( aMask & LAYER_FRONT )
|
||||
AccumulateDescription( layerInfo, aBoard->GetLayerName( LAYER_N_FRONT ) );
|
||||
|
||||
if( aMask & LAYER_BACK )
|
||||
AccumulateDescription( layerInfo, aBoard->GetLayerName( LAYER_N_BACK ) );
|
||||
|
||||
if( aMask & INTERNAL_CU_LAYERS )
|
||||
if( aMask[F_Cu] )
|
||||
AccumulateDescription( layerInfo, aBoard->GetLayerName( F_Cu ) );
|
||||
|
||||
if( aMask[B_Cu] )
|
||||
AccumulateDescription( layerInfo, aBoard->GetLayerName( B_Cu ) );
|
||||
|
||||
if( ( aMask & LSET::InternalCuMask() ).any() )
|
||||
AccumulateDescription( layerInfo, _("Internal" ) );
|
||||
|
||||
if( aMask & ALL_NO_CU_LAYERS )
|
||||
if( ( aMask & LSET::AllNonCuMask() ).any() )
|
||||
AccumulateDescription( layerInfo, _("Non-copper" ) );
|
||||
|
||||
return layerInfo;
|
||||
}
|
||||
|
||||
void AccumulateDescription( wxString &aDesc, const wxString &aItem )
|
||||
{
|
||||
if( !aDesc.IsEmpty() )
|
||||
aDesc << wxT(", ");
|
||||
aDesc << aItem;
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ void LIB_EDIT_FRAME::SVG_PlotComponent( const wxString& aFullFileName )
|
||||
delete plotter;
|
||||
}
|
||||
|
||||
void LIB_EDIT_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData)
|
||||
void LIB_EDIT_FRAME::PrintPage( wxDC* aDC, LSET aPrintMask, bool aPrintMirrorMode, void* aData)
|
||||
{
|
||||
if( ! m_component )
|
||||
return;
|
||||
|
@ -608,7 +608,7 @@ public:
|
||||
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
|
||||
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
|
||||
*/
|
||||
virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMask,
|
||||
virtual void PrintPage( wxDC* aDC, LSET aPrintMask,
|
||||
bool aPrintMirrorMode, void* aData = NULL );
|
||||
|
||||
/**
|
||||
|
@ -931,7 +931,7 @@ void SCH_EDIT_FRAME::OnPrint( wxCommandEvent& event )
|
||||
}
|
||||
|
||||
|
||||
void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode,
|
||||
void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, LSET aPrintMask, bool aPrintMirrorMode,
|
||||
void* aData )
|
||||
{
|
||||
GetScreen()->Draw( m_canvas, aDC, GR_DEFAULT_DRAWMODE );
|
||||
|
@ -9,14 +9,12 @@ class GBR_LAYER_BOX_SELECTOR : public LAYER_BOX_SELECTOR
|
||||
{
|
||||
public:
|
||||
GBR_LAYER_BOX_SELECTOR( wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
int n = 0, const wxString choices[] = NULL )
|
||||
:LAYER_BOX_SELECTOR( parent, id, pos, size, n, choices )
|
||||
{
|
||||
m_layerhotkeys = false;
|
||||
m_layerorder = false;
|
||||
}
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
int n = 0, const wxString choices[] = NULL ) :
|
||||
LAYER_BOX_SELECTOR( parent, id, pos, size, n, choices )
|
||||
{
|
||||
m_layerhotkeys = false;
|
||||
}
|
||||
|
||||
// Reload the Layers names and bitmaps
|
||||
// Virtual function
|
||||
|
@ -27,7 +27,7 @@ private:
|
||||
PAGE_INFO m_paper;
|
||||
TITLE_BLOCK m_titles;
|
||||
wxPoint m_originAxisPosition;
|
||||
LAYER_MSK m_printLayersMask; // When printing: the list of layers to print
|
||||
LSET m_printLayersMask; // When printing: the list of layers to print
|
||||
public:
|
||||
|
||||
DLIST<GERBER_DRAW_ITEM> m_Drawings; // linked list of Gerber Items
|
||||
@ -93,7 +93,7 @@ public:
|
||||
* changes the bit-mask of visible layers
|
||||
* @param aLayerMask = The new bit-mask of visible layers
|
||||
*/
|
||||
void SetVisibleLayers( LAYER_MSK aLayerMask )
|
||||
void SetVisibleLayers( LSET aLayerMask )
|
||||
{
|
||||
m_printLayersMask = aLayerMask;
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ GBR_SCREEN::GBR_SCREEN( const wxSize& aPageSizeIU ) :
|
||||
// Set the working grid size to a reasonable value (in 1/10000 inch)
|
||||
SetGrid( DMIL_GRID( 500 ) );
|
||||
|
||||
m_Active_Layer = LAYER_N_BACK; // default active layer = bottom layer
|
||||
m_Active_Layer = B_Cu; // default active layer = bottom layer
|
||||
|
||||
SetZoom( ZOOM_FACTOR( 350 ) ); // a default value for zoom
|
||||
|
||||
|
@ -134,7 +134,7 @@ public:
|
||||
*/
|
||||
void SetLayer( LAYER_NUM aLayer ) { m_Layer = aLayer; }
|
||||
|
||||
LAYER_MSK GetLayerMask()
|
||||
LSET GetLayerMask()
|
||||
{
|
||||
return ::GetLayerMask( m_Layer );
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
|
||||
int rowCount;
|
||||
int menuId = event.GetId();
|
||||
bool visible = (menuId == ID_SHOW_ALL_LAYERS) ? true : false;;
|
||||
LAYER_MSK visibleLayers = NO_LAYERS;
|
||||
LSET visibleLayers = NO_LAYERS;
|
||||
bool force_active_layer_visible;
|
||||
|
||||
m_alwaysShowActiveLayer = ( menuId == ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE );
|
||||
@ -195,9 +195,9 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
|
||||
cb->SetValue( loc_visible );
|
||||
|
||||
if( loc_visible )
|
||||
visibleLayers |= GetLayerMask( row );
|
||||
visibleLayers |= GetLayerSet( row );
|
||||
else
|
||||
visibleLayers &= ~GetLayerMask( row );
|
||||
visibleLayers &= ~GetLayerSet( row );
|
||||
}
|
||||
|
||||
myframe->SetVisibleLayers( visibleLayers );
|
||||
@ -237,7 +237,7 @@ void GERBER_LAYER_WIDGET::ReFill()
|
||||
|
||||
//-----<LAYER_WIDGET callbacks>-------------------------------------------
|
||||
|
||||
void GERBER_LAYER_WIDGET::OnLayerColorChange( LAYER_NUM aLayer, EDA_COLOR_T aColor )
|
||||
void GERBER_LAYER_WIDGET::OnLayerColorChange( int aLayer, EDA_COLOR_T aColor )
|
||||
{
|
||||
myframe->SetLayerColor( aLayer, aColor );
|
||||
myframe->m_SelLayerBox->ResyncBitmapOnly();
|
||||
@ -263,12 +263,12 @@ bool GERBER_LAYER_WIDGET::OnLayerSelect( LAYER_NUM aLayer )
|
||||
|
||||
void GERBER_LAYER_WIDGET::OnLayerVisible( LAYER_NUM aLayer, bool isVisible, bool isFinal )
|
||||
{
|
||||
LAYER_MSK visibleLayers = myframe->GetVisibleLayers();
|
||||
LSET visibleLayers = myframe->GetVisibleLayers();
|
||||
|
||||
if( isVisible )
|
||||
visibleLayers |= GetLayerMask( aLayer );
|
||||
visibleLayers |= GetLayerSet( aLayer );
|
||||
else
|
||||
visibleLayers &= ~GetLayerMask( aLayer );
|
||||
visibleLayers &= ~GetLayerSet( aLayer );
|
||||
|
||||
myframe->SetVisibleLayers( visibleLayers );
|
||||
|
||||
|
@ -91,9 +91,9 @@ public:
|
||||
void ReFillRender();
|
||||
|
||||
//-----<implement LAYER_WIDGET abstract callback functions>-----------
|
||||
void OnLayerColorChange( LAYER_NUM aLayer, EDA_COLOR_T aColor );
|
||||
bool OnLayerSelect( LAYER_NUM aLayer );
|
||||
void OnLayerVisible( LAYER_NUM aLayer, bool isVisible, bool isFinal );
|
||||
void OnLayerColorChange( int aLayer, EDA_COLOR_T aColor );
|
||||
bool OnLayerSelect( int aLayer );
|
||||
void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
|
||||
void OnRenderColorChange( int aId, EDA_COLOR_T aColor );
|
||||
void OnRenderEnable( int aId, bool isEnabled );
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@ private:
|
||||
public:
|
||||
bool IsMirrored() { return m_Print_Mirror->IsChecked(); }
|
||||
bool PrintUsingSinglePage() { return true; }
|
||||
int SetLayerMaskFromListSelection();
|
||||
int SetLayerSetFromListSelection();
|
||||
};
|
||||
|
||||
|
||||
@ -136,7 +136,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||
// Create layer list
|
||||
for( LAYER_NUM ii = FIRST_LAYER; ii < layer_max; ++ii )
|
||||
{
|
||||
LAYER_MSK mask = GetLayerMask( ii );
|
||||
LSET mask = GetLayerSet( ii );
|
||||
msg = _( "Layer" );
|
||||
msg << wxT( " " ) << ii + 1;
|
||||
m_BoxSelectLayer[ii] = new wxCheckBox( this, -1, msg );
|
||||
@ -183,7 +183,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||
{
|
||||
m_BoxSelectLayer[layer]->SetValue( option );
|
||||
if( option )
|
||||
s_SelectedLayers |= GetLayerMask( layer );
|
||||
s_SelectedLayers |= GetLayerSet( layer );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -215,7 +215,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||
}
|
||||
|
||||
/**************************************************************/
|
||||
int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection()
|
||||
int DIALOG_PRINT_USING_PRINTER::SetLayerSetFromListSelection()
|
||||
/**************************************************************/
|
||||
{
|
||||
int page_count = 0;
|
||||
@ -225,7 +225,7 @@ int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection()
|
||||
if( m_BoxSelectLayer[ii]->IsChecked() )
|
||||
{
|
||||
page_count++;
|
||||
s_Parameters.m_PrintMaskLayer |= GetLayerMask( ii );
|
||||
s_Parameters.m_PrintMaskLayer |= GetLayerSet( ii );
|
||||
}
|
||||
}
|
||||
|
||||
@ -271,7 +271,7 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( )
|
||||
// because these objects create artefact when they are printed on an existing image.
|
||||
s_Parameters.m_OptionPrintPage = false;
|
||||
|
||||
SetLayerMaskFromListSelection();
|
||||
SetLayerSetFromListSelection();
|
||||
|
||||
int idx = m_ScaleOption->GetSelection();
|
||||
s_Parameters.m_PrintScale = s_ScaleList[idx];
|
||||
@ -342,7 +342,7 @@ void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event )
|
||||
return;
|
||||
}
|
||||
|
||||
SetLayerMaskFromListSelection();
|
||||
SetLayerSetFromListSelection();
|
||||
|
||||
// If no layer selected, we have no plot. prompt user if it happens
|
||||
// because he could think there is a bug in Pcbnew:
|
||||
|
@ -189,7 +189,7 @@ const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber )
|
||||
// Use a switch to explicitly show the mapping more clearly
|
||||
switch( aLayerNumber )
|
||||
{
|
||||
case LAYER_N_FRONT: txt = wxT( "F.Cu" ); break;
|
||||
case F_Cu: txt = wxT( "F.Cu" ); break;
|
||||
case LAYER_N_2: txt = wxT( "Inner1.Cu" ); break;
|
||||
case LAYER_N_3: txt = wxT( "Inner2.Cu" ); break;
|
||||
case LAYER_N_4: txt = wxT( "Inner3.Cu" ); break;
|
||||
@ -204,20 +204,20 @@ const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber )
|
||||
case LAYER_N_13: txt = wxT( "Inner12.Cu" ); break;
|
||||
case LAYER_N_14: txt = wxT( "Inner13.Cu" ); break;
|
||||
case LAYER_N_15: txt = wxT( "Inner14.Cu" ); break;
|
||||
case LAYER_N_BACK: txt = wxT( "B.Cu" ); break;
|
||||
case ADHESIVE_N_BACK: txt = wxT( "B.Adhes" ); break;
|
||||
case ADHESIVE_N_FRONT: txt = wxT( "F.Adhes" ); break;
|
||||
case SOLDERPASTE_N_BACK: txt = wxT( "B.Paste" ); break;
|
||||
case SOLDERPASTE_N_FRONT: txt = wxT( "F.Paste" ); break;
|
||||
case SILKSCREEN_N_BACK: txt = wxT( "B.SilkS" ); break;
|
||||
case SILKSCREEN_N_FRONT: txt = wxT( "F.SilkS" ); break;
|
||||
case SOLDERMASK_N_BACK: txt = wxT( "B.Mask" ); break;
|
||||
case SOLDERMASK_N_FRONT: txt = wxT( "F.Mask" ); break;
|
||||
case DRAW_N: txt = wxT( "Dwgs.User" ); break;
|
||||
case COMMENT_N: txt = wxT( "Cmts.User" ); break;
|
||||
case ECO1_N: txt = wxT( "Eco1.User" ); break;
|
||||
case ECO2_N: txt = wxT( "Eco2.User" ); break;
|
||||
case EDGE_N: txt = wxT( "Edge.Cuts" ); break;
|
||||
case B_Cu: txt = wxT( "B.Cu" ); break;
|
||||
case B_Adhes: txt = wxT( "B.Adhes" ); break;
|
||||
case F_Adhes: txt = wxT( "F.Adhes" ); break;
|
||||
case B_Paste: txt = wxT( "B.Paste" ); break;
|
||||
case F_Paste: txt = wxT( "F.Paste" ); break;
|
||||
case B_SilkS: txt = wxT( "B.SilkS" ); break;
|
||||
case F_SilkS: txt = wxT( "F.SilkS" ); break;
|
||||
case B_Mask: txt = wxT( "B.Mask" ); break;
|
||||
case F_Mask: txt = wxT( "F.Mask" ); break;
|
||||
case Dwgs_User: txt = wxT( "Dwgs.User" ); break;
|
||||
case Cmts_User: txt = wxT( "Cmts.User" ); break;
|
||||
case Eco1_User: txt = wxT( "Eco1.User" ); break;
|
||||
case Eco2_User: txt = wxT( "Eco2.User" ); break;
|
||||
case Edge_Cuts: txt = wxT( "Edge.Cuts" ); break;
|
||||
default: txt = wxT( "BAD_INDEX" ); break;
|
||||
}
|
||||
|
||||
|
@ -42,11 +42,11 @@
|
||||
#include <printout_controler.h>
|
||||
|
||||
|
||||
void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer,
|
||||
void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer,
|
||||
bool aPrintMirrorMode, void* aData )
|
||||
{
|
||||
// Save current draw options, because print mode has specific options:
|
||||
LAYER_MSK visiblemask = GetVisibleLayers();
|
||||
LSET visiblemask = GetVisibleLayers();
|
||||
GBR_DISPLAY_OPTIONS imgDisplayOptions = m_DisplayOptions;
|
||||
|
||||
// Set draw options for printing:
|
||||
|
@ -551,7 +551,7 @@ void GERBVIEW_FRAME::SetVisibleAlls()
|
||||
* Returns a bit-mask of all the layers that are visible
|
||||
* @return int - the visible layers in bit-mapped form.
|
||||
*/
|
||||
LAYER_MSK GERBVIEW_FRAME::GetVisibleLayers() const
|
||||
LSET GERBVIEW_FRAME::GetVisibleLayers() const
|
||||
{
|
||||
return FULL_LAYERS; // TODO
|
||||
}
|
||||
@ -563,7 +563,7 @@ LAYER_MSK GERBVIEW_FRAME::GetVisibleLayers() const
|
||||
* changes the bit-mask of visible layers
|
||||
* @param aLayerMask = The new bit-mask of visible layers
|
||||
*/
|
||||
void GERBVIEW_FRAME::SetVisibleLayers( LAYER_MSK aLayerMask )
|
||||
void GERBVIEW_FRAME::SetVisibleLayers( LSET aLayerMask )
|
||||
{
|
||||
GetGerberLayout()->SetVisibleLayers( aLayerMask );
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ public:
|
||||
* Returns a bit-mask of all the layers that are visible
|
||||
* @return int - the visible layers in bit-mapped form.
|
||||
*/
|
||||
LAYER_MSK GetVisibleLayers() const;
|
||||
LSET GetVisibleLayers() const;
|
||||
|
||||
/**
|
||||
* Function SetVisibleLayers
|
||||
@ -316,7 +316,7 @@ public:
|
||||
* changes the bit-mask of visible layers
|
||||
* @param aLayerMask = The new bit-mask of visible layers
|
||||
*/
|
||||
void SetVisibleLayers( LAYER_MSK aLayerMask );
|
||||
void SetVisibleLayers( LSET aLayerMask );
|
||||
|
||||
/**
|
||||
* Function IsLayerVisible
|
||||
@ -667,7 +667,7 @@ public:
|
||||
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
|
||||
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
|
||||
*/
|
||||
virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer, bool aPrintMirrorMode,
|
||||
virtual void PrintPage( wxDC* aDC, LSET aPrintMasklayer, bool aPrintMirrorMode,
|
||||
void* aData = NULL );
|
||||
|
||||
/**
|
||||
|
@ -128,7 +128,7 @@ void LAYERS_MAP_DIALOG::initDialog()
|
||||
|
||||
if( (pcb_layer_num == m_exportBoardCopperLayersCount - 1)
|
||||
&& (m_exportBoardCopperLayersCount > 1) )
|
||||
pcb_layer_num = LAYER_N_FRONT;
|
||||
pcb_layer_num = F_Cu;
|
||||
|
||||
m_buttonTable[m_itemsCount] = ii;
|
||||
m_layersLookUpTable[ii] = pcb_layer_num;
|
||||
@ -288,7 +288,7 @@ void LAYERS_MAP_DIALOG::OnResetClick( wxCommandEvent& event )
|
||||
{
|
||||
if( (layer == m_exportBoardCopperLayersCount - 1)
|
||||
&& (m_exportBoardCopperLayersCount > 1) )
|
||||
layer = LAYER_N_FRONT;
|
||||
layer = F_Cu;
|
||||
m_layersLookUpTable[ii] = layer;
|
||||
msg = GetPCBDefaultLayerName( layer );
|
||||
m_layersList[ii]->SetLabel( msg );
|
||||
@ -362,7 +362,7 @@ void LAYERS_MAP_DIALOG::OnSelectLayer( wxCommandEvent& event )
|
||||
|
||||
LAYER_NUM jj = m_layersLookUpTable[m_buttonTable[ii]];
|
||||
if( !IsValidLayer( jj ) )
|
||||
jj = LAYER_N_BACK; // (Defaults to "Copper" layer.)
|
||||
jj = B_Cu; // (Defaults to "Copper" layer.)
|
||||
|
||||
jj = m_Parent->SelectPCBLayer( jj, m_exportBoardCopperLayersCount, true );
|
||||
|
||||
@ -408,7 +408,7 @@ void LAYERS_MAP_DIALOG::OnOkClick( wxCommandEvent& event )
|
||||
int inner_layer_max = 0;
|
||||
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii )
|
||||
{
|
||||
if( m_layersLookUpTable[ii] < LAYER_N_FRONT )
|
||||
if( m_layersLookUpTable[ii] < F_Cu )
|
||||
{
|
||||
if( m_layersLookUpTable[ii ] > inner_layer_max )
|
||||
inner_layer_max = m_layersLookUpTable[ii];
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user