office-gobmx/include/svx/bmpmask.hxx
Noel Grandin e307716807 loplugin:finalclasses
improve the plugin to detect more cases.

I only apply the new final changes to classes in /include here.

Which reveals that
    RoadmapWizard::getPageController( TabPage* _pCurrentPage )
will always return nullptr

Also needed to sprinkle some
   SAL_DLLPUBLIC_TEMPLATE
around to workaround Visual Studio linking problems.

Change-Id: Iadb7d46a9e0e73dabce562375ca013c0fea6690c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117365
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-06-19 14:08:50 +02:00

176 lines
5.9 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 .
*/
#ifndef INCLUDED_SVX_BMPMASK_HXX
#define INCLUDED_SVX_BMPMASK_HXX
#include <sal/types.h>
#include <sfx2/childwin.hxx>
#include <sfx2/ctrlitem.hxx>
#include <sfx2/dockwin.hxx>
#include <svl/poolitem.hxx>
#include <svx/svxdllapi.h>
#include <tools/color.hxx>
#include <vcl/animate/Animation.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/gdimtf.hxx>
#include <vcl/graph.hxx>
#include <memory>
namespace vcl { class Window; }
namespace weld { class CustomWeld; }
class SfxBindings;
class SfxModule;
/*************************************************************************
|*
|* class SvxBmpMaskSelectItem
|*
\************************************************************************/
class SvxBmpMask;
class SvxBmpMaskSelectItem final : public SfxControllerItem
{
SvxBmpMask &rBmpMask;
virtual void StateChangedAtToolBoxControl( sal_uInt16 nSID, SfxItemState eState,
const SfxPoolItem* pState ) override;
public:
SvxBmpMaskSelectItem( SvxBmpMask& rMask,
SfxBindings& rBindings );
};
/*************************************************************************
|*
|* Derivative from SfxChildWindow as 'container' for Float
|*
\************************************************************************/
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxBmpMaskChildWindow final : public SfxChildWindow
{
public:
SvxBmpMaskChildWindow( vcl::Window*,
sal_uInt16, SfxBindings*,
SfxChildWinInfo* );
SFX_DECL_CHILDWINDOW_WITHID(SvxBmpMaskChildWindow);
};
/*************************************************************************
|*
|* class SvxBmpMask
|*
\************************************************************************/
class MaskData;
class MaskSet;
class BmpColorWindow;
class ColorListBox;
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxBmpMask final : public SfxDockingWindow
{
friend class MaskData;
friend class MaskSet;
std::unique_ptr<weld::Toolbar> m_xTbxPipette;
std::unique_ptr<BmpColorWindow> m_xCtlPipette;
std::unique_ptr<weld::CustomWeld> m_xCtlPipetteWin;
std::unique_ptr<weld::Button> m_xBtnExec;
std::unique_ptr<weld::CheckButton> m_xCbx1;
std::unique_ptr<MaskSet> m_xQSet1;
std::unique_ptr<weld::CustomWeld> m_xQSetWin1;
std::unique_ptr<weld::MetricSpinButton> m_xSp1;
std::unique_ptr<ColorListBox> m_xLbColor1;
std::unique_ptr<weld::CheckButton> m_xCbx2;
std::unique_ptr<MaskSet> m_xQSet2;
std::unique_ptr<weld::CustomWeld> m_xQSetWin2;
std::unique_ptr<weld::MetricSpinButton> m_xSp2;
std::unique_ptr<ColorListBox> m_xLbColor2;
std::unique_ptr<weld::CheckButton> m_xCbx3;
std::unique_ptr<MaskSet> m_xQSet3;
std::unique_ptr<weld::CustomWeld> m_xQSetWin3;
std::unique_ptr<weld::MetricSpinButton> m_xSp3;
std::unique_ptr<ColorListBox> m_xLbColor3;
std::unique_ptr<weld::CheckButton> m_xCbx4;
std::unique_ptr<MaskSet> m_xQSet4;
std::unique_ptr<weld::CustomWeld> m_xQSetWin4;
std::unique_ptr<weld::MetricSpinButton> m_xSp4;
std::unique_ptr<ColorListBox> m_xLbColor4;
std::unique_ptr<weld::CheckButton> m_xCbxTrans;
std::unique_ptr<ColorListBox> m_xLbColorTrans;
std::unique_ptr<MaskData> m_xData;
Color aPipetteColor;
SvxBmpMaskSelectItem aSelItem;
virtual bool Close() override;
sal_uInt16 InitColorArrays( Color* pSrcCols, Color* pDstCols,
sal_uInt8* pTols );
void ImpMask( BitmapEx& rBitmap );
GDIMetaFile ImpMask( const GDIMetaFile& rMtf );
Animation ImpMask( const Animation& rAnimation );
BitmapEx ImpMaskTransparent( const BitmapEx& rBitmapEx,
const Color& rColor,
const sal_uInt8 nTol );
GDIMetaFile GetMetaFile(const Graphic& rGraphic);
static Animation ImpReplaceTransparency( const Animation& rAnim,
const Color& rColor );
static GDIMetaFile ImpReplaceTransparency( const GDIMetaFile& rMtf,
const Color& rColor );
public:
SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window* pParent);
virtual ~SvxBmpMask() override;
virtual void dispose() override;
void SetColor( const Color& rColor );
void PipetteClicked();
void SetExecState( bool bEnable );
Graphic Mask( const Graphic& rGraphic );
bool IsEyedropping() const;
void onSelect( const MaskSet* pSet );
private:
/** Set names for accessible objects. This is necessary for objects
like the source color checkboxes which initially have no name and
for which the description would be read by AT.
*/
SVX_DLLPRIVATE void SetAccessibleNames();
};
#endif // INCLUDED_SVX_BMPMASK_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */