/**********************************************************/ /* EECLASS.CPP */ /* fonctions relatives aux classes definies dans EESCHEMA */ /**********************************************************/ #include "fctsys.h" #include "gr_basic.h" #include "common.h" #include "program.h" #include "libcmp.h" #include "general.h" #include "protos.h" /************************************************************/ void SetStructFather( EDA_BaseStruct* Struct, BASE_SCREEN* Screen ) /************************************************************/ { switch( Struct->Type() ) { case DRAW_POLYLINE_STRUCT_TYPE: case DRAW_JUNCTION_STRUCT_TYPE: case DRAW_TEXT_STRUCT_TYPE: case DRAW_LABEL_STRUCT_TYPE: case DRAW_GLOBAL_LABEL_STRUCT_TYPE: case DRAW_LIB_ITEM_STRUCT_TYPE: case DRAW_SEGMENT_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_SHEET_STRUCT_TYPE: case DRAW_MARKER_STRUCT_TYPE: case DRAW_NOCONNECT_STRUCT_TYPE: Struct->m_Parent = Screen; break; case DRAW_SHEETLABEL_STRUCT_TYPE: case DRAW_PICK_ITEM_STRUCT_TYPE: break; default: break; } } /*************************************************************/ void EDA_BaseStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC ) /*************************************************************/ { if( m_Flags & IS_NEW ) { Pnext = frame->m_CurrentScreen->EEDrawList; frame->m_CurrentScreen->EEDrawList = this; g_ItemToRepeat = this; } m_Flags = 0; SetFlagModify( frame->GetScreen() ); frame->GetScreen()->SetCurItem( NULL ); frame->DrawPanel->ManageCurseur = NULL; frame->DrawPanel->ForceCloseManageCurseur = NULL; frame->DrawPanel->CursorOff( DC ); // Erase schematic cursor RedrawOneStruct( frame->DrawPanel, DC, this, GR_DEFAULT_DRAWMODE ); frame->DrawPanel->CursorOn( DC ); // Display schematic cursor } /**************************************************/ /* Class SCH_SCREEN: classe de gestion d'un affichage pour schematique */ /***************************************************/ static int table_zoom[] = { 1, 2, 4, 8, 16, 32, 64, 128, 0 }; /* Valeurs standards du zoom */ /* Constructeur de SCREEN */ SCH_SCREEN::SCH_SCREEN( EDA_BaseStruct* parent, WinEDA_DrawFrame* frame_source, int idtype ) : BASE_SCREEN( parent, frame_source, idtype ) { EEDrawList = NULL; /* Schematic items list */ m_Zoom = 32; m_Grid = wxSize( 50, 50 ); /* pas de la grille */ SetZoomList( table_zoom ); SetGridList( g_GridList ); m_UndoRedoCountMax = 10; } /****************************/ SCH_SCREEN::~SCH_SCREEN() /****************************/ { ClearUndoRedoList(); FreeDrawList(); } /*************************************/ SCH_SCREEN* SCH_SCREEN::GenCopy() /*************************************/ { // TODO return NULL; } /***********************************/ void SCH_SCREEN::FreeDrawList() /***********************************/ /* Routine to clear EESchema drawing list of a screen. */ { EDA_BaseStruct* DrawStruct; while( EEDrawList != NULL ) { DrawStruct = EEDrawList; EEDrawList = EEDrawList->Pnext; delete DrawStruct; } }