Commit ea38af91 authored by charras's avatar charras

doc update and some minor enhancements before Release Candidate

parent f83bc3e3
...@@ -108,7 +108,7 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() ...@@ -108,7 +108,7 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
g_Parm_3D_Visu.m_BoardPos.y = -g_Parm_3D_Visu.m_BoardPos.y; g_Parm_3D_Visu.m_BoardPos.y = -g_Parm_3D_Visu.m_BoardPos.y;
g_Parm_3D_Visu.m_Layers = pcb->m_BoardSettings->m_CopperLayerCount; g_Parm_3D_Visu.m_Layers = pcb->m_BoardSettings->m_CopperLayerCount;
g_Parm_3D_Visu.m_BoardScale = 2.0 / MAX( g_Parm_3D_Visu.m_BoardSize.x, g_Parm_3D_Visu.m_BoardScale = 2.0 / MAX( g_Parm_3D_Visu.m_BoardSize.x,
g_Parm_3D_Visu.m_BoardSize.y ); g_Parm_3D_Visu.m_BoardSize.y );
double epoxy_width = 1.6; // epoxy width in mm double epoxy_width = 1.6; // epoxy width in mm
g_Parm_3D_Visu.m_Epoxy_Width = epoxy_width / 2.54 * 1000 g_Parm_3D_Visu.m_Epoxy_Width = epoxy_width / 2.54 * 1000
* g_Parm_3D_Visu.m_BoardScale; * g_Parm_3D_Visu.m_BoardScale;
...@@ -190,8 +190,8 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() ...@@ -190,8 +190,8 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
/* move the board in order to draw it with its centre at 0,0 3D coordinates */ /* move the board in order to draw it with its centre at 0,0 3D coordinates */
glTranslatef( -g_Parm_3D_Visu.m_BoardPos.x * g_Parm_3D_Visu.m_BoardScale, glTranslatef( -g_Parm_3D_Visu.m_BoardPos.x * g_Parm_3D_Visu.m_BoardScale,
-g_Parm_3D_Visu.m_BoardPos.y * g_Parm_3D_Visu.m_BoardScale, -g_Parm_3D_Visu.m_BoardPos.y * g_Parm_3D_Visu.m_BoardScale,
0.0F ); 0.0F );
glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis
/* draw tracks and vias : */ /* draw tracks and vias : */
...@@ -205,11 +205,58 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() ...@@ -205,11 +205,58 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
if( g_Parm_3D_Visu.m_Draw3DZone ) if( g_Parm_3D_Visu.m_Draw3DZone )
{ {
// Draw segments used to fill copper areas
for( segzone = pcb->m_Zone; segzone != NULL; segzone = segzone->Next() ) for( segzone = pcb->m_Zone; segzone != NULL; segzone = segzone->Next() )
{ {
if( segzone->Type() == TYPE_ZONE ) if( segzone->Type() == TYPE_ZONE )
Draw3D_Track( segzone ); Draw3D_Track( segzone );
} }
// Draw copper areas outlines
for( ii = 0; ii < pcb->GetAreaCount(); ii++ )
{
ZONE_CONTAINER* zone = pcb->GetArea( ii );
if( zone->m_FilledPolysList.size() == 0 )
continue;
if( zone->m_ZoneMinThickness <= 1 )
continue;
int imax = zone->m_FilledPolysList.size() - 1;
CPolyPt* firstcorner = &zone->m_FilledPolysList[0];
CPolyPt* begincorner = firstcorner;
SEGZONE dummysegment(pcb);
dummysegment.SetLayer( zone->GetLayer() );
dummysegment.m_Width = zone->m_ZoneMinThickness;
for( int ic = 1; ic <= imax; ic++ )
{
CPolyPt* endcorner = &zone->m_FilledPolysList[ic];
if( begincorner->utility == 0 ) // Draw only basic outlines, not extra segments
{
dummysegment.m_Start.x = begincorner->x;
dummysegment.m_Start.y = begincorner->y;
dummysegment.m_End.x = endcorner->x;
dummysegment.m_End.y = endcorner->y;
Draw3D_Track( &dummysegment );
}
if( (endcorner->end_contour) || (ic == imax) ) // the last corner of a filled area is found: draw it
{
if( endcorner->utility == 0 ) // Draw only basic outlines, not extra segments
{
dummysegment.m_Start.x = endcorner->x;
dummysegment.m_Start.y = endcorner->y;
dummysegment.m_End.x = firstcorner->x;
dummysegment.m_End.y = firstcorner->y;
Draw3D_Track( &dummysegment );
}
ic++;
if( ic < imax - 1 )
begincorner = firstcorner = &zone->m_FilledPolysList[ic];
}
else
begincorner = endcorner;
}
}
} }
/* draw graphic items */ /* draw graphic items */
...@@ -434,12 +481,12 @@ void Pcb3D_GLCanvas::Draw3D_DrawText( TEXTE_PCB* text ) ...@@ -434,12 +481,12 @@ void Pcb3D_GLCanvas::Draw3D_DrawText( TEXTE_PCB* text )
s_Text3DWidth = text->m_Width * g_Parm_3D_Visu.m_BoardScale; s_Text3DWidth = text->m_Width * g_Parm_3D_Visu.m_BoardScale;
glNormal3f( 0.0, 0.0, Get3DLayerSide( layer ) ); glNormal3f( 0.0, 0.0, Get3DLayerSide( layer ) );
DrawGraphicText( NULL, NULL, DrawGraphicText( NULL, NULL,
text->m_Pos, (EDA_Colors) color, text->m_Text, text->m_Pos, (EDA_Colors) color, text->m_Text,
text->m_Orient, text->m_Size, text->m_Orient, text->m_Size,
text->m_HJustify, text->m_HJustify,
text->m_VJustify, text->m_VJustify,
text->m_Width, text->m_Italic, text->m_Width, text->m_Italic,
Draw3dTextSegm ); Draw3dTextSegm );
} }
...@@ -478,8 +525,8 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) ...@@ -478,8 +525,8 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
glPushMatrix(); glPushMatrix();
glTranslatef( m_Pos.x * g_Parm_3D_Visu.m_BoardScale, glTranslatef( m_Pos.x * g_Parm_3D_Visu.m_BoardScale,
-m_Pos.y * g_Parm_3D_Visu.m_BoardScale, -m_Pos.y * g_Parm_3D_Visu.m_BoardScale,
g_Parm_3D_Visu.m_LayerZcoord[m_Layer] ); g_Parm_3D_Visu.m_LayerZcoord[m_Layer] );
if( m_Orient ) if( m_Orient )
{ {
...@@ -755,7 +802,7 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas ) ...@@ -755,7 +802,7 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
f_hole_coord[ii][0] = -hole * 0.707; f_hole_coord[ii][0] = -hole * 0.707;
f_hole_coord[ii][1] = hole * 0.707; f_hole_coord[ii][1] = hole * 0.707;
RotatePoint( &f_hole_coord[ii][0], &f_hole_coord[ii][1], RotatePoint( &f_hole_coord[ii][0], &f_hole_coord[ii][1],
angle - (ii * 450) ); angle - (ii * 450) );
f_hole_coord[ii][0] += drillx; f_hole_coord[ii][0] += drillx;
f_hole_coord[ii][1] += drilly; f_hole_coord[ii][1] += drilly;
} }
......
...@@ -5,6 +5,14 @@ Started 2007-June-11 ...@@ -5,6 +5,14 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2009-feb-01 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++All:
change filename drawpanel_wxstruct.h to class_drawpanel.h
and move class BASE_SCREEN description from drawpanel_wxstruct.h to a new file: class_base_screen.h
minor enhancement for window zoom command.
refinements in 3D zones drawing.
2009-jan-31 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2009-jan-31 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
++All: ++All:
......
...@@ -35,7 +35,6 @@ BASE_SCREEN::BASE_SCREEN( KICAD_T aType ) : EDA_BaseStruct( aType ) ...@@ -35,7 +35,6 @@ BASE_SCREEN::BASE_SCREEN( KICAD_T aType ) : EDA_BaseStruct( aType )
m_Zoom = 32 * m_ZoomScalar; m_Zoom = 32 * m_ZoomScalar;
m_Grid = wxSize( 50, 50 ); /* Default grid size */ m_Grid = wxSize( 50, 50 ); /* Default grid size */
m_UserGridIsON = FALSE; m_UserGridIsON = FALSE;
m_Diviseur_Grille = 1;
m_Center = true; m_Center = true;
m_CurrentSheetDesc = &g_Sheet_A4; m_CurrentSheetDesc = &g_Sheet_A4;
...@@ -118,6 +117,25 @@ wxPoint BASE_SCREEN::CursorRealPosition( const wxPoint& ScreenPos ) ...@@ -118,6 +117,25 @@ wxPoint BASE_SCREEN::CursorRealPosition( const wxPoint& ScreenPos )
return curpos; return curpos;
} }
/** Function SetScalingFactor
* calculates the .m_Zoom member to have a given scaling facort
* @param the the current scale used to draw items on screen
* draw coordinates are user coordinates * GetScalingFactor( )
*/
void BASE_SCREEN::SetScalingFactor(double aScale )
{
int zoom = static_cast<int>( ceil(aScale * m_ZoomScalar) );
// Limit zoom to max and min allowed values:
if (zoom < m_ZoomList[0])
zoom = m_ZoomList[0];
int idxmax = m_ZoomList.GetCount() - 1;
if (zoom > m_ZoomList[idxmax])
zoom = m_ZoomList[idxmax];
SetZoom( zoom );
}
/** /**
* Calculate coordinate value for zooming. * Calculate coordinate value for zooming.
* *
......
...@@ -81,21 +81,18 @@ void WinEDA_DrawFrame::Window_Zoom( EDA_Rect& Rect ) ...@@ -81,21 +81,18 @@ void WinEDA_DrawFrame::Window_Zoom( EDA_Rect& Rect )
* @param Rect = selected area to show after zooming * @param Rect = selected area to show after zooming
*/ */
{ {
int ii, jj; double scalex, bestscale;
int bestzoom;
wxSize size; wxSize size;
/* Compute the best zoom */ /* Compute the best zoom */
Rect.Normalize(); Rect.Normalize();
size = DrawPanel->GetClientSize(); size = DrawPanel->GetClientSize();
// Use ceil to at least show the full rect // Use ceil to at least show the full rect
ii = static_cast<int>( ceil(1.0 * Rect.GetSize().x / size.x) ); scalex = (double) Rect.GetSize().x / size.x;
jj = static_cast<int>( ceil(1.0 * Rect.GetSize().y / size.y) ); bestscale = (double)Rect.GetSize().y / size.y;
bestzoom = MAX( ii, jj ); bestscale = MAX( bestscale, scalex );
if( bestzoom <= 0 )
bestzoom = 1;
GetBaseScreen()->SetZoom( bestzoom * GetBaseScreen()->m_ZoomScalar ); GetBaseScreen()->SetScalingFactor( bestscale );
GetBaseScreen()->m_Curseur = Rect.Centre(); GetBaseScreen()->m_Curseur = Rect.Centre();
Recadre_Trace( TRUE ); Recadre_Trace( TRUE );
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#endif #endif
#include "base_struct.h" #include "base_struct.h"
#include "class_screen.h" #include "class_sch_screen.h"
#include <wx/arrstr.h> #include <wx/arrstr.h>
#include <wx/dynarray.h> #include <wx/dynarray.h>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "sch_item_struct.h" #include "sch_item_struct.h"
#include "component_class.h" #include "component_class.h"
#include "class_screen.h" #include "class_sch_screen.h"
#include "class_drawsheet.h" #include "class_drawsheet.h"
#include "class_drawsheetpath.h" #include "class_drawsheetpath.h"
#include "class_text-label.h" #include "class_text-label.h"
......
...@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion ...@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
# include "config.h" # include "config.h"
(wxT(KICAD_SVN_VERSION)) (wxT(KICAD_SVN_VERSION))
# else # else
(wxT("(20090122-unstable)")) /* main program version */ (wxT("(20090201-unstable)")) /* main program version */
# endif # endif
#endif #endif
; ;
...@@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion ...@@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion
# include "config.h" # include "config.h"
(wxT(KICAD_ABOUT_VERSION)) (wxT(KICAD_ABOUT_VERSION))
# else # else
(wxT("(20090122-unstable)")) /* svn date & rev (normally overridden) */ (wxT("(20090201-unstable)")) /* svn date & rev (normally overridden) */
# endif # endif
#endif #endif
; ;
......
...@@ -22,11 +22,12 @@ ...@@ -22,11 +22,12 @@
#include "base_struct.h" #include "base_struct.h"
#include "appl_wxstruct.h" #include "appl_wxstruct.h"
#include "drawpanel_wxstruct.h" #include "class_drawpanel.h"
#include "class_base_screen.h"
//C++ guarantees that operator delete checks its argument for null-ness
#ifndef SAFE_DELETE #ifndef SAFE_DELETE
#define SAFE_DELETE(p) delete (p); (p) = NULL; //C++ guarantees that operator delete checks its argument for null-ness #define SAFE_DELETE(p) delete (p); (p) = NULL;
#endif #endif
#define INTERNAL_UNIT_TYPE 0 // Internal unit = inch #define INTERNAL_UNIT_TYPE 0 // Internal unit = inch
......
No preview for this file type
This diff is collapsed.
...@@ -178,7 +178,6 @@ bool Read_Config( const wxString& project_name ) ...@@ -178,7 +178,6 @@ bool Read_Config( const wxString& project_name )
if( ScreenPcb ) if( ScreenPcb )
{ {
ScreenPcb->m_Diviseur_Grille = Pcbdiv_grille;
ScreenPcb->AddGrid( g_UserGrid, g_UserGrid_Unit, ID_POPUP_GRID_USER ); ScreenPcb->AddGrid( g_UserGrid, g_UserGrid_Unit, ID_POPUP_GRID_USER );
} }
...@@ -220,8 +219,6 @@ void WinEDA_PcbFrame::Update_config( wxWindow* displayframe ) ...@@ -220,8 +219,6 @@ void WinEDA_PcbFrame::Update_config( wxWindow* displayframe )
if( FullFileName.IsEmpty() ) if( FullFileName.IsEmpty() )
return; return;
Pcbdiv_grille = GetScreen()->m_Diviseur_Grille;
/* ecriture de la configuration */ /* ecriture de la configuration */
wxGetApp().WriteProjectConfig( FullFileName, wxT( "/pcbnew" ), wxGetApp().WriteProjectConfig( FullFileName, wxT( "/pcbnew" ),
ParamCfgList ); ParamCfgList );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment