/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
// as the data are not mine, I also do not delete the old
m_pData->CopyFrom(*rConn.GetData()); // CopyFrom is virtual, therefore it is not a problem if m_pData is a derived type of OTableConnectionData
bool OTableConnection::CheckHit( const Point& rMousePos ) const
{ // check if the point hit our line return std::any_of(m_vConnLine.begin(),
m_vConnLine.end(),
[&rMousePos]
( const std::unique_ptr<OConnectionLine> & pLine )
{ return pLine->CheckHit( rMousePos ); } );
}
void OTableConnection::InvalidateConnection()
{
tools::Rectangle rcBounding = GetBoundingRect();
rcBounding.AdjustBottom(1 );
rcBounding.AdjustRight(1 ); // I believe Invalidate and Draw(Rectangle) do not behave consistent: in any case it // could explain, why without the fake here when deleting a connection a dash remains at the lower end: // Invalidate records obviously one pixel line less as Draw. // Or everything works differently... in any case it works...
m_pParent->Invalidate( rcBounding, InvalidateFlags::NoChildren );
}
tools::Rectangle OTableConnection::GetBoundingRect() const
{ // determine all lines of the surrounding rectangle
tools::Rectangle aBoundingRect( Point(0,0), Point(0,0) );
tools::Rectangle aTempRect; for (autoconst& elem : m_vConnLine)
{
aTempRect = elem->GetBoundingRect();
// is the BoundingRect of this line valid? if( (aTempRect.GetWidth()!=1) && (aTempRect.GetHeight()!=1) )
{ if( (aBoundingRect.GetWidth()==1) && (aBoundingRect.GetHeight()==1) )
aBoundingRect = aTempRect; else
aBoundingRect.Union( aTempRect );
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.