summaryrefslogtreecommitdiff
path: root/binfilter/bf_sch/source/core/sch_schgroup.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'binfilter/bf_sch/source/core/sch_schgroup.cxx')
-rw-r--r--binfilter/bf_sch/source/core/sch_schgroup.cxx235
1 files changed, 235 insertions, 0 deletions
diff --git a/binfilter/bf_sch/source/core/sch_schgroup.cxx b/binfilter/bf_sch/source/core/sch_schgroup.cxx
new file mode 100644
index 000000000000..a5657f0999de
--- /dev/null
+++ b/binfilter/bf_sch/source/core/sch_schgroup.cxx
@@ -0,0 +1,235 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifdef _MSC_VER
+#pragma hdrstop
+#endif
+
+
+#include "glob.hxx"
+#include "schgroup.hxx"
+#include <math.h>
+namespace binfilter {
+
+/*N*/ TYPEINIT1(SchObjGroup, SdrObjGroup);
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+/*N*/ SchObjGroup::SchObjGroup(ChartModel *pChmodel) :
+/*N*/ SdrObjGroup(),
+/*N*/ bAskForLogicRect(TRUE),
+/*N*/ mbUseChartInventor( true )
+/*N*/ {
+/*N*/ // FG: Damit soll es Objekten im chart ermoeglicht werden sich wie ein
+/*N*/ // Objekt im Draw zu verhalten falls gewünscht. Nicht alles was
+/*N*/ // prinzipiell geht soll man auch koennen.
+/*N*/ aInfo.bResizeFreeAllowed = TRUE;
+/*N*/ aInfo.bResizePropAllowed = TRUE;
+/*N*/ aInfo.bRotateFreeAllowed = TRUE;
+/*N*/ aInfo.bRotate90Allowed = TRUE;
+/*N*/ aInfo.bMirrorFreeAllowed = FALSE;
+/*N*/ aInfo.bMirror45Allowed = FALSE;
+/*N*/ aInfo.bMirror90Allowed = FALSE;
+/*N*/ aInfo.bShearAllowed = TRUE;
+/*N*/
+/*N*/ eChartGroupType = NOTHING;
+/*N*/ pChartmodel = pChmodel;
+/*N*/ SetModel( pChartmodel );
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+/*N*/ SchObjGroup::~SchObjGroup()
+/*N*/ {
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Identifier zurueckgeben
+|*
+\************************************************************************/
+
+/*N*/ UINT32 SchObjGroup::GetObjInventor() const
+/*N*/ {
+/*N*/ if( mbUseChartInventor )
+/*N*/ return SchInventor;
+/*N*/ else
+/*?*/ return SdrInventor;
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Identifier zurueckgeben
+|*
+\************************************************************************/
+
+/*N*/ UINT16 SchObjGroup::GetObjIdentifier() const
+/*N*/ {
+/*N*/ return SCH_OBJGROUP_ID;
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Handle-Anzahl bestimmen
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Handle erzeugen
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Handle-Liste fuellen
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Identifier zurueckgeben
+|*
+\************************************************************************/
+
+
+
+/*************************************************************************
+|*
+|* Faehigkeiten der Chart-Gruppe feststellen
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Faehigkeiten der Chart-Gruppe zuweisen
+|*
+\************************************************************************/
+
+/*N*/ void SchObjGroup::SetObjInfo(SdrObjTransformInfoRec aMyInfo)
+/*N*/ {
+/*N*/ // FG: Damit soll es Objekten im chart ermoeglicht werden sich wie ein
+/*N*/ // Objekt im Draw zu verhalten falls gewünscht.
+/*N*/ aInfo.bResizeFreeAllowed = aMyInfo.bResizeFreeAllowed;
+/*N*/ aInfo.bResizePropAllowed = aMyInfo.bResizePropAllowed;
+/*N*/ aInfo.bRotateFreeAllowed = aMyInfo.bRotateFreeAllowed;
+/*N*/ aInfo.bRotate90Allowed = aMyInfo.bRotate90Allowed;
+/*N*/ aInfo.bMirrorFreeAllowed = aMyInfo.bMirrorFreeAllowed;
+/*N*/ aInfo.bMirror45Allowed = aMyInfo.bMirror45Allowed;
+/*N*/ aInfo.bMirror90Allowed = aMyInfo.bMirror90Allowed;
+/*N*/ aInfo.bShearAllowed = aMyInfo.bShearAllowed;
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Wirkliches Resize einer Chart-Gruppe (ohne Broadcast)
+|* Bei manchen Chart-Gruppen ist eine Neuberechnung bei einem Resize
+|* besser als ein hartes Resize.
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Um das Verhalten bei einem Resize in Abhaehngigkeit des selektierten
+|* Objektes zu ernoeglichen. Bei Diagramme werden nicht die Teilobjekte
+|* Resized sondern das Chart in den neuen Grenzen aufgebaut.
+|*
+\************************************************************************/
+
+
+/*************************************************************************
+|*
+|* Um mitzubekommen welche Objekte bewegt werden. Leider wird das
+|* nicht nur vom Benutzer verursacht.
+|*
+\************************************************************************/
+
+/*N*/ void SchObjGroup::Move(const Size& rSiz)
+/*N*/ {
+/*N*/
+/*N*/ if (eChartGroupType == DIAGRAM)
+/*N*/ {
+/*?*/ DBG_ASSERT( pChartmodel, "No Model" );
+/*?*/ if (pChartmodel != NULL)
+/*?*/ {
+/*?*/ Rectangle aRectChart = pChartmodel->GetChartRect();
+/*?*/ Rectangle aRect = GetBoundRect();
+/*?*/ Point aPointBottomLeftRectChart = aRectChart.BottomLeft();
+/*?*/ Point aPointBottomLeftBoundRect = aRect.BottomLeft();
+/*?*/ Point aPointTopRightRectChart = aRectChart.TopRight();
+/*?*/ Point aPointTopRightBoundRect = aRect.TopRight();
+/*?*/ Point aDifferenceLeftBottom = aPointBottomLeftRectChart - aPointBottomLeftBoundRect;
+/*?*/ Point aDifferenceTopRight = aPointTopRightRectChart - aPointTopRightBoundRect;
+/*?*/ aRect.Left() += rSiz.Width();
+/*?*/ aRect.Right() += rSiz.Width();
+/*?*/ aRect.Top() += rSiz.Height();
+/*?*/ aRect.Bottom() += rSiz.Height();
+/*?*/ bAskForLogicRect = FALSE;
+/*?*/ aRect.Left() += aDifferenceLeftBottom.X();
+/*?*/ aRect.Bottom() += aDifferenceLeftBottom.Y();
+/*?*/ aRect.Right() += aDifferenceTopRight.X();
+/*?*/ aRect.Top() += aDifferenceTopRight.Y();
+/*?*/ pChartmodel->SetDiagramRectangle(aRect);
+/*?*/ }
+/*N*/ }
+/*N*/ else
+/*N*/ {
+/*N*/ SdrObjGroup::Move(rSiz);
+/*N*/ }
+/*N*/ }
+
+/*************************************************************************
+|*
+|* Um mitzubekommen welche Objekte bewegt werden. Leider wird das
+|* nicht nur vom Benutzer verursacht.
+|*
+\************************************************************************/
+
+
+/*N*/ void SchObjGroup::SetUseChartInventor( bool bUseChartInventor )
+/*N*/ {
+/*N*/ mbUseChartInventor = bUseChartInventor;
+/*N*/ }
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */