summaryrefslogtreecommitdiff
path: root/starmath/inc/rect.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/inc/rect.hxx')
-rw-r--r--starmath/inc/rect.hxx255
1 files changed, 0 insertions, 255 deletions
diff --git a/starmath/inc/rect.hxx b/starmath/inc/rect.hxx
deleted file mode 100644
index 77de779234..0000000000
--- a/starmath/inc/rect.hxx
+++ /dev/null
@@ -1,255 +0,0 @@
-/* -*- 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.
- *
- ************************************************************************/
-
-#ifndef RECT_HXX
-#define RECT_HXX
-
-#include <new>
-
-#include <tools/gen.hxx>
-#include <vcl/outdev.hxx>
-#include <vcl/metric.hxx>
-
-#include "format.hxx"
-
-
-bool SmGetGlyphBoundRect(const OutputDevice &rDev,
- const XubString &rText, Rectangle &rRect);
-
-bool SmIsMathAlpha(const XubString &rText);
-
-
-inline long SmFromTo(long nFrom, long nTo, double fRelDist)
-{
- return nFrom + (long) (fRelDist * (nTo - nFrom));
-}
-
-
-////////////////////////////////////////
-// SmRect
-// ... (to be done)
-// This Implementation assumes that the x-axis points to the right and the
-// y-axis to the bottom.
-// Note: however, italic spaces can be negative!
-//
-
-// possible flags for the 'Draw' function below (just for debugging)
-#define SM_RECT_CORE 0x0001
-#define SM_RECT_ITALIC 0x0002
-#define SM_RECT_LINES 0x0004
-#define SM_RECT_MID 0x0008
-
-// possible positions and alignments for the 'AlignTo' function
-enum RectPos
- // (RP_LEFT : align the current object to the left of the argument, ...)
-{ RP_LEFT, RP_RIGHT,
- RP_TOP, RP_BOTTOM,
- RP_ATTRIBUT
-};
-enum RectHorAlign
-{ RHA_LEFT, RHA_CENTER, RHA_RIGHT
-};
-enum RectVerAlign
-{ RVA_TOP, RVA_MID, RVA_BOTTOM, RVA_BASELINE, RVA_CENTERY,
- RVA_ATTRIBUT_HI, RVA_ATTRIBUT_MID, RVA_ATTRIBUT_LO
-};
-
-// different methods of copying baselines and mid's in 'ExtendBy' function
-enum RectCopyMBL
-{ RCP_THIS, // keep baseline of current object even if it has none
- RCP_ARG, // as above but for the argument
- RCP_NONE, // result will have no baseline
- RCP_XOR // if current object has a baseline keep it else copy
- // the arguments baseline (even if it has none)
-};
-
-
-class SmRect
-{
- Point aTopLeft;
- Size aSize;
- long nBaseline,
- nAlignT,
- nAlignM,
- nAlignB,
- nGlyphTop,
- nGlyphBottom,
- nItalicLeftSpace,
- nItalicRightSpace,
- nLoAttrFence,
- nHiAttrFence;
- sal_uInt16 nBorderWidth;
- bool bHasBaseline,
- bHasAlignInfo;
-
-protected:
- void BuildRect (const OutputDevice &rDev, const SmFormat *pFormat,
- const XubString &rText, sal_uInt16 nBorderWidth);
- void Init(const OutputDevice &rDev, const SmFormat *pFormat,
- const XubString &rText, sal_uInt16 nBorderWidth);
-
- void ClearBaseline() { bHasBaseline = false; };
- inline void CopyMBL(const SmRect& rRect);
- void CopyAlignInfo(const SmRect& rRect);
-
- SmRect & Union(const SmRect &rRect);
-
-public:
- SmRect();
- SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
- const XubString &rText, long nBorderWidth);
- SmRect(long nWidth, long nHeight);
- SmRect(const SmRect &rRect);
-
-
- sal_uInt16 GetBorderWidth() const { return nBorderWidth; }
-
- void SetItalicSpaces(long nLeftSpace, long nRightSpace);
-
- void SetWidth(sal_uLong nWidth) { aSize.Width() = nWidth; }
- void SetHeight(sal_uLong nHeight) { aSize.Height() = nHeight; }
-
- void SetLeft(long nLeft);
- void SetRight(long nRight);
- void SetBottom(long nBottom);
- void SetTop(long nTop);
-
- const Point & GetTopLeft() const { return aTopLeft; }
-
- long GetTop() const { return GetTopLeft().Y(); }
- long GetLeft() const { return GetTopLeft().X(); }
- long GetBottom() const { return GetTop() + GetHeight() - 1; }
- long GetRight() const { return GetLeft() + GetWidth() - 1; }
- long GetCenterX() const { return (GetLeft() + GetRight()) / 2L; }
- long GetCenterY() const { return (GetTop() + GetBottom()) / 2L; }
- long GetWidth() const { return GetSize().Width(); }
- long GetHeight() const { return GetSize().Height(); }
-
- long GetItalicLeftSpace() const { return nItalicLeftSpace; }
- long GetItalicRightSpace() const { return nItalicRightSpace; }
-
- void SetHiAttrFence(long nVal) { nHiAttrFence = nVal; }
- void SetLoAttrFence(long nVal) { nLoAttrFence = nVal; }
- long GetHiAttrFence() const { return nHiAttrFence; }
- long GetLoAttrFence() const { return nLoAttrFence; }
-
- long GetItalicLeft() const { return GetLeft() - GetItalicLeftSpace(); }
- long GetItalicCenterX() const { return (GetItalicLeft() + GetItalicRight()) / 2; }
- long GetItalicRight() const { return GetRight() + GetItalicRightSpace(); }
- long GetItalicWidth() const { return GetWidth() + GetItalicLeftSpace() + GetItalicRightSpace(); }
-
- bool HasBaseline() const { return bHasBaseline; }
- inline long GetBaseline() const;
- long GetBaselineOffset() const { return GetBaseline() - GetTop(); }
-
- void SetAlignTop(long nVal) { nAlignT = nVal; }
-
- long GetAlignT() const { return nAlignT; }
- long GetAlignM() const { return nAlignM; }
- long GetAlignB() const { return nAlignB; }
-
- void SetAlignT(long nVal) { nAlignT = nVal; }
-
- const Point GetCenter() const
- { return Point(GetCenterX(), GetCenterY()); }
-
- const Size & GetSize() const { return aSize; }
-
- const Size GetItalicSize() const
- { return Size(GetItalicWidth(), GetHeight()); }
-
- void Move (const Point &rPosition);
- void MoveTo(const Point &rPosition) { Move(rPosition - GetTopLeft()); }
-
- bool IsEmpty() const
- {
- return GetWidth() == 0 || GetHeight() == 0;
- }
-
- bool HasAlignInfo() const { return bHasAlignInfo; }
-
- const Point AlignTo(const SmRect &rRect, RectPos ePos,
- RectHorAlign eHor, RectVerAlign eVer) const;
-
- SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode);
- SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
- long nNewAlignM);
- SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
- bool bKeepVerAlignParams);
-
- long OrientedDist(const Point &rPoint) const;
- bool IsInsideRect(const Point &rPoint) const;
- bool IsInsideItalicRect(const Point &rPoint) const;
-
- inline SmRect & operator = (const SmRect &rRect);
-
- inline Rectangle AsRectangle() const;
- SmRect AsGlyphRect() const;
-};
-
-
-inline void SmRect::SetItalicSpaces(long nLeftSpace, long nRightSpace)
- // set extra spacing to the left and right for (italic)
- // letters/text
-{
- nItalicLeftSpace = nLeftSpace;
- nItalicRightSpace = nRightSpace;
-}
-
-
-inline void SmRect::CopyMBL(const SmRect &rRect)
- // copy AlignM baseline and value of 'rRect'
-{
- nBaseline = rRect.nBaseline;
- bHasBaseline = rRect.bHasBaseline;
- nAlignM = rRect.nAlignM;
-}
-
-
-inline long SmRect::GetBaseline() const
-{
- OSL_ENSURE(HasBaseline(), "Sm: Baseline nicht vorhanden");
- return nBaseline;
-}
-
-
-inline SmRect & SmRect::operator = (const SmRect &rRect)
-{
- new (this) SmRect(rRect); // placement new
- return *this;
-}
-
-
-inline Rectangle SmRect::AsRectangle() const
-{
- return Rectangle(Point(GetItalicLeft(), GetTop()), GetItalicSize());
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */