4 changed files with 181 additions and 81 deletions
-
1qa/pns/CMakeLists.txt
-
65qa/pns/playground.cpp
-
83qa/pns/pns_log_viewer.cpp
-
113qa/pns/pns_log_viewer_frame.h
@ -0,0 +1,65 @@ |
|||
/*
|
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2020 KiCad Developers. |
|||
* |
|||
* 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 |
|||
*/ |
|||
|
|||
|
|||
// WARNING - this Tom's crappy PNS hack tool code. Please don't complain about its quality
|
|||
// (unless you want to improve it).
|
|||
|
|||
#include <pgm_base.h>
|
|||
#include <qa_utils/utility_registry.h>
|
|||
|
|||
#include "pns_log_viewer_frame.h"
|
|||
|
|||
int playground_main_func( int argc, char* argv[] ) |
|||
{ |
|||
auto frame = new PNS_LOG_VIEWER_FRAME( nullptr ); |
|||
Pgm().App().SetTopWindow( frame ); // wxApp gets a face.
|
|||
frame->Show(); |
|||
|
|||
auto overlay = frame->GetPanel()->DebugOverlay(); |
|||
overlay->SetIsFill(false); |
|||
overlay->SetLineWidth(10000); |
|||
|
|||
auto hull = SHAPE_LINE_CHAIN( { VECTOR2I( 66280505, 107710033), VECTOR2I( 65914967, 107344495), VECTOR2I( 65914967, 106827549), VECTOR2I( 66280505, 106462011), VECTOR2I( 74810033, 106462009), VECTOR2I( 75175571, 106827547), VECTOR2I( 75175571, 107344493), VECTOR2I( 74810033, 107710031)}, true ); |
|||
auto path = SHAPE_LINE_CHAIN( { VECTOR2I( 143928480, 109445996), VECTOR2I( 111066480, 109445996), VECTOR2I( 106254391, 104633907), VECTOR2I( 105909001, 104633907), VECTOR2I( 105775094, 104500000), VECTOR2I( 76250000, 104500000), VECTOR2I( 74287991, 106462009), VECTOR2I( 66280505, 106462011), VECTOR2I( 66012989, 106462011)}, false ); |
|||
|
|||
BOX2D bb ( path.BBox().GetPosition(), path.BBox().GetSize() ); |
|||
|
|||
frame->GetPanel()->GetView()->SetViewport(bb); |
|||
|
|||
overlay->SetStrokeColor( WHITE ); |
|||
overlay->SetLineWidth( 100000.0 ); |
|||
overlay->Polyline( path ); |
|||
overlay->SetStrokeColor( RED ); |
|||
overlay->Polyline( hull ); |
|||
|
|||
overlay = nullptr; |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
static bool registered = UTILITY_REGISTRY::Register( { |
|||
"playground", |
|||
"Geometry/drawing playground", |
|||
playground_main_func, |
|||
} ); |
@ -0,0 +1,113 @@ |
|||
/* |
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2020 KiCad Developers. |
|||
* |
|||
* 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 |
|||
*/ |
|||
|
|||
|
|||
// WARNING - this Tom's crappy PNS hack tool code. Please don't complain about its quality |
|||
// (unless you want to improve it). |
|||
|
|||
#ifndef __PNS_LOG_VIEWER_FRAME_H |
|||
#define __PNS_LOG_VIEWER_FRAME_H |
|||
|
|||
#include <pcb_painter.h> |
|||
#include <pcb_test_frame.h> |
|||
|
|||
#include "pns_log.h" |
|||
#include "pns_log_viewer_frame_base.h" |
|||
|
|||
#define ID_LIST_COPY 10001 |
|||
#define ID_LIST_SHOW_ALL 10002 |
|||
#define ID_LIST_SHOW_NONE 10003 |
|||
|
|||
class PNS_LOG_VIEWER_FRAME : public PNS_LOG_VIEWER_FRAME_BASE, public PCB_TEST_FRAME_BASE |
|||
{ |
|||
public: |
|||
PNS_LOG_VIEWER_FRAME( wxFrame* frame ) : PNS_LOG_VIEWER_FRAME_BASE( frame ) |
|||
{ |
|||
LoadSettings(); |
|||
createView( this, PCB_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ); |
|||
|
|||
m_viewSizer->Add( m_galPanel.get(), 1, wxEXPAND, 5 ); |
|||
|
|||
Layout(); |
|||
|
|||
Show( true ); |
|||
Maximize(); |
|||
Raise(); |
|||
|
|||
auto settings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( |
|||
m_galPanel->GetView()->GetPainter()->GetSettings() ); |
|||
|
|||
settings->SetZoneDisplayMode( ZONE_DISPLAY_MODE::SHOW_ZONE_OUTLINE ); |
|||
|
|||
m_listPopupMenu = new wxMenu( wxT( "" ) ); |
|||
m_listPopupMenu->Append( ID_LIST_COPY, wxT( "Copy selected geometry" ), wxT( "" ), |
|||
wxITEM_NORMAL ); |
|||
m_listPopupMenu->Append( ID_LIST_SHOW_ALL, wxT( "Show all" ), wxT( "" ), wxITEM_NORMAL ); |
|||
m_listPopupMenu->Append( ID_LIST_SHOW_NONE, wxT( "Show none" ), wxT( "" ), wxITEM_NORMAL ); |
|||
|
|||
m_itemList->Connect( m_itemList->GetId(), wxEVT_TREELIST_ITEM_CONTEXT_MENU, |
|||
wxMouseEventHandler( PNS_LOG_VIEWER_FRAME::onListRightClick ), NULL, |
|||
this ); |
|||
//m_itemList->Connect(m_itemList->GetId(),wxEVT_LISTBOX,wxCommandEventHandler(PNS_LOG_VIEWER_FRAME::onListSelect),NULL,this); |
|||
m_itemList->Connect( m_itemList->GetId(), wxEVT_TREELIST_SELECTION_CHANGED, |
|||
wxCommandEventHandler( PNS_LOG_VIEWER_FRAME::onListSelect ), NULL, |
|||
this ); |
|||
m_itemList->Connect( m_itemList->GetId(), wxEVT_TREELIST_ITEM_CHECKED, |
|||
wxCommandEventHandler( PNS_LOG_VIEWER_FRAME::onListChecked ), NULL, |
|||
this ); |
|||
|
|||
m_itemList->AppendColumn( "Type" ); |
|||
m_itemList->AppendColumn( "Value" ); |
|||
} |
|||
|
|||
virtual ~PNS_LOG_VIEWER_FRAME() {} |
|||
|
|||
void SetLogFile( PNS_LOG_FILE* aLog ); |
|||
|
|||
private: |
|||
void drawLoggedItems( int iter ); |
|||
void updateDumpPanel( int iter ); |
|||
virtual void createUserTools() override; |
|||
void buildListTree( wxTreeListItem item, PNS_TEST_DEBUG_DECORATOR::DEBUG_ENT* ent, |
|||
int depth = 0 ); |
|||
void syncModel(); |
|||
PNS_TEST_DEBUG_DECORATOR::STAGE* getCurrentStage(); |
|||
|
|||
virtual void onReload( wxCommandEvent& event ) override; |
|||
virtual void onExit( wxCommandEvent& event ) override; |
|||
virtual void onRewindScroll( wxScrollEvent& event ) override; |
|||
virtual void onRewindCountText( wxCommandEvent& event ) override; |
|||
virtual void onListRightClick( wxMouseEvent& event ); |
|||
virtual void onListSelect( wxCommandEvent& event ); |
|||
virtual void onBtnRewindLeft( wxCommandEvent& event ) override; |
|||
virtual void onBtnRewindRight( wxCommandEvent& event ) override; |
|||
virtual void onListChecked( wxCommandEvent& event ); |
|||
|
|||
std::shared_ptr<KIGFX::VIEW_OVERLAY> m_overlay; |
|||
std::shared_ptr<PNS_LOG_FILE> m_logFile; |
|||
std::shared_ptr<PNS_TEST_ENVIRONMENT> m_env; |
|||
int m_rewindIter; |
|||
wxMenu* m_listPopupMenu; |
|||
}; |
|||
|
|||
#endif |
Write
Preview
Loading…
Cancel
Save
Reference in new issue