42 lines
992 B
C++
42 lines
992 B
C++
/*
|
|
* Copyright 2019 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkSGTransformPriv_DEFINED
|
|
#define SkSGTransformPriv_DEFINED
|
|
|
|
#include "modules/sksg/include/SkSGTransform.h"
|
|
|
|
namespace sksg {
|
|
|
|
// Helper for accessing implementation-private Transform methods.
|
|
class TransformPriv final {
|
|
public:
|
|
|
|
static bool Is44(const sk_sp<Transform>&t) { return t->is44(); }
|
|
|
|
template <typename T, typename = std::enable_if<std::is_same<T, SkMatrix>::value ||
|
|
std::is_same<T, SkM44 >::value >>
|
|
static T As(const sk_sp<Transform>&);
|
|
|
|
private:
|
|
TransformPriv() = delete;
|
|
};
|
|
|
|
template <>
|
|
inline SkMatrix TransformPriv::As<SkMatrix>(const sk_sp<Transform>& t) {
|
|
return t->asMatrix();
|
|
}
|
|
|
|
template <>
|
|
inline SkM44 TransformPriv::As<SkM44>(const sk_sp<Transform>& t) {
|
|
return t->asM44();
|
|
}
|
|
|
|
} // namespace sksg
|
|
|
|
#endif // SkSGTransformPriv_DEFINED
|