/* -*- 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 . */ #include #include #include namespace drawinglayer::attribute { class ImpFontAttribute { public: /// core data OUString maFamilyName; // Font Family Name OUString maStyleName; // Font Style Name sal_uInt16 mnWeight; // Font weight bool mbSymbol : 1; // Symbol Font Flag bool mbVertical : 1; // Vertical Text Flag bool mbItalic : 1; // Italic Flag bool mbOutline : 1; // Outline Flag bool mbRTL : 1; // RTL Flag bool mbBiDiStrong : 1; // BiDi Flag bool mbMonospaced : 1; ImpFontAttribute(OUString aFamilyName, OUString aStyleName, sal_uInt16 nWeight, bool bSymbol, bool bVertical, bool bItalic, bool bMonospaced, bool bOutline, bool bRTL, bool bBiDiStrong) : maFamilyName(std::move(aFamilyName)) , maStyleName(std::move(aStyleName)) , mnWeight(nWeight) , mbSymbol(bSymbol) , mbVertical(bVertical) , mbItalic(bItalic) , mbOutline(bOutline) , mbRTL(bRTL) , mbBiDiStrong(bBiDiStrong) , mbMonospaced(bMonospaced) { } ImpFontAttribute() : mnWeight(0) , mbSymbol(false) , mbVertical(false) , mbItalic(false) , mbOutline(false) , mbRTL(false) , mbBiDiStrong(false) , mbMonospaced(false) { } // data read access const OUString& getFamilyName() const { return maFamilyName; } const OUString& getStyleName() const { return maStyleName; } sal_uInt16 getWeight() const { return mnWeight; } bool getSymbol() const { return mbSymbol; } bool getVertical() const { return mbVertical; } bool getItalic() const { return mbItalic; } bool getOutline() const { return mbOutline; } bool getRTL() const { return mbRTL; } bool getBiDiStrong() const { return mbBiDiStrong; } bool getMonospaced() const { return mbMonospaced; } bool operator==(const ImpFontAttribute& rCompare) const { return (getFamilyName() == rCompare.getFamilyName() && getStyleName() == rCompare.getStyleName() && getWeight() == rCompare.getWeight() && getSymbol() == rCompare.getSymbol() && getVertical() == rCompare.getVertical() && getItalic() == rCompare.getItalic() && getOutline() == rCompare.getOutline() && getRTL() == rCompare.getRTL() && getBiDiStrong() == rCompare.getBiDiStrong() && getMonospaced() == rCompare.getMonospaced()); } }; namespace { FontAttribute::ImplType& theGlobalDefault() { static FontAttribute::ImplType SINGLETON; return SINGLETON; } } FontAttribute::FontAttribute(const OUString& rFamilyName, const OUString& rStyleName, sal_uInt16 nWeight, bool bSymbol, bool bVertical, bool bItalic, bool bMonospaced, bool bOutline, bool bRTL, bool bBiDiStrong) : mpFontAttribute(ImpFontAttribute(rFamilyName, rStyleName, nWeight, bSymbol, bVertical, bItalic, bMonospaced, bOutline, bRTL, bBiDiStrong)) { } FontAttribute::FontAttribute() : mpFontAttribute(theGlobalDefault()) { } FontAttribute::FontAttribute(const FontAttribute&) = default; FontAttribute::FontAttribute(FontAttribute&&) = default; FontAttribute::~FontAttribute() = default; FontAttribute& FontAttribute::operator=(const FontAttribute&) = default; FontAttribute& FontAttribute::operator=(FontAttribute&&) = default; bool FontAttribute::operator==(const FontAttribute& rCandidate) const { return rCandidate.mpFontAttribute == mpFontAttribute; } const OUString& FontAttribute::getFamilyName() const { return mpFontAttribute->getFamilyName(); } const OUString& FontAttribute::getStyleName() const { return mpFontAttribute->getStyleName(); } sal_uInt16 FontAttribute::getWeight() const { return mpFontAttribute->getWeight(); } bool FontAttribute::getSymbol() const { return mpFontAttribute->getSymbol(); } bool FontAttribute::getVertical() const { return mpFontAttribute->getVertical(); } bool FontAttribute::getItalic() const { return mpFontAttribute->getItalic(); } bool FontAttribute::getOutline() const { return mpFontAttribute->getOutline(); } bool FontAttribute::getRTL() const { return mpFontAttribute->getRTL(); } bool FontAttribute::getBiDiStrong() const { return mpFontAttribute->getBiDiStrong(); } bool FontAttribute::getMonospaced() const { return mpFontAttribute->getMonospaced(); } } // end of namespace /* vim:set shiftwidth=4 softtabstop=4 expandtab: */