/* -*- 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 .
*/
bool FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt)
{ // remember button state for creation of own MouseEvents
SetMouseButtonCode(rMEvt.GetButtons());
bool FuConstRectangle::MouseButtonUp(const MouseEvent& rMEvt)
{ // remember button state for creation of own MouseEvents
SetMouseButtonCode(rMEvt.GetButtons());
bool bReturn = false;
if ( pView->IsCreateObj() && rMEvt.IsLeft() )
{
pView->EndCreateObj(SdrCreateCmd::ForceEnd);
if (aSfxRequest.GetSlot() == SID_DRAW_CAPTION_VERTICAL)
{ // set vertical flag for caption object
const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); if (rMarkList.GetMark(0))
{
SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); // create OutlinerParaObject now so it can be set to vertical if ( auto pSdrTextObj = DynCastSdrTextObj( pObj) )
pSdrTextObj->ForceOutlinerParaObject();
OutlinerParaObject* pOPO = pObj->GetOutlinerParaObject(); if( pOPO && !pOPO->IsEffectivelyVertical() )
pOPO->SetVertical( true );
}
}
switch (aSfxRequest.GetSlot() )
{ case SID_DRAW_LINE: case SID_DRAW_XLINE: case SID_LINE_ARROW_END: case SID_LINE_ARROW_CIRCLE: case SID_LINE_ARROW_SQUARE: case SID_LINE_ARROW_START: case SID_LINE_CIRCLE_ARROW: case SID_LINE_SQUARE_ARROW: case SID_LINE_ARROWS:
aNewPointer = PointerStyle::DrawLine;
aObjKind = SdrObjKind::Line; break;
case SID_DRAW_MEASURELINE:
aNewPointer = PointerStyle::DrawLine;
aObjKind = SdrObjKind::Measure; break;
case SID_DRAW_RECT:
aNewPointer = PointerStyle::DrawRect;
aObjKind = SdrObjKind::Rectangle; break;
case SID_DRAW_ELLIPSE:
aNewPointer = PointerStyle::DrawEllipse;
aObjKind = SdrObjKind::CircleOrEllipse; break;
case SID_DRAW_CAPTION: case SID_DRAW_CAPTION_VERTICAL:
aNewPointer = PointerStyle::DrawCaption;
aObjKind = SdrObjKind::Caption; break;
if(pObj)
{
tools::Rectangle aRect(rRectangle);
Point aStart = aRect.TopLeft();
Point aEnd = aRect.BottomRight();
switch(nID)
{ case SID_DRAW_LINE: case SID_DRAW_XLINE: case SID_LINE_ARROW_END: case SID_LINE_ARROW_CIRCLE: case SID_LINE_ARROW_SQUARE: case SID_LINE_ARROW_START: case SID_LINE_CIRCLE_ARROW: case SID_LINE_SQUARE_ARROW: case SID_LINE_ARROWS:
{ if(auto pPathObj = dynamic_cast<SdrPathObj*>( pObj.get() ))
{
sal_Int32 nYMiddle((aRect.Top() + aRect.Bottom()) / 2);
basegfx::B2DPolygon aPoly;
aPoly.append(basegfx::B2DPoint(aStart.X(), nYMiddle));
aPoly.append(basegfx::B2DPoint(aEnd.X(), nYMiddle));
pPathObj->SetPathPoly(basegfx::B2DPolyPolygon(aPoly));
} else
{
OSL_FAIL("Object is NO line object");
}
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.