=== modified file '3d-viewer/3d_frame.cpp' --- 3d-viewer/3d_frame.cpp 2015-03-28 11:33:56 +0000 +++ 3d-viewer/3d_frame.cpp 2015-03-29 20:50:42 +0000 @@ -50,6 +50,18 @@ static const wxChar keyBgColor_Green_Top[] = wxT( "BgColor_Green_Top" ); static const wxChar keyBgColor_Blue_Top[] = wxT( "BgColor_Blue_Top" ); +static const wxChar keySMaskColor_Red_Top[] = wxT( "SMaskColor_Red_Top" ); +static const wxChar keySMaskColor_Green_Top[] = wxT( "SMaskColor_Green_Top" ); +static const wxChar keySMaskColor_Blue_Top[] = wxT( "SMaskColor_Blue_Top" ); + +static const wxChar keySilkColor_Red_Top[] = wxT( "SilkColor_Red_Top" ); +static const wxChar keySilkColor_Green_Top[] = wxT( "SilkColor_Green_Top" ); +static const wxChar keySilkColor_Blue_Top[] = wxT( "SilkColor_Blue_Top" ); + +static const wxChar keyCopperColor_Red_Top[] = wxT( "CopperColor_Red_Top" ); +static const wxChar keyCopperColor_Green_Top[] =wxT( "CopperColor_Green_Top" ); +static const wxChar keyCopperColor_Blue_Top[] = wxT( "CopperColor_Blue_Top" ); + static const wxChar keyShowRealisticMode[] = wxT( "ShowRealisticMode" ); static const wxChar keyRenderShadows[] = wxT( "Render_Shadows" ); static const wxChar keyRenderRemoveHoles[] = wxT( "Render_RemoveHoles" ); @@ -236,6 +248,18 @@ aCfg->Read( keyBgColor_Green_Top, &GetPrm3DVisu().m_BgColor_Top.m_Green, 0.8 ); aCfg->Read( keyBgColor_Blue_Top, &GetPrm3DVisu().m_BgColor_Top.m_Blue, 0.9 ); + aCfg->Read( keySMaskColor_Red_Top, &GetPrm3DVisu().m_SolderMaskColor.m_Red, 100.0*(0.2/255.0) ); + aCfg->Read( keySMaskColor_Green_Top, &GetPrm3DVisu().m_SolderMaskColor.m_Green, 255.0*(0.2/255.0) ); + aCfg->Read( keySMaskColor_Blue_Top, &GetPrm3DVisu().m_SolderMaskColor.m_Blue, 180.0*(0.2/255.0) ); + + aCfg->Read( keySilkColor_Red_Top, &GetPrm3DVisu().m_SilkScreenColor.m_Red, 0.9 ); + aCfg->Read( keySilkColor_Green_Top, &GetPrm3DVisu().m_SilkScreenColor.m_Green, 0.9 ); + aCfg->Read( keySilkColor_Blue_Top, &GetPrm3DVisu().m_SilkScreenColor.m_Blue, 0.9 ); + + aCfg->Read( keyCopperColor_Red_Top, &GetPrm3DVisu().m_CopperColor.m_Red, 255.0*(0.7/255.0) ); + aCfg->Read( keyCopperColor_Green_Top, &GetPrm3DVisu().m_CopperColor.m_Green, 223.0*(0.7/255.0) ); + aCfg->Read( keyCopperColor_Blue_Top, &GetPrm3DVisu().m_CopperColor.m_Blue, 0.0*(0.7/255.0) ); + bool tmp; aCfg->Read( keyShowRealisticMode, &tmp, false ); prms.SetFlag( FL_USE_REALISTIC_MODE, tmp ); @@ -315,6 +339,18 @@ aCfg->Write( keyBgColor_Green_Top, GetPrm3DVisu().m_BgColor_Top.m_Green ); aCfg->Write( keyBgColor_Blue_Top, GetPrm3DVisu().m_BgColor_Top.m_Blue ); + aCfg->Write( keySMaskColor_Red_Top, GetPrm3DVisu().m_SolderMaskColor.m_Red ); + aCfg->Write( keySMaskColor_Green_Top, GetPrm3DVisu().m_SolderMaskColor.m_Green ); + aCfg->Write( keySMaskColor_Blue_Top, GetPrm3DVisu().m_SolderMaskColor.m_Blue ); + + aCfg->Write( keySilkColor_Red_Top, GetPrm3DVisu().m_SilkScreenColor.m_Red ); + aCfg->Write( keySilkColor_Green_Top, GetPrm3DVisu().m_SilkScreenColor.m_Green ); + aCfg->Write( keySilkColor_Blue_Top, GetPrm3DVisu().m_SilkScreenColor.m_Blue ); + + aCfg->Write( keyCopperColor_Red_Top, GetPrm3DVisu().m_CopperColor.m_Red ); + aCfg->Write( keyCopperColor_Green_Top, GetPrm3DVisu().m_CopperColor.m_Green ); + aCfg->Write( keyCopperColor_Blue_Top, GetPrm3DVisu().m_CopperColor.m_Blue ); + aCfg->Write( keyShowRealisticMode, prms.GetFlag( FL_USE_REALISTIC_MODE ) ); aCfg->Write( keyRenderShadows, prms.GetFlag( FL_RENDER_SHADOWS ) ); @@ -478,6 +514,21 @@ Get3DColorFromUser( GetPrm3DVisu().m_BgColor_Top ); return; + case ID_MENU3D_SILKSCREEN_COLOR_SELECTION: + Get3DColorFromUser( GetPrm3DVisu().m_SilkScreenColor ); + NewDisplay(GL_ID_TECH_LAYERS); + return; + + case ID_MENU3D_SOLDERMASK_COLOR_SELECTION: + Get3DSoldermaskColorFromUser( GetPrm3DVisu().m_SolderMaskColor ); + NewDisplay(GL_ID_TECH_LAYERS); + return; + + case ID_MENU3D_COPPER_COLOR_SELECTION: + Get3DCopperColorFromUser( GetPrm3DVisu().m_CopperColor ); + NewDisplay(GL_ID_BOARD); + return; + case ID_MENU3D_REALISTIC_MODE: GetPrm3DVisu().SetFlag( FL_USE_REALISTIC_MODE, isChecked ); NewDisplay(); @@ -683,6 +734,69 @@ return true; } +/* called to set the soldermask color. Sets up a number of default colors + */ +bool EDA_3D_FRAME::Get3DSoldermaskColorFromUser( S3D_COLOR &color ) +{ + wxColour newcolor, oldcolor; + wxColourData colorData; + + oldcolor.Set( KiROUND( color.m_Red * 255 ), + KiROUND( color.m_Green * 255 ), + KiROUND( color.m_Blue * 255 ) ); + + colorData.SetCustomColour(0, wxColour(20, 51, 36 )); // Green + colorData.SetCustomColour(1, wxColour(43, 10, 65 )); // Purple + colorData.SetCustomColour(2, wxColour(117, 19, 21 )); // Red + colorData.SetCustomColour(3, wxColour(54, 79, 116)); // Light blue + colorData.SetCustomColour(4, wxColour(11, 11, 11 )); // Black + colorData.SetCustomColour(5, wxColour(241, 241,241)); // White + + newcolor = wxGetColourFromUser( this, oldcolor, wxEmptyString, &colorData); + + if( !newcolor.IsOk() ) // Cancel command + return false; + + if( newcolor != oldcolor ) + { + color.m_Red = (double) newcolor.Red() / 255.0; + color.m_Green = (double) newcolor.Green() / 255.0; + color.m_Blue = (double) newcolor.Blue() / 255.0; + m_canvas->Redraw(); + } + return true; +} + +/* called to set the copper surface color. Sets up a number of default colors + */ +bool EDA_3D_FRAME::Get3DCopperColorFromUser( S3D_COLOR &color ) +{ + wxColour newcolor, oldcolor; + wxColourData colorData; + + oldcolor.Set( KiROUND( color.m_Red * 255 ), + KiROUND( color.m_Green * 255 ), + KiROUND( color.m_Blue * 255 ) ); + + colorData.SetCustomColour(0, wxColour(255, 223, 0 )); // Copper + colorData.SetCustomColour(1, wxColour(233, 221, 82 )); // Gold + colorData.SetCustomColour(2, wxColour(213, 213, 213)); // Silver + + newcolor = wxGetColourFromUser( this, oldcolor, wxEmptyString, &colorData); + + if( !newcolor.IsOk() ) // Cancel command + return false; + + if( newcolor != oldcolor ) + { + color.m_Red = (double) newcolor.Red() / 255.0; + color.m_Green = (double) newcolor.Green() / 255.0; + color.m_Blue = (double) newcolor.Blue() / 255.0; + m_canvas->Redraw(); + } + return true; +} + BOARD* EDA_3D_FRAME::GetBoard() { return Parent()->GetBoard(); === modified file '3d-viewer/3d_toolbar.cpp' --- 3d-viewer/3d_toolbar.cpp 2015-03-29 10:59:53 +0000 +++ 3d-viewer/3d_toolbar.cpp 2015-03-29 20:28:07 +0000 @@ -205,6 +205,15 @@ AddMenuItem( backgrounColorMenu, ID_MENU3D_BGCOLOR_SELECTION, _( "Background Bottom Color" ), KiBitmap( palette_xpm ) ); + AddMenuItem( backgrounColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION, + _( "Silkscreen Color" ), KiBitmap( palette_xpm ) ); + + AddMenuItem( backgrounColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION, + _( "Solder Mask Color" ), KiBitmap( palette_xpm ) ); + + AddMenuItem( backgrounColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION, + _( "Copper/Surface Finish Color" ), KiBitmap( palette_xpm ) ); + AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF, _( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK ); === modified file '3d-viewer/3d_viewer.h' --- 3d-viewer/3d_viewer.h 2014-08-24 07:05:07 +0000 +++ 3d-viewer/3d_viewer.h 2015-03-29 20:37:41 +0000 @@ -149,6 +149,8 @@ // return true if a new color is chosen, false if // no change or aborted by user bool Get3DColorFromUser( S3D_COLOR &color ); + bool Get3DSoldermaskColorFromUser( S3D_COLOR &color ); + bool Get3DCopperColorFromUser( S3D_COLOR &color ); DECLARE_EVENT_TABLE() }; === modified file '3d-viewer/3d_viewer_id.h' --- 3d-viewer/3d_viewer_id.h 2015-03-28 11:33:56 +0000 +++ 3d-viewer/3d_viewer_id.h 2015-03-29 20:27:38 +0000 @@ -33,6 +33,9 @@ ID_MENU3D_COLOR, ID_MENU3D_BGCOLOR_SELECTION, ID_MENU3D_BGCOLOR_TOP_SELECTION, + ID_MENU3D_SILKSCREEN_COLOR_SELECTION, + ID_MENU3D_SOLDERMASK_COLOR_SELECTION, + ID_MENU3D_COPPER_COLOR_SELECTION, ID_MENU3D_USE_COPPER_THICKNESS, ID_MENU3D_AXIS_ONOFF, ID_MENU3D_MODULE_ONOFF, === modified file '3d-viewer/info3d_visu.cpp' --- 3d-viewer/info3d_visu.cpp 2015-03-28 11:33:56 +0000 +++ 3d-viewer/info3d_visu.cpp 2015-03-29 20:35:45 +0000 @@ -68,26 +68,6 @@ m_BiuTo3Dunits = 1.0; zpos_offset = 0.0; - // Set copper color, in realistic mode - #define LUMINANCE 0.7/255.0 - m_CopperColor.m_Red = 255.0*LUMINANCE; - m_CopperColor.m_Green = 223.0*LUMINANCE; - m_CopperColor.m_Blue = 0.0*LUMINANCE; - - // Set the solder mask color, in realistic mode - #undef LUMINANCE - #define LUMINANCE 0.2/255.0 - m_SolderMaskColor.m_Red = 100.0*LUMINANCE; - m_SolderMaskColor.m_Green = 255.0*LUMINANCE; - m_SolderMaskColor.m_Blue = 180.0*LUMINANCE; - - // Set the silk screen mask color, in realistic mode - #undef LUMINANCE - #define LUMINANCE 0.9 - m_SilkScreenColor.m_Red = 1.0*LUMINANCE; - m_SilkScreenColor.m_Green = 1.0*LUMINANCE; - m_SilkScreenColor.m_Blue = 1.0*LUMINANCE; - // Set the body board (FR4) color, in realistic mode #undef LUMINANCE #define LUMINANCE 0.2/255.0