kicad/eeschema/component_class.h

160 lines
4.9 KiB
C
Raw Normal View History

/*****************************************************/
/* Definitions for the Component classes for EESchema */
/*****************************************************/
2007-05-06 16:03:28 +00:00
#ifndef COMPONENT_CLASS_H
#define COMPONENT_CLASS_H
#ifndef eda_global
#define eda_global extern
#endif
#include "macros.h"
#include "base_struct.h"
/* Definition de la representation du composant */
#define NUMBER_OF_FIELDS 12 /* Nombre de champs de texte affectes au composant */
2007-09-20 21:06:49 +00:00
enum NumFieldType {
REFERENCE = 0, /* Champ Reference of part, i.e. "IC21" */
VALUE, /* Champ Value of part, i.e. "3.3K" */
FOOTPRINT, /* Champ Name Module PCB, i.e. "16DIP300" */
SHEET_FILENAME, /* Champ Name Schema component, i.e. "cnt16.sch" */
FIELD1,
FIELD2,
FIELD3,
FIELD4,
FIELD5,
FIELD6,
FIELD7,
FIELD8
2007-09-20 21:06:49 +00:00
};
2007-05-06 16:03:28 +00:00
/* Class to manage component fields.
* component fields are texts attached to the component (not the graphic texts)
* There are 2 major fields : Reference and Value
*/
class PartTextStruct : public EDA_BaseStruct, public EDA_TextStruct
2007-05-06 16:03:28 +00:00
{
public:
2007-08-23 04:28:46 +00:00
int m_Layer;
int m_FieldId;
wxString m_Name; /* Field name (ref, value,pcb, sheet, filed 1..
* and for fields 1 to 8 the name is editable */
2007-05-06 16:03:28 +00:00
public:
PartTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
~PartTextStruct();
2007-09-20 21:06:49 +00:00
virtual wxString GetClass() const
{
2007-09-20 21:06:49 +00:00
return wxT( "PartText" );
}
2007-05-06 16:03:28 +00:00
void PartTextCopy( PartTextStruct* target );
void Place( WinEDA_DrawFrame* frame, wxDC* DC );
EDA_Rect GetBoundaryBox();
bool IsVoid();
void SwapData( PartTextStruct* copyitem );
2007-05-06 16:03:28 +00:00
};
2007-08-23 04:28:46 +00:00
2007-05-06 16:03:28 +00:00
/* the class DrawPartStruct describes a basic virtual component
* Not used directly:
* used classes are EDA_SchComponentStruct (the "classic" schematic component
* and the Pseudo component DrawSheetStruct
*/
class DrawPartStruct : public EDA_BaseStruct
2007-05-06 16:03:28 +00:00
{
public:
int m_Layer;
wxString m_ChipName; /* Key to look for in the library, i.e. "74LS00". */
PartTextStruct m_Field[NUMBER_OF_FIELDS];
wxPoint m_Pos; /* Exact position of part. */
2007-05-06 16:03:28 +00:00
public:
DrawPartStruct( KICAD_T struct_type, const wxPoint &pos );
~DrawPartStruct();
2007-09-20 21:06:49 +00:00
virtual wxString GetClass() const
{
2007-09-20 21:06:49 +00:00
return wxT( "DrawPart" );
}
2007-09-20 21:06:49 +00:00
/**
* Function GetReference
* returns a reference to the Reference
*/
const wxString& GetReference() { return m_Field[REFERENCE].m_Text; }
2007-05-06 16:03:28 +00:00
};
/* the class EDA_SchComponentStruct describes a real component */
class EDA_SchComponentStruct : public DrawPartStruct
2007-05-06 16:03:28 +00:00
{
public:
int m_RefIdNumber; /* reference count: for U1, R2 .. it is the 1 or 2 value */
int m_Multi; /* In multi unit chip - which unit to draw. */
int m_FlagControlMulti;
int m_Convert; /* Gestion des mutiples representations (ex: conversion De Morgan) */
int m_Transform[2][2]; /* The rotation/mirror transformation matrix. */
bool* m_PinIsDangling; // liste des indicateurs de pin non connectee
2007-05-06 16:03:28 +00:00
public:
EDA_SchComponentStruct( const wxPoint& pos = wxPoint( 0, 0 ) );
~EDA_SchComponentStruct( void ) { }
virtual wxString GetClass() const
{
2007-09-20 21:06:49 +00:00
return wxT( "EDA_SchComponent" );
}
2007-09-20 21:06:49 +00:00
EDA_SchComponentStruct* GenCopy();
void SetRotationMiroir( int type );
int GetRotationMiroir();
wxPoint GetScreenCoord( const wxPoint& coord );
void Display_Infos( WinEDA_DrawFrame* frame );
void ClearAnnotation();
EDA_Rect GetBoundaryBox();
2007-09-20 21:06:49 +00:00
const wxString& ReturnFieldName( int aFieldNdx ) const;
/**
* Function GetFieldValue
* returns a reference to the field value.
* @param aFieldNdx An index into the array of fields, 0 - FIELD8
* @return const wxString& - the field value or wxEmptyString
*/
const wxString& GetFieldValue( int aFieldNdx ) const;
virtual void Draw( WinEDA_DrawPanel* panel,
wxDC* DC,
const wxPoint& offset,
int draw_mode,
int Color = -1 );
void SwapData( EDA_SchComponentStruct* copyitem );
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
2007-09-20 21:06:49 +00:00
#if defined(DEBUG)
/**
* Function Show
* is used to output the object tree, currently for debugging only.
* @param nestLevel An aid to prettier tree indenting, and is the level
* of nesting of this object within the overall tree.
* @param os The ostream& to output to.
*/
void Show( int nestLevel, std::ostream& os );
#endif
2007-05-06 16:03:28 +00:00
};
#endif /* COMPONENT_CLASS_H */