From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- include/svx/charmap.hxx | 163 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 include/svx/charmap.hxx (limited to 'include/svx/charmap.hxx') diff --git a/include/svx/charmap.hxx b/include/svx/charmap.hxx new file mode 100644 index 000000000..4b47a785b --- /dev/null +++ b/include/svx/charmap.hxx @@ -0,0 +1,163 @@ +/* -*- 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_CHARMAP_HXX +#define INCLUDED_SVX_CHARMAP_HXX + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace com::sun::star { + namespace accessibility { class XAccessible; } +} + +namespace com::sun::star::uno { class XComponentContext; } + +using namespace ::com::sun::star; + +#define COLUMN_COUNT 16 +#define ROW_COUNT 8 + +namespace svx +{ + struct SvxShowCharSetItem; + class SvxShowCharSetAcc; +} + +class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxShowCharSet : public weld::CustomWidgetController +{ +protected: + VclPtr mxVirDev; + vcl::Font maFont; + std::unique_ptr mxScrollArea; +public: + SvxShowCharSet(std::unique_ptr pScrollArea, const VclPtr& rVirDev); + virtual ~SvxShowCharSet() override; + + virtual void RecalculateFont(vcl::RenderContext& rRenderContext); + + void SelectCharacter( sal_UCS4 cNew ); + virtual sal_UCS4 GetSelectCharacter() const; + void createContextMenu(); + + void SetDoubleClickHdl( const Link& rLink ) { aDoubleClkHdl = rLink; } + void SetSelectHdl( const Link& rHdl ) { aSelectHdl = rHdl; } + void SetHighlightHdl( const Link& rHdl ) { aHighHdl = rHdl; } + void SetPreSelectHdl( const Link& rHdl ) { aPreSelectHdl = rHdl; } + void SetFavClickHdl( const Link& rHdl ) { aFavClickHdl = rHdl; } + static sal_uInt32& getSelectedChar(); + void SetFont( const vcl::Font& rFont ); + vcl::Font const & GetFont() const { return maFont; } + FontCharMapRef const & GetFontCharMap(); + bool isFavChar(const OUString& sTitle, const OUString& rFont); + void getFavCharacterList(); //gets both Fav char and Fav char font list + void updateFavCharacterList(const OUString& rChar, const OUString& rFont); + + virtual svx::SvxShowCharSetItem* ImplGetItem( int _nPos ); + int FirstInView() const; + virtual int LastInView() const; + int PixelToMapIndex( const Point&) const; + virtual void SelectIndex( int index, bool bFocus = false ); + void OutputIndex( int index ); + void DeSelect(); + static void CopyToClipboard(const OUString& str); + bool IsSelected(sal_uInt16 _nPos) const { return _nPos == nSelectedIndex; } + sal_uInt16 GetSelectIndexId() const { return sal::static_int_cast(nSelectedIndex); } + static sal_uInt16 GetRowPos(sal_uInt16 _nPos); + static sal_uInt16 GetColumnPos(sal_uInt16 _nPos); + + virtual sal_Int32 getMaxCharCount() const; + + virtual void Show() override { mxScrollArea->show(); } + virtual void Hide() override { mxScrollArea->hide(); } + + uno::Reference getAccessibleParent() const { return GetDrawingArea()->get_accessible_parent(); } + +private: + virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; + virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; + virtual void Resize() override; + virtual bool MouseButtonDown(const MouseEvent& rMEvt) override; + virtual bool MouseMove(const MouseEvent& rMEvt) override; + virtual bool MouseButtonUp(const MouseEvent& rMEvt) override; + virtual void GetFocus() override; + virtual void LoseFocus() override; + virtual bool KeyInput(const KeyEvent&) override; + + virtual css::uno::Reference CreateAccessible() override; + virtual FactoryFunction GetUITestFactory() const override; + +protected: + typedef std::map > ItemsMap; + ItemsMap m_aItems; + Link aDoubleClkHdl; + Link aSelectHdl; + Link aFavClickHdl; + Link aHighHdl; + Link aPreSelectHdl; + + std::deque maFavCharList; + std::deque maFavCharFontList; + + rtl::Reference m_xAccessible; + uno::Reference< uno::XComponentContext > mxContext; + long nX; + long nY; + long m_nXGap; + long m_nYGap; + bool bDrag; + + sal_Int32 nSelectedIndex; + + FontCharMapRef mxFontCharMap; + Size maFontSize; + Point maPosition; + + bool mbRecalculateFont : 1; + bool mbUpdateForeground : 1; + bool mbUpdateBackground : 1; + + +protected: + virtual void DrawChars_Impl(vcl::RenderContext& rRenderContext, int n1, int n2); + void InitSettings(vcl::RenderContext& rRenderContext); + // abstraction layers are: Unicode<->MapIndex<->Pixel + Point MapIndexToPixel( int) const; + DECL_LINK(VscrollHdl, weld::ScrolledWindow&, void); + void ContextMenuSelect(const OString& rIdent); + + void init(); + tools::Rectangle getGridRectangle(const Point &rPointUL, const Size &rOutputSize); +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3