/*
* Copyright 2015 Google Inc .
*
* Use of this source code is governed by a BSD - style license that can be
* found in the LICENSE file .
*/
#ifndef SkPixmapUtilsPriv_DEFINED
#define SkPixmapUtilsPriv_DEFINED
#include "include/codec/SkEncodedOrigin.h"
#include "include/codec/SkPixmapUtils.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkPixmap.h"
#include "src/core/SkAutoPixmapStorage.h"
namespace SkPixmapUtils {
/**
* Decode an image and then copy into dst , applying origin .
*
* @ param dst SkPixmap to write the final image , after
* applying the origin .
* @ param origin SkEncodedOrigin to apply to the raw pixels .
* @ param decode Function for decoding into a pixmap without
* applying the origin .
*/
template <typename Fn>
bool Orient(const SkPixmap& dst, SkEncodedOrigin origin, Fn&& decode) {
SkAutoPixmapStorage storage;
const SkPixmap* tmp = &dst;
if (origin != kTopLeft_SkEncodedOrigin) {
auto info = dst.info();
if (SkEncodedOriginSwapsWidthHeight(origin)) {
info = SwapWidthHeight(info);
}
if (!storage.tryAlloc(info)) {
return false ;
}
tmp = &storage;
}
if (!decode(*tmp)) {
return false ;
}
if (tmp != &dst) {
return Orient(dst, *tmp, origin);
}
return true;
}
} // namespace SkPixmapUtils
#endif // SkPixmapUtilsPriv_DEFINED
Messung V0.5 in Prozent C=89 H=100 G=94
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland