1 /* 2 * KiRouter - a push-and-(sometimes-)shove PCB router 3 * 4 * Copyright (C) 2013-2014 CERN 5 * Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors. 6 * Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch> 7 * 8 * This program is free software: you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation, either version 3 of the License, or (at your 11 * option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License along 19 * with this program. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22 #ifndef __PNS_LOGGER_H 23 #define __PNS_LOGGER_H 24 25 #include <cstdio> 26 #include <vector> 27 #include <string> 28 #include <sstream> 29 30 #include <math/vector2d.h> 31 32 class SHAPE_LINE_CHAIN; 33 class SHAPE; 34 35 namespace PNS { 36 37 class ITEM; 38 39 class LOGGER 40 { 41 public: 42 43 enum EVENT_TYPE { 44 EVT_START_ROUTE = 0, 45 EVT_START_DRAG, 46 EVT_FIX, 47 EVT_MOVE, 48 EVT_ABORT 49 }; 50 51 struct EVENT_ENTRY { 52 VECTOR2I p; 53 EVENT_TYPE type; 54 wxString uuid; 55 }; 56 57 LOGGER(); 58 ~LOGGER(); 59 60 void Save( const std::string& aFilename ); 61 void Clear(); 62 void Log( EVENT_TYPE evt, const VECTOR2I& pos, const ITEM* item = nullptr ); 63 GetEvents()64 const std::vector<EVENT_ENTRY>& GetEvents() 65 { 66 return m_events; 67 } 68 69 private: 70 std::vector<EVENT_ENTRY> m_events; 71 }; 72 73 } 74 75 #endif 76