summaryrefslogtreecommitdiff
path: root/eeschema/lib_collectors.h
diff options
context:
space:
mode:
Diffstat (limited to 'eeschema/lib_collectors.h')
-rw-r--r--eeschema/lib_collectors.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/eeschema/lib_collectors.h b/eeschema/lib_collectors.h
new file mode 100644
index 0000000..e1b02a4
--- /dev/null
+++ b/eeschema/lib_collectors.h
@@ -0,0 +1,135 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
+ * Copyright (C) 2011 KiCad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _LIB_COLLECTORS_H_
+#define _LIB_COLLECTORS_H_
+
+
+#include <class_collector.h>
+#include <lib_draw_item.h>
+
+
+class LIB_COLLECTOR;
+
+
+class LIB_COLLECTOR_DATA
+{
+ int m_unit;
+ int m_convert;
+
+ friend class LIB_COLLECTOR;
+
+public:
+ LIB_COLLECTOR_DATA() :
+ m_unit( 0 ),
+ m_convert( 0 ) {}
+};
+
+
+/**
+ * Class LIB_COLLECTOR
+ */
+class LIB_COLLECTOR : public COLLECTOR
+{
+ LIB_COLLECTOR_DATA m_data;
+
+public:
+
+ /**
+ * A scan list for all schematic items.
+ */
+ static const KICAD_T AllItems[];
+
+ /**
+ * A scan list for all editable schematic items.
+ */
+ static const KICAD_T EditableItems[];
+
+ /**
+ * A scan list for all movable schematic items.
+ */
+ static const KICAD_T MovableItems[];
+
+ /**
+ * A scan list for all rotatable schematic items.
+ */
+ static const KICAD_T RotatableItems[];
+
+ /**
+ * A scan list for all schematic items except pins.
+ */
+ static const KICAD_T AllItemsButPins[];
+
+ /**
+ * Constructor LIB_COLLECTOR
+ */
+ LIB_COLLECTOR( const KICAD_T* aScanTypes = LIB_COLLECTOR::AllItems )
+ {
+ SetScanTypes( aScanTypes );
+ }
+
+ /**
+ * Operator []
+ * overloads COLLECTOR::operator[](int) to return a LIB_ITEM* instead of
+ * an EDA_ITEM* type.
+ * @param aIndex The index into the list.
+ * @return LIB_ITEM* at \a aIndex or NULL.
+ */
+ LIB_ITEM* operator[]( int aIndex ) const
+ {
+ if( (unsigned)aIndex < (unsigned)GetCount() )
+ return (LIB_ITEM*) m_List[ aIndex ];
+
+ return NULL;
+ }
+
+ /**
+ * Function Inspect
+ * is the examining function within the INSPECTOR which is passed to the
+ * Iterate function.
+ *
+ * @param aItem An EDA_ITEM to examine.
+ * @param aTestData is not used in this class.
+ * @return SEARCH_RESULT #SEARCH_QUIT if the iterator is to stop the scan,
+ * else #SEARCH_CONTINUE;
+ */
+ SEARCH_RESULT Inspect( EDA_ITEM* aItem, const void* aTestData = NULL );
+
+ /**
+ * Function Collect
+ * scans a SCH_ITEM using this class's Inspector method, which does the collection.
+ * @param aItem A SCH_ITEM to scan.
+ * @param aFilterList A list of #KICAD_T types with a terminating #EOT, that determines
+ * what is to be collected and the priority order of the resulting
+ * collection.
+ * @param aPosition A wxPoint to use in hit-testing.
+ * @param aUnit The unit of the items to collect or zero if all units.
+ * @param aConvert The convert of the items to collect or zero if all conversions.
+ */
+ void Collect( LIB_ITEMS& aItem, const KICAD_T aFilterList[], const wxPoint& aPosition,
+ int aUnit = 0, int aConvert = 0 );
+};
+
+
+#endif // _LIB_COLLECTORS_H_