// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SKIA_EXT_SKIA_UTILS_BASE_H_ #define SKIA_EXT_SKIA_UTILS_BASE_H_ #include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkFlattenable.h" #include "third_party/skia/include/ports/SkFontConfigInterface.h" namespace base { class Pickle; class PickleIterator; } class SkBitmap; class SkFlattenable; class SkColorSpace; struct skcms_Matrix3x3; struct skcms_TransferFunction; namespace skia { // Return true if the pickle/iterator contains a string. If so, and if str // is not null, copy that string into str. SK_API bool ReadSkString(base::PickleIterator* iter, SkString* str); // Return true if the pickle/iterator contains a FontIdentity. If so, and if // identity is not null, copy it into identity. SK_API bool ReadSkFontIdentity(base::PickleIterator* iter, SkFontConfigInterface::FontIdentity* identity); // Return true if the pickle/iterator contains a SkFontStyle. If so, and if // style is not null, copy it into style. SK_API bool ReadSkFontStyle(base::PickleIterator* iter, SkFontStyle* style); // Writes str into the request pickle. SK_API void WriteSkString(base::Pickle* pickle, const SkString& str); // Writes identity into the request pickle. SK_API void WriteSkFontIdentity( base::Pickle* pickle, const SkFontConfigInterface::FontIdentity& identity); // Writes style into the request pickle. SK_API void WriteSkFontStyle(base::Pickle* pickle, SkFontStyle style); // Converts an SkBitmap to an Opaque or Premul N32 SkBitmap with stride matching // the width of each row. If the input is has the right format (N32 Opaque or // Premul) without stride padding already, this assigns `in` to `out`, sharing // the backing pixels. `out` may or may not be GPU-backed. // // If unsuccessful, returns false, but |out| may be modified. // // This should be called as early as possible at IPC endpoints from // less-privileged contexts (e.g. on a message from the renderer process) if the // code handling the SkBitmap wants to work with an N32 type, rather than // delaying this conversion until a later time. SK_API bool SkBitmapToN32OpaqueOrPremul(const SkBitmap& in, SkBitmap* out); // Returns hex string representation for the |color| in "#FFFFFF" format. SK_API std::string SkColorToHexString(SkColor color); // Return a string representation of an SkColorSpace. Accepts nullptr. SK_API std::string SkColorSpaceToString(const SkColorSpace* cs); // Return string representation of skcms matrix and transfer functions. SK_API std::string SkcmsMatrix3x3ToString(const skcms_Matrix3x3& m); SK_API std::string SkcmsTransferFunctionToString( const skcms_TransferFunction& f); } // namespace skia #endif // SKIA_EXT_SKIA_UTILS_BASE_H_