blob: dc0cbd79a4ea3ff966b4fd508bef8970af46825a [file] [log] [blame]
// Copyright 2014 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include "core/fxcodec/fx_codec.h"
#include <utility>
#include "core/fxcrt/numerics/safe_conversions.h"
#include "core/fxcrt/span_util.h"
#include "core/fxge/dib/fx_dib.h"
namespace fxcodec {
#ifdef PDF_ENABLE_XFA
CFX_DIBAttribute::CFX_DIBAttribute() = default;
CFX_DIBAttribute::~CFX_DIBAttribute() = default;
#endif // PDF_ENABLE_XFA
void ReverseRGB(pdfium::span<uint8_t> pDestBuf,
pdfium::span<const uint8_t> pSrcBuf,
int pixels) {
const size_t count = pdfium::checked_cast<size_t>(pixels);
auto dst_span =
fxcrt::reinterpret_span<FX_RGB_STRUCT<uint8_t>>(pDestBuf).first(count);
const auto src_span =
fxcrt::reinterpret_span<const FX_RGB_STRUCT<uint8_t>>(pSrcBuf).first(
count);
if (dst_span.data() == src_span.data()) {
for (auto& pix : dst_span) {
std::swap(pix.red, pix.blue);
}
return;
}
for (const auto& src_pix : src_span) {
auto& dst_pix = dst_span.front();
dst_pix.red = src_pix.blue;
dst_pix.green = src_pix.green;
dst_pix.blue = src_pix.red;
dst_span = dst_span.subspan(1);
}
}
} // namespace fxcodec