LCOV - code coverage report
Current view: top level - tools/source/generic - gen.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 92 0.0 %
Date: 2014-04-14 Functions: 0 11 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <tools/debug.hxx>
      21             : #include <tools/gen.hxx>
      22             : #include <tools/stream.hxx>
      23             : 
      24           0 : SvStream& ReadPair( SvStream& rIStream, Pair& rPair )
      25             : {
      26             :     DBG_ASSERTWARNING( rIStream.GetVersion(), "Pair::>> - Solar-Version not set on rIStream" );
      27             : 
      28             :     //39428 SvStream no longer supports operator>>(long&)
      29           0 :     sal_Int32 nTmpA(0), nTmpB(0);
      30           0 :     rIStream.ReadInt32( nTmpA ).ReadInt32( nTmpB );
      31           0 :     rPair.nA = nTmpA;
      32           0 :     rPair.nB = nTmpB;
      33             : 
      34           0 :     return rIStream;
      35             : }
      36             : 
      37           0 : SvStream& WritePair( SvStream& rOStream, const Pair& rPair )
      38             : {
      39             :     DBG_ASSERTWARNING( rOStream.GetVersion(), "Pair::<< - Solar-Version not set on rOStream" );
      40             : 
      41             :     //39428 SvStream no longer supports operator<<(long)
      42           0 :     rOStream.WriteInt32( sal::static_int_cast<sal_Int32>(rPair.nA) ).WriteInt32( sal::static_int_cast<sal_Int32>(rPair.nB) );
      43             : 
      44           0 :     return rOStream;
      45             : }
      46             : 
      47           0 : void Rectangle::SetSize( const Size& rSize )
      48             : {
      49           0 :     if ( rSize.Width() < 0 )
      50           0 :         nRight  = nLeft + rSize.Width() +1;
      51           0 :     else if ( rSize.Width() > 0 )
      52           0 :         nRight  = nLeft + rSize.Width() -1;
      53             :     else
      54           0 :         nRight = RECT_EMPTY;
      55             : 
      56           0 :     if ( rSize.Height() < 0 )
      57           0 :         nBottom  = nTop + rSize.Height() +1;
      58           0 :     else if ( rSize.Height() > 0 )
      59           0 :         nBottom  = nTop + rSize.Height() -1;
      60             :     else
      61           0 :         nBottom = RECT_EMPTY;
      62           0 : }
      63             : 
      64           0 : Rectangle& Rectangle::Union( const Rectangle& rRect )
      65             : {
      66           0 :     if ( rRect.IsEmpty() )
      67           0 :         return *this;
      68             : 
      69           0 :     if ( IsEmpty() )
      70           0 :         *this = rRect;
      71             :     else
      72             :     {
      73           0 :         nLeft  =  std::min( std::min( nLeft, rRect.nLeft ), std::min( nRight, rRect.nRight )   );
      74           0 :         nRight  = std::max( std::max( nLeft, rRect.nLeft ), std::max( nRight, rRect.nRight )   );
      75           0 :         nTop    = std::min( std::min( nTop, rRect.nTop ),   std::min( nBottom, rRect.nBottom ) );
      76           0 :         nBottom = std::max( std::max( nTop, rRect.nTop ),   std::max( nBottom, rRect.nBottom ) );
      77             :     }
      78             : 
      79           0 :     return *this;
      80             : }
      81             : 
      82           0 : Rectangle& Rectangle::Intersection( const Rectangle& rRect )
      83             : {
      84           0 :     if ( IsEmpty() )
      85           0 :         return *this;
      86           0 :     if ( rRect.IsEmpty() )
      87             :     {
      88           0 :         *this = Rectangle();
      89           0 :         return *this;
      90             :     }
      91             : 
      92             :     // Justify rectangle
      93           0 :     Rectangle aTmpRect( rRect );
      94           0 :     Justify();
      95           0 :     aTmpRect.Justify();
      96             : 
      97             :     // Perform intersection
      98           0 :     nLeft  = std::max( nLeft, aTmpRect.nLeft );
      99           0 :     nRight = std::min( nRight, aTmpRect.nRight );
     100           0 :     nTop   = std::max( nTop, aTmpRect.nTop );
     101           0 :     nBottom= std::min( nBottom, aTmpRect.nBottom );
     102             : 
     103             :     // Determine if intersection is empty
     104           0 :     if ( nRight < nLeft || nBottom < nTop )
     105           0 :         *this = Rectangle();
     106             : 
     107           0 :     return *this;
     108             : }
     109             : 
     110           0 : void Rectangle::Justify()
     111             : {
     112             :     long nHelp;
     113             : 
     114           0 :     if ( (nRight < nLeft) && (nRight != RECT_EMPTY) )
     115             :     {
     116           0 :         nHelp = nLeft;
     117           0 :         nLeft = nRight;
     118           0 :         nRight = nHelp;
     119             :     }
     120             : 
     121           0 :     if ( (nBottom < nTop) && (nBottom != RECT_EMPTY) )
     122             :     {
     123           0 :         nHelp = nBottom;
     124           0 :         nBottom = nTop;
     125           0 :         nTop = nHelp;
     126             :     }
     127           0 : }
     128             : 
     129           0 : bool Rectangle::IsInside( const Point& rPoint ) const
     130             : {
     131           0 :     if ( IsEmpty() )
     132           0 :         return false;
     133             : 
     134           0 :     bool bRet = true;
     135           0 :     if ( nLeft <= nRight )
     136             :     {
     137           0 :         if ( (rPoint.X() < nLeft) || (rPoint.X() > nRight) )
     138           0 :             bRet = false;
     139             :     }
     140             :     else
     141             :     {
     142           0 :         if ( (rPoint.X() > nLeft) || (rPoint.X() < nRight) )
     143           0 :             bRet = false;
     144             :     }
     145           0 :     if ( nTop <= nBottom )
     146             :     {
     147           0 :         if ( (rPoint.Y() < nTop) || (rPoint.Y() > nBottom) )
     148           0 :             bRet = false;
     149             :     }
     150             :     else
     151             :     {
     152           0 :         if ( (rPoint.Y() > nTop) || (rPoint.Y() < nBottom) )
     153           0 :             bRet = false;
     154             :     }
     155           0 :     return bRet;
     156             : }
     157             : 
     158           0 : bool Rectangle::IsInside( const Rectangle& rRect ) const
     159             : {
     160           0 :     if ( IsInside( rRect.TopLeft() ) && IsInside( rRect.BottomRight() ) )
     161           0 :         return true;
     162             :     else
     163           0 :         return false;
     164             : }
     165             : 
     166           0 : bool Rectangle::IsOver( const Rectangle& rRect ) const
     167             : {
     168             :     // If there's no intersection, they don't overlap
     169           0 :     return !GetIntersection( rRect ).IsEmpty();
     170             : }
     171             : 
     172           0 : SvStream& ReadRectangle( SvStream& rIStream, Rectangle& rRect )
     173             : {
     174             :     DBG_ASSERTWARNING( rIStream.GetVersion(), "Rectangle::>> - Solar-Version not set on rIStream" );
     175             : 
     176             :     //fdo#39428 SvStream no longer supports operator>>(long&)
     177           0 :     sal_Int32 nTmpL(0), nTmpT(0), nTmpR(0), nTmpB(0);
     178             : 
     179           0 :     rIStream.ReadInt32( nTmpL ).ReadInt32( nTmpT ).ReadInt32( nTmpR ).ReadInt32( nTmpB );
     180             : 
     181           0 :     rRect.nLeft = nTmpL;
     182           0 :     rRect.nTop = nTmpT;
     183           0 :     rRect.nRight = nTmpR;
     184           0 :     rRect.nBottom = nTmpB;
     185             : 
     186           0 :     return rIStream;
     187             : }
     188             : 
     189           0 : SvStream& WriteRectangle( SvStream& rOStream, const Rectangle& rRect )
     190             : {
     191             :     DBG_ASSERTWARNING( rOStream.GetVersion(), "Rectangle::<< - Solar-Version not set on rOStream" );
     192             : 
     193             :     //fdo#39428 SvStream no longer supports operator<<(long)
     194           0 :     rOStream.WriteInt32( sal::static_int_cast<sal_Int32>(rRect.nLeft) )
     195           0 :             .WriteInt32( sal::static_int_cast<sal_Int32>(rRect.nTop) )
     196           0 :             .WriteInt32( sal::static_int_cast<sal_Int32>(rRect.nRight) )
     197           0 :             .WriteInt32( sal::static_int_cast<sal_Int32>(rRect.nBottom) );
     198             : 
     199           0 :     return rOStream;
     200             : }
     201             : 
     202             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10