1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2019 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef SkSGTransformPriv_DEFINED 9cb93a386Sopenharmony_ci#define SkSGTransformPriv_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "modules/sksg/include/SkSGTransform.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cinamespace sksg { 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci// Helper for accessing implementation-private Transform methods. 16cb93a386Sopenharmony_ciclass TransformPriv final { 17cb93a386Sopenharmony_cipublic: 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci static bool Is44(const sk_sp<Transform>&t) { return t->is44(); } 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ci template <typename T, typename = std::enable_if<std::is_same<T, SkMatrix>::value || 22cb93a386Sopenharmony_ci std::is_same<T, SkM44 >::value >> 23cb93a386Sopenharmony_ci static T As(const sk_sp<Transform>&); 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ciprivate: 26cb93a386Sopenharmony_ci TransformPriv() = delete; 27cb93a386Sopenharmony_ci}; 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_citemplate <> 30cb93a386Sopenharmony_ciinline SkMatrix TransformPriv::As<SkMatrix>(const sk_sp<Transform>& t) { 31cb93a386Sopenharmony_ci return t->asMatrix(); 32cb93a386Sopenharmony_ci} 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_citemplate <> 35cb93a386Sopenharmony_ciinline SkM44 TransformPriv::As<SkM44>(const sk_sp<Transform>& t) { 36cb93a386Sopenharmony_ci return t->asM44(); 37cb93a386Sopenharmony_ci} 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci} // namespace sksg 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci#endif // SkSGTransformPriv_DEFINED 42