bump product version to 6.4.0.3
[LibreOffice.git] / vcl / source / gdi / impglyphitem.cxx
blob64096020f172e5ab73e82b440cc7b9e4fd8d7036
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <impglyphitem.hxx>
22 #if (defined UNX && !defined MACOSX && !defined IOS)
23 #include <unx/freetype_glyphcache.hxx>
24 #endif
26 SalLayoutGlyphs::SalLayoutGlyphs()
27 : m_pImpl(nullptr)
31 SalLayoutGlyphs::~SalLayoutGlyphs() { delete m_pImpl; }
33 SalLayoutGlyphs::SalLayoutGlyphs(const SalLayoutGlyphs& rOther)
35 m_pImpl = rOther.m_pImpl ? rOther.m_pImpl->clone(*this) : nullptr;
38 SalLayoutGlyphs& SalLayoutGlyphs::operator=(const SalLayoutGlyphs& rOther)
40 if (this != &rOther)
42 delete m_pImpl;
43 m_pImpl = rOther.m_pImpl ? rOther.m_pImpl->clone(*this) : nullptr;
45 return *this;
48 bool SalLayoutGlyphs::IsValid() const { return m_pImpl && m_pImpl->IsValid(); }
50 void SalLayoutGlyphs::Invalidate()
52 if (m_pImpl)
53 m_pImpl->Invalidate();
56 SalLayoutGlyphsImpl::~SalLayoutGlyphsImpl() {}
58 SalLayoutGlyphsImpl* SalLayoutGlyphsImpl::clone(SalLayoutGlyphs& rGlyphs) const
60 SalLayoutGlyphsImpl* pNew = new SalLayoutGlyphsImpl(rGlyphs, *m_rFontInstance);
61 *pNew = *this;
62 return pNew;
65 bool SalLayoutGlyphsImpl::IsValid() const
67 if (!m_rFontInstance.is())
68 return false;
69 if (empty())
70 return false;
71 #if (defined UNX && !defined MACOSX && !defined IOS)
72 const FreetypeFontInstance* pFFI = dynamic_cast<FreetypeFontInstance*>(m_rFontInstance.get());
73 if (pFFI && !pFFI->GetFreetypeFont())
75 m_rFontInstance.clear();
76 return false;
78 #endif
79 return true;
82 void SalLayoutGlyphsImpl::Invalidate()
84 m_rFontInstance.clear();
85 clear();
88 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */