Commit 9bf1f390 authored by Dick Hollenbeck's avatar Dick Hollenbeck

sweet editor now shows GAL canvas

parent 8cad403d
...@@ -27,7 +27,7 @@ if( 1 ) ...@@ -27,7 +27,7 @@ if( 1 )
project(kicad-new) project(kicad-new)
cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR) cmake_minimum_required( VERSION 2.8 FATAL_ERROR )
set( PROJECT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ ) set( PROJECT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ )
...@@ -49,22 +49,6 @@ if( 1 ) ...@@ -49,22 +49,6 @@ if( 1 )
check_find_package_result( wxWidgets_FOUND "wxWidgets" ) check_find_package_result( wxWidgets_FOUND "wxWidgets" )
find_library( gal_LIBRARY "libgal.a"
PATHS
"${CMAKE_CURRENT_SOURCE_DIR}/../../kicad-gal/build"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../kicad-gal/build"
DOC
"Where is the static GAL library"
)
find_path( gal_ROOT NAMES "README.txt"
PATHS
"${CMAKE_CURRENT_SOURCE_DIR}/../../kicad-gal"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../kicad-gal"
DOC
"Where is the base include directory for the GAL library"
)
# make config.h # make config.h
include( PerformFeatureChecks ) include( PerformFeatureChecks )
perform_feature_checks() perform_feature_checks()
...@@ -168,7 +152,46 @@ if( MINGW ) ...@@ -168,7 +152,46 @@ if( MINGW )
endif() endif()
target_link_libraries( test_sch_lib_table sweet ) target_link_libraries( test_sch_lib_table sweet )
include_directories ( "${gal_ROOT}" )
if( 1 )
find_library( gal_LIBRARY "libgal.a"
PATHS
"${CMAKE_CURRENT_SOURCE_DIR}/../../kicad-gal/build"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../kicad-gal/build"
DOC
"Where is the static GAL library"
)
find_path( gal_ROOT NAMES "README.txt"
PATHS
"${CMAKE_CURRENT_SOURCE_DIR}/../../kicad-gal"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../kicad-gal"
DOC
"Where is the base include directory for the GAL library"
)
else()
# we build the GAL library, therefore we know where it is, no need to find_library() it.
set( gal_ROOT "${CMAKE_CURRENT_BINARY_DIR}/gal-src" )
set( gal_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/gal-src/libgal.a" )
include( ExternalProject )
ExternalProject_Add( ki_gal
# skip the install step, build in source, use from source
SOURCE_DIR "${gal_ROOT}"
STAMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/gal-stamps"
TIMEOUT 120
DOWNLOAD_COMMAND bzr export ${gal_ROOT} lp:~kicad-testing-committers/kicad/kicad-gal
CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ${gal_ROOT}
BUILD_IN_SOURCE 1
BUILD_COMMAND make
INSTALL_COMMAND ""
)
endif()
include_directories( "${gal_ROOT}" )
# Find pkg-config in order find cairo. # Find pkg-config in order find cairo.
find_package( PkgConfig REQUIRED ) find_package( PkgConfig REQUIRED )
......
...@@ -31,8 +31,10 @@ namespace SCH { ...@@ -31,8 +31,10 @@ namespace SCH {
CANVAS::CANVAS( wxWindow* aParent ) : CANVAS::CANVAS( wxWindow* aParent ) :
OPENGL_GAL( aParent, wxDefaultSize ) OPENGL_GAL( aParent, NULL, this ) // I am my own PaintListener
{ {
Connect( EVT_GAL_REDRAW, wxCommandEventHandler( CANVAS::onRedraw ) );
// Set the world unit length // Set the world unit length
SetWorldUnitLength( 0.01 ); SetWorldUnitLength( 0.01 );
...@@ -63,9 +65,18 @@ CANVAS::CANVAS( wxWindow* aParent ) : ...@@ -63,9 +65,18 @@ CANVAS::CANVAS( wxWindow* aParent ) :
} }
void CANVAS::Paint() void CANVAS::onRedraw( wxCommandEvent& event )
{ {
/* D(printf( "%s:\n", __FUNCTION__ );)
PaintScene();
}
void CANVAS::PaintScene()
{
D(printf("%s:\n", __FUNCTION__ );)
BeginDrawing(); BeginDrawing();
SetBackgroundColor( COLOR4D( 0, 0, 0, 1.0 ) ); SetBackgroundColor( COLOR4D( 0, 0, 0, 1.0 ) );
...@@ -80,7 +91,6 @@ void CANVAS::Paint() ...@@ -80,7 +91,6 @@ void CANVAS::Paint()
Flush(); Flush();
EndDrawing(); EndDrawing();
*/
} }
......
...@@ -38,16 +38,11 @@ class CANVAS : public OPENGL_GAL ...@@ -38,16 +38,11 @@ class CANVAS : public OPENGL_GAL
protected: protected:
PART* part; ///< which PART to draw PART* part; ///< which PART to draw
void onRedraw( wxCommandEvent& event );
public: public:
CANVAS( wxWindow* aParent ); CANVAS( wxWindow* aParent );
/**
* Function Paint (overloaded)
* redraws the entire window, overloads OPENGL_GAL::Paint()
*/
void Paint();
/** /**
* Function SetPart * Function SetPart
* sets the PART to draw, returns the previous PART. * sets the PART to draw, returns the previous PART.
...@@ -58,6 +53,8 @@ public: ...@@ -58,6 +53,8 @@ public:
part = aPart; part = aPart;
return ret; return ret;
} }
void PaintScene();
}; };
......
...@@ -68,30 +68,27 @@ private: ...@@ -68,30 +68,27 @@ private:
bool m_isReady; bool m_isReady;
bool m_isPanning; bool m_isPanning;
GRAPHICS_ABSTRACTION_LAYER* m_gal; SCH::CANVAS* m_gal;
wxSize m_screenSize; wxSize m_screenSize;
VECTOR2D m_worldSize; VECTOR2D m_worldSize;
VECTOR2D m_startMousePoint;
VECTOR2D m_startLookAtPoint;
/* /*
double m_alpha; double m_alpha;
VECTOR2D m_startMousePoint;
VECTOR2D m_startLookAtPoint;
MATRIX3x3D m_startMatrix; MATRIX3x3D m_startMatrix;
STROKE_FONT m_font; STROKE_FONT m_font;
*/ */
// Event handlers // Event handlers
/*
void OnTimerEvent( wxTimerEvent &event );
void OnMotion( wxMouseEvent& event ); void OnMotion( wxMouseEvent& event );
void OnMouseWheel( wxMouseEvent& event ); void OnMouseWheel( wxMouseEvent& event );
void OnRedraw( wxCommandEvent& event );
void OnRightDown( wxMouseEvent& event ); void OnRightDown( wxMouseEvent& event );
void OnRightUp( wxMouseEvent& event ); void OnRightUp( wxMouseEvent& event );
*/ // void OnRedraw( wxCommandEvent& event );
}; };
...@@ -100,17 +97,24 @@ SWEET_FRAME::SWEET_FRAME( wxWindow* parent, wxWindowID id, const wxString& title ...@@ -100,17 +97,24 @@ SWEET_FRAME::SWEET_FRAME( wxWindow* parent, wxWindowID id, const wxString& title
wxFrame( parent, id, title, pos, size ), wxFrame( parent, id, title, pos, size ),
m_screenSize( size.x, size.y ) m_screenSize( size.x, size.y )
{ {
new SWEET_EDITOR_PANEL( this, wxID_ANY, wxPoint( 0, 0 ), wxSize( -1, -1 ), 0 ); m_isPanning = false;
// Connect( wxEVT_TIMER, wxTimerEventHandler( SWEET_FRAME::OnTimerEvent ) ); SWEET_EDITOR_PANEL* panel =
new SWEET_EDITOR_PANEL( this, wxID_ANY, wxPoint( 0, 0 ), wxSize( -1, -1 ), 0 );
m_gal = (SCH::CANVAS*) panel->FindWindowByName( wxT( "GLCanvas" ), panel );
wxASSERT( m_gal );
m_gal->SetMouseListener( this );
/*
Connect( EVT_GAL_REDRAW, wxCommandEventHandler( SWEET_FRAME::OnRedraw ) );
Connect( wxEVT_MOTION, wxMouseEventHandler( SWEET_FRAME::OnMotion ) ); Connect( wxEVT_MOTION, wxMouseEventHandler( SWEET_FRAME::OnMotion ) );
Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( SWEET_FRAME::OnMouseWheel ) ); Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( SWEET_FRAME::OnMouseWheel ) );
Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( SWEET_FRAME::OnRightDown ) ); Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( SWEET_FRAME::OnRightDown ) );
Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( SWEET_FRAME::OnRightUp ) ); Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( SWEET_FRAME::OnRightUp ) );
*/
// Connect( EVT_GAL_REDRAW, wxCommandEventHandler( SWEET_FRAME::OnRedraw ) );
/* /*
// Set the world unit length // Set the world unit length
...@@ -140,8 +144,50 @@ SWEET_FRAME::~SWEET_FRAME() ...@@ -140,8 +144,50 @@ SWEET_FRAME::~SWEET_FRAME()
} }
void SWEET_FRAME::OnMotion( wxMouseEvent& event )
{
VECTOR2D mousePoint( event.GetX(), event.GetY() );
if( event.Dragging() )
{
if( m_isPanning )
{
MATRIX3x3D matrix = m_gal->GetWorldScreenMatrix().Inverse();
VECTOR2D delta = matrix.GetScale().x * ( m_startMousePoint - mousePoint );
m_gal->SetLookAtPoint( m_startLookAtPoint + delta );
m_gal->PaintScene();
}
}
else
{
m_gal->DrawCursor( mousePoint );
}
}
void SWEET_FRAME::OnMouseWheel( wxMouseEvent& event )
{
double zoomScale = ( event.GetWheelRotation() > 0.0 ) ? 1.1 : 0.9;
// void PaintScene(); m_gal->SetZoomFactor( m_gal->GetZoomFactor() * zoomScale );
m_gal->PaintScene();
}
void SWEET_FRAME::OnRightDown( wxMouseEvent& event )
{
m_isPanning = true;
m_startMousePoint = VECTOR2D( event.GetX(), event.GetY() );
m_startLookAtPoint = m_gal->GetLookAtPoint();
}
void SWEET_FRAME::OnRightUp( wxMouseEvent& event )
{
m_isPanning = false;
}
static const wxCmdLineEntryDesc g_cmdLineDesc[] = { static const wxCmdLineEntryDesc g_cmdLineDesc[] = {
......
...@@ -36,13 +36,13 @@ SWEET_EDITOR_PANEL::SWEET_EDITOR_PANEL( wxWindow* parent, wxWindowID id, const w ...@@ -36,13 +36,13 @@ SWEET_EDITOR_PANEL::SWEET_EDITOR_PANEL( wxWindow* parent, wxWindowID id, const w
m_scrolledTextWindow->SetSizer( m_scrolledTextSizer ); m_scrolledTextWindow->SetSizer( m_scrolledTextSizer );
m_scrolledTextWindow->Layout(); m_scrolledTextWindow->Layout();
m_scrolledTextSizer->Fit( m_scrolledTextWindow ); m_scrolledTextSizer->Fit( m_scrolledTextWindow );
m_gal_scrolled_window = new wxScrolledWindow( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); m_gal_scrolled_window = new wxScrolledWindow( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL );
m_gal_scrolled_window->SetScrollRate( 5, 5 ); m_gal_scrolled_window->SetScrollRate( 5, 5 );
wxStaticBoxSizer* m_gal_sizer; wxStaticBoxSizer* m_gal_sizer;
m_gal_sizer = new wxStaticBoxSizer( new wxStaticBox( m_gal_scrolled_window, wxID_ANY, _("Visual Part") ), wxVERTICAL ); m_gal_sizer = new wxStaticBoxSizer( new wxStaticBox( m_gal_scrolled_window, wxID_ANY, _("Visual Part") ), wxVERTICAL );
m_gal = new SCH::CANVAS( m_gal_scrolled_window ); m_gal = new SCH::CANVAS( m_gal_scrolled_window );
m_gal_sizer->Add( m_gal, 0, wxALL, 5 ); m_gal_sizer->Add( m_gal, 1, wxEXPAND, 5 );
m_gal_scrolled_window->SetSizer( m_gal_sizer ); m_gal_scrolled_window->SetSizer( m_gal_sizer );
m_gal_scrolled_window->Layout(); m_gal_scrolled_window->Layout();
......
...@@ -462,7 +462,7 @@ ...@@ -462,7 +462,7 @@
<event name="OnSetFocus"></event> <event name="OnSetFocus"></event>
<event name="OnSize"></event> <event name="OnSize"></event>
<event name="OnUpdateUI"></event> <event name="OnUpdateUI"></event>
<object class="wxStaticBoxSizer" expanded="1"> <object class="wxStaticBoxSizer" expanded="0">
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="label">Sweet</property> <property name="label">Sweet</property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
...@@ -470,11 +470,11 @@ ...@@ -470,11 +470,11 @@
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<event name="OnUpdateUI"></event> <event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property> <property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">1</property> <property name="proportion">1</property>
<object class="wxTextCtrl" expanded="1"> <object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property> <property name="BottomDockable">1</property>
<property name="LeftDockable">1</property> <property name="LeftDockable">1</property>
<property name="RightDockable">1</property> <property name="RightDockable">1</property>
...@@ -564,8 +564,8 @@ ...@@ -564,8 +564,8 @@
</object> </object>
</object> </object>
</object> </object>
<object class="splitteritem" expanded="1"> <object class="splitteritem" expanded="0">
<object class="wxScrolledWindow" expanded="1"> <object class="wxScrolledWindow" expanded="0">
<property name="BottomDockable">1</property> <property name="BottomDockable">1</property>
<property name="LeftDockable">1</property> <property name="LeftDockable">1</property>
<property name="RightDockable">1</property> <property name="RightDockable">1</property>
...@@ -621,7 +621,7 @@ ...@@ -621,7 +621,7 @@
<property name="validator_variable"></property> <property name="validator_variable"></property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style">wxHSCROLL|wxVSCROLL</property> <property name="window_style">wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL</property>
<event name="OnChar"></event> <event name="OnChar"></event>
<event name="OnEnterWindow"></event> <event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event> <event name="OnEraseBackground"></event>
...@@ -645,7 +645,7 @@ ...@@ -645,7 +645,7 @@
<event name="OnSetFocus"></event> <event name="OnSetFocus"></event>
<event name="OnSize"></event> <event name="OnSize"></event>
<event name="OnUpdateUI"></event> <event name="OnUpdateUI"></event>
<object class="wxStaticBoxSizer" expanded="1"> <object class="wxStaticBoxSizer" expanded="0">
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="label">Visual Part</property> <property name="label">Visual Part</property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
...@@ -653,11 +653,11 @@ ...@@ -653,11 +653,11 @@
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<event name="OnUpdateUI"></event> <event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxALL</property> <property name="flag">wxEXPAND</property>
<property name="proportion">0</property> <property name="proportion">1</property>
<object class="CustomControl" expanded="1"> <object class="CustomControl" expanded="0">
<property name="BottomDockable">1</property> <property name="BottomDockable">1</property>
<property name="LeftDockable">1</property> <property name="LeftDockable">1</property>
<property name="RightDockable">1</property> <property name="RightDockable">1</property>
...@@ -672,7 +672,7 @@ ...@@ -672,7 +672,7 @@
<property name="close_button">1</property> <property name="close_button">1</property>
<property name="construction">m_gal = new SCH::CANVAS( m_gal_scrolled_window );</property> <property name="construction">m_gal = new SCH::CANVAS( m_gal_scrolled_window );</property>
<property name="context_help"></property> <property name="context_help"></property>
<property name="context_menu">1</property> <property name="context_menu">0</property>
<property name="declaration">SCH::CANVAS* m_gal;</property> <property name="declaration">SCH::CANVAS* m_gal;</property>
<property name="default_pane">0</property> <property name="default_pane">0</property>
<property name="dock">Dock</property> <property name="dock">Dock</property>
...@@ -716,7 +716,7 @@ ...@@ -716,7 +716,7 @@
<property name="validator_variable"></property> <property name="validator_variable"></property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style"></property> <property name="window_style">wxFULL_REPAINT_ON_RESIZE</property>
<event name="OnChar"></event> <event name="OnChar"></event>
<event name="OnEnterWindow"></event> <event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event> <event name="OnEraseBackground"></event>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment