/*****************************************/ /* prototypage des fonctions de EESchema */ /*****************************************/ void FreeLibraryEntry(LibCmpEntry * Entry); LibEDA_BaseStruct * LocatePin(const wxPoint & RefPos, EDA_LibComponentStruct * Entry, int Unit, int Convert, EDA_SchComponentStruct * DrawItem = NULL); /* Routine de localisation d'une PIN de la PartLib pointee par Entry */ const wxString& ReturnDefaultFieldName( int aFieldNdx ); /***************/ /* FILE_IO.CPP */ /***************/ void SaveProject(WinEDA_SchematicFrame * frame); /****************/ /* DATABASE.CPP */ /****************/ void DisplayCmpDoc(wxString & Name); bool DataBaseGetName(WinEDA_DrawFrame * frame, wxString & Keys, wxString & BufName); /*********************/ /* DANGLING_ENDS.CPP */ /*********************/ bool SegmentIntersect(int Sx1, int Sy1, int Sx2, int Sy2, int Px1, int Py1); /****************/ /* BUS_WIRE_JUNCTION.CPP */ /****************/ void IncrementLabelMember(wxString & name); /****************/ /* EDITPART.CPP */ /****************/ void InstallCmpeditFrame(WinEDA_SchematicFrame * parent, wxPoint & pos, EDA_SchComponentStruct * m_Cmp); /**************/ /* EELIBS2.CPP */ /**************/ /* Functions common to all EELibs?.c modules: */ int LibraryEntryCompare(EDA_LibComponentStruct *LE1, EDA_LibComponentStruct *LE2); int NumOfLibraries(); EDA_LibComponentStruct *FindLibPart(const wxChar *Name, const wxString & LibName, int Alias); void DrawingLibInGhost(WinEDA_DrawPanel * panel, wxDC * DC, EDA_LibComponentStruct *LibEntry, EDA_SchComponentStruct * DrawLibItem, int PartX, int PartY, int Multi, int convert, int Color, bool DrawPinText); void DrawLibEntry(WinEDA_DrawPanel * panel, wxDC * DC, EDA_LibComponentStruct *LibEntry, int posX, int posY, int Multi, int convert, int DrawMode, int Color = -1); void DrawLibraryDrawStruct(WinEDA_DrawPanel * panel, wxDC * DC, EDA_LibComponentStruct *LibEntry, int PartX, int PartY, LibEDA_BaseStruct *DrawItem, int Multi, int DrawMode, int Color = -1); bool MapAngles(int *Angle1, int *Angle2, int TransMat[2][2]); /**************/ /* EELIBS1.CPP */ /**************/ EDA_LibComponentStruct * Read_Component_Definition(WinEDA_DrawFrame * frame, char * Line, FILE *f, int *LineNum); /* Routine to Read a DEF/ENDDEF part entry from given open file. */ LibraryStruct *FindLibrary(const wxString & Name); int LoadDocLib(WinEDA_DrawFrame * frame, const wxString & FullDocLibName, const wxString & Libname); PriorQue *LoadLibraryAux(WinEDA_DrawFrame * frame, LibraryStruct * library, FILE *f, int *NumOfParts); LibraryStruct * LoadLibraryName(WinEDA_DrawFrame * frame, const wxString & FullLibName, const wxString & LibName); void LoadLibraries(WinEDA_DrawFrame * frame); void FreeCmpLibrary(wxWindow * frame, const wxString & LibName); const wxChar **GetLibNames(); void SnapLibItemPoint(int OrigX, int OrigY, int *ClosestX, int *ClosestY, EDA_SchComponentStruct *DrawLibItem); bool LibItemInBox(int x1, int y1, int x2, int y2, EDA_SchComponentStruct *DrawLibItem); void DrawTextField(WinEDA_DrawPanel * panel, wxDC * DC, PartTextStruct * Field, int IsMulti, int DrawMode); /* Routine de trace des textes type Field du composant. entree: Field: champ IsMulti: flag Non Null si il y a plusieurs parts par boitier. n'est utile que pour le champ reference pour ajouter a celui ci l'identification de la part ( A, B ... ) DrawMode: mode de trace */ char * StrPurge(char * text); /* Supprime les caracteres Space en debut de la ligne text retourne un pointeur sur le 1er caractere non Space de text */ /************/ /* BLOCK.CPP */ /************/ EDA_BaseStruct * DuplicateStruct(EDA_BaseStruct *DrawStruct); void MoveOneStruct(EDA_BaseStruct *DrawStructs, const wxPoint & move_vector); /* Given a structure move it by move_vector.x, move_vector.y. */ bool PlaceStruct(BASE_SCREEN * screen, EDA_BaseStruct *DrawStruct); bool MoveStruct(WinEDA_DrawPanel * panel, wxDC * DC, EDA_BaseStruct *DrawStruct); void DeleteStruct(WinEDA_DrawPanel * panel, wxDC * DC, EDA_BaseStruct *DrawStruct); bool DrawStructInBox(int x1, int y1, int x2, int y2, EDA_BaseStruct *DrawStruct); /*************/ /* LOCATE.CPP */ /*************/ EDA_SchComponentStruct * LocateSmallestComponent( SCH_SCREEN * Screen ); /* Recherche du plus petit (en surface) composant pointe par la souris */ EDA_BaseStruct * PickStruct(EDA_Rect & block, EDA_BaseStruct *DrawList, int SearchMask ); EDA_BaseStruct * PickStruct(const wxPoint & refpos, EDA_BaseStruct *DrawList, int SearchMask ); /* 2 functions EDA_BaseStruct * PickStruct: Search in block, or Serach at location pos SearchMask = (bitwise OR): LIBITEM WIREITEM BUSITEM RACCORDITEM JUNCTIONITEM DRAWITEM TEXTITEM LABELITEM SHEETITEM MARKERITEM NOCONNECTITEM SEARCH_PINITEM SHEETLABELITEM FIELDCMPITEM if EXCLUDE_WIRE_BUS_ENDPOINTS is set, in wire ou bus search and locate, start and end points are not included in search if WIRE_BUS_ENDPOINTS_ONLY is set, in wire ou bus search and locate, only start and end points are included in search Return: -Bloc searc: pointeur sur liste de pointeurs de structures si Plusieurs structures selectionnees. pointeur sur la structure si 1 seule Positon serach: pointeur sur la structure. Si pas de structures selectionnees: retourne NULL */ LibEDA_BaseStruct * LocateDrawItem(SCH_SCREEN * Screen, const wxPoint & refpoint, EDA_LibComponentStruct * LibEntry, int Unit, int Convert, int masque); DrawSheetLabelStruct * LocateSheetLabel(DrawSheetStruct *Sheet, const wxPoint & pos); LibDrawPin * LocateAnyPin(EDA_BaseStruct *DrawList, const wxPoint & RefPos, EDA_SchComponentStruct ** libpart = NULL ); DrawSheetLabelStruct * LocateAnyPinSheet(const wxPoint & RefPos, EDA_BaseStruct *DrawList); int distance(int dx, int dy, int spot_cX, int spot_cY, int seuil); /* Calcul de la distance du point spot_cx,spot_cy a un segment de droite, d'origine 0,0 et d'extremite dx, dy; retourne: 0 si distance > seuil 1 si distance <= seuil Variables utilisees ( sont ramenees au repere centre sur l'origine du segment) dx, dy = coord de l'extremite segment. spot_cX,spot_cY = coord du curseur souris la recherche se fait selon 4 cas: segment horizontal segment vertical segment quelconque */ /***************/ /* EEREDRAW.CPP */ /***************/ void DrawDanglingSymbol(WinEDA_DrawPanel * panel,wxDC * DC, const wxPoint & pos, int Color); void Draw_Marqueur(WinEDA_DrawPanel * panel, wxDC * DC, wxPoint pos, char* pt_bitmap, int DrawMode, int Color); void DrawStructsInGhost(WinEDA_DrawPanel * panel, wxDC * DC, EDA_BaseStruct * DrawStruct, int dx, int dy ); void SetHighLightStruct(EDA_BaseStruct *HighLight); void RedrawActiveWindow(WinEDA_DrawPanel * panel, wxDC * DC); void RedrawStructList(WinEDA_DrawPanel * panel, wxDC * DC, EDA_BaseStruct *Structs, int DrawMode, int Color = -1); void RedrawOneStruct(WinEDA_DrawPanel * panel, wxDC * DC, EDA_BaseStruct *Struct, int DrawMode, int Color = -1); /**************/ /* EELAYER.CPP */ /**************/ void SeedLayers(); int ReturnLayerColor(int Layer); void DisplayColorSetupFrame(WinEDA_DrawFrame * parent, const wxPoint & pos); /*************/ /* EELOAD.CPP */ /*************/ int CountCmpNumber(); /***************/ /* EESTRING.CPP */ /***************/ /***************/ /* EECONFIG.CPP */ /***************/ bool Read_Config( const wxString & CfgFileName, bool ForceRereadConfig ); bool Read_Hotkey_Config( WinEDA_DrawFrame * frame, bool verbose ); /**************/ /* SAVELIB.CPP */ /**************/ LibEDA_BaseStruct * CopyDrawEntryStruct( wxWindow * frame, LibEDA_BaseStruct * DrawItem); /* Routine de Duplication d'une structure DrawLibItem d'une partlib Parametres d'entree: DrawEntry = pointeur sur la structure a dupliquer La structure nouvelle est creee, mais n'est pas inseree dans le chainage Retourne: Pointeur sur la structure creee (ou NULL si impossible) */ int WriteOneLibEntry(wxWindow * frame, FILE * ExportFile, EDA_LibComponentStruct * LibEntry); /* Routine d'ecriture du composant pointe par LibEntry dans le fichier ExportFile( qui doit etre deja ouvert) return: FALSE si Ok, TRUE si err write */ EDA_LibComponentStruct * CopyLibEntryStruct (wxWindow * frame, EDA_LibComponentStruct * OldEntry); /* Routine de copie d'une partlib Parametres d'entree: pointeur sur la structure de depart Parametres de sortie: pointeur sur la structure creee */ int WriteOneDocLibEntry(FILE * ExportFile, EDA_LibComponentStruct * LibEntry); /* Routine d'ecriture de la doc du composant pointe par LibEntry dans le fichier ExportFile( qui doit etre deja ouvert) return: 0 si Ok 1 si err write */ int SaveOneLibrary(wxWindow * frame, const wxString & FullFileName, LibraryStruct * Library); /* Sauvegarde en fichier la librairie pointee par Library, sous le nom FullFileName. 2 fichiers sont crees - La librarie - le fichier de documentation une sauvegarde .bak de l'ancien fichier librairie est cree une sauvegarde .bck de l'ancien fichier documentation est cree return: 0 si OK 1 si erreur */ /***************/ /* SYMBEDIT.CPP */ /***************/ void SuppressDuplicateDrawItem(EDA_LibComponentStruct * LibEntry); /* Routine de suppression des elements de trace dupliques, situation frequente lorsque l'on charge des symboles predessines plusieurs fois pour definir un composant */ /***************/ /* SYMBTEXT.CPP */ /***************/ /**************/ /* NETLIST.CPP */ /**************/ int IsBusLabel(const wxString & LabelDrawList); void InstallNetlistFrame(WinEDA_SchematicFrame *parent, wxPoint &pos); /***************/ /* ANNOTATE.CPP */ /***************/ void ReAnnotatePowerSymbolsOnly(); void InstallAnnotateFrame(WinEDA_SchematicFrame * parent, wxPoint &pos); int CheckAnnotate(WinEDA_SchematicFrame * frame, bool OneSheetOnly); /* Retourne le nombre de composants non annotes ou erronés Si OneSheetOnly : recherche sur le schema courant else: recherche sur toute la hierarchie */ /************/ /* PLOT.CPP */ /************/ void SetCurrentLineWidth( int width); void PlotArc(wxPoint centre, int StAngle, int EndAngle, int rayon, int width = -1); void PlotCercle(wxPoint centre, int diametre, int width = -1); void PlotPoly( int nb, int * coord, int fill, int width = -1); void PlotNoConnectStruct(DrawNoConnectStruct * Struct); void PlotLibPart( EDA_SchComponentStruct *DrawLibItem ); /* Genere le trace d'un composant */ void PlotSheetStruct(DrawSheetStruct *Struct); /* Routine de dessin du bloc type hierarchie */ void PlotTextStruct(EDA_BaseStruct *Struct); /***************/ /* DELSHEET.CPP */ /***************/ void DeleteSubHierarchy(DrawSheetStruct * Sheet, bool confirm_deletion); void ClearDrawList(EDA_BaseStruct *DrawList, bool confirm_deletion); /* free the draw list DrawList and the subhierarchies */ bool ClearProjectDrawList(SCH_SCREEN * FirstWindow, bool confirm_deletion); /* free the draw list screen->EEDrawList and the subhierarchies clear the screen datas (filenames ..) */ /*************/ /* DELETE.CPP */ /*************/ bool LocateAndDeleteItem(WinEDA_SchematicFrame * frame, wxDC * DC); void EraseStruct(EDA_BaseStruct *DrawStruct, SCH_SCREEN * Window); void DeleteAllMarkers(int type); /* Effacement des marqueurs du type "type" */ void DeleteOneLibraryDrawStruct(WinEDA_DrawPanel * panel, wxDC *DC, EDA_LibComponentStruct * LibEntry, LibEDA_BaseStruct * DrawItem, int Affiche); /* Routine d'effacement d'un "LibraryDrawStruct" (d'un element de dessin d'un composant ) Parametres d'entree Pointeur sur le composant comportant la structure (Si NULL la structure a effacer est supposee non rattachee a un composant) Pointeur sur la structure a effacer Affiche (si != 0 Efface le graphique correspondant de l'ecran) */ /**********/ /* ERC.CPP */ /**********/ void InstallErcFrame(WinEDA_SchematicFrame *parent, wxPoint & pos); /**************/ /* GETPART.CPP */ /**************/ int LookForConvertPart( EDA_LibComponentStruct * LibEntry ); /* Retourne la plus grande valeur trouvee dans la liste des elements "drawings" du composant LibEntry, pour le membre .Convert Si il n'y a pas de representation type "convert", la valeur retournee est 0 ou 1 Si il y a une representation type "convert", la valeur retournee est > 1 (typiquement 2) */ /**************/ /* PINEDIT.CPP */ /**************/ void InstallPineditFrame(WinEDA_LibeditFrame * parent, wxDC * DC, const wxPoint & pos); /**************/ /* SELPART.CPP */ /**************/ int DisplayComponentsNamesInLib(WinEDA_DrawFrame * frame, LibraryStruct *Library, wxString & Buffer, wxString & OldName); LibraryStruct * SelectLibraryFromList(WinEDA_DrawFrame * frame); /* Routine pour selectionner une librairie a partir d'une liste */ int GetNameOfPartToLoad(WinEDA_DrawFrame * frame, LibraryStruct * Lib, wxString & BufName); /* Routine de selection du nom d'un composant en librairie pour chargement, dans la librairie Library. Si Library == NULL, il y aura demande de selection d'une librairie Retourne 1 si composant selectionne 0 si commande annulee place le nom du composant a charger, selectionne a partir d'une liste dans BufName */ /**************/ /* LIBARCH.CPP */ /**************/ bool LibArchive(wxWindow * frame, const wxString & ArchFullFileName); /***************/ /* GENLISTE.CPP */ /***************/ void InstallToolsFrame(WinEDA_DrawFrame *parent, wxPoint &pos); int GenListeCmp( EDA_BaseStruct ** List ); /**************/ /* CLEANUP.CPP */ /**************/ void SchematicCleanUp(SCH_SCREEN * screen, wxDC * DC); /* Routine de nettoyage: - regroupe les segments de fils (ou de bus) alignes en 1 seul segment - Detecte les objets identiques superposes */ void BreakSegmentOnJunction( SCH_SCREEN * Screen ); /* Routine creant des debuts / fin de segment (BUS ou WIRES) sur les jonctions et les raccords */ DrawPickedStruct * BreakSegment(SCH_SCREEN * screen, wxPoint breakpoint, bool PutInUndoList = FALSE); /* Coupe un segment ( BUS, WIRE ) en 2 au point breakpoint, - si ce point est sur le segment - extremites non comprises */ /**************/ /* EECLASS.CPP */ /**************/ void SetStructFather(EDA_BaseStruct * Struct, BASE_SCREEN * Screen); /***************/ /* LIBALIAS.CPP */ /***************/ bool BuildAliasData(LibraryStruct * Lib, EDA_LibComponentStruct * component); /* Create the alias data for the lib component to edit */ int LocateAlias( const wxArrayString & AliasData, const wxString & Name); /* Return an index in alias data list ( -1 if not found ) */ /************/ /* FIND.CPP */ /************/ void InstallFindFrame(WinEDA_SchematicFrame *parent, wxPoint &pos); /***************/ /* OPTIONS.CPP */ /***************/ void DisplayOptionFrame(WinEDA_DrawFrame * parent, const wxPoint & framepos); /****************/ /* CONTROLE.CPP */ /****************/ void RemoteCommand( const char* cmdline );