office-gobmx/writerperfect/source/writer/exp/XMLBase64ImportContext.cxx
Miklos Vajna ac4ea366ec writerperfect: astyle -> clang-format
< vmiklos> dtardon: are you strongly attached to astyle usage in
core.git writerperfect/? my problem is that 1) when less regular
contributors touch it, they don't run astyle  2) core.git has git hooks
in place to enforce consistent style for selected files, but that uses
clang-format. i wonder if switching to the standard core.git
clang-format would be an option to stop this reformat game

<@dtardon> vmiklos, clang-format is okay. we started to use astyle years
ago, before there were even any serious talk about automatic formatting
for the whole libreoffice

Change-Id: I844fc9c2e8560e54a49f26064cc0b3c55a5f034c
Reviewed-on: https://gerrit.libreoffice.org/53184
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
2018-04-20 11:16:34 +02:00

69 lines
1.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/.
*/
#include "XMLBase64ImportContext.hxx"
#include <comphelper/base64.hxx>
using namespace com::sun::star;
namespace writerperfect
{
namespace exp
{
XMLBase64ImportContext::XMLBase64ImportContext(XMLImport& rImport)
: XMLImportContext(rImport)
{
}
void XMLBase64ImportContext::startElement(
const OUString& /*rName*/,
const css::uno::Reference<css::xml::sax::XAttributeList>& /*xAttribs*/)
{
}
void XMLBase64ImportContext::endElement(const OUString& /*rName*/)
{
m_aBinaryData.append(static_cast<const unsigned char*>(m_aStream.GetBuffer()),
m_aStream.GetSize());
}
void XMLBase64ImportContext::characters(const OUString& rChars)
{
OUString aTrimmedChars(rChars.trim());
if (!aTrimmedChars.isEmpty())
{
OUString aChars;
if (!m_aBase64CharsLeft.isEmpty())
{
aChars = m_aBase64CharsLeft;
aChars += aTrimmedChars;
m_aBase64CharsLeft.clear();
}
else
aChars = aTrimmedChars;
uno::Sequence<sal_Int8> aBuffer((aChars.getLength() / 4) * 3);
const sal_Int32 nCharsDecoded = comphelper::Base64::decodeSomeChars(aBuffer, aChars);
m_aStream.WriteBytes(aBuffer.getArray(), aBuffer.getLength());
if (nCharsDecoded != aChars.getLength())
m_aBase64CharsLeft = aChars.copy(nCharsDecoded);
}
}
const librevenge::RVNGBinaryData& XMLBase64ImportContext::getBinaryData() const
{
return m_aBinaryData;
}
} // namespace exp
} // namespace writerperfect
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */