From 412e6cc60a0741adaaae09c4bcde0e24a99a48f1 Mon Sep 17 00:00:00 2001 From: Garux Date: Sun, 29 Apr 2018 19:56:50 +0300 Subject: [PATCH] shorten RadiantWindowObserver.ModifierFlags m_state code --- radiant/selection.cpp | 90 ++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 56 deletions(-) diff --git a/radiant/selection.cpp b/radiant/selection.cpp index 53f77165..b8da876a 100644 --- a/radiant/selection.cpp +++ b/radiant/selection.cpp @@ -5156,12 +5156,15 @@ void Scene_projectClosestTexture( SelectionTest& test ); class TexManipulator_ { const DeviceVector& m_epsilon; +const ModifierFlags& m_state; public: const View* m_view; -ModifierFlags m_state; bool m_undo_begun; -TexManipulator_( const DeviceVector& epsilon ) : m_epsilon( epsilon ), m_state( c_modifierNone ), m_undo_begun( false ){ +TexManipulator_( const DeviceVector& epsilon, const ModifierFlags& state ) : + m_epsilon( epsilon ), + m_state( state ), + m_undo_begun( false ){ } void mouseDown( DeviceVector position ){ @@ -5199,21 +5202,6 @@ void mouseUp( DeviceVector position ){ g_mouseUpCallback.clear(); } typedef MemberCaller1 MouseUpCaller; - -void setState( ModifierFlags state ){ - m_state = state; -} - -ModifierFlags getState() const { - return m_state; -} - -void modifierEnable( ModifierFlags type ){ - setState( bitfield_enable( getState(), type ) ); -} -void modifierDisable( ModifierFlags type ){ - setState( bitfield_disable( getState(), type ) ); -} }; @@ -5244,10 +5232,10 @@ rect_t getDeviceArea() const { } const DeviceVector& m_epsilon; +ModifierFlags m_state; public: DeviceVector m_start; DeviceVector m_current; -ModifierFlags m_state; bool m_mouse2; bool m_mouseMoved; bool m_mouseMovedWhilePressed; @@ -5255,7 +5243,14 @@ bool m_paintSelect; const View* m_view; RectangleCallback m_window_update; -Selector_( const DeviceVector& epsilon ) : m_epsilon( epsilon ), m_start( 0.0f, 0.0f ), m_current( 0.0f, 0.0f ), m_state( c_modifierNone ), m_mouse2( false ), m_mouseMoved( false ), m_mouseMovedWhilePressed( false ){ +Selector_( const DeviceVector& epsilon ) : + m_epsilon( epsilon ), + m_state( c_modifierNone ), + m_start( 0.f, 0.f ), + m_current( 0.f, 0.f ), + m_mouse2( false ), + m_mouseMoved( false ), + m_mouseMovedWhilePressed( false ){ } void draw_area(){ @@ -5293,24 +5288,13 @@ bool selecting() const { } void setState( ModifierFlags state ){ - bool was_selecting = selecting(); + const bool was_selecting = selecting(); m_state = state; if ( was_selecting ^ selecting() ) { draw_area(); } } -ModifierFlags getState() const { - return m_state; -} - -void modifierEnable( ModifierFlags type ){ - setState( bitfield_enable( getState(), type ) ); -} -void modifierDisable( ModifierFlags type ){ - setState( bitfield_disable( getState(), type ) ); -} - void mouseDown( DeviceVector position ){ m_start = m_current = device_constrained( position ); if( !m_mouse2 && m_state != c_modifierNone ){ @@ -5349,14 +5333,18 @@ typedef MemberCaller1 MouseUpCalle class Manipulator_ { const DeviceVector& m_epsilon; +const ModifierFlags& m_state; public: const View* m_view; -ModifierFlags m_state; bool m_moving_transformOrigin; bool m_mouseMovedWhilePressed; -Manipulator_( const DeviceVector& epsilon ) : m_epsilon( epsilon ), m_state( c_modifierNone ), m_moving_transformOrigin( false ), m_mouseMovedWhilePressed( false ) { +Manipulator_( const DeviceVector& epsilon, const ModifierFlags& state ) : + m_epsilon( epsilon ), + m_state( state ), + m_moving_transformOrigin( false ), + m_mouseMovedWhilePressed( false ) { } bool mouseDown( DeviceVector position ){ @@ -5377,21 +5365,6 @@ void mouseUp( DeviceVector position ){ g_mouseUpCallback.clear(); } typedef MemberCaller1 MouseUpCaller; - -void setState( ModifierFlags state ){ - m_state = state; -} - -ModifierFlags getState() const { - return m_state; -} - -void modifierEnable( ModifierFlags type ){ - setState( bitfield_enable( getState(), type ) ); -} -void modifierDisable( ModifierFlags type ){ - setState( bitfield_disable( getState(), type ) ); -} }; @@ -5400,6 +5373,7 @@ void modifierDisable( ModifierFlags type ){ class RadiantWindowObserver : public SelectionSystemWindowObserver { DeviceVector m_epsilon; +ModifierFlags m_state; int m_width; int m_height; @@ -5412,12 +5386,18 @@ float m_movePressed; /* pressed move after m_moveStart, for decision: m1 tunnel DeviceVector m_moveStart; DeviceVector m_moveEnd; -public: Selector_ m_selector; Manipulator_ m_manipulator; TexManipulator_ m_texmanipulator; +public: -RadiantWindowObserver() : m_mouse_down( false ), m_moveEpsilon( .01f ), m_selector( m_epsilon ), m_manipulator( m_epsilon ), m_texmanipulator( m_epsilon ){ +RadiantWindowObserver() : + m_state( c_modifierNone ), + m_mouse_down( false ), + m_moveEpsilon( .01f ), + m_selector( m_epsilon ), + m_manipulator( m_epsilon, m_state ), + m_texmanipulator( m_epsilon, m_state ){ } void release(){ delete this; @@ -5500,14 +5480,12 @@ void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierF m_move = 0.f; } void onModifierDown( ModifierFlags type ){ - m_selector.modifierEnable( type ); - m_manipulator.modifierEnable( type ); - m_texmanipulator.modifierEnable( type ); + m_state = bitfield_enable( m_state, type ); + m_selector.setState( m_state ); } void onModifierUp( ModifierFlags type ){ - m_selector.modifierDisable( type ); - m_manipulator.modifierDisable( type ); - m_texmanipulator.modifierDisable( type ); + m_state = bitfield_disable( m_state, type ); + m_selector.setState( m_state ); } DeviceVector device( WindowVector window ) const { return window_to_normalised_device( window, m_width, m_height );