b33468fa2b
During testing the NbcRotate function on SdrObject it turned out the the function is essentially a noop, because it uses normal equality to test the values of a double, which are a product of sin and cos functions (to determine the 90 degree angles). So because of this the input rectangle was never modified - noop. Because of this we can just remove the impl. of the function and declare it abstract, so that the actual implementations define a valid function to rotate. There were some subclasses that didn't override the NbcRotate so they used the one implementation in SdrObject. These subclasses now override the function and in the implementation we call assert(false), which is never called during a test run. It seems we never rotate those objects. Change-Id: I1b1a45a8e96ed2d061f9b9f80c5fdaa5a84d4c05 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148266 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
71 lines
2.7 KiB
C++
71 lines
2.7 KiB
C++
/* -*- 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 .
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <svx/svdobj.hxx>
|
|
#include <svx/sdrpageuser.hxx>
|
|
#include <svx/svxdllapi.h>
|
|
|
|
class SVXCORE_DLLPUBLIC SdrPageObj final : public SdrObject, public sdr::PageUser
|
|
{
|
|
public:
|
|
// this method is called from the destructor of the referenced page.
|
|
// do all necessary action to forget the page. It is not necessary to call
|
|
// RemovePageUser(), that is done from the destructor.
|
|
virtual void PageInDestruction(const SdrPage& rPage) override;
|
|
|
|
private:
|
|
// To make things more safe, remember the page, not a number
|
|
SdrPage* mpShownPage;
|
|
|
|
virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact() override;
|
|
virtual std::unique_ptr<sdr::properties::BaseProperties> CreateObjectSpecificProperties() override;
|
|
|
|
// protected destructor
|
|
virtual ~SdrPageObj() override;
|
|
|
|
public:
|
|
SdrPageObj(
|
|
SdrModel& rSdrModel,
|
|
SdrPage* pNewPage = nullptr);
|
|
// Copy constructor
|
|
SdrPageObj(SdrModel& rSdrModel, SdrPageObj const & rSource);
|
|
SdrPageObj(
|
|
SdrModel& rSdrModel,
|
|
const tools::Rectangle& rRect,
|
|
SdrPage* pNewPage = nullptr);
|
|
|
|
SdrPage* GetReferencedPage() const { return mpShownPage;}
|
|
void SetReferencedPage(SdrPage* pNewPage);
|
|
|
|
// #i96598#
|
|
virtual void SetBoundRectDirty() override;
|
|
|
|
virtual SdrObjKind GetObjIdentifier() const override;
|
|
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
|
|
virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const override;
|
|
|
|
virtual OUString TakeObjNameSingul() const override;
|
|
virtual OUString TakeObjNamePlural() const override;
|
|
|
|
void NbcRotate(const Point& rRef, Degree100 nAngle, double sinAngle, double cosAngle) override;
|
|
};
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|