From c96b4c870a3cc49245c1eea30deabdc7667521ca Mon Sep 17 00:00:00 2001 From: manongjohn Date: Jun 20 2019 04:54:14 +0000 Subject: Flip on viewer center (#2564) * Add Reset Rotation option * Switch ZoomReset to ViewReset * Add Reset Zoom option * Add flip viewer options to context menu * Enable visualization buttons on command bar * Fix reset Rotate on Camera Center * Add Reset Position option * Add tool option bar reset buttons * Flip on viewer center --- diff --git a/toonz/sources/toonz/sceneviewer.cpp b/toonz/sources/toonz/sceneviewer.cpp index 6082220..008cf7b 100644 --- a/toonz/sources/toonz/sceneviewer.cpp +++ b/toonz/sources/toonz/sceneviewer.cpp @@ -2056,8 +2056,18 @@ void SceneViewer::zoom(const TPointD ¢er, double factor) { //----------------------------------------------------------------------------- void SceneViewer::flipX() { - m_viewAff[0] = m_viewAff[0] * TScale(-1, 1); - m_viewAff[1] = m_viewAff[1] * TScale(-1, 1); + double flipAngle0 = (m_rotationAngle[0] * -1) * 2; + double flipAngle1 = (m_rotationAngle[1] * -1) * 2; + m_rotationAngle[0] += flipAngle0; + m_rotationAngle[1] += flipAngle1; + if (m_isFlippedX != m_isFlippedY) { + flipAngle0 = -flipAngle0; + flipAngle1 = -flipAngle1; + } + m_viewAff[0] = m_viewAff[0] * TRotation(flipAngle0) * TScale(-1, 1); + m_viewAff[1] = m_viewAff[1] * TRotation(flipAngle1) * TScale(-1, 1); + m_viewAff[0].a13 *= -1; + m_viewAff[1].a13 *= -1; m_isFlippedX = !m_isFlippedX; invalidateAll(); emit onZoomChanged(); @@ -2066,8 +2076,18 @@ void SceneViewer::flipX() { //----------------------------------------------------------------------------- void SceneViewer::flipY() { - m_viewAff[0] = m_viewAff[0] * TScale(1, -1); - m_viewAff[1] = m_viewAff[1] * TScale(1, -1); + double flipAngle0 = (m_rotationAngle[0] * -1) * 2; + double flipAngle1 = (m_rotationAngle[1] * -1) * 2; + m_rotationAngle[0] += flipAngle0; + m_rotationAngle[1] += flipAngle1; + if (m_isFlippedX != m_isFlippedY) { + flipAngle0 = -flipAngle0; + flipAngle1 = -flipAngle1; + } + m_viewAff[0] = m_viewAff[0] * TRotation(flipAngle0) * TScale(1, -1); + m_viewAff[1] = m_viewAff[1] * TRotation(flipAngle1) * TScale(1, -1); + m_viewAff[0].a23 *= -1; + m_viewAff[1].a23 *= -1; m_isFlippedY = !m_isFlippedY; invalidateAll(); emit onZoomChanged();