mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-14 16:09:06 +07:00
Merge branch 'master' into feature/opengl4
This commit is contained in:
5
.gitattributes
vendored
5
.gitattributes
vendored
@@ -1,6 +1,8 @@
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.tga filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.obj filter=lfs diff=lfs merge=lfs -text
|
||||
*.e2d_mesh filter=lfs diff=lfs merge=lfs -text
|
||||
*.e2d_shape filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -12,3 +14,6 @@
|
||||
*.pvr filter=lfs diff=lfs merge=lfs -text
|
||||
*.dds filter=lfs diff=lfs merge=lfs -text
|
||||
*.ogg filter=lfs diff=lfs merge=lfs -text
|
||||
*.skel filter=lfs diff=lfs merge=lfs -text
|
||||
*.atlas filter=lfs diff=lfs merge=lfs -text
|
||||
*.json-large filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
.vs/*
|
||||
.vscode/*
|
||||
build/*
|
||||
.DS_Store
|
||||
CMakeSettings.json
|
||||
CMakeLists.txt.user
|
||||
CMakeLists.txt.user
|
||||
|
||||
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -34,9 +34,9 @@
|
||||
[submodule "modules/flat.hpp"]
|
||||
path = modules/flat.hpp
|
||||
url = https://github.com/BlackMATov/flat.hpp
|
||||
[submodule "modules/variant"]
|
||||
path = modules/variant
|
||||
url = https://github.com/mpark/variant
|
||||
[submodule "modules/curly.hpp"]
|
||||
path = modules/curly.hpp
|
||||
url = https://github.com/BlackMATov/curly.hpp
|
||||
[submodule "modules/spine"]
|
||||
path = modules/spine
|
||||
url = https://github.com/EsotericSoftware/spine-runtimes.git
|
||||
|
||||
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
|
||||
|
||||
if(NOT DEFINED PROJECT_NAME)
|
||||
set(E2D_BUILD_AS_STANDALONE ON)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14"
|
||||
CACHE STRING "Minimum OS X version to target for deployment" FORCE)
|
||||
endif()
|
||||
|
||||
project(enduro2d)
|
||||
@@ -70,10 +72,24 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
-Werror=parentheses
|
||||
-Werror=address
|
||||
-Werror=return-stack-address)
|
||||
string(REPLACE ";" " " E2D_SHARED_CXX_FLAGS "${E2D_SHARED_CXX_FLAGS}")
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
set(E2D_SHARED_CXX_FLAGS
|
||||
/we4297 # function assumed not to throw an exception but does
|
||||
/we4715 # not all control paths return a value
|
||||
/we4716 # must return a value
|
||||
/we4172 # returning address of local variable or temporary
|
||||
/we4717 # recursive on all control paths, function will cause runtime stack overflow
|
||||
/we4239 # conversion from 'type' to 'type &'
|
||||
/we4238 # class rvalue used as lvalue
|
||||
/we4700 # uninitialized local variable used
|
||||
/we4706 # assignment within conditional expression
|
||||
/we4554 # check operator precedence for possible error; use parentheses to clarify precedence
|
||||
/w14100 # unreferenced formal parameter
|
||||
/w14189 # local variable is initialized but not referenced
|
||||
/we4456) # declaration of 'var' hides previous local declaration
|
||||
endif()
|
||||
string(REPLACE ";" " " E2D_SHARED_CXX_FLAGS "${E2D_SHARED_CXX_FLAGS}")
|
||||
|
||||
foreach(config ${E2D_ALL_CXX_CONFIGS})
|
||||
set(${config} "${${config}} ${E2D_SHARED_CXX_FLAGS}")
|
||||
@@ -171,6 +187,9 @@ set(glew-cmake_BUILD_MULTI_CONTEXT OFF CACHE INTERNAL "" FORCE)
|
||||
add_subdirectory(modules/glew)
|
||||
set_target_properties(libglew_static PROPERTIES FOLDER modules)
|
||||
|
||||
add_subdirectory(modules/spine/spine-c)
|
||||
set_target_properties(spine-c PROPERTIES FOLDER modules)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
add_library(bass SHARED IMPORTED)
|
||||
@@ -262,6 +281,7 @@ target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE bass
|
||||
PRIVATE glfw
|
||||
PRIVATE libglew_static
|
||||
PRIVATE spine-c
|
||||
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:winmm.lib>)
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
|
||||
96
headers/3rdparty/variant/config.hpp
vendored
96
headers/3rdparty/variant/config.hpp
vendored
@@ -1,96 +0,0 @@
|
||||
// MPark.Variant
|
||||
//
|
||||
// Copyright Michael Park, 2015-2017
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef MPARK_CONFIG_HPP
|
||||
#define MPARK_CONFIG_HPP
|
||||
|
||||
// MSVC 2015 Update 3.
|
||||
#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_FULL_VER < 190024210)
|
||||
#error "MPark.Variant requires C++11 support."
|
||||
#endif
|
||||
|
||||
#ifndef __has_attribute
|
||||
#define __has_attribute(x) 0
|
||||
#endif
|
||||
|
||||
#ifndef __has_builtin
|
||||
#define __has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
#ifndef __has_include
|
||||
#define __has_include(x) 0
|
||||
#endif
|
||||
|
||||
#ifndef __has_feature
|
||||
#define __has_feature(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_attribute(always_inline) || defined(__GNUC__)
|
||||
#define MPARK_ALWAYS_INLINE __attribute__((__always_inline__)) inline
|
||||
#elif defined(_MSC_VER)
|
||||
#define MPARK_ALWAYS_INLINE __forceinline
|
||||
#else
|
||||
#define MPARK_ALWAYS_INLINE inline
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__builtin_addressof) || \
|
||||
(defined(__GNUC__) && __GNUC__ >= 7) || defined(_MSC_VER)
|
||||
#define MPARK_BUILTIN_ADDRESSOF
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__builtin_unreachable) || defined(__GNUC__)
|
||||
#define MPARK_BUILTIN_UNREACHABLE __builtin_unreachable()
|
||||
#elif defined(_MSC_VER)
|
||||
#define MPARK_BUILTIN_UNREACHABLE __assume(false)
|
||||
#else
|
||||
#define MPARK_BUILTIN_UNREACHABLE
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__type_pack_element)
|
||||
#define MPARK_TYPE_PACK_ELEMENT
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_constexpr) && __cpp_constexpr >= 200704 && \
|
||||
!(defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 9)
|
||||
#define MPARK_CPP11_CONSTEXPR
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_constexpr) && __cpp_constexpr >= 201304
|
||||
#define MPARK_CPP14_CONSTEXPR
|
||||
#endif
|
||||
|
||||
#if __has_feature(cxx_exceptions) || defined(__cpp_exceptions) || \
|
||||
(defined(_MSC_VER) && defined(_CPPUNWIND))
|
||||
#define MPARK_EXCEPTIONS
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_generic_lambdas) || defined(_MSC_VER)
|
||||
#define MPARK_GENERIC_LAMBDAS
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_lib_integer_sequence)
|
||||
#define MPARK_INTEGER_SEQUENCE
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_return_type_deduction) || defined(_MSC_VER)
|
||||
#define MPARK_RETURN_TYPE_DEDUCTION
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_lib_transparent_operators) || defined(_MSC_VER)
|
||||
#define MPARK_TRANSPARENT_OPERATORS
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_variable_templates) || defined(_MSC_VER)
|
||||
#define MPARK_VARIABLE_TEMPLATES
|
||||
#endif
|
||||
|
||||
#if !defined(__GLIBCXX__) || __has_include(<codecvt>) // >= libstdc++-5
|
||||
#define MPARK_TRIVIALITY_TYPE_TRAITS
|
||||
#define MPARK_INCOMPLETE_TYPE_TRAITS
|
||||
#endif
|
||||
|
||||
#endif // MPARK_CONFIG_HPP
|
||||
35
headers/3rdparty/variant/in_place.hpp
vendored
35
headers/3rdparty/variant/in_place.hpp
vendored
@@ -1,35 +0,0 @@
|
||||
// MPark.Variant
|
||||
//
|
||||
// Copyright Michael Park, 2015-2017
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef MPARK_IN_PLACE_HPP
|
||||
#define MPARK_IN_PLACE_HPP
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "config.hpp"
|
||||
|
||||
namespace mpark {
|
||||
|
||||
struct in_place_t { explicit in_place_t() = default; };
|
||||
|
||||
template <std::size_t I>
|
||||
struct in_place_index_t { explicit in_place_index_t() = default; };
|
||||
|
||||
template <typename T>
|
||||
struct in_place_type_t { explicit in_place_type_t() = default; };
|
||||
|
||||
#ifdef MPARK_VARIABLE_TEMPLATES
|
||||
constexpr in_place_t in_place{};
|
||||
|
||||
template <std::size_t I> constexpr in_place_index_t<I> in_place_index{};
|
||||
|
||||
template <typename T> constexpr in_place_type_t<T> in_place_type{};
|
||||
#endif
|
||||
|
||||
} // namespace mpark
|
||||
|
||||
#endif // MPARK_IN_PLACE_HPP
|
||||
499
headers/3rdparty/variant/lib.hpp
vendored
499
headers/3rdparty/variant/lib.hpp
vendored
@@ -1,499 +0,0 @@
|
||||
// MPark.Variant
|
||||
//
|
||||
// Copyright Michael Park, 2015-2017
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef MPARK_LIB_HPP
|
||||
#define MPARK_LIB_HPP
|
||||
|
||||
#include <memory>
|
||||
#include <functional>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
||||
#include "config.hpp"
|
||||
|
||||
#define MPARK_RETURN(...) \
|
||||
noexcept(noexcept(__VA_ARGS__)) -> decltype(__VA_ARGS__) { return __VA_ARGS__; }
|
||||
|
||||
namespace mpark {
|
||||
namespace lib {
|
||||
template <typename T>
|
||||
struct identity { using type = T; };
|
||||
|
||||
inline namespace cpp14 {
|
||||
template <typename T, std::size_t N>
|
||||
struct array {
|
||||
constexpr const T &operator[](std::size_t index) const {
|
||||
return data[index];
|
||||
}
|
||||
|
||||
T data[N == 0 ? 1 : N];
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
using add_pointer_t = typename std::add_pointer<T>::type;
|
||||
|
||||
template <typename... Ts>
|
||||
using common_type_t = typename std::common_type<Ts...>::type;
|
||||
|
||||
template <typename T>
|
||||
using decay_t = typename std::decay<T>::type;
|
||||
|
||||
template <bool B, typename T = void>
|
||||
using enable_if_t = typename std::enable_if<B, T>::type;
|
||||
|
||||
template <typename T>
|
||||
using remove_const_t = typename std::remove_const<T>::type;
|
||||
|
||||
template <typename T>
|
||||
using remove_reference_t = typename std::remove_reference<T>::type;
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T &&forward(remove_reference_t<T> &t) noexcept {
|
||||
return static_cast<T &&>(t);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T &&forward(remove_reference_t<T> &&t) noexcept {
|
||||
static_assert(!std::is_lvalue_reference<T>::value,
|
||||
"can not forward an rvalue as an lvalue");
|
||||
return static_cast<T &&>(t);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline constexpr remove_reference_t<T> &&move(T &&t) noexcept {
|
||||
return static_cast<remove_reference_t<T> &&>(t);
|
||||
}
|
||||
|
||||
#ifdef MPARK_INTEGER_SEQUENCE
|
||||
using std::integer_sequence;
|
||||
using std::index_sequence;
|
||||
using std::make_index_sequence;
|
||||
using std::index_sequence_for;
|
||||
#else
|
||||
template <typename T, T... Is>
|
||||
struct integer_sequence {
|
||||
using value_type = T;
|
||||
static constexpr std::size_t size() noexcept { return sizeof...(Is); }
|
||||
};
|
||||
|
||||
template <std::size_t... Is>
|
||||
using index_sequence = integer_sequence<std::size_t, Is...>;
|
||||
|
||||
template <typename Lhs, typename Rhs>
|
||||
struct make_index_sequence_concat;
|
||||
|
||||
template <std::size_t... Lhs, std::size_t... Rhs>
|
||||
struct make_index_sequence_concat<index_sequence<Lhs...>,
|
||||
index_sequence<Rhs...>>
|
||||
: identity<index_sequence<Lhs..., (sizeof...(Lhs) + Rhs)...>> {};
|
||||
|
||||
template <std::size_t N>
|
||||
struct make_index_sequence_impl;
|
||||
|
||||
template <std::size_t N>
|
||||
using make_index_sequence = typename make_index_sequence_impl<N>::type;
|
||||
|
||||
template <std::size_t N>
|
||||
struct make_index_sequence_impl
|
||||
: make_index_sequence_concat<make_index_sequence<N / 2>,
|
||||
make_index_sequence<N - (N / 2)>> {};
|
||||
|
||||
template <>
|
||||
struct make_index_sequence_impl<0> : identity<index_sequence<>> {};
|
||||
|
||||
template <>
|
||||
struct make_index_sequence_impl<1> : identity<index_sequence<0>> {};
|
||||
|
||||
template <typename... Ts>
|
||||
using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
|
||||
#endif
|
||||
|
||||
// <functional>
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using equal_to = std::equal_to<>;
|
||||
#else
|
||||
struct equal_to {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) == lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using not_equal_to = std::not_equal_to<>;
|
||||
#else
|
||||
struct not_equal_to {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) != lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using less = std::less<>;
|
||||
#else
|
||||
struct less {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) < lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using greater = std::greater<>;
|
||||
#else
|
||||
struct greater {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) > lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using less_equal = std::less_equal<>;
|
||||
#else
|
||||
struct less_equal {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) <= lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRANSPARENT_OPERATORS
|
||||
using greater_equal = std::greater_equal<>;
|
||||
#else
|
||||
struct greater_equal {
|
||||
template <typename Lhs, typename Rhs>
|
||||
inline constexpr auto operator()(Lhs &&lhs, Rhs &&rhs) const
|
||||
MPARK_RETURN(lib::forward<Lhs>(lhs) >= lib::forward<Rhs>(rhs))
|
||||
};
|
||||
#endif
|
||||
} // namespace cpp14
|
||||
|
||||
inline namespace cpp17 {
|
||||
|
||||
// <type_traits>
|
||||
template <bool B>
|
||||
using bool_constant = std::integral_constant<bool, B>;
|
||||
|
||||
template <typename...>
|
||||
struct voider : identity<void> {};
|
||||
|
||||
template <typename... Ts>
|
||||
using void_t = typename voider<Ts...>::type;
|
||||
|
||||
namespace detail {
|
||||
namespace swappable {
|
||||
|
||||
using std::swap;
|
||||
|
||||
template <typename T>
|
||||
struct is_swappable {
|
||||
private:
|
||||
template <typename U,
|
||||
typename = decltype(swap(std::declval<U &>(),
|
||||
std::declval<U &>()))>
|
||||
inline static std::true_type test(int);
|
||||
|
||||
template <typename U>
|
||||
inline static std::false_type test(...);
|
||||
|
||||
public:
|
||||
static constexpr bool value = decltype(test<T>(0))::value;
|
||||
};
|
||||
|
||||
template <bool IsSwappable, typename T>
|
||||
struct is_nothrow_swappable {
|
||||
static constexpr bool value =
|
||||
noexcept(swap(std::declval<T &>(), std::declval<T &>()));
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct is_nothrow_swappable<false, T> : std::false_type {};
|
||||
|
||||
} // namespace swappable
|
||||
} // namespace detail
|
||||
|
||||
using detail::swappable::is_swappable;
|
||||
|
||||
template <typename T>
|
||||
using is_nothrow_swappable =
|
||||
detail::swappable::is_nothrow_swappable<is_swappable<T>::value, T>;
|
||||
|
||||
// <functional>
|
||||
namespace detail {
|
||||
|
||||
template <typename T>
|
||||
struct is_reference_wrapper : std::false_type {};
|
||||
|
||||
template <typename T>
|
||||
struct is_reference_wrapper<std::reference_wrapper<T>>
|
||||
: std::true_type {};
|
||||
|
||||
template <bool, int>
|
||||
struct Invoke;
|
||||
|
||||
template <>
|
||||
struct Invoke<true /* pmf */, 0 /* is_base_of */> {
|
||||
template <typename R, typename T, typename Arg, typename... Args>
|
||||
inline static constexpr auto invoke(R T::*pmf, Arg &&arg, Args &&... args)
|
||||
MPARK_RETURN((lib::forward<Arg>(arg).*pmf)(lib::forward<Args>(args)...))
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Invoke<true /* pmf */, 1 /* is_reference_wrapper */> {
|
||||
template <typename R, typename T, typename Arg, typename... Args>
|
||||
inline static constexpr auto invoke(R T::*pmf, Arg &&arg, Args &&... args)
|
||||
MPARK_RETURN((lib::forward<Arg>(arg).get().*pmf)(lib::forward<Args>(args)...))
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Invoke<true /* pmf */, 2 /* otherwise */> {
|
||||
template <typename R, typename T, typename Arg, typename... Args>
|
||||
inline static constexpr auto invoke(R T::*pmf, Arg &&arg, Args &&... args)
|
||||
MPARK_RETURN(((*lib::forward<Arg>(arg)).*pmf)(lib::forward<Args>(args)...))
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Invoke<false /* pmo */, 0 /* is_base_of */> {
|
||||
template <typename R, typename T, typename Arg>
|
||||
inline static constexpr auto invoke(R T::*pmo, Arg &&arg)
|
||||
MPARK_RETURN(lib::forward<Arg>(arg).*pmo)
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Invoke<false /* pmo */, 1 /* is_reference_wrapper */> {
|
||||
template <typename R, typename T, typename Arg>
|
||||
inline static constexpr auto invoke(R T::*pmo, Arg &&arg)
|
||||
MPARK_RETURN(lib::forward<Arg>(arg).get().*pmo)
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Invoke<false /* pmo */, 2 /* otherwise */> {
|
||||
template <typename R, typename T, typename Arg>
|
||||
inline static constexpr auto invoke(R T::*pmo, Arg &&arg)
|
||||
MPARK_RETURN((*lib::forward<Arg>(arg)).*pmo)
|
||||
};
|
||||
|
||||
template <typename R, typename T, typename Arg, typename... Args>
|
||||
inline constexpr auto invoke(R T::*f, Arg &&arg, Args &&... args)
|
||||
MPARK_RETURN(
|
||||
Invoke<std::is_function<R>::value,
|
||||
(std::is_base_of<T, lib::decay_t<Arg>>::value
|
||||
? 0
|
||||
: is_reference_wrapper<lib::decay_t<Arg>>::value
|
||||
? 1
|
||||
: 2)>::invoke(f,
|
||||
lib::forward<Arg>(arg),
|
||||
lib::forward<Args>(args)...))
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 4100)
|
||||
#endif
|
||||
template <typename F, typename... Args>
|
||||
inline constexpr auto invoke(F &&f, Args &&... args)
|
||||
MPARK_RETURN(lib::forward<F>(f)(lib::forward<Args>(args)...))
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
} // namespace detail
|
||||
|
||||
template <typename F, typename... Args>
|
||||
inline constexpr auto invoke(F &&f, Args &&... args)
|
||||
MPARK_RETURN(detail::invoke(lib::forward<F>(f),
|
||||
lib::forward<Args>(args)...))
|
||||
|
||||
namespace detail {
|
||||
|
||||
template <typename Void, typename, typename...>
|
||||
struct invoke_result {};
|
||||
|
||||
template <typename F, typename... Args>
|
||||
struct invoke_result<void_t<decltype(lib::invoke(
|
||||
std::declval<F>(), std::declval<Args>()...))>,
|
||||
F,
|
||||
Args...>
|
||||
: identity<decltype(
|
||||
lib::invoke(std::declval<F>(), std::declval<Args>()...))> {};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <typename F, typename... Args>
|
||||
using invoke_result = detail::invoke_result<void, F, Args...>;
|
||||
|
||||
template <typename F, typename... Args>
|
||||
using invoke_result_t = typename invoke_result<F, Args...>::type;
|
||||
|
||||
namespace detail {
|
||||
|
||||
template <typename Void, typename, typename...>
|
||||
struct is_invocable : std::false_type {};
|
||||
|
||||
template <typename F, typename... Args>
|
||||
struct is_invocable<void_t<invoke_result_t<F, Args...>>, F, Args...>
|
||||
: std::true_type {};
|
||||
|
||||
template <typename Void, typename, typename, typename...>
|
||||
struct is_invocable_r : std::false_type {};
|
||||
|
||||
template <typename R, typename F, typename... Args>
|
||||
struct is_invocable_r<void_t<invoke_result_t<F, Args...>>,
|
||||
R,
|
||||
F,
|
||||
Args...>
|
||||
: std::is_convertible<invoke_result_t<F, Args...>, R> {};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <typename F, typename... Args>
|
||||
using is_invocable = detail::is_invocable<void, F, Args...>;
|
||||
|
||||
template <typename R, typename F, typename... Args>
|
||||
using is_invocable_r = detail::is_invocable_r<void, R, F, Args...>;
|
||||
|
||||
// <memory>
|
||||
#ifdef MPARK_BUILTIN_ADDRESSOF
|
||||
template <typename T>
|
||||
inline constexpr T *addressof(T &arg) noexcept {
|
||||
return __builtin_addressof(arg);
|
||||
}
|
||||
#else
|
||||
namespace detail {
|
||||
|
||||
namespace has_addressof_impl {
|
||||
|
||||
struct fail;
|
||||
|
||||
template <typename T>
|
||||
inline fail operator&(T &&);
|
||||
|
||||
template <typename T>
|
||||
inline static constexpr bool impl() {
|
||||
return (std::is_class<T>::value || std::is_union<T>::value) &&
|
||||
!std::is_same<decltype(&std::declval<T &>()), fail>::value;
|
||||
}
|
||||
|
||||
} // namespace has_addressof_impl
|
||||
|
||||
template <typename T>
|
||||
using has_addressof = bool_constant<has_addressof_impl::impl<T>()>;
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T *addressof(T &arg, std::true_type) noexcept {
|
||||
return std::addressof(arg);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T *addressof(T &arg, std::false_type) noexcept {
|
||||
return &arg;
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T *addressof(T &arg) noexcept {
|
||||
return detail::addressof(arg, detail::has_addressof<T>{});
|
||||
}
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
inline constexpr T *addressof(const T &&) = delete;
|
||||
|
||||
} // namespace cpp17
|
||||
|
||||
template <typename T>
|
||||
struct remove_all_extents : identity<T> {};
|
||||
|
||||
template <typename T, std::size_t N>
|
||||
struct remove_all_extents<array<T, N>> : remove_all_extents<T> {};
|
||||
|
||||
template <typename T>
|
||||
using remove_all_extents_t = typename remove_all_extents<T>::type;
|
||||
|
||||
template <std::size_t N>
|
||||
using size_constant = std::integral_constant<std::size_t, N>;
|
||||
|
||||
template <std::size_t I, typename T>
|
||||
struct indexed_type : size_constant<I> { using type = T; };
|
||||
|
||||
template <bool... Bs>
|
||||
using all = std::is_same<integer_sequence<bool, true, Bs...>,
|
||||
integer_sequence<bool, Bs..., true>>;
|
||||
|
||||
#ifdef MPARK_TYPE_PACK_ELEMENT
|
||||
template <std::size_t I, typename... Ts>
|
||||
using type_pack_element_t = __type_pack_element<I, Ts...>;
|
||||
#else
|
||||
template <std::size_t I, typename... Ts>
|
||||
struct type_pack_element_impl {
|
||||
private:
|
||||
template <typename>
|
||||
struct set;
|
||||
|
||||
template <std::size_t... Is>
|
||||
struct set<index_sequence<Is...>> : indexed_type<Is, Ts>... {};
|
||||
|
||||
template <typename T>
|
||||
inline static std::enable_if<true, T> impl(indexed_type<I, T>);
|
||||
|
||||
inline static std::enable_if<false> impl(...);
|
||||
|
||||
public:
|
||||
using type = decltype(impl(set<index_sequence_for<Ts...>>{}));
|
||||
};
|
||||
|
||||
template <std::size_t I, typename... Ts>
|
||||
using type_pack_element = typename type_pack_element_impl<I, Ts...>::type;
|
||||
|
||||
template <std::size_t I, typename... Ts>
|
||||
using type_pack_element_t = typename type_pack_element<I, Ts...>::type;
|
||||
#endif
|
||||
|
||||
#ifdef MPARK_TRIVIALITY_TYPE_TRAITS
|
||||
using std::is_trivially_copy_constructible;
|
||||
using std::is_trivially_move_constructible;
|
||||
using std::is_trivially_copy_assignable;
|
||||
using std::is_trivially_move_assignable;
|
||||
#else
|
||||
template <typename T>
|
||||
struct is_trivially_copy_constructible
|
||||
: bool_constant<
|
||||
std::is_copy_constructible<T>::value && __has_trivial_copy(T)> {};
|
||||
|
||||
template <typename T>
|
||||
struct is_trivially_move_constructible : bool_constant<__is_trivial(T)> {};
|
||||
|
||||
template <typename T>
|
||||
struct is_trivially_copy_assignable
|
||||
: bool_constant<
|
||||
std::is_copy_assignable<T>::value && __has_trivial_assign(T)> {};
|
||||
|
||||
template <typename T>
|
||||
struct is_trivially_move_assignable : bool_constant<__is_trivial(T)> {};
|
||||
#endif
|
||||
|
||||
template <typename T, bool>
|
||||
struct dependent_type : T {};
|
||||
|
||||
template <typename Is, std::size_t J>
|
||||
struct push_back;
|
||||
|
||||
template <typename Is, std::size_t J>
|
||||
using push_back_t = typename push_back<Is, J>::type;
|
||||
|
||||
template <std::size_t... Is, std::size_t J>
|
||||
struct push_back<index_sequence<Is...>, J> {
|
||||
using type = index_sequence<Is..., J>;
|
||||
};
|
||||
|
||||
} // namespace lib
|
||||
} // namespace mpark
|
||||
|
||||
#undef MPARK_RETURN
|
||||
|
||||
#endif // MPARK_LIB_HPP
|
||||
2156
headers/3rdparty/variant/variant.hpp
vendored
2156
headers/3rdparty/variant/variant.hpp
vendored
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,8 @@
|
||||
#include <bitset>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <variant>
|
||||
#include <optional>
|
||||
#include <unordered_set>
|
||||
#include <unordered_map>
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_base.hpp"
|
||||
#include "configs.hpp"
|
||||
|
||||
//
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
#include <flat.hpp/flat_multiset.hpp>
|
||||
#include <flat.hpp/flat_multimap.hpp>
|
||||
|
||||
#include <3rdparty/variant/variant.hpp>
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
using f32 = float;
|
||||
@@ -100,8 +98,3 @@ namespace e2d
|
||||
, typename Container = vector<std::pair<Key, Value>> >
|
||||
using flat_multimap = flat_hpp::flat_multimap<Key, Value, Compare, Container>;
|
||||
}
|
||||
|
||||
namespace e2d::stdex
|
||||
{
|
||||
using namespace mpark;
|
||||
}
|
||||
|
||||
@@ -48,19 +48,30 @@ namespace e2d
|
||||
depth24,
|
||||
depth24_stencil8,
|
||||
|
||||
g8,
|
||||
ga8,
|
||||
a8,
|
||||
l8,
|
||||
la8,
|
||||
rgb8,
|
||||
rgba8,
|
||||
|
||||
rgb_dxt1,
|
||||
rgba_dxt1,
|
||||
rgba_dxt3,
|
||||
rgba_dxt5,
|
||||
|
||||
rgb_etc1,
|
||||
rgb_etc2,
|
||||
rgba_etc2,
|
||||
rgb_a1_etc2,
|
||||
|
||||
rgba_astc4x4,
|
||||
rgba_astc5x5,
|
||||
rgba_astc6x6,
|
||||
rgba_astc8x8,
|
||||
rgba_astc10x10,
|
||||
rgba_astc12x12,
|
||||
|
||||
rgb_pvrtc2,
|
||||
rgb_pvrtc4,
|
||||
|
||||
rgba_pvrtc2,
|
||||
rgba_pvrtc4,
|
||||
|
||||
@@ -82,8 +93,9 @@ namespace e2d
|
||||
bool is_depth() const noexcept;
|
||||
bool is_stencil() const noexcept;
|
||||
bool is_compressed() const noexcept;
|
||||
std::size_t bits_per_pixel() const noexcept;
|
||||
v2u compressed_block_size() const noexcept;
|
||||
v2u block_size() const noexcept;
|
||||
std::size_t bytes_per_block() const noexcept;
|
||||
std::size_t data_size_for_dimension(v2u dim) const noexcept;
|
||||
private:
|
||||
pixel_type type_ = pixel_type::rgba8;
|
||||
};
|
||||
@@ -576,7 +588,7 @@ namespace e2d
|
||||
public:
|
||||
sampler_state& texture(const texture_ptr& texture) noexcept;
|
||||
|
||||
sampler_state& wrap(sampler_wrap st) noexcept;
|
||||
sampler_state& wrap(sampler_wrap s, sampler_wrap t) noexcept;
|
||||
sampler_state& s_wrap(sampler_wrap s) noexcept;
|
||||
sampler_state& t_wrap(sampler_wrap t) noexcept;
|
||||
|
||||
@@ -599,7 +611,7 @@ namespace e2d
|
||||
sampler_mag_filter mag_filter_ = sampler_mag_filter::linear;
|
||||
};
|
||||
|
||||
using property_value = stdex::variant<
|
||||
using property_value = std::variant<
|
||||
i32, f32,
|
||||
v2i, v3i, v4i,
|
||||
v2f, v3f, v4f,
|
||||
@@ -844,7 +856,7 @@ namespace e2d
|
||||
bool scissoring_ = false;
|
||||
};
|
||||
|
||||
using command_value = stdex::variant<
|
||||
using command_value = std::variant<
|
||||
zero_command,
|
||||
draw_command,
|
||||
clear_command,
|
||||
@@ -902,6 +914,9 @@ namespace e2d
|
||||
bool depth24_stencil8_supported = false;
|
||||
|
||||
bool dxt_compression_supported = false;
|
||||
bool etc1_compression_supported = false;
|
||||
bool etc2_compression_supported = false;
|
||||
bool astc_compression_supported = false;
|
||||
bool pvrtc_compression_supported = false;
|
||||
bool pvrtc2_compression_supported = false;
|
||||
};
|
||||
|
||||
@@ -150,7 +150,7 @@ namespace e2d
|
||||
const T* render::property_block::property(str_hash name) const noexcept {
|
||||
const property_value* prop = properties_.find(name);
|
||||
return prop
|
||||
? stdex::get_if<T>(prop)
|
||||
? std::get_if<T>(prop)
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "assets/atlas_asset.hpp"
|
||||
#include "assets/binary_asset.hpp"
|
||||
#include "assets/flipbook_asset.hpp"
|
||||
#include "assets/font_asset.hpp"
|
||||
#include "assets/image_asset.hpp"
|
||||
#include "assets/json_asset.hpp"
|
||||
#include "assets/material_asset.hpp"
|
||||
@@ -20,6 +21,7 @@
|
||||
#include "assets/shader_asset.hpp"
|
||||
#include "assets/shape_asset.hpp"
|
||||
#include "assets/sound_asset.hpp"
|
||||
#include "assets/spine_asset.hpp"
|
||||
#include "assets/sprite_asset.hpp"
|
||||
#include "assets/text_asset.hpp"
|
||||
#include "assets/texture_asset.hpp"
|
||||
@@ -28,14 +30,19 @@
|
||||
#include "components/actor.hpp"
|
||||
#include "components/camera.hpp"
|
||||
#include "components/flipbook_player.hpp"
|
||||
#include "components/flipbook_source.hpp"
|
||||
#include "components/label.hpp"
|
||||
#include "components/model_renderer.hpp"
|
||||
#include "components/renderer.hpp"
|
||||
#include "components/scene.hpp"
|
||||
#include "components/spine_player.hpp"
|
||||
#include "components/spine_player_cmd.hpp"
|
||||
#include "components/spine_player_evt.hpp"
|
||||
#include "components/sprite_renderer.hpp"
|
||||
|
||||
#include "systems/flipbook_system.hpp"
|
||||
#include "systems/label_system.hpp"
|
||||
#include "systems/render_system.hpp"
|
||||
#include "systems/spine_systems.hpp"
|
||||
|
||||
#include "address.hpp"
|
||||
#include "asset.hpp"
|
||||
@@ -51,6 +58,7 @@
|
||||
#include "node.hpp"
|
||||
#include "node.inl"
|
||||
#include "prefab.hpp"
|
||||
#include "spine.hpp"
|
||||
#include "sprite.hpp"
|
||||
#include "starter.hpp"
|
||||
#include "world.hpp"
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace e2d
|
||||
class atlas_asset;
|
||||
class binary_asset;
|
||||
class flipbook_asset;
|
||||
class font_asset;
|
||||
class image_asset;
|
||||
class json_asset;
|
||||
class material_asset;
|
||||
@@ -32,6 +33,7 @@ namespace e2d
|
||||
class shader_asset;
|
||||
class shape_asset;
|
||||
class sound_asset;
|
||||
class spine_asset;
|
||||
class sprite_asset;
|
||||
class text_asset;
|
||||
class texture_asset;
|
||||
@@ -40,14 +42,20 @@ namespace e2d
|
||||
class actor;
|
||||
class camera;
|
||||
class flipbook_player;
|
||||
class flipbook_source;
|
||||
class label;
|
||||
class model_renderer;
|
||||
class renderer;
|
||||
class scene;
|
||||
class spine_player;
|
||||
class spine_player_cmd;
|
||||
class spine_player_evt;
|
||||
class sprite_renderer;
|
||||
|
||||
class flipbook_system;
|
||||
class label_system;
|
||||
class render_system;
|
||||
class spine_pre_system;
|
||||
class spine_post_system;
|
||||
|
||||
template < typename Asset, typename Content >
|
||||
class content_asset;
|
||||
@@ -65,6 +73,7 @@ namespace e2d
|
||||
class model;
|
||||
class node;
|
||||
class prefab;
|
||||
class spine;
|
||||
class sprite;
|
||||
class starter;
|
||||
class world;
|
||||
|
||||
20
headers/enduro2d/high/assets/font_asset.hpp
Normal file
20
headers/enduro2d/high/assets/font_asset.hpp
Normal file
@@ -0,0 +1,20 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../library.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class font_asset final : public content_asset<font_asset, font> {
|
||||
public:
|
||||
static const char* type_name() noexcept { return "font_asset"; }
|
||||
static load_async_result load_async(const library& library, str_view address);
|
||||
};
|
||||
}
|
||||
21
headers/enduro2d/high/assets/spine_asset.hpp
Normal file
21
headers/enduro2d/high/assets/spine_asset.hpp
Normal file
@@ -0,0 +1,21 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../library.hpp"
|
||||
#include "../spine.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class spine_asset final : public content_asset<spine_asset, spine> {
|
||||
public:
|
||||
static const char* type_name() noexcept { return "spine_asset"; }
|
||||
static load_async_result load_async(const library& library, str_view address);
|
||||
};
|
||||
}
|
||||
@@ -16,6 +16,7 @@ namespace e2d
|
||||
class flipbook_player final {
|
||||
public:
|
||||
flipbook_player() = default;
|
||||
flipbook_player(const flipbook_asset::ptr& flipbook);
|
||||
|
||||
// data access
|
||||
|
||||
@@ -37,6 +38,9 @@ namespace e2d
|
||||
flipbook_player& sequence(str_hash value) noexcept;
|
||||
str_hash sequence() const noexcept;
|
||||
|
||||
flipbook_player& flipbook(const flipbook_asset::ptr& value) noexcept;
|
||||
const flipbook_asset::ptr& flipbook() const noexcept;
|
||||
|
||||
// helpers
|
||||
|
||||
flipbook_player& stop(f32 ntime) noexcept;
|
||||
@@ -50,6 +54,7 @@ namespace e2d
|
||||
bool looped_{false};
|
||||
bool playing_{false};
|
||||
str_hash sequence_;
|
||||
flipbook_asset::ptr flipbook_;
|
||||
};
|
||||
|
||||
template <>
|
||||
@@ -69,6 +74,9 @@ namespace e2d
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
inline flipbook_player::flipbook_player(const flipbook_asset::ptr& flipbook)
|
||||
: flipbook_(flipbook) {}
|
||||
|
||||
inline flipbook_player& flipbook_player::time(f32 value) noexcept {
|
||||
time_ = value;
|
||||
return *this;
|
||||
@@ -123,6 +131,15 @@ namespace e2d
|
||||
return sequence_;
|
||||
}
|
||||
|
||||
inline flipbook_player& flipbook_player::flipbook(const flipbook_asset::ptr& value) noexcept {
|
||||
flipbook_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const flipbook_asset::ptr& flipbook_player::flipbook() const noexcept {
|
||||
return flipbook_;
|
||||
}
|
||||
|
||||
inline flipbook_player& flipbook_player::stop(f32 ntime) noexcept {
|
||||
return time(ntime).stopped(true);
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../factory.hpp"
|
||||
#include "../assets/flipbook_asset.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class flipbook_source final {
|
||||
public:
|
||||
flipbook_source() = default;
|
||||
flipbook_source(const flipbook_asset::ptr& flipbook);
|
||||
|
||||
flipbook_source& flipbook(const flipbook_asset::ptr& value) noexcept;
|
||||
const flipbook_asset::ptr& flipbook() const noexcept;
|
||||
private:
|
||||
flipbook_asset::ptr flipbook_;
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<flipbook_source> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
flipbook_source& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
}
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
inline flipbook_source::flipbook_source(const flipbook_asset::ptr& flipbook)
|
||||
: flipbook_(flipbook) {}
|
||||
|
||||
inline flipbook_source& flipbook_source::flipbook(const flipbook_asset::ptr& value) noexcept {
|
||||
flipbook_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const flipbook_asset::ptr& flipbook_source::flipbook() const noexcept {
|
||||
return flipbook_;
|
||||
}
|
||||
}
|
||||
281
headers/enduro2d/high/components/label.hpp
Normal file
281
headers/enduro2d/high/components/label.hpp
Normal file
@@ -0,0 +1,281 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../factory.hpp"
|
||||
#include "../assets/font_asset.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class label final {
|
||||
public:
|
||||
class dirty final {
|
||||
};
|
||||
public:
|
||||
enum class haligns {
|
||||
left,
|
||||
center,
|
||||
right
|
||||
};
|
||||
|
||||
enum class valigns {
|
||||
top,
|
||||
center,
|
||||
bottom,
|
||||
baseline
|
||||
};
|
||||
public:
|
||||
label() = default;
|
||||
label(const font_asset::ptr& font);
|
||||
|
||||
label(label&& other) noexcept;
|
||||
label& operator=(label&& other) noexcept;
|
||||
|
||||
label(const label& other);
|
||||
label& operator=(const label& other);
|
||||
|
||||
label& text(str value) noexcept;
|
||||
[[nodiscard]] const str& text() const noexcept;
|
||||
|
||||
label& font(const font_asset::ptr& value) noexcept;
|
||||
[[nodiscard]] const font_asset::ptr& font() const noexcept;
|
||||
|
||||
label& tint(const color32& value) noexcept;
|
||||
[[nodiscard]] const color32& tint() const noexcept;
|
||||
|
||||
label& haligh(haligns value) noexcept;
|
||||
[[nodiscard]] haligns halign() const noexcept;
|
||||
|
||||
label& valigh(valigns value) noexcept;
|
||||
[[nodiscard]] valigns valign() const noexcept;
|
||||
|
||||
label& leading(f32 value) noexcept;
|
||||
[[nodiscard]] f32 leading() const noexcept;
|
||||
|
||||
label& tracking(f32 value) noexcept;
|
||||
[[nodiscard]] f32 tracking() const noexcept;
|
||||
|
||||
label& text_width(f32 value) noexcept;
|
||||
[[nodiscard]] f32 text_width() const noexcept;
|
||||
|
||||
label& glyph_dilate(f32 value) noexcept;
|
||||
[[nodiscard]] f32 glyph_dilate() const noexcept;
|
||||
|
||||
label& outline_width(f32 value) noexcept;
|
||||
[[nodiscard]] f32 outline_width() const noexcept;
|
||||
|
||||
label& outline_color(const color32& value) noexcept;
|
||||
[[nodiscard]] const color32& outline_color() const noexcept;
|
||||
private:
|
||||
str text_;
|
||||
font_asset::ptr font_;
|
||||
color32 tint_ = color32::white();
|
||||
haligns halign_ = haligns::center;
|
||||
valigns valign_ = valigns::baseline;
|
||||
f32 leading_ = 1.f;
|
||||
f32 tracking_ = 0.f;
|
||||
f32 text_width_ = 0.f;
|
||||
f32 glyph_dilate_ = 0.f;
|
||||
f32 outline_width_ = 0.f;
|
||||
color32 outline_color_ = color32::white();
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<label> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
label& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<label::dirty> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
label::dirty& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
}
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
inline label::label(const font_asset::ptr& value)
|
||||
: font_(value) {}
|
||||
|
||||
inline label::label(label&& other) noexcept
|
||||
: text_(std::move(other.text_))
|
||||
, font_(std::move(other.font_))
|
||||
, tint_(other.tint_)
|
||||
, halign_(other.halign_)
|
||||
, valign_(other.valign_)
|
||||
, leading_(other.leading_)
|
||||
, tracking_(other.tracking_)
|
||||
, text_width_(other.text_width_)
|
||||
, glyph_dilate_(other.glyph_dilate_)
|
||||
, outline_width_(other.outline_width_)
|
||||
, outline_color_(other.outline_color_) {}
|
||||
|
||||
inline label& label::operator=(label&& other) noexcept {
|
||||
if ( this != &other ) {
|
||||
text_ = std::move(other.text_);
|
||||
font_ = std::move(other.font_);
|
||||
tint_ = other.tint_;
|
||||
halign_ = other.halign_;
|
||||
valign_ = other.valign_;
|
||||
leading_ = other.leading_;
|
||||
tracking_ = other.tracking_;
|
||||
text_width_ = other.text_width_;
|
||||
glyph_dilate_ = other.glyph_dilate_;
|
||||
outline_width_ = other.outline_width_;
|
||||
outline_color_ = other.outline_color_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline label::label(const label& other)
|
||||
: text_(other.text_)
|
||||
, font_(other.font_)
|
||||
, tint_(other.tint_)
|
||||
, halign_(other.halign_)
|
||||
, valign_(other.valign_)
|
||||
, leading_(other.leading_)
|
||||
, tracking_(other.tracking_)
|
||||
, text_width_(other.text_width_)
|
||||
, glyph_dilate_(other.glyph_dilate_)
|
||||
, outline_width_(other.outline_width_)
|
||||
, outline_color_(other.outline_color_) {}
|
||||
|
||||
inline label& label::operator=(const label& other) {
|
||||
if ( this != &other ) {
|
||||
text_ = other.text_;
|
||||
font_ = other.font_;
|
||||
tint_ = other.tint_;
|
||||
halign_ = other.halign_;
|
||||
valign_ = other.valign_;
|
||||
leading_ = other.leading_;
|
||||
tracking_ = other.tracking_;
|
||||
text_width_ = other.text_width_;
|
||||
glyph_dilate_ = other.glyph_dilate_;
|
||||
outline_width_ = other.outline_width_;
|
||||
outline_color_ = other.outline_color_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline label& label::text(str value) noexcept {
|
||||
text_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const str& label::text() const noexcept {
|
||||
return text_;
|
||||
}
|
||||
|
||||
inline label& label::font(const font_asset::ptr& value) noexcept {
|
||||
font_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const font_asset::ptr& label::font() const noexcept {
|
||||
return font_;
|
||||
}
|
||||
|
||||
inline label& label::tint(const color32& value) noexcept {
|
||||
tint_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const color32& label::tint() const noexcept {
|
||||
return tint_;
|
||||
}
|
||||
|
||||
inline label& label::haligh(haligns value) noexcept {
|
||||
halign_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline label::haligns label::halign() const noexcept {
|
||||
return halign_;
|
||||
}
|
||||
|
||||
inline label& label::valigh(valigns value) noexcept {
|
||||
valign_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline label::valigns label::valign() const noexcept {
|
||||
return valign_;
|
||||
}
|
||||
|
||||
inline label& label::leading(f32 value) noexcept {
|
||||
leading_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline f32 label::leading() const noexcept {
|
||||
return leading_;
|
||||
}
|
||||
|
||||
inline label& label::tracking(f32 value) noexcept {
|
||||
tracking_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline f32 label::tracking() const noexcept {
|
||||
return tracking_;
|
||||
}
|
||||
|
||||
inline label& label::text_width(f32 value) noexcept {
|
||||
text_width_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline f32 label::text_width() const noexcept {
|
||||
return text_width_;
|
||||
}
|
||||
|
||||
inline label& label::glyph_dilate(f32 value) noexcept {
|
||||
glyph_dilate_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline f32 label::glyph_dilate() const noexcept {
|
||||
return glyph_dilate_;
|
||||
}
|
||||
|
||||
inline label& label::outline_width(f32 value) noexcept {
|
||||
outline_width_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline f32 label::outline_width() const noexcept {
|
||||
return outline_width_;
|
||||
}
|
||||
|
||||
inline label& label::outline_color(const color32& value) noexcept {
|
||||
outline_color_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const color32& label::outline_color() const noexcept {
|
||||
return outline_color_;
|
||||
}
|
||||
}
|
||||
80
headers/enduro2d/high/components/spine_player.hpp
Normal file
80
headers/enduro2d/high/components/spine_player.hpp
Normal file
@@ -0,0 +1,80 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../factory.hpp"
|
||||
#include "../assets/spine_asset.hpp"
|
||||
#include "../assets/material_asset.hpp"
|
||||
|
||||
struct spSkeleton;
|
||||
struct spSkeletonClipping;
|
||||
struct spAnimationState;
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class bad_spine_player_access final : public exception {
|
||||
public:
|
||||
const char* what() const noexcept final {
|
||||
return "bad spine player access";
|
||||
}
|
||||
};
|
||||
|
||||
class spine_player final {
|
||||
public:
|
||||
using clipping_ptr = std::shared_ptr<spSkeletonClipping>;
|
||||
using skeleton_ptr = std::shared_ptr<spSkeleton>;
|
||||
using animation_ptr = std::shared_ptr<spAnimationState>;
|
||||
public:
|
||||
spine_player() = default;
|
||||
spine_player(const spine_asset::ptr& spine);
|
||||
|
||||
spine_player& spine(
|
||||
const spine_asset::ptr& value);
|
||||
|
||||
spine_player& materials(
|
||||
flat_map<str_hash, material_asset::ptr>&& value) noexcept;
|
||||
|
||||
spine_player& materials(
|
||||
const flat_map<str_hash, material_asset::ptr>& value);
|
||||
|
||||
spine_player& skin(const str& value) noexcept;
|
||||
spine_player& attachment(const str& slot, const str& name) noexcept;
|
||||
|
||||
bool has_skin(const str& name) const noexcept;
|
||||
bool has_animation(const str& name) const noexcept;
|
||||
|
||||
const spine_asset::ptr& spine() const noexcept;
|
||||
const clipping_ptr& clipper() const noexcept;
|
||||
const skeleton_ptr& skeleton() const noexcept;
|
||||
const animation_ptr& animation() const noexcept;
|
||||
|
||||
material_asset::ptr find_material(str_hash name) const noexcept;
|
||||
const flat_map<str_hash, material_asset::ptr>& materials() const noexcept;
|
||||
private:
|
||||
spine_asset::ptr spine_;
|
||||
clipping_ptr clipping_;
|
||||
skeleton_ptr skeleton_;
|
||||
animation_ptr animation_;
|
||||
flat_map<str_hash, material_asset::ptr> materials_;
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<spine_player> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
spine_player& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
}
|
||||
210
headers/enduro2d/high/components/spine_player_cmd.hpp
Normal file
210
headers/enduro2d/high/components/spine_player_cmd.hpp
Normal file
@@ -0,0 +1,210 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../factory.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class spine_player_cmd final {
|
||||
public:
|
||||
class clear_track_cmd final {
|
||||
public:
|
||||
clear_track_cmd(u32 track)
|
||||
: track_(track) {}
|
||||
|
||||
u32 track() const noexcept { return track_; }
|
||||
private:
|
||||
u32 track_{0u};
|
||||
};
|
||||
|
||||
class set_anim_cmd final {
|
||||
public:
|
||||
set_anim_cmd(u32 track, str name)
|
||||
: track_(track)
|
||||
, name_(std::move(name)) {}
|
||||
|
||||
set_anim_cmd& loop(bool value) noexcept {
|
||||
loop_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
set_anim_cmd& end_message(str value) noexcept {
|
||||
end_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
set_anim_cmd& complete_message(str value) noexcept {
|
||||
complete_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 track() const noexcept { return track_; }
|
||||
const str& name() const noexcept { return name_; }
|
||||
bool loop() const noexcept { return loop_; }
|
||||
const str& end_message() const noexcept { return complete_message_; }
|
||||
const str& complete_message() const noexcept { return complete_message_; }
|
||||
private:
|
||||
u32 track_{0u};
|
||||
str name_;
|
||||
bool loop_{false};
|
||||
str end_message_;
|
||||
str complete_message_;
|
||||
};
|
||||
|
||||
class add_anim_cmd final {
|
||||
public:
|
||||
add_anim_cmd(u32 track, str name)
|
||||
: track_(track)
|
||||
, name_(std::move(name)) {}
|
||||
|
||||
add_anim_cmd& loop(bool value) noexcept {
|
||||
loop_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_anim_cmd& delay(secf value) noexcept {
|
||||
delay_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_anim_cmd& end_message(str value) noexcept {
|
||||
end_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_anim_cmd& complete_message(str value) noexcept {
|
||||
complete_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 track() const noexcept { return track_; }
|
||||
const str& name() const noexcept { return name_; }
|
||||
bool loop() const noexcept { return loop_; }
|
||||
secf delay() const noexcept { return delay_; }
|
||||
const str& end_message() const noexcept { return end_message_; }
|
||||
const str& complete_message() const noexcept { return complete_message_; }
|
||||
private:
|
||||
u32 track_{0u};
|
||||
str name_;
|
||||
bool loop_{false};
|
||||
secf delay_{0.f};
|
||||
str end_message_;
|
||||
str complete_message_;
|
||||
};
|
||||
|
||||
class set_empty_anim_cmd final {
|
||||
public:
|
||||
set_empty_anim_cmd(u32 track)
|
||||
: track_(track) {}
|
||||
|
||||
set_empty_anim_cmd& mix_duration(secf value) noexcept {
|
||||
mix_duration_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
set_empty_anim_cmd& end_message(str value) noexcept {
|
||||
end_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
set_empty_anim_cmd& complete_message(str value) noexcept {
|
||||
complete_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 track() const noexcept { return track_; }
|
||||
secf mix_duration() const noexcept { return mix_duration_; }
|
||||
const str& end_message() const noexcept { return end_message_; }
|
||||
const str& complete_message() const noexcept { return complete_message_; }
|
||||
private:
|
||||
u32 track_{0u};
|
||||
secf mix_duration_{0.f};
|
||||
str end_message_;
|
||||
str complete_message_;
|
||||
};
|
||||
|
||||
class add_empty_anim_cmd final {
|
||||
public:
|
||||
add_empty_anim_cmd(u32 track)
|
||||
: track_(track) {}
|
||||
|
||||
add_empty_anim_cmd& delay(secf value) noexcept {
|
||||
delay_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_empty_anim_cmd& mix_duration(secf value) noexcept {
|
||||
mix_duration_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_empty_anim_cmd& end_message(str value) noexcept {
|
||||
end_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
add_empty_anim_cmd& complete_message(str value) noexcept {
|
||||
complete_message_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 track() const noexcept { return track_; }
|
||||
secf delay() const noexcept { return delay_; }
|
||||
secf mix_duration() const noexcept { return mix_duration_; }
|
||||
const str& end_message() const noexcept { return end_message_; }
|
||||
const str& complete_message() const noexcept { return complete_message_; }
|
||||
private:
|
||||
u32 track_{0u};
|
||||
secf delay_{0.f};
|
||||
secf mix_duration_{0.f};
|
||||
str end_message_;
|
||||
str complete_message_;
|
||||
};
|
||||
|
||||
using command = std::variant<
|
||||
clear_track_cmd,
|
||||
set_anim_cmd,
|
||||
add_anim_cmd,
|
||||
set_empty_anim_cmd,
|
||||
add_empty_anim_cmd>;
|
||||
public:
|
||||
spine_player_cmd() = default;
|
||||
|
||||
spine_player_cmd& add_command(command cmd) {
|
||||
commands_.push_back(std::move(cmd));
|
||||
return *this;
|
||||
}
|
||||
|
||||
spine_player_cmd& clear_commands() noexcept {
|
||||
commands_.clear();
|
||||
return *this;
|
||||
}
|
||||
|
||||
const vector<command>& commands() const noexcept {
|
||||
return commands_;
|
||||
}
|
||||
private:
|
||||
vector<command> commands_;
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<spine_player_cmd> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
spine_player_cmd& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
}
|
||||
105
headers/enduro2d/high/components/spine_player_evt.hpp
Normal file
105
headers/enduro2d/high/components/spine_player_evt.hpp
Normal file
@@ -0,0 +1,105 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
#include "../factory.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class spine_player_evt final {
|
||||
public:
|
||||
class custom_evt final {
|
||||
public:
|
||||
custom_evt(str_hash name)
|
||||
: name_(name) {}
|
||||
|
||||
custom_evt& int_value(i32 value) noexcept {
|
||||
int_value_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
custom_evt& float_value(f32 value) noexcept {
|
||||
float_value_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
custom_evt& string_value(str value) noexcept {
|
||||
string_value_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
str_hash name() const noexcept { return name_; }
|
||||
i32 int_value() const noexcept { return int_value_; }
|
||||
f32 float_value() const noexcept { return float_value_; }
|
||||
const str& string_value() const noexcept { return string_value_; }
|
||||
private:
|
||||
str_hash name_;
|
||||
i32 int_value_{0};
|
||||
f32 float_value_{0.f};
|
||||
str string_value_;
|
||||
};
|
||||
|
||||
class end_evt final {
|
||||
public:
|
||||
end_evt(str message)
|
||||
: message_(std::move(message)) {}
|
||||
|
||||
const str& message() const noexcept { return message_; }
|
||||
private:
|
||||
str message_;
|
||||
};
|
||||
|
||||
class complete_evt final {
|
||||
public:
|
||||
complete_evt(str message)
|
||||
: message_(std::move(message)) {}
|
||||
|
||||
const str& message() const noexcept { return message_; }
|
||||
private:
|
||||
str message_;
|
||||
};
|
||||
|
||||
using event = std::variant<
|
||||
custom_evt,
|
||||
end_evt,
|
||||
complete_evt>;
|
||||
public:
|
||||
spine_player_evt() = default;
|
||||
|
||||
spine_player_evt& add_event(event evt) {
|
||||
events_.push_back(std::move(evt));
|
||||
return *this;
|
||||
}
|
||||
|
||||
spine_player_evt& clear_events() noexcept {
|
||||
events_.clear();
|
||||
return *this;
|
||||
}
|
||||
|
||||
const vector<event>& events() const noexcept {
|
||||
return events_;
|
||||
}
|
||||
private:
|
||||
vector<event> events_;
|
||||
};
|
||||
|
||||
template <>
|
||||
class factory_loader<spine_player_evt> final : factory_loader<> {
|
||||
public:
|
||||
static const char* schema_source;
|
||||
|
||||
bool operator()(
|
||||
spine_player_evt& component,
|
||||
const fill_context& ctx) const;
|
||||
|
||||
bool operator()(
|
||||
asset_dependencies& dependencies,
|
||||
const collect_context& ctx) const;
|
||||
};
|
||||
}
|
||||
@@ -11,10 +11,18 @@
|
||||
#include "../factory.hpp"
|
||||
#include "../assets/atlas_asset.hpp"
|
||||
#include "../assets/sprite_asset.hpp"
|
||||
#include "../assets/material_asset.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class sprite_renderer final {
|
||||
public:
|
||||
enum class blendings {
|
||||
normal,
|
||||
additive,
|
||||
multiply,
|
||||
screen
|
||||
};
|
||||
public:
|
||||
sprite_renderer() = default;
|
||||
sprite_renderer(const sprite_asset::ptr& sprite);
|
||||
@@ -22,15 +30,28 @@ namespace e2d
|
||||
sprite_renderer& tint(const color32& value) noexcept;
|
||||
const color32& tint() const noexcept;
|
||||
|
||||
sprite_renderer& blending(blendings value) noexcept;
|
||||
blendings blending() const noexcept;
|
||||
|
||||
sprite_renderer& filtering(bool value) noexcept;
|
||||
bool filtering() const noexcept;
|
||||
|
||||
sprite_renderer& sprite(const sprite_asset::ptr& value) noexcept;
|
||||
const sprite_asset::ptr& sprite() const noexcept;
|
||||
|
||||
sprite_renderer& materials(
|
||||
flat_map<str_hash, material_asset::ptr>&& value) noexcept;
|
||||
sprite_renderer& materials(
|
||||
const flat_map<str_hash, material_asset::ptr>& value);
|
||||
|
||||
material_asset::ptr find_material(str_hash name) const noexcept;
|
||||
const flat_map<str_hash, material_asset::ptr>& materials() const noexcept;
|
||||
private:
|
||||
color32 tint_ = color32::white();
|
||||
blendings blending_ = blendings::normal;
|
||||
bool filtering_ = true;
|
||||
sprite_asset::ptr sprite_;
|
||||
flat_map<str_hash, material_asset::ptr> materials_;
|
||||
};
|
||||
|
||||
template <>
|
||||
@@ -67,6 +88,15 @@ namespace e2d
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline sprite_renderer& sprite_renderer::blending(blendings value) noexcept {
|
||||
blending_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline sprite_renderer::blendings sprite_renderer::blending() const noexcept {
|
||||
return blending_;
|
||||
}
|
||||
|
||||
inline bool sprite_renderer::filtering() const noexcept {
|
||||
return filtering_;
|
||||
}
|
||||
@@ -79,4 +109,29 @@ namespace e2d
|
||||
inline const sprite_asset::ptr& sprite_renderer::sprite() const noexcept {
|
||||
return sprite_;
|
||||
}
|
||||
|
||||
inline sprite_renderer& sprite_renderer::materials(
|
||||
flat_map<str_hash, material_asset::ptr>&& value) noexcept
|
||||
{
|
||||
materials_ = std::move(value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline sprite_renderer& sprite_renderer::materials(
|
||||
const flat_map<str_hash, material_asset::ptr>& value)
|
||||
{
|
||||
materials_ = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline material_asset::ptr sprite_renderer::find_material(str_hash name) const noexcept {
|
||||
const auto iter = materials_.find(name);
|
||||
return iter != materials_.end()
|
||||
? iter->second
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
inline const flat_map<str_hash, material_asset::ptr>& sprite_renderer::materials() const noexcept {
|
||||
return materials_;
|
||||
}
|
||||
}
|
||||
|
||||
66
headers/enduro2d/high/spine.hpp
Normal file
66
headers/enduro2d/high/spine.hpp
Normal file
@@ -0,0 +1,66 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_high.hpp"
|
||||
|
||||
struct spAtlas;
|
||||
struct spSkeletonData;
|
||||
struct spAnimationStateData;
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class bad_spine_access final : public exception {
|
||||
public:
|
||||
const char* what() const noexcept final {
|
||||
return "bad spine access";
|
||||
}
|
||||
};
|
||||
|
||||
class spine final {
|
||||
public:
|
||||
using atlas_ptr = std::shared_ptr<spAtlas>;
|
||||
using skeleton_data_ptr = std::shared_ptr<spSkeletonData>;
|
||||
using animation_data_ptr = std::shared_ptr<spAnimationStateData>;
|
||||
public:
|
||||
spine() = default;
|
||||
~spine() noexcept = default;
|
||||
|
||||
spine(spine&& other) noexcept;
|
||||
spine& operator=(spine&& other) noexcept;
|
||||
|
||||
spine(const spine& other);
|
||||
spine& operator=(const spine& other);
|
||||
|
||||
void clear() noexcept;
|
||||
void swap(spine& other) noexcept;
|
||||
|
||||
spine& assign(spine&& other) noexcept;
|
||||
spine& assign(const spine& other);
|
||||
|
||||
spine& set_atlas(atlas_ptr atlas);
|
||||
spine& set_skeleton(skeleton_data_ptr skeleton);
|
||||
|
||||
spine& set_default_mix(secf duration);
|
||||
spine& set_animation_mix(
|
||||
const str& from,
|
||||
const str& to,
|
||||
secf duration);
|
||||
|
||||
const atlas_ptr& atlas() const noexcept;
|
||||
const skeleton_data_ptr& skeleton() const noexcept;
|
||||
const animation_data_ptr& animation() const noexcept;
|
||||
private:
|
||||
atlas_ptr atlas_;
|
||||
skeleton_data_ptr skeleton_;
|
||||
animation_data_ptr animation_;
|
||||
};
|
||||
|
||||
void swap(spine& l, spine& r) noexcept;
|
||||
bool operator==(const spine& l, const spine& r) noexcept;
|
||||
bool operator!=(const spine& l, const spine& r) noexcept;
|
||||
}
|
||||
22
headers/enduro2d/high/systems/label_system.hpp
Normal file
22
headers/enduro2d/high/systems/label_system.hpp
Normal file
@@ -0,0 +1,22 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class label_system final : public ecs::system {
|
||||
public:
|
||||
label_system();
|
||||
~label_system() noexcept final;
|
||||
void process(ecs::registry& owner) override;
|
||||
private:
|
||||
class internal_state;
|
||||
std::unique_ptr<internal_state> state_;
|
||||
};
|
||||
}
|
||||
32
headers/enduro2d/high/systems/spine_systems.hpp
Normal file
32
headers/enduro2d/high/systems/spine_systems.hpp
Normal file
@@ -0,0 +1,32 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../_high.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class spine_pre_system final : public ecs::system {
|
||||
public:
|
||||
spine_pre_system();
|
||||
~spine_pre_system() noexcept final;
|
||||
void process(ecs::registry& owner) override;
|
||||
private:
|
||||
class internal_state;
|
||||
std::unique_ptr<internal_state> state_;
|
||||
};
|
||||
|
||||
class spine_post_system final : public ecs::system {
|
||||
public:
|
||||
spine_post_system();
|
||||
~spine_post_system() noexcept final;
|
||||
void process(ecs::registry& owner) override;
|
||||
private:
|
||||
class internal_state;
|
||||
std::unique_ptr<internal_state> state_;
|
||||
};
|
||||
}
|
||||
@@ -570,21 +570,59 @@ namespace e2d::math
|
||||
}
|
||||
|
||||
//
|
||||
// min/max/minmax
|
||||
// min
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
min(T v) noexcept {
|
||||
return v;
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
min(T l, T r) noexcept {
|
||||
return l < r ? l : r;
|
||||
}
|
||||
|
||||
template < typename T, typename... Ts >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
min(T a, T b, T c, Ts... ts) noexcept {
|
||||
return min(a < b ? a : b, c, ts...);
|
||||
}
|
||||
|
||||
//
|
||||
// max
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
max(T v) noexcept {
|
||||
return v;
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
max(T l, T r) noexcept {
|
||||
return l < r ? r : l;
|
||||
}
|
||||
|
||||
template < typename T, typename... Ts >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, T>
|
||||
max(T a, T b, T c, Ts... ts) noexcept {
|
||||
return max(a < b ? b : a, c, ts...);
|
||||
}
|
||||
|
||||
//
|
||||
// minmax
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, std::pair<T,T>>
|
||||
minmax(T v) noexcept {
|
||||
return std::make_pair(v, v);
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, std::pair<T,T>>
|
||||
minmax(T l, T r) noexcept {
|
||||
@@ -593,6 +631,14 @@ namespace e2d::math
|
||||
: std::make_pair(r, l);
|
||||
}
|
||||
|
||||
template < typename T, typename... Ts >
|
||||
std::enable_if_t<std::is_arithmetic_v<T>, std::pair<T,T>>
|
||||
minmax(T a, T b, T c, Ts... ts) noexcept {
|
||||
return std::make_pair(
|
||||
min(a, b, c, ts...),
|
||||
max(a, b, c, ts...));
|
||||
}
|
||||
|
||||
//
|
||||
// clamp/saturate
|
||||
//
|
||||
|
||||
@@ -512,12 +512,12 @@ namespace e2d::math
|
||||
}
|
||||
|
||||
//
|
||||
// make_loot_at_lh_matrix4
|
||||
// make_look_at_lh_matrix4
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_floating_point_v<T>, mat4<T>>
|
||||
make_loot_at_lh_matrix4(const vec3<T>& eye, const vec3<T>& at, const vec3<T>& up) noexcept {
|
||||
make_look_at_lh_matrix4(const vec3<T>& eye, const vec3<T>& at, const vec3<T>& up) noexcept {
|
||||
const vec3<T> az = normalized(at - eye);
|
||||
const vec3<T> ax = normalized(math::cross(up, az));
|
||||
const vec3<T> ay = math::cross(az, ax);
|
||||
@@ -532,12 +532,12 @@ namespace e2d::math
|
||||
}
|
||||
|
||||
//
|
||||
// make_loot_at_rh_matrix4
|
||||
// make_look_at_rh_matrix4
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
std::enable_if_t<std::is_floating_point_v<T>, mat4<T>>
|
||||
make_loot_at_rh_matrix4(const vec3<T>& eye, const vec3<T>& at, const vec3<T>& up) noexcept {
|
||||
make_look_at_rh_matrix4(const vec3<T>& eye, const vec3<T>& at, const vec3<T>& up) noexcept {
|
||||
const vec3<T> az = normalized(eye - at);
|
||||
const vec3<T> ax = normalized(math::cross(up, az));
|
||||
const vec3<T> ay = math::cross(az, ax);
|
||||
|
||||
@@ -522,12 +522,12 @@ namespace e2d::math
|
||||
|
||||
template < typename T >
|
||||
T minimum(const vec3<T>& v) noexcept {
|
||||
return math::min(math::min(v.x, v.y), v.z);
|
||||
return math::min(v.x, v.y, v.z);
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
T maximum(const vec3<T>& v) noexcept {
|
||||
return math::max(math::max(v.x, v.y), v.z);
|
||||
return math::max(v.x, v.y, v.z);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -553,12 +553,12 @@ namespace e2d::math
|
||||
|
||||
template < typename T >
|
||||
T minimum(const vec4<T>& v) noexcept {
|
||||
return math::min(math::min(math::min(v.x, v.y), v.z), v.w);
|
||||
return math::min(v.x, v.y, v.z, v.w);
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
T maximum(const vec4<T>& v) noexcept {
|
||||
return math::max(math::max(math::max(v.x, v.y), v.z), v.w);
|
||||
return math::max(v.x, v.y, v.z, v.w);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "color32.hpp"
|
||||
#include "filesystem.hpp"
|
||||
#include "filesystem.inl"
|
||||
#include "font.hpp"
|
||||
#include "image.hpp"
|
||||
#include "intrusive_list.hpp"
|
||||
#include "intrusive_ptr.hpp"
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace e2d
|
||||
class color32;
|
||||
class read_file;
|
||||
class write_file;
|
||||
class font;
|
||||
class image;
|
||||
class mesh;
|
||||
class shape;
|
||||
@@ -66,7 +67,7 @@ namespace e2d
|
||||
using milliseconds = unit<T, milliseconds_tag>;
|
||||
template < typename T >
|
||||
using microseconds = unit<T, microseconds_tag>;
|
||||
|
||||
|
||||
using secf = seconds<f32>;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,9 @@ namespace e2d
|
||||
template < typename T >
|
||||
buffer_view(const vector<T>& buffer) noexcept;
|
||||
|
||||
template < typename Char >
|
||||
buffer_view(const basic_string<Char>& buffer) noexcept;
|
||||
|
||||
template < typename T, std::size_t N >
|
||||
buffer_view(const std::array<T,N>& buffer) noexcept;
|
||||
|
||||
@@ -37,6 +40,8 @@ namespace e2d
|
||||
std::size_t size() const noexcept;
|
||||
bool empty() const noexcept;
|
||||
void swap(buffer_view& other) noexcept;
|
||||
|
||||
explicit operator buffer();
|
||||
private:
|
||||
const void* data_ = nullptr;
|
||||
std::size_t size_ = 0;
|
||||
@@ -55,6 +60,11 @@ namespace e2d
|
||||
: data_(buffer.data())
|
||||
, size_(buffer.size() * sizeof(T)) {}
|
||||
|
||||
template < typename Char >
|
||||
buffer_view::buffer_view(const basic_string<Char>& buffer) noexcept
|
||||
: data_(buffer.data())
|
||||
, size_(buffer.size() * sizeof(Char)) {}
|
||||
|
||||
template < typename T, std::size_t N >
|
||||
buffer_view::buffer_view(const std::array<T,N>& buffer) noexcept
|
||||
: data_(buffer.data())
|
||||
|
||||
@@ -55,6 +55,9 @@ namespace e2d
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
vec3<f32> make_vec3(const color& c) noexcept;
|
||||
vec4<f32> make_vec4(const color& c) noexcept;
|
||||
|
||||
bool operator<(const color& l, const color& r) noexcept;
|
||||
bool operator==(const color& l, const color& r) noexcept;
|
||||
bool operator!=(const color& l, const color& r) noexcept;
|
||||
|
||||
@@ -55,6 +55,9 @@ namespace e2d
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
vec3<u8> make_vec3(const color32& c) noexcept;
|
||||
vec4<u8> make_vec4(const color32& c) noexcept;
|
||||
|
||||
bool operator<(const color32& l, const color32& r) noexcept;
|
||||
bool operator==(const color32& l, const color32& r) noexcept;
|
||||
bool operator!=(const color32& l, const color32& r) noexcept;
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
#include "streams.hpp"
|
||||
|
||||
namespace e2d
|
||||
@@ -73,9 +76,7 @@ namespace e2d::filesystem
|
||||
|
||||
bool try_read_all(str& dst, str_view path) noexcept;
|
||||
bool try_read_all(buffer& dst, str_view path) noexcept;
|
||||
|
||||
bool try_write_all(const str& src, str_view path, bool append) noexcept;
|
||||
bool try_write_all(const buffer& src, str_view path, bool append) noexcept;
|
||||
bool try_write_all(buffer_view src, str_view path, bool append) noexcept;
|
||||
|
||||
enum class predef_path {
|
||||
home,
|
||||
|
||||
88
headers/enduro2d/utils/font.hpp
Normal file
88
headers/enduro2d/utils/font.hpp
Normal file
@@ -0,0 +1,88 @@
|
||||
/*******************************************************************************
|
||||
* This file is part of the "Enduro2D"
|
||||
* For conditions of distribution and use, see copyright notice in LICENSE.md
|
||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
#include "streams.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class font final {
|
||||
public:
|
||||
struct font_info {
|
||||
str atlas_file;
|
||||
v2u atlas_size;
|
||||
u32 font_size{0};
|
||||
u32 line_height{0};
|
||||
u32 glyph_ascent{0};
|
||||
};
|
||||
|
||||
struct glyph_info {
|
||||
v2i offset;
|
||||
b2u tex_rect;
|
||||
i32 advance{0};
|
||||
};
|
||||
|
||||
struct content {
|
||||
font_info info;
|
||||
flat_map<u64, i32> kernings;
|
||||
flat_map<u32, glyph_info> glyphs;
|
||||
};
|
||||
public:
|
||||
font() = default;
|
||||
|
||||
font(font&& other) noexcept;
|
||||
font& operator=(font&& other) noexcept;
|
||||
|
||||
font(const font& other);
|
||||
font& operator=(const font& other);
|
||||
|
||||
font(content&& content) noexcept;
|
||||
font(const content& content);
|
||||
|
||||
font& assign(font&& other) noexcept;
|
||||
font& assign(const font& other);
|
||||
|
||||
font& assign(content&& content) noexcept;
|
||||
font& assign(const content& content);
|
||||
|
||||
void swap(font& other) noexcept;
|
||||
void clear() noexcept;
|
||||
bool empty() const noexcept;
|
||||
|
||||
const font_info& info() const noexcept;
|
||||
const flat_map<u64, i32>& kernings() const noexcept;
|
||||
const flat_map<u32, glyph_info>& glyphs() const noexcept;
|
||||
|
||||
i32 get_kerning(u32 first, u32 second) const noexcept;
|
||||
const glyph_info* find_glyph(u32 code_point) const noexcept;
|
||||
private:
|
||||
content content_;
|
||||
};
|
||||
|
||||
void swap(font& l, font& r) noexcept;
|
||||
bool operator==(const font& l, const font& r) noexcept;
|
||||
bool operator!=(const font& l, const font& r) noexcept;
|
||||
|
||||
bool operator==(const font::font_info& l, const font::font_info& r) noexcept;
|
||||
bool operator==(const font::glyph_info& l, const font::glyph_info& r) noexcept;
|
||||
bool operator==(const font::content& l, const font::content& r) noexcept;
|
||||
}
|
||||
|
||||
namespace e2d::fonts
|
||||
{
|
||||
bool try_load_font(
|
||||
font& dst,
|
||||
buffer_view src) noexcept;
|
||||
|
||||
bool try_load_font(
|
||||
font& dst,
|
||||
const input_stream_uptr& src) noexcept;
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "color.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
#include "color32.hpp"
|
||||
#include "streams.hpp"
|
||||
|
||||
@@ -24,19 +24,30 @@ namespace e2d
|
||||
};
|
||||
|
||||
enum class image_data_format : u8 {
|
||||
g8,
|
||||
ga8,
|
||||
a8,
|
||||
l8,
|
||||
la8,
|
||||
rgb8,
|
||||
rgba8,
|
||||
|
||||
rgb_dxt1,
|
||||
rgba_dxt1,
|
||||
rgba_dxt3,
|
||||
rgba_dxt5,
|
||||
|
||||
rgb_etc1,
|
||||
rgb_etc2,
|
||||
rgba_etc2,
|
||||
rgb_a1_etc2,
|
||||
|
||||
rgba_astc4x4,
|
||||
rgba_astc5x5,
|
||||
rgba_astc6x6,
|
||||
rgba_astc8x8,
|
||||
rgba_astc10x10,
|
||||
rgba_astc12x12,
|
||||
|
||||
rgb_pvrtc2,
|
||||
rgb_pvrtc4,
|
||||
|
||||
rgba_pvrtc2,
|
||||
rgba_pvrtc4,
|
||||
|
||||
@@ -74,8 +85,6 @@ namespace e2d
|
||||
void clear() noexcept;
|
||||
bool empty() const noexcept;
|
||||
|
||||
color pixel(u32 u, u32 v) const;
|
||||
color pixel(const v2u& uv) const;
|
||||
color32 pixel32(u32 u, u32 v) const;
|
||||
color32 pixel32(const v2u& uv) const;
|
||||
|
||||
@@ -97,7 +106,7 @@ namespace e2d::images
|
||||
{
|
||||
bool try_load_image(
|
||||
image& dst,
|
||||
const buffer& src) noexcept;
|
||||
buffer_view src) noexcept;
|
||||
|
||||
bool try_load_image(
|
||||
image& dst,
|
||||
@@ -112,4 +121,8 @@ namespace e2d::images
|
||||
const image& src,
|
||||
image_file_format format,
|
||||
const output_stream_uptr& dst) noexcept;
|
||||
|
||||
bool check_save_image_support(
|
||||
const image& src,
|
||||
image_file_format format) noexcept;
|
||||
}
|
||||
|
||||
@@ -113,6 +113,13 @@ namespace e2d::json_utils
|
||||
v = math::numeric_cast<T>(root.GetFloat());
|
||||
return true;
|
||||
}
|
||||
|
||||
template < typename T, typename Tag >
|
||||
std::enable_if_t<
|
||||
std::is_arithmetic_v<T>, bool>
|
||||
try_parse_value(const rapidjson::Value& root, unit<T, Tag>& v) noexcept {
|
||||
return try_parse_value(root, v.value);
|
||||
}
|
||||
}
|
||||
|
||||
namespace e2d::json_utils
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
#include "color32.hpp"
|
||||
#include "streams.hpp"
|
||||
|
||||
@@ -101,7 +102,7 @@ namespace e2d::meshes
|
||||
{
|
||||
bool try_load_mesh(
|
||||
mesh& dst,
|
||||
const buffer& src) noexcept;
|
||||
buffer_view src) noexcept;
|
||||
|
||||
bool try_load_mesh(
|
||||
mesh& dst,
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
#include "color32.hpp"
|
||||
#include "streams.hpp"
|
||||
|
||||
@@ -81,7 +82,7 @@ namespace e2d::shapes
|
||||
{
|
||||
bool try_load_shape(
|
||||
shape& dst,
|
||||
const buffer& src) noexcept;
|
||||
buffer_view src) noexcept;
|
||||
|
||||
bool try_load_shape(
|
||||
shape& dst,
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
|
||||
#include "_utils.hpp"
|
||||
|
||||
#include "buffer.hpp"
|
||||
#include "buffer_view.hpp"
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
class bad_stream_operation final : public exception {
|
||||
@@ -78,8 +81,7 @@ namespace e2d
|
||||
|
||||
output_sequence& seek(std::ptrdiff_t offset, bool relative) noexcept;
|
||||
output_sequence& write(const void* src, std::size_t size) noexcept;
|
||||
output_sequence& write_all(const str& src) noexcept;
|
||||
output_sequence& write_all(const buffer& src) noexcept;
|
||||
output_sequence& write_all(buffer_view src) noexcept;
|
||||
|
||||
output_sequence& flush() noexcept;
|
||||
output_sequence& flush_if(bool yesno) noexcept;
|
||||
@@ -112,11 +114,7 @@ namespace e2d::streams
|
||||
const input_stream_uptr& stream) noexcept;
|
||||
|
||||
bool try_write_tail(
|
||||
const str& src,
|
||||
const output_stream_uptr& stream) noexcept;
|
||||
|
||||
bool try_write_tail(
|
||||
const buffer& src,
|
||||
buffer_view src,
|
||||
const output_stream_uptr& stream) noexcept;
|
||||
}
|
||||
|
||||
|
||||
Submodule modules/catch2 updated: 0c27554af5...ce42deb72f
Submodule modules/ecs.hpp updated: f10e0767fa...c463820321
Submodule modules/glew updated: 2545ef4e02...41c88953cd
Submodule modules/glfw updated: 3a5e99e59a...2c7ef5b480
Submodule modules/imgui updated: 71d20abbc3...a33cedda14
Submodule modules/pugixml updated: 5a867cb1e3...fdf0295753
1
modules/spine
Submodule
1
modules/spine
Submodule
Submodule modules/spine added at 45b8125a8e
Submodule modules/stb updated: c72a95d766...052dce117e
Submodule modules/utfcpp updated: 2370b95a86...170e2d11f5
Submodule modules/variant deleted from 00590420f8
@@ -36,3 +36,4 @@ add_e2d_sample(02)
|
||||
add_e2d_sample(03)
|
||||
add_e2d_sample(04)
|
||||
add_e2d_sample(05)
|
||||
add_e2d_sample(06)
|
||||
|
||||
713
samples/bin/library/fonts/arial_bm.fnt
Normal file
713
samples/bin/library/fonts/arial_bm.fnt
Normal file
@@ -0,0 +1,713 @@
|
||||
info face="Arial" size=50 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=3
|
||||
common lineHeight=50 base=40 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=1 greenChnl=3 blueChnl=3
|
||||
page id=0 file="arial_bm.png"
|
||||
chars count=161
|
||||
char id=32 x=0 y=395 width=11 height=9 xoffset=-5 yoffset=45 xadvance=12 page=0 chnl=15
|
||||
char id=33 x=350 y=255 width=14 height=40 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15
|
||||
char id=34 x=343 y=361 width=21 height=19 xoffset=-3 yoffset=4 xadvance=16 page=0 chnl=15
|
||||
char id=35 x=68 y=216 width=33 height=40 xoffset=-5 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=36 x=446 y=0 width=30 height=46 xoffset=-3 yoffset=2 xadvance=24 page=0 chnl=15
|
||||
char id=37 x=347 y=49 width=43 height=40 xoffset=-2 yoffset=4 xadvance=39 page=0 chnl=15
|
||||
char id=38 x=229 y=132 width=36 height=40 xoffset=-3 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=39 x=494 y=323 width=14 height=19 xoffset=-3 yoffset=4 xadvance=8 page=0 chnl=15
|
||||
char id=40 x=225 y=0 width=20 height=49 xoffset=-2 yoffset=4 xadvance=15 page=0 chnl=15
|
||||
char id=41 x=246 y=0 width=20 height=49 xoffset=-2 yoffset=4 xadvance=15 page=0 chnl=15
|
||||
char id=42 x=319 y=361 width=23 height=21 xoffset=-3 yoffset=4 xadvance=17 page=0 chnl=15
|
||||
char id=43 x=167 y=363 width=30 height=30 xoffset=-2 yoffset=10 xadvance=26 page=0 chnl=15
|
||||
char id=44 x=365 y=361 width=14 height=19 xoffset=-1 yoffset=32 xadvance=12 page=0 chnl=15
|
||||
char id=45 x=466 y=358 width=21 height=12 xoffset=-3 yoffset=23 xadvance=15 page=0 chnl=15
|
||||
char id=46 x=488 y=358 width=14 height=12 xoffset=-1 yoffset=32 xadvance=12 page=0 chnl=15
|
||||
char id=47 x=267 y=255 width=22 height=40 xoffset=-5 yoffset=4 xadvance=12 page=0 chnl=15
|
||||
char id=48 x=326 y=214 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=49 x=313 y=255 width=21 height=40 xoffset=0 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=50 x=93 y=257 width=29 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=51 x=295 y=214 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=52 x=168 y=215 width=31 height=40 xoffset=-4 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=53 x=357 y=214 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=54 x=419 y=212 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=55 x=450 y=212 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=56 x=481 y=211 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=57 x=0 y=257 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=58 x=497 y=252 width=14 height=31 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=15
|
||||
char id=59 x=447 y=253 width=14 height=38 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=15
|
||||
char id=60 x=198 y=362 width=30 height=29 xoffset=-2 yoffset=10 xadvance=26 page=0 chnl=15
|
||||
char id=61 x=288 y=361 width=30 height=21 xoffset=-2 yoffset=14 xadvance=26 page=0 chnl=15
|
||||
char id=62 x=229 y=362 width=30 height=29 xoffset=-2 yoffset=10 xadvance=26 page=0 chnl=15
|
||||
char id=63 x=388 y=213 width=30 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=64 x=0 y=0 width=50 height=49 xoffset=-2 yoffset=4 xadvance=45 page=0 chnl=15
|
||||
char id=65 x=286 y=91 width=39 height=40 xoffset=-5 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=66 x=315 y=173 width=33 height=40 xoffset=-2 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=67 x=444 y=88 width=38 height=40 xoffset=-3 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=68 x=376 y=131 width=35 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=69 x=102 y=216 width=32 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=70 x=232 y=215 width=31 height=40 xoffset=-1 yoffset=4 xadvance=27 page=0 chnl=15
|
||||
char id=71 x=405 y=89 width=38 height=40 xoffset=-2 yoffset=4 xadvance=34 page=0 chnl=15
|
||||
char id=72 x=245 y=173 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=73 x=335 y=255 width=14 height=40 xoffset=-1 yoffset=4 xadvance=12 page=0 chnl=15
|
||||
char id=74 x=485 y=165 width=26 height=40 xoffset=-3 yoffset=4 xadvance=22 page=0 chnl=15
|
||||
char id=75 x=340 y=132 width=35 height=40 xoffset=-2 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=76 x=123 y=257 width=29 height=40 xoffset=-2 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=77 x=166 y=92 width=39 height=40 xoffset=-1 yoffset=4 xadvance=37 page=0 chnl=15
|
||||
char id=78 x=140 y=174 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=79 x=84 y=92 width=40 height=40 xoffset=-3 yoffset=4 xadvance=34 page=0 chnl=15
|
||||
char id=80 x=0 y=216 width=33 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=81 x=0 y=50 width=40 height=42 xoffset=-3 yoffset=4 xadvance=34 page=0 chnl=15
|
||||
char id=82 x=115 y=133 width=37 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=83 x=448 y=129 width=34 height=40 xoffset=-3 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=84 x=0 y=175 width=34 height=40 xoffset=-4 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=85 x=35 y=175 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=86 x=0 y=134 width=38 height=40 xoffset=-4 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=87 x=194 y=50 width=52 height=40 xoffset=-4 yoffset=4 xadvance=44 page=0 chnl=15
|
||||
char id=88 x=39 y=134 width=37 height=40 xoffset=-4 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=89 x=303 y=132 width=36 height=40 xoffset=-4 yoffset=4 xadvance=28 page=0 chnl=15
|
||||
char id=90 x=412 y=130 width=35 height=40 xoffset=-4 yoffset=4 xadvance=27 page=0 chnl=15
|
||||
char id=91 x=306 y=0 width=18 height=49 xoffset=-2 yoffset=4 xadvance=12 page=0 chnl=15
|
||||
char id=92 x=290 y=255 width=22 height=40 xoffset=-5 yoffset=4 xadvance=12 page=0 chnl=15
|
||||
char id=93 x=287 y=0 width=18 height=49 xoffset=-4 yoffset=4 xadvance=12 page=0 chnl=15
|
||||
char id=94 x=260 y=362 width=27 height=25 xoffset=-4 yoffset=4 xadvance=19 page=0 chnl=15
|
||||
char id=95 x=431 y=361 width=34 height=12 xoffset=-5 yoffset=41 xadvance=24 page=0 chnl=15
|
||||
char id=96 x=413 y=361 width=17 height=14 xoffset=-2 yoffset=4 xadvance=15 page=0 chnl=15
|
||||
char id=97 x=144 y=298 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=98 x=264 y=214 width=30 height=40 xoffset=-2 yoffset=4 xadvance=25 page=0 chnl=15
|
||||
char id=99 x=268 y=296 width=29 height=32 xoffset=-3 yoffset=12 xadvance=22 page=0 chnl=15
|
||||
char id=100 x=213 y=256 width=29 height=40 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=101 x=82 y=298 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=102 x=243 y=256 width=23 height=40 xoffset=-4 yoffset=4 xadvance=13 page=0 chnl=15
|
||||
char id=103 x=134 y=50 width=29 height=41 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=104 x=483 y=83 width=28 height=40 xoffset=-2 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=105 x=380 y=255 width=14 height=40 xoffset=-2 yoffset=4 xadvance=10 page=0 chnl=15
|
||||
char id=106 x=267 y=0 width=19 height=49 xoffset=-7 yoffset=4 xadvance=10 page=0 chnl=15
|
||||
char id=107 x=483 y=124 width=28 height=40 xoffset=-2 yoffset=4 xadvance=22 page=0 chnl=15
|
||||
char id=108 x=365 y=255 width=14 height=40 xoffset=-2 yoffset=4 xadvance=10 page=0 chnl=15
|
||||
char id=109 x=0 y=298 width=42 height=32 xoffset=-2 yoffset=12 xadvance=38 page=0 chnl=15
|
||||
char id=110 x=387 y=296 width=28 height=32 xoffset=-2 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=111 x=206 y=297 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=112 x=72 y=50 width=30 height=41 xoffset=-2 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=113 x=41 y=50 width=30 height=41 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=114 x=443 y=293 width=22 height=32 xoffset=-2 yoffset=12 xadvance=15 page=0 chnl=15
|
||||
char id=115 x=358 y=296 width=28 height=32 xoffset=-3 yoffset=12 xadvance=22 page=0 chnl=15
|
||||
char id=116 x=426 y=253 width=20 height=39 xoffset=-4 yoffset=5 xadvance=12 page=0 chnl=15
|
||||
char id=117 x=29 y=363 width=28 height=31 xoffset=-2 yoffset=13 xadvance=24 page=0 chnl=15
|
||||
char id=118 x=221 y=330 width=31 height=31 xoffset=-4 yoffset=13 xadvance=23 page=0 chnl=15
|
||||
char id=119 x=466 y=291 width=41 height=31 xoffset=-4 yoffset=13 xadvance=33 page=0 chnl=15
|
||||
char id=120 x=284 y=329 width=30 height=31 xoffset=-4 yoffset=13 xadvance=22 page=0 chnl=15
|
||||
char id=121 x=153 y=256 width=29 height=40 xoffset=-4 yoffset=13 xadvance=21 page=0 chnl=15
|
||||
char id=122 x=315 y=329 width=30 height=31 xoffset=-4 yoffset=13 xadvance=22 page=0 chnl=15
|
||||
char id=123 x=178 y=0 width=23 height=49 xoffset=-4 yoffset=4 xadvance=15 page=0 chnl=15
|
||||
char id=124 x=325 y=0 width=13 height=49 xoffset=-1 yoffset=4 xadvance=11 page=0 chnl=15
|
||||
char id=125 x=202 y=0 width=22 height=49 xoffset=-4 yoffset=4 xadvance=15 page=0 chnl=15
|
||||
char id=126 x=380 y=361 width=32 height=16 xoffset=-3 yoffset=17 xadvance=26 page=0 chnl=15
|
||||
char id=1025 x=413 y=0 width=32 height=46 xoffset=-1 yoffset=-2 xadvance=29 page=0 chnl=15
|
||||
char id=1040 x=326 y=91 width=39 height=40 xoffset=-5 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1041 x=34 y=216 width=33 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1042 x=451 y=170 width=33 height=40 xoffset=-2 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1043 x=31 y=257 width=30 height=40 xoffset=-1 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=1044 x=374 y=0 width=38 height=47 xoffset=-5 yoffset=4 xadvance=30 page=0 chnl=15
|
||||
char id=1045 x=135 y=215 width=32 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1046 x=247 y=50 width=50 height=40 xoffset=-4 yoffset=4 xadvance=41 page=0 chnl=15
|
||||
char id=1047 x=383 y=172 width=33 height=40 xoffset=-3 yoffset=4 xadvance=27 page=0 chnl=15
|
||||
char id=1048 x=210 y=174 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1049 x=339 y=0 width=34 height=48 xoffset=-1 yoffset=-4 xadvance=32 page=0 chnl=15
|
||||
char id=1050 x=200 y=215 width=31 height=40 xoffset=-1 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=1051 x=70 y=175 width=34 height=40 xoffset=-4 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1052 x=206 y=91 width=39 height=40 xoffset=-1 yoffset=4 xadvance=37 page=0 chnl=15
|
||||
char id=1053 x=105 y=174 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1054 x=125 y=92 width=40 height=40 xoffset=-3 yoffset=4 xadvance=34 page=0 chnl=15
|
||||
char id=1055 x=175 y=174 width=34 height=40 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1056 x=478 y=42 width=33 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1057 x=366 y=90 width=38 height=40 xoffset=-3 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1058 x=280 y=173 width=34 height=40 xoffset=-4 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=1059 x=266 y=132 width=36 height=40 xoffset=-4 yoffset=4 xadvance=28 page=0 chnl=15
|
||||
char id=1060 x=246 y=91 width=39 height=40 xoffset=-3 yoffset=4 xadvance=33 page=0 chnl=15
|
||||
char id=1061 x=77 y=133 width=37 height=40 xoffset=-4 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1062 x=140 y=0 width=37 height=49 xoffset=-1 yoffset=4 xadvance=33 page=0 chnl=15
|
||||
char id=1063 x=349 y=173 width=33 height=40 xoffset=-3 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1064 x=435 y=47 width=42 height=40 xoffset=-1 yoffset=4 xadvance=40 page=0 chnl=15
|
||||
char id=1065 x=51 y=0 width=45 height=49 xoffset=-1 yoffset=4 xadvance=41 page=0 chnl=15
|
||||
char id=1066 x=391 y=48 width=43 height=40 xoffset=-5 yoffset=4 xadvance=35 page=0 chnl=15
|
||||
char id=1067 x=42 y=92 width=41 height=40 xoffset=-1 yoffset=4 xadvance=39 page=0 chnl=15
|
||||
char id=1068 x=417 y=171 width=33 height=40 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=15
|
||||
char id=1069 x=153 y=133 width=37 height=40 xoffset=-3 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1070 x=298 y=50 width=48 height=40 xoffset=-1 yoffset=4 xadvance=44 page=0 chnl=15
|
||||
char id=1071 x=191 y=133 width=37 height=40 xoffset=-4 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=1072 x=237 y=297 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=1073 x=477 y=0 width=31 height=41 xoffset=-3 yoffset=3 xadvance=25 page=0 chnl=15
|
||||
char id=1074 x=465 y=326 width=28 height=31 xoffset=-2 yoffset=13 xadvance=23 page=0 chnl=15
|
||||
char id=1075 x=143 y=363 width=23 height=31 xoffset=-2 yoffset=13 xadvance=16 page=0 chnl=15
|
||||
char id=1076 x=462 y=253 width=34 height=37 xoffset=-5 yoffset=13 xadvance=26 page=0 chnl=15
|
||||
char id=1077 x=175 y=297 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=1078 x=40 y=331 width=39 height=31 xoffset=-5 yoffset=13 xadvance=29 page=0 chnl=15
|
||||
char id=1079 x=416 y=294 width=26 height=32 xoffset=-3 yoffset=12 xadvance=20 page=0 chnl=15
|
||||
char id=1080 x=377 y=329 width=29 height=31 xoffset=-2 yoffset=13 xadvance=25 page=0 chnl=15
|
||||
char id=1081 x=164 y=50 width=29 height=41 xoffset=-2 yoffset=3 xadvance=25 page=0 chnl=15
|
||||
char id=1082 x=116 y=363 width=26 height=31 xoffset=-2 yoffset=13 xadvance=19 page=0 chnl=15
|
||||
char id=1083 x=188 y=330 width=32 height=31 xoffset=-4 yoffset=13 xadvance=26 page=0 chnl=15
|
||||
char id=1084 x=153 y=331 width=34 height=31 xoffset=-2 yoffset=13 xadvance=30 page=0 chnl=15
|
||||
char id=1085 x=58 y=363 width=28 height=31 xoffset=-2 yoffset=13 xadvance=24 page=0 chnl=15
|
||||
char id=1086 x=113 y=298 width=30 height=32 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=15
|
||||
char id=1087 x=87 y=363 width=28 height=31 xoffset=-2 yoffset=13 xadvance=24 page=0 chnl=15
|
||||
char id=1088 x=103 y=50 width=30 height=41 xoffset=-2 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=1089 x=298 y=296 width=29 height=32 xoffset=-3 yoffset=12 xadvance=22 page=0 chnl=15
|
||||
char id=1090 x=436 y=327 width=28 height=31 xoffset=-4 yoffset=13 xadvance=20 page=0 chnl=15
|
||||
char id=1091 x=183 y=256 width=29 height=40 xoffset=-4 yoffset=13 xadvance=21 page=0 chnl=15
|
||||
char id=1092 x=97 y=0 width=42 height=49 xoffset=-3 yoffset=4 xadvance=36 page=0 chnl=15
|
||||
char id=1093 x=253 y=330 width=30 height=31 xoffset=-4 yoffset=13 xadvance=22 page=0 chnl=15
|
||||
char id=1094 x=62 y=257 width=30 height=40 xoffset=-2 yoffset=13 xadvance=25 page=0 chnl=15
|
||||
char id=1095 x=407 y=329 width=28 height=31 xoffset=-3 yoffset=13 xadvance=23 page=0 chnl=15
|
||||
char id=1096 x=0 y=331 width=39 height=31 xoffset=-2 yoffset=13 xadvance=35 page=0 chnl=15
|
||||
char id=1097 x=0 y=93 width=41 height=40 xoffset=-2 yoffset=13 xadvance=36 page=0 chnl=15
|
||||
char id=1098 x=117 y=331 width=35 height=31 xoffset=-4 yoffset=13 xadvance=28 page=0 chnl=15
|
||||
char id=1099 x=80 y=331 width=36 height=31 xoffset=-2 yoffset=13 xadvance=32 page=0 chnl=15
|
||||
char id=1100 x=0 y=363 width=28 height=31 xoffset=-2 yoffset=13 xadvance=23 page=0 chnl=15
|
||||
char id=1101 x=328 y=296 width=29 height=32 xoffset=-4 yoffset=12 xadvance=22 page=0 chnl=15
|
||||
char id=1102 x=43 y=298 width=38 height=32 xoffset=-2 yoffset=12 xadvance=33 page=0 chnl=15
|
||||
char id=1103 x=346 y=329 width=30 height=31 xoffset=-4 yoffset=13 xadvance=24 page=0 chnl=15
|
||||
char id=1105 x=395 y=254 width=30 height=39 xoffset=-3 yoffset=5 xadvance=24 page=0 chnl=15
|
||||
kernings count=547
|
||||
kerning first=32 second=65 amount=-2
|
||||
kerning first=32 second=84 amount=-1
|
||||
kerning first=32 second=89 amount=-1
|
||||
kerning first=1102 second=1095 amount=-1
|
||||
kerning first=1102 second=1093 amount=-1
|
||||
kerning first=1102 second=1090 amount=-1
|
||||
kerning first=1102 second=1084 amount=-1
|
||||
kerning first=1102 second=1083 amount=-1
|
||||
kerning first=1102 second=1078 amount=-1
|
||||
kerning first=1102 second=1076 amount=-1
|
||||
kerning first=49 second=49 amount=-3
|
||||
kerning first=65 second=32 amount=-2
|
||||
kerning first=65 second=84 amount=-3
|
||||
kerning first=65 second=86 amount=-3
|
||||
kerning first=65 second=87 amount=-2
|
||||
kerning first=65 second=89 amount=-3
|
||||
kerning first=65 second=118 amount=-1
|
||||
kerning first=65 second=119 amount=-1
|
||||
kerning first=65 second=121 amount=-1
|
||||
kerning first=1101 second=1103 amount=-1
|
||||
kerning first=70 second=44 amount=-5
|
||||
kerning first=70 second=46 amount=-5
|
||||
kerning first=70 second=65 amount=-2
|
||||
kerning first=76 second=32 amount=-2
|
||||
kerning first=76 second=84 amount=-3
|
||||
kerning first=76 second=86 amount=-3
|
||||
kerning first=76 second=87 amount=-3
|
||||
kerning first=76 second=89 amount=-3
|
||||
kerning first=76 second=121 amount=-2
|
||||
kerning first=1101 second=1093 amount=-1
|
||||
kerning first=80 second=32 amount=-1
|
||||
kerning first=80 second=44 amount=-6
|
||||
kerning first=80 second=46 amount=-6
|
||||
kerning first=80 second=65 amount=-3
|
||||
kerning first=82 second=84 amount=-1
|
||||
kerning first=82 second=86 amount=-1
|
||||
kerning first=82 second=87 amount=-1
|
||||
kerning first=82 second=89 amount=-1
|
||||
kerning first=84 second=32 amount=-1
|
||||
kerning first=84 second=44 amount=-5
|
||||
kerning first=84 second=45 amount=-2
|
||||
kerning first=84 second=46 amount=-5
|
||||
kerning first=84 second=58 amount=-5
|
||||
kerning first=1101 second=1090 amount=-1
|
||||
kerning first=84 second=65 amount=-3
|
||||
kerning first=84 second=79 amount=-1
|
||||
kerning first=84 second=97 amount=-5
|
||||
kerning first=84 second=99 amount=-5
|
||||
kerning first=84 second=101 amount=-5
|
||||
kerning first=84 second=105 amount=-2
|
||||
kerning first=84 second=111 amount=-5
|
||||
kerning first=84 second=114 amount=-2
|
||||
kerning first=84 second=115 amount=-5
|
||||
kerning first=84 second=117 amount=-2
|
||||
kerning first=84 second=119 amount=-2
|
||||
kerning first=84 second=121 amount=-2
|
||||
kerning first=86 second=44 amount=-4
|
||||
kerning first=86 second=45 amount=-2
|
||||
kerning first=86 second=46 amount=-4
|
||||
kerning first=86 second=58 amount=-2
|
||||
kerning first=1101 second=1086 amount=1
|
||||
kerning first=86 second=65 amount=-3
|
||||
kerning first=86 second=97 amount=-3
|
||||
kerning first=86 second=101 amount=-2
|
||||
kerning first=86 second=105 amount=-1
|
||||
kerning first=86 second=111 amount=-2
|
||||
kerning first=86 second=114 amount=-2
|
||||
kerning first=86 second=117 amount=-2
|
||||
kerning first=86 second=121 amount=-2
|
||||
kerning first=87 second=44 amount=-2
|
||||
kerning first=87 second=45 amount=-1
|
||||
kerning first=87 second=46 amount=-2
|
||||
kerning first=87 second=58 amount=-1
|
||||
kerning first=1101 second=1083 amount=-1
|
||||
kerning first=87 second=65 amount=-2
|
||||
kerning first=87 second=97 amount=-2
|
||||
kerning first=87 second=101 amount=-1
|
||||
kerning first=1101 second=1079 amount=-1
|
||||
kerning first=87 second=111 amount=-1
|
||||
kerning first=87 second=114 amount=-1
|
||||
kerning first=87 second=117 amount=-1
|
||||
kerning first=1101 second=1077 amount=1
|
||||
kerning first=89 second=32 amount=-1
|
||||
kerning first=89 second=44 amount=-6
|
||||
kerning first=89 second=45 amount=-4
|
||||
kerning first=89 second=46 amount=-6
|
||||
kerning first=89 second=58 amount=-2
|
||||
kerning first=1101 second=1076 amount=-1
|
||||
kerning first=89 second=65 amount=-3
|
||||
kerning first=89 second=97 amount=-3
|
||||
kerning first=89 second=101 amount=-4
|
||||
kerning first=89 second=105 amount=-2
|
||||
kerning first=89 second=111 amount=-4
|
||||
kerning first=89 second=112 amount=-3
|
||||
kerning first=89 second=113 amount=-4
|
||||
kerning first=89 second=117 amount=-2
|
||||
kerning first=89 second=118 amount=-2
|
||||
kerning first=102 second=102 amount=-1
|
||||
kerning first=1100 second=1095 amount=-3
|
||||
kerning first=114 second=44 amount=-2
|
||||
kerning first=114 second=46 amount=-2
|
||||
kerning first=1100 second=1090 amount=-3
|
||||
kerning first=118 second=44 amount=-3
|
||||
kerning first=118 second=46 amount=-3
|
||||
kerning first=119 second=44 amount=-2
|
||||
kerning first=119 second=46 amount=-2
|
||||
kerning first=121 second=44 amount=-3
|
||||
kerning first=121 second=46 amount=-3
|
||||
kerning first=1097 second=1091 amount=1
|
||||
kerning first=1097 second=1086 amount=-1
|
||||
kerning first=1097 second=1077 amount=-1
|
||||
kerning first=1094 second=1089 amount=-1
|
||||
kerning first=1094 second=1086 amount=-1
|
||||
kerning first=1094 second=1079 amount=-1
|
||||
kerning first=1094 second=1077 amount=-1
|
||||
kerning first=1093 second=1095 amount=-1
|
||||
kerning first=1093 second=1092 amount=-1
|
||||
kerning first=1093 second=1090 amount=-1
|
||||
kerning first=1093 second=1089 amount=-1
|
||||
kerning first=1093 second=1086 amount=-1
|
||||
kerning first=1093 second=1079 amount=-1
|
||||
kerning first=1093 second=1077 amount=-1
|
||||
kerning first=1093 second=1073 amount=-1
|
||||
kerning first=1093 second=1072 amount=-1
|
||||
kerning first=1092 second=1103 amount=-1
|
||||
kerning first=1092 second=1095 amount=-1
|
||||
kerning first=1092 second=1091 amount=-1
|
||||
kerning first=1092 second=1090 amount=-1
|
||||
kerning first=1092 second=1083 amount=-1
|
||||
kerning first=1092 second=1076 amount=-1
|
||||
kerning first=1092 second=1073 amount=-1
|
||||
kerning first=1091 second=1103 amount=-1
|
||||
kerning first=1091 second=1101 amount=-1
|
||||
kerning first=1091 second=1092 amount=-1
|
||||
kerning first=1091 second=1089 amount=-1
|
||||
kerning first=1091 second=1088 amount=-1
|
||||
kerning first=1091 second=1086 amount=-1
|
||||
kerning first=1091 second=1084 amount=-1
|
||||
kerning first=1091 second=1083 amount=-1
|
||||
kerning first=1091 second=1078 amount=1
|
||||
kerning first=1091 second=1077 amount=-1
|
||||
kerning first=1091 second=1076 amount=-1
|
||||
kerning first=1091 second=1073 amount=1
|
||||
kerning first=1091 second=1072 amount=-1
|
||||
kerning first=1091 second=46 amount=-4
|
||||
kerning first=1091 second=44 amount=-4
|
||||
kerning first=1090 second=1091 amount=1
|
||||
kerning first=1090 second=1089 amount=-1
|
||||
kerning first=1090 second=1086 amount=-1
|
||||
kerning first=1090 second=1083 amount=-1
|
||||
kerning first=1090 second=1078 amount=1
|
||||
kerning first=1090 second=1077 amount=-1
|
||||
kerning first=1090 second=1076 amount=-1
|
||||
kerning first=1090 second=1072 amount=-1
|
||||
kerning first=1090 second=46 amount=-5
|
||||
kerning first=1090 second=44 amount=-5
|
||||
kerning first=1089 second=1101 amount=1
|
||||
kerning first=1089 second=1095 amount=-1
|
||||
kerning first=1089 second=1086 amount=1
|
||||
kerning first=1089 second=1078 amount=1
|
||||
kerning first=1088 second=1103 amount=-1
|
||||
kerning first=1088 second=1095 amount=-1
|
||||
kerning first=1088 second=1093 amount=-1
|
||||
kerning first=1088 second=1091 amount=-1
|
||||
kerning first=1088 second=1090 amount=-1
|
||||
kerning first=1088 second=1083 amount=-2
|
||||
kerning first=1088 second=1079 amount=-1
|
||||
kerning first=1088 second=1076 amount=-1
|
||||
kerning first=1086 second=1095 amount=-1
|
||||
kerning first=1086 second=1093 amount=-1
|
||||
kerning first=1086 second=1091 amount=-1
|
||||
kerning first=1086 second=1090 amount=-1
|
||||
kerning first=1086 second=1083 amount=-1
|
||||
kerning first=1086 second=1079 amount=-1
|
||||
kerning first=1086 second=1078 amount=-1
|
||||
kerning first=1086 second=1076 amount=-1
|
||||
kerning first=1084 second=1091 amount=1
|
||||
kerning first=1084 second=1079 amount=-1
|
||||
kerning first=1084 second=1073 amount=-1
|
||||
kerning first=1083 second=1095 amount=-1
|
||||
kerning first=1083 second=1086 amount=1
|
||||
kerning first=1082 second=1101 amount=1
|
||||
kerning first=1082 second=1091 amount=1
|
||||
kerning first=1082 second=1090 amount=1
|
||||
kerning first=1082 second=1089 amount=1
|
||||
kerning first=1082 second=1086 amount=1
|
||||
kerning first=1082 second=1083 amount=1
|
||||
kerning first=1082 second=1079 amount=1
|
||||
kerning first=1082 second=1077 amount=1
|
||||
kerning first=1082 second=1073 amount=1
|
||||
kerning first=1082 second=1072 amount=1
|
||||
kerning first=1079 second=1098 amount=-1
|
||||
kerning first=1079 second=1095 amount=-1
|
||||
kerning first=1079 second=1092 amount=-1
|
||||
kerning first=1079 second=1091 amount=-1
|
||||
kerning first=1079 second=1089 amount=-1
|
||||
kerning first=1079 second=1086 amount=-1
|
||||
kerning first=1079 second=1083 amount=-1
|
||||
kerning first=1079 second=1079 amount=-1
|
||||
kerning first=1079 second=1077 amount=-1
|
||||
kerning first=1079 second=1076 amount=-1
|
||||
kerning first=1079 second=1073 amount=-1
|
||||
kerning first=1078 second=1098 amount=1
|
||||
kerning first=1078 second=1095 amount=-1
|
||||
kerning first=1078 second=1091 amount=1
|
||||
kerning first=1078 second=1073 amount=1
|
||||
kerning first=1077 second=1095 amount=-1
|
||||
kerning first=1077 second=1093 amount=-1
|
||||
kerning first=1077 second=1091 amount=-1
|
||||
kerning first=1077 second=1090 amount=-1
|
||||
kerning first=1077 second=1083 amount=-1
|
||||
kerning first=1077 second=1079 amount=-1
|
||||
kerning first=1077 second=1078 amount=-1
|
||||
kerning first=1077 second=1076 amount=-1
|
||||
kerning first=1077 second=1073 amount=-1
|
||||
kerning first=1076 second=1101 amount=1
|
||||
kerning first=1076 second=1098 amount=-1
|
||||
kerning first=1075 second=1103 amount=-1
|
||||
kerning first=1075 second=1089 amount=-1
|
||||
kerning first=1075 second=1086 amount=-1
|
||||
kerning first=1075 second=1083 amount=-1
|
||||
kerning first=1075 second=1079 amount=-1
|
||||
kerning first=1075 second=1077 amount=-1
|
||||
kerning first=1075 second=1076 amount=-2
|
||||
kerning first=1075 second=1072 amount=-1
|
||||
kerning first=1075 second=46 amount=-5
|
||||
kerning first=1075 second=44 amount=-5
|
||||
kerning first=1074 second=1103 amount=-1
|
||||
kerning first=1074 second=1098 amount=-1
|
||||
kerning first=1074 second=1095 amount=-2
|
||||
kerning first=1074 second=1092 amount=-1
|
||||
kerning first=1074 second=1091 amount=-1
|
||||
kerning first=1074 second=1090 amount=-1
|
||||
kerning first=1074 second=1089 amount=-1
|
||||
kerning first=1074 second=1086 amount=-1
|
||||
kerning first=1074 second=1084 amount=-1
|
||||
kerning first=1074 second=1083 amount=-1
|
||||
kerning first=1074 second=1079 amount=-1
|
||||
kerning first=1074 second=1078 amount=-1
|
||||
kerning first=1074 second=1077 amount=-1
|
||||
kerning first=1074 second=1076 amount=-1
|
||||
kerning first=1074 second=1073 amount=-1
|
||||
kerning first=1074 second=1072 amount=-1
|
||||
kerning first=1073 second=1103 amount=-1
|
||||
kerning first=1073 second=1101 amount=-1
|
||||
kerning first=1073 second=1098 amount=-1
|
||||
kerning first=1073 second=1095 amount=-1
|
||||
kerning first=1073 second=1093 amount=-1
|
||||
kerning first=1073 second=1092 amount=-1
|
||||
kerning first=1073 second=1091 amount=-1
|
||||
kerning first=1073 second=1089 amount=-1
|
||||
kerning first=1073 second=1084 amount=-1
|
||||
kerning first=1073 second=1083 amount=-2
|
||||
kerning first=1073 second=1079 amount=-1
|
||||
kerning first=1073 second=1078 amount=-1
|
||||
kerning first=1073 second=1077 amount=-1
|
||||
kerning first=1073 second=1076 amount=-2
|
||||
kerning first=1073 second=1072 amount=-1
|
||||
kerning first=1072 second=1095 amount=-1
|
||||
kerning first=1072 second=1091 amount=-1
|
||||
kerning first=1072 second=1090 amount=-1
|
||||
kerning first=1072 second=1079 amount=-1
|
||||
kerning first=1070 second=1084 amount=-1
|
||||
kerning first=1070 second=1083 amount=-2
|
||||
kerning first=1070 second=1076 amount=-2
|
||||
kerning first=1070 second=1063 amount=-1
|
||||
kerning first=1070 second=1061 amount=-2
|
||||
kerning first=1070 second=1058 amount=-3
|
||||
kerning first=1070 second=1057 amount=-1
|
||||
kerning first=1070 second=1054 amount=-1
|
||||
kerning first=1070 second=1051 amount=-2
|
||||
kerning first=1070 second=1046 amount=-1
|
||||
kerning first=1070 second=1044 amount=-2
|
||||
kerning first=1070 second=1040 amount=-1
|
||||
kerning first=1069 second=1103 amount=-1
|
||||
kerning first=1069 second=1084 amount=-1
|
||||
kerning first=1069 second=1083 amount=-1
|
||||
kerning first=1069 second=1078 amount=1
|
||||
kerning first=1069 second=1076 amount=-1
|
||||
kerning first=1069 second=1071 amount=-1
|
||||
kerning first=1069 second=1061 amount=-2
|
||||
kerning first=1069 second=1051 amount=-1
|
||||
kerning first=1069 second=1047 amount=-1
|
||||
kerning first=1069 second=1046 amount=-1
|
||||
kerning first=1069 second=1044 amount=-1
|
||||
kerning first=1068 second=1071 amount=-2
|
||||
kerning first=1068 second=1069 amount=-1
|
||||
kerning first=1068 second=1063 amount=-3
|
||||
kerning first=1068 second=1061 amount=-2
|
||||
kerning first=1068 second=1058 amount=-4
|
||||
kerning first=1068 second=1057 amount=-1
|
||||
kerning first=1068 second=1054 amount=-1
|
||||
kerning first=1068 second=1052 amount=-1
|
||||
kerning first=1068 second=1051 amount=-2
|
||||
kerning first=1068 second=1047 amount=-1
|
||||
kerning first=1068 second=1046 amount=-1
|
||||
kerning first=1068 second=1044 amount=-1
|
||||
kerning first=1068 second=1040 amount=-1
|
||||
kerning first=1066 second=1071 amount=-1
|
||||
kerning first=1065 second=1091 amount=1
|
||||
kerning first=1065 second=1072 amount=1
|
||||
kerning first=1062 second=1072 amount=1
|
||||
kerning first=1062 second=1054 amount=-1
|
||||
kerning first=1061 second=1091 amount=-1
|
||||
kerning first=1061 second=1086 amount=-1
|
||||
kerning first=1061 second=1069 amount=-2
|
||||
kerning first=1061 second=1060 amount=-1
|
||||
kerning first=1061 second=1057 amount=-1
|
||||
kerning first=1061 second=1054 amount=-1
|
||||
kerning first=1061 second=1047 amount=-1
|
||||
kerning first=1060 second=1083 amount=-1
|
||||
kerning first=1060 second=1071 amount=-2
|
||||
kerning first=1060 second=1063 amount=-1
|
||||
kerning first=1060 second=1059 amount=-2
|
||||
kerning first=1060 second=1058 amount=-3
|
||||
kerning first=1060 second=1051 amount=-1
|
||||
kerning first=1060 second=1044 amount=-1
|
||||
kerning first=1060 second=1040 amount=-1
|
||||
kerning first=1059 second=1103 amount=-3
|
||||
kerning first=1059 second=1102 amount=-2
|
||||
kerning first=1059 second=1097 amount=-2
|
||||
kerning first=1059 second=1096 amount=-2
|
||||
kerning first=1059 second=1094 amount=-2
|
||||
kerning first=1059 second=1093 amount=-2
|
||||
kerning first=1059 second=1089 amount=-3
|
||||
kerning first=1059 second=1088 amount=-2
|
||||
kerning first=1059 second=1087 amount=-2
|
||||
kerning first=1059 second=1086 amount=-3
|
||||
kerning first=1059 second=1085 amount=-2
|
||||
kerning first=1059 second=1084 amount=-2
|
||||
kerning first=1059 second=1083 amount=-3
|
||||
kerning first=1059 second=1082 amount=-2
|
||||
kerning first=1059 second=1081 amount=-1
|
||||
kerning first=1059 second=1080 amount=-2
|
||||
kerning first=1059 second=1079 amount=-3
|
||||
kerning first=1059 second=1078 amount=-1
|
||||
kerning first=1059 second=1077 amount=-3
|
||||
kerning first=1059 second=1076 amount=-3
|
||||
kerning first=1059 second=1075 amount=-2
|
||||
kerning first=1059 second=1074 amount=-3
|
||||
kerning first=1059 second=1073 amount=-1
|
||||
kerning first=1059 second=1071 amount=-1
|
||||
kerning first=1059 second=1069 amount=-1
|
||||
kerning first=1059 second=1060 amount=-1
|
||||
kerning first=1059 second=1054 amount=-1
|
||||
kerning first=1059 second=1051 amount=-1
|
||||
kerning first=1059 second=1047 amount=-1
|
||||
kerning first=1059 second=1044 amount=-2
|
||||
kerning first=1059 second=1040 amount=-3
|
||||
kerning first=1059 second=58 amount=-1
|
||||
kerning first=1059 second=46 amount=-6
|
||||
kerning first=1059 second=44 amount=-6
|
||||
kerning first=1058 second=1103 amount=-3
|
||||
kerning first=1058 second=1102 amount=-2
|
||||
kerning first=1058 second=1100 amount=-2
|
||||
kerning first=1058 second=1099 amount=-2
|
||||
kerning first=1058 second=1097 amount=-2
|
||||
kerning first=1058 second=1093 amount=-2
|
||||
kerning first=1058 second=1091 amount=-3
|
||||
kerning first=1058 second=1089 amount=-3
|
||||
kerning first=1058 second=1088 amount=-3
|
||||
kerning first=1058 second=1087 amount=-2
|
||||
kerning first=1058 second=1086 amount=-3
|
||||
kerning first=1058 second=1084 amount=-2
|
||||
kerning first=1058 second=1083 amount=-2
|
||||
kerning first=1058 second=1082 amount=-2
|
||||
kerning first=1058 second=1080 amount=-2
|
||||
kerning first=1058 second=1077 amount=-3
|
||||
kerning first=1058 second=1074 amount=-2
|
||||
kerning first=1058 second=1072 amount=-2
|
||||
kerning first=1058 second=1071 amount=-1
|
||||
kerning first=1058 second=1060 amount=-1
|
||||
kerning first=1058 second=1054 amount=-2
|
||||
kerning first=1058 second=1051 amount=-1
|
||||
kerning first=1058 second=1047 amount=-1
|
||||
kerning first=1058 second=1046 amount=1
|
||||
kerning first=1058 second=1044 amount=-1
|
||||
kerning first=1058 second=1040 amount=-1
|
||||
kerning first=1058 second=46 amount=-5
|
||||
kerning first=1058 second=44 amount=-5
|
||||
kerning first=1057 second=1095 amount=-1
|
||||
kerning first=1057 second=1078 amount=1
|
||||
kerning first=1057 second=1072 amount=1
|
||||
kerning first=1057 second=1069 amount=-1
|
||||
kerning first=1057 second=1066 amount=-2
|
||||
kerning first=1057 second=1063 amount=-1
|
||||
kerning first=1057 second=1061 amount=-3
|
||||
kerning first=1057 second=1059 amount=-1
|
||||
kerning first=1057 second=1058 amount=-1
|
||||
kerning first=1057 second=1054 amount=-1
|
||||
kerning first=1057 second=1052 amount=-1
|
||||
kerning first=1057 second=1051 amount=-1
|
||||
kerning first=1057 second=1047 amount=-1
|
||||
kerning first=1057 second=1044 amount=-1
|
||||
kerning first=1057 second=1040 amount=-1
|
||||
kerning first=1056 second=1103 amount=-1
|
||||
kerning first=1056 second=1101 amount=-1
|
||||
kerning first=1056 second=1086 amount=-2
|
||||
kerning first=1056 second=1077 amount=-2
|
||||
kerning first=1056 second=1076 amount=-3
|
||||
kerning first=1056 second=1072 amount=-1
|
||||
kerning first=1056 second=1071 amount=-1
|
||||
kerning first=1056 second=1061 amount=-2
|
||||
kerning first=1056 second=1060 amount=-1
|
||||
kerning first=1056 second=1059 amount=-1
|
||||
kerning first=1056 second=1058 amount=-2
|
||||
kerning first=1056 second=1057 amount=-1
|
||||
kerning first=1056 second=1054 amount=-1
|
||||
kerning first=1056 second=1052 amount=-1
|
||||
kerning first=1056 second=1051 amount=-3
|
||||
kerning first=1056 second=1047 amount=-1
|
||||
kerning first=1056 second=1046 amount=-1
|
||||
kerning first=1056 second=1044 amount=-3
|
||||
kerning first=1056 second=1040 amount=-3
|
||||
kerning first=1056 second=58 amount=-1
|
||||
kerning first=1056 second=46 amount=-8
|
||||
kerning first=1056 second=44 amount=-8
|
||||
kerning first=1054 second=1093 amount=-1
|
||||
kerning first=1054 second=1083 amount=-1
|
||||
kerning first=1054 second=1076 amount=-1
|
||||
kerning first=1040 second=1044 amount=1
|
||||
kerning first=1040 second=1047 amount=-1
|
||||
kerning first=1040 second=1051 amount=1
|
||||
kerning first=1040 second=1054 amount=-1
|
||||
kerning first=1040 second=1055 amount=-1
|
||||
kerning first=1040 second=1057 amount=-1
|
||||
kerning first=1040 second=1058 amount=-3
|
||||
kerning first=1040 second=1059 amount=-2
|
||||
kerning first=1040 second=1060 amount=-1
|
||||
kerning first=1040 second=1063 amount=-3
|
||||
kerning first=1040 second=1069 amount=-1
|
||||
kerning first=1040 second=1072 amount=1
|
||||
kerning first=1040 second=1090 amount=-1
|
||||
kerning first=1040 second=1091 amount=-1
|
||||
kerning first=1040 second=1092 amount=1
|
||||
kerning first=1040 second=1101 amount=1
|
||||
kerning first=1041 second=1040 amount=-1
|
||||
kerning first=1041 second=1047 amount=-1
|
||||
kerning first=1041 second=1054 amount=-1
|
||||
kerning first=1041 second=1057 amount=-1
|
||||
kerning first=1041 second=1058 amount=-2
|
||||
kerning first=1041 second=1059 amount=-1
|
||||
kerning first=1041 second=1060 amount=-1
|
||||
kerning first=1041 second=1061 amount=-1
|
||||
kerning first=1041 second=1063 amount=-2
|
||||
kerning first=1041 second=1066 amount=-1
|
||||
kerning first=1041 second=1069 amount=-1
|
||||
kerning first=1041 second=1071 amount=-1
|
||||
kerning first=1041 second=1083 amount=-1
|
||||
kerning first=1041 second=1091 amount=-1
|
||||
kerning first=1042 second=1040 amount=-1
|
||||
kerning first=1042 second=1044 amount=-1
|
||||
kerning first=1042 second=1046 amount=-1
|
||||
kerning first=1042 second=1047 amount=-1
|
||||
kerning first=1042 second=1051 amount=-1
|
||||
kerning first=1042 second=1054 amount=-1
|
||||
kerning first=1042 second=1057 amount=-1
|
||||
kerning first=1042 second=1058 amount=-3
|
||||
kerning first=1042 second=1059 amount=-1
|
||||
kerning first=1042 second=1060 amount=-1
|
||||
kerning first=1042 second=1061 amount=-2
|
||||
kerning first=1042 second=1063 amount=-2
|
||||
kerning first=1042 second=1066 amount=-3
|
||||
kerning first=1042 second=1071 amount=-1
|
||||
kerning first=1042 second=1076 amount=-1
|
||||
kerning first=1042 second=1084 amount=-1
|
||||
kerning first=1042 second=1090 amount=-1
|
||||
kerning first=1042 second=1091 amount=-1
|
||||
kerning first=1042 second=1093 amount=-1
|
||||
kerning first=1042 second=1095 amount=-1
|
||||
kerning first=1042 second=1103 amount=-1
|
||||
kerning first=1043 second=44 amount=-5
|
||||
kerning first=1043 second=46 amount=-5
|
||||
kerning first=1054 second=1071 amount=-1
|
||||
kerning first=1054 second=1063 amount=-1
|
||||
kerning first=1054 second=1061 amount=-2
|
||||
kerning first=1043 second=1040 amount=-3
|
||||
kerning first=1043 second=1044 amount=-3
|
||||
kerning first=1043 second=1047 amount=-1
|
||||
kerning first=1043 second=1051 amount=-3
|
||||
kerning first=1043 second=1052 amount=-1
|
||||
kerning first=1043 second=1054 amount=-3
|
||||
kerning first=1043 second=1057 amount=-2
|
||||
kerning first=1043 second=1071 amount=-1
|
||||
kerning first=1043 second=1072 amount=-3
|
||||
kerning first=1043 second=1074 amount=-3
|
||||
kerning first=1043 second=1076 amount=-3
|
||||
kerning first=1043 second=1077 amount=-3
|
||||
kerning first=1043 second=1080 amount=-3
|
||||
kerning first=1043 second=1083 amount=-3
|
||||
kerning first=1043 second=1084 amount=-3
|
||||
kerning first=1043 second=1085 amount=-3
|
||||
kerning first=1043 second=1086 amount=-3
|
||||
kerning first=1043 second=1088 amount=-3
|
||||
kerning first=1043 second=1091 amount=-3
|
||||
kerning first=1043 second=1099 amount=-3
|
||||
kerning first=1043 second=1100 amount=-3
|
||||
kerning first=1043 second=1102 amount=-3
|
||||
kerning first=1043 second=1103 amount=-3
|
||||
kerning first=1044 second=1059 amount=1
|
||||
kerning first=1044 second=1060 amount=-1
|
||||
kerning first=1044 second=1063 amount=-2
|
||||
kerning first=1044 second=1079 amount=1
|
||||
kerning first=1044 second=1086 amount=1
|
||||
kerning first=1044 second=1091 amount=1
|
||||
kerning first=1045 second=1047 amount=-1
|
||||
kerning first=1045 second=1089 amount=-1
|
||||
kerning first=1046 second=1047 amount=-1
|
||||
kerning first=1046 second=1054 amount=-1
|
||||
kerning first=1046 second=1057 amount=-1
|
||||
kerning first=1046 second=1058 amount=1
|
||||
kerning first=1046 second=1059 amount=1
|
||||
kerning first=1046 second=1066 amount=1
|
||||
kerning first=1046 second=1072 amount=1
|
||||
kerning first=1046 second=1077 amount=-1
|
||||
kerning first=1046 second=1086 amount=-1
|
||||
kerning first=1046 second=1091 amount=-1
|
||||
kerning first=1047 second=1051 amount=-1
|
||||
kerning first=1047 second=1054 amount=-1
|
||||
kerning first=1047 second=1057 amount=-1
|
||||
kerning first=1047 second=1058 amount=-1
|
||||
kerning first=1047 second=1059 amount=-1
|
||||
kerning first=1047 second=1060 amount=-1
|
||||
kerning first=1047 second=1063 amount=-1
|
||||
kerning first=1047 second=1071 amount=-1
|
||||
kerning first=1050 second=1047 amount=-1
|
||||
kerning first=1050 second=1054 amount=-1
|
||||
kerning first=1050 second=1057 amount=-1
|
||||
kerning first=1050 second=1059 amount=1
|
||||
kerning first=1050 second=1060 amount=-2
|
||||
kerning first=1051 second=1060 amount=-1
|
||||
kerning first=1051 second=1073 amount=1
|
||||
kerning first=1051 second=1091 amount=1
|
||||
kerning first=1052 second=1060 amount=-1
|
||||
kerning first=1052 second=1063 amount=-1
|
||||
kerning first=1052 second=1072 amount=1
|
||||
kerning first=1052 second=1077 amount=1
|
||||
kerning first=1052 second=1086 amount=1
|
||||
kerning first=1052 second=1089 amount=1
|
||||
kerning first=1052 second=1091 amount=1
|
||||
kerning first=1052 second=1095 amount=-1
|
||||
kerning first=1052 second=1101 amount=1
|
||||
kerning first=1054 second=1040 amount=-1
|
||||
kerning first=1054 second=1044 amount=-1
|
||||
kerning first=1054 second=1046 amount=-1
|
||||
kerning first=1054 second=1051 amount=-1
|
||||
kerning first=1054 second=1059 amount=-1
|
||||
3
samples/bin/library/fonts/arial_bm.png
Normal file
3
samples/bin/library/fonts/arial_bm.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cdd1e2d175c5109ec5840ea37093e7f745fbf618b709ee334b7459ef1567960a
|
||||
size 61729
|
||||
720
samples/bin/library/fonts/arial_sdf.fnt
Normal file
720
samples/bin/library/fonts/arial_sdf.fnt
Normal file
@@ -0,0 +1,720 @@
|
||||
info face="Arial" size=50 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
|
||||
common lineHeight=51 base=41 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=0 greenChnl=0 blueChnl=0
|
||||
page id=0 file="arial_sdf.png"
|
||||
chars count=161
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=41 xadvance=12 page=0 chnl=8
|
||||
char id=33 x=225 y=312 width=16 height=43 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=34 x=131 y=423 width=22 height=23 xoffset=-3 yoffset=3 xadvance=16 page=0 chnl=8
|
||||
char id=35 x=156 y=96 width=35 height=44 xoffset=-5 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=36 x=422 y=0 width=32 height=50 xoffset=-4 yoffset=1 xadvance=25 page=0 chnl=8
|
||||
char id=37 x=386 y=50 width=46 height=45 xoffset=-3 yoffset=3 xadvance=40 page=0 chnl=8
|
||||
char id=38 x=349 y=95 width=38 height=44 xoffset=-4 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=39 x=153 y=423 width=16 height=23 xoffset=-4 yoffset=3 xadvance=9 page=0 chnl=8
|
||||
char id=40 x=120 y=0 width=22 height=53 xoffset=-3 yoffset=3 xadvance=15 page=0 chnl=8
|
||||
char id=41 x=98 y=0 width=22 height=53 xoffset=-3 yoffset=3 xadvance=15 page=0 chnl=8
|
||||
char id=42 x=408 y=422 width=25 height=25 xoffset=-4 yoffset=3 xadvance=17 page=0 chnl=8
|
||||
char id=43 x=347 y=422 width=32 height=32 xoffset=-3 yoffset=9 xadvance=26 page=0 chnl=8
|
||||
char id=44 x=169 y=423 width=16 height=22 xoffset=-2 yoffset=31 xadvance=12 page=0 chnl=8
|
||||
char id=45 x=239 y=423 width=23 height=15 xoffset=-4 yoffset=22 xadvance=15 page=0 chnl=8
|
||||
char id=46 x=262 y=423 width=15 height=15 xoffset=-1 yoffset=31 xadvance=12 page=0 chnl=8
|
||||
char id=47 x=156 y=140 width=23 height=44 xoffset=-5 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=48 x=96 y=97 width=32 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=49 x=179 y=312 width=23 height=43 xoffset=-1 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=50 x=0 y=270 width=32 height=43 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=51 x=64 y=97 width=32 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=52 x=278 y=269 width=33 height=43 xoffset=-5 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=53 x=311 y=269 width=33 height=43 xoffset=-4 yoffset=4 xadvance=25 page=0 chnl=8
|
||||
char id=54 x=32 y=97 width=32 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=55 x=286 y=312 width=31 height=42 xoffset=-3 yoffset=4 xadvance=25 page=0 chnl=8
|
||||
char id=56 x=0 y=97 width=32 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=57 x=292 y=96 width=32 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=58 x=52 y=417 width=15 height=34 xoffset=-1 yoffset=12 xadvance=12 page=0 chnl=8
|
||||
char id=59 x=458 y=312 width=16 height=41 xoffset=-2 yoffset=12 xadvance=12 page=0 chnl=8
|
||||
char id=60 x=67 y=417 width=32 height=33 xoffset=-3 yoffset=9 xadvance=26 page=0 chnl=8
|
||||
char id=61 x=99 y=423 width=32 height=24 xoffset=-3 yoffset=13 xadvance=26 page=0 chnl=8
|
||||
char id=62 x=315 y=422 width=32 height=33 xoffset=-3 yoffset=9 xadvance=26 page=0 chnl=8
|
||||
char id=63 x=441 y=269 width=32 height=43 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=64 x=0 y=0 width=52 height=53 xoffset=-3 yoffset=3 xadvance=45 page=0 chnl=8
|
||||
char id=65 x=283 y=140 width=41 height=43 xoffset=-6 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=66 x=477 y=226 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=67 x=117 y=53 width=39 height=44 xoffset=-3 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=68 x=78 y=184 width=37 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=69 x=70 y=227 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=70 x=344 y=269 width=33 height=43 xoffset=-2 yoffset=3 xadvance=27 page=0 chnl=8
|
||||
char id=71 x=267 y=52 width=41 height=44 xoffset=-3 yoffset=3 xadvance=35 page=0 chnl=8
|
||||
char id=72 x=441 y=226 width=36 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=73 x=271 y=312 width=15 height=43 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=74 x=128 y=97 width=28 height=44 xoffset=-4 yoffset=3 xadvance=22 page=0 chnl=8
|
||||
char id=75 x=152 y=226 width=37 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=76 x=63 y=270 width=31 height=43 xoffset=-2 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=77 x=221 y=183 width=41 height=43 xoffset=-2 yoffset=3 xadvance=37 page=0 chnl=8
|
||||
char id=78 x=369 y=226 width=36 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=79 x=226 y=52 width=41 height=44 xoffset=-3 yoffset=3 xadvance=35 page=0 chnl=8
|
||||
char id=80 x=0 y=227 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=81 x=454 y=49 width=43 height=46 xoffset=-4 yoffset=3 xadvance=35 page=0 chnl=8
|
||||
char id=82 x=39 y=184 width=39 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=83 x=387 y=95 width=36 height=44 xoffset=-3 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=84 x=225 y=226 width=36 height=43 xoffset=-4 yoffset=3 xadvance=27 page=0 chnl=8
|
||||
char id=85 x=459 y=95 width=36 height=44 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=86 x=384 y=183 width=40 height=43 xoffset=-5 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=87 x=179 y=140 width=52 height=43 xoffset=-5 yoffset=3 xadvance=42 page=0 chnl=8
|
||||
char id=88 x=464 y=183 width=40 height=43 xoffset=-5 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=89 x=344 y=183 width=40 height=43 xoffset=-5 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=90 x=115 y=184 width=37 height=43 xoffset=-5 yoffset=3 xadvance=27 page=0 chnl=8
|
||||
char id=91 x=328 y=0 width=19 height=52 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=92 x=482 y=139 width=23 height=44 xoffset=-5 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=93 x=308 y=0 width=20 height=52 xoffset=-5 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=94 x=379 y=422 width=29 height=28 xoffset=-4 yoffset=3 xadvance=21 page=0 chnl=8
|
||||
char id=95 x=277 y=423 width=37 height=13 xoffset=-6 yoffset=42 xadvance=25 page=0 chnl=8
|
||||
char id=96 x=219 y=423 width=20 height=17 xoffset=-4 yoffset=3 xadvance=15 page=0 chnl=8
|
||||
char id=97 x=33 y=348 width=32 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=98 x=388 y=139 width=32 height=44 xoffset=-3 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=99 x=380 y=353 width=31 height=35 xoffset=-4 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=100 x=420 y=139 width=31 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=101 x=474 y=347 width=33 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=102 x=155 y=312 width=24 height=43 xoffset=-5 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=103 x=451 y=139 width=31 height=44 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=104 x=125 y=312 width=30 height=43 xoffset=-3 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
char id=105 x=256 y=312 width=15 height=43 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=8
|
||||
char id=106 x=142 y=0 width=20 height=53 xoffset=-8 yoffset=3 xadvance=10 page=0 chnl=8
|
||||
char id=107 x=94 y=270 width=31 height=43 xoffset=-3 yoffset=3 xadvance=22 page=0 chnl=8
|
||||
char id=108 x=241 y=312 width=15 height=43 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=8
|
||||
char id=109 x=125 y=355 width=43 height=34 xoffset=-3 yoffset=12 xadvance=37 page=0 chnl=8
|
||||
char id=110 x=475 y=416 width=30 height=34 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=111 x=40 y=313 width=33 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=112 x=409 y=269 width=32 height=43 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=113 x=32 y=270 width=31 height=43 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=114 x=28 y=417 width=24 height=34 xoffset=-3 yoffset=12 xadvance=15 page=0 chnl=8
|
||||
char id=115 x=442 y=353 width=30 height=35 xoffset=-4 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=116 x=202 y=312 width=23 height=43 xoffset=-5 yoffset=4 xadvance=12 page=0 chnl=8
|
||||
char id=117 x=286 y=354 width=30 height=35 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=118 x=413 y=388 width=32 height=34 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=119 x=168 y=355 width=42 height=34 xoffset=-5 yoffset=12 xadvance=32 page=0 chnl=8
|
||||
char id=120 x=316 y=388 width=33 height=34 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=121 x=324 y=139 width=32 height=44 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=122 x=349 y=388 width=32 height=34 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=123 x=52 y=0 width=23 height=53 xoffset=-4 yoffset=3 xadvance=15 page=0 chnl=8
|
||||
char id=124 x=162 y=0 width=14 height=53 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=8
|
||||
char id=125 x=75 y=0 width=23 height=53 xoffset=-4 yoffset=3 xadvance=15 page=0 chnl=8
|
||||
char id=126 x=185 y=423 width=34 height=18 xoffset=-4 yoffset=16 xadvance=26 page=0 chnl=8
|
||||
char id=1025 x=454 y=0 width=35 height=49 xoffset=-2 yoffset=-3 xadvance=30 page=0 chnl=8
|
||||
char id=1040 x=262 y=183 width=41 height=43 xoffset=-6 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1041 x=140 y=269 width=35 height=43 xoffset=-2 yoffset=3 xadvance=29 page=0 chnl=8
|
||||
char id=1042 x=175 y=269 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1043 x=473 y=269 width=32 height=43 xoffset=-2 yoffset=3 xadvance=24 page=0 chnl=8
|
||||
char id=1044 x=347 y=0 width=39 height=51 xoffset=-5 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1045 x=210 y=269 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1046 x=231 y=140 width=52 height=43 xoffset=-5 yoffset=3 xadvance=41 page=0 chnl=8
|
||||
char id=1047 x=191 y=96 width=35 height=44 xoffset=-4 yoffset=3 xadvance=27 page=0 chnl=8
|
||||
char id=1048 x=333 y=226 width=36 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1049 x=386 y=0 width=36 height=50 xoffset=-2 yoffset=-4 xadvance=32 page=0 chnl=8
|
||||
char id=1050 x=245 y=269 width=33 height=43 xoffset=-2 yoffset=3 xadvance=26 page=0 chnl=8
|
||||
char id=1051 x=423 y=95 width=36 height=44 xoffset=-5 yoffset=3 xadvance=29 page=0 chnl=8
|
||||
char id=1052 x=303 y=183 width=41 height=43 xoffset=-2 yoffset=3 xadvance=37 page=0 chnl=8
|
||||
char id=1053 x=261 y=226 width=36 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1054 x=308 y=52 width=41 height=44 xoffset=-3 yoffset=3 xadvance=35 page=0 chnl=8
|
||||
char id=1055 x=405 y=226 width=36 height=43 xoffset=-2 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1056 x=105 y=227 width=35 height=43 xoffset=-2 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1057 x=78 y=53 width=39 height=44 xoffset=-3 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1058 x=189 y=226 width=36 height=43 xoffset=-4 yoffset=3 xadvance=27 page=0 chnl=8
|
||||
char id=1059 x=39 y=53 width=39 height=44 xoffset=-5 yoffset=3 xadvance=28 page=0 chnl=8
|
||||
char id=1060 x=179 y=183 width=42 height=43 xoffset=-4 yoffset=3 xadvance=34 page=0 chnl=8
|
||||
char id=1061 x=424 y=183 width=40 height=43 xoffset=-5 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1062 x=269 y=0 width=39 height=52 xoffset=-2 yoffset=3 xadvance=33 page=0 chnl=8
|
||||
char id=1063 x=297 y=226 width=36 height=43 xoffset=-4 yoffset=3 xadvance=30 page=0 chnl=8
|
||||
char id=1064 x=0 y=141 width=45 height=43 xoffset=-2 yoffset=3 xadvance=41 page=0 chnl=8
|
||||
char id=1065 x=176 y=0 width=48 height=52 xoffset=-2 yoffset=3 xadvance=42 page=0 chnl=8
|
||||
char id=1066 x=45 y=141 width=44 height=43 xoffset=-5 yoffset=3 xadvance=35 page=0 chnl=8
|
||||
char id=1067 x=89 y=141 width=43 height=43 xoffset=-2 yoffset=3 xadvance=40 page=0 chnl=8
|
||||
char id=1068 x=35 y=227 width=35 height=43 xoffset=-2 yoffset=3 xadvance=29 page=0 chnl=8
|
||||
char id=1069 x=0 y=53 width=39 height=44 xoffset=-4 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1070 x=176 y=52 width=50 height=44 xoffset=-2 yoffset=3 xadvance=45 page=0 chnl=8
|
||||
char id=1071 x=0 y=184 width=39 height=43 xoffset=-5 yoffset=3 xadvance=32 page=0 chnl=8
|
||||
char id=1072 x=348 y=353 width=32 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1073 x=259 y=96 width=33 height=44 xoffset=-4 yoffset=3 xadvance=26 page=0 chnl=8
|
||||
char id=1074 x=108 y=389 width=31 height=34 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=8
|
||||
char id=1075 x=290 y=389 width=25 height=34 xoffset=-3 yoffset=12 xadvance=16 page=0 chnl=8
|
||||
char id=1076 x=391 y=312 width=35 height=41 xoffset=-5 yoffset=12 xadvance=26 page=0 chnl=8
|
||||
char id=1077 x=0 y=348 width=33 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1078 x=210 y=355 width=42 height=34 xoffset=-6 yoffset=12 xadvance=30 page=0 chnl=8
|
||||
char id=1079 x=97 y=348 width=28 height=35 xoffset=-4 yoffset=12 xadvance=21 page=0 chnl=8
|
||||
char id=1080 x=139 y=389 width=31 height=34 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1081 x=317 y=312 width=31 height=42 xoffset=-3 yoffset=4 xadvance=25 page=0 chnl=8
|
||||
char id=1082 x=0 y=417 width=28 height=34 xoffset=-3 yoffset=12 xadvance=20 page=0 chnl=8
|
||||
char id=1083 x=474 y=312 width=34 height=35 xoffset=-5 yoffset=12 xadvance=26 page=0 chnl=8
|
||||
char id=1084 x=73 y=383 width=35 height=34 xoffset=-2 yoffset=12 xadvance=31 page=0 chnl=8
|
||||
char id=1085 x=260 y=389 width=30 height=34 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1086 x=73 y=313 width=33 height=35 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1087 x=445 y=416 width=30 height=34 xoffset=-3 yoffset=12 xadvance=24 page=0 chnl=8
|
||||
char id=1088 x=377 y=269 width=32 height=43 xoffset=-3 yoffset=12 xadvance=25 page=0 chnl=8
|
||||
char id=1089 x=411 y=353 width=31 height=35 xoffset=-4 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=1090 x=200 y=389 width=30 height=34 xoffset=-5 yoffset=12 xadvance=20 page=0 chnl=8
|
||||
char id=1091 x=356 y=139 width=32 height=44 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=1092 x=224 y=0 width=45 height=52 xoffset=-4 yoffset=3 xadvance=37 page=0 chnl=8
|
||||
char id=1093 x=252 y=355 width=33 height=34 xoffset=-5 yoffset=12 xadvance=22 page=0 chnl=8
|
||||
char id=1094 x=426 y=312 width=32 height=41 xoffset=-2 yoffset=12 xadvance=26 page=0 chnl=8
|
||||
char id=1095 x=170 y=389 width=30 height=34 xoffset=-4 yoffset=12 xadvance=23 page=0 chnl=8
|
||||
char id=1096 x=472 y=382 width=40 height=34 xoffset=-2 yoffset=12 xadvance=36 page=0 chnl=8
|
||||
char id=1097 x=348 y=312 width=43 height=41 xoffset=-2 yoffset=12 xadvance=37 page=0 chnl=8
|
||||
char id=1098 x=0 y=383 width=37 height=34 xoffset=-5 yoffset=12 xadvance=28 page=0 chnl=8
|
||||
char id=1099 x=37 y=383 width=36 height=34 xoffset=-2 yoffset=12 xadvance=32 page=0 chnl=8
|
||||
char id=1100 x=230 y=389 width=30 height=34 xoffset=-3 yoffset=12 xadvance=23 page=0 chnl=8
|
||||
char id=1101 x=65 y=348 width=32 height=35 xoffset=-5 yoffset=12 xadvance=23 page=0 chnl=8
|
||||
char id=1102 x=0 y=313 width=40 height=35 xoffset=-3 yoffset=12 xadvance=34 page=0 chnl=8
|
||||
char id=1103 x=381 y=388 width=32 height=34 xoffset=-5 yoffset=12 xadvance=24 page=0 chnl=8
|
||||
char id=1105 x=226 y=96 width=33 height=44 xoffset=-4 yoffset=3 xadvance=25 page=0 chnl=8
|
||||
kernings count=554
|
||||
kerning first=32 second=65 amount=-5
|
||||
kerning first=32 second=84 amount=-2
|
||||
kerning first=32 second=89 amount=-2
|
||||
kerning first=49 second=49 amount=-7
|
||||
kerning first=65 second=32 amount=-5
|
||||
kerning first=65 second=84 amount=-7
|
||||
kerning first=65 second=86 amount=-7
|
||||
kerning first=65 second=87 amount=-3
|
||||
kerning first=65 second=89 amount=-7
|
||||
kerning first=65 second=118 amount=-2
|
||||
kerning first=65 second=119 amount=-2
|
||||
kerning first=65 second=121 amount=-2
|
||||
kerning first=70 second=44 amount=-10
|
||||
kerning first=70 second=46 amount=-10
|
||||
kerning first=70 second=65 amount=-5
|
||||
kerning first=76 second=32 amount=-3
|
||||
kerning first=76 second=84 amount=-7
|
||||
kerning first=76 second=86 amount=-7
|
||||
kerning first=76 second=87 amount=-7
|
||||
kerning first=76 second=89 amount=-7
|
||||
kerning first=76 second=121 amount=-3
|
||||
kerning first=80 second=32 amount=-2
|
||||
kerning first=80 second=44 amount=-12
|
||||
kerning first=80 second=46 amount=-12
|
||||
kerning first=80 second=65 amount=-7
|
||||
kerning first=82 second=84 amount=-2
|
||||
kerning first=82 second=86 amount=-2
|
||||
kerning first=82 second=87 amount=-2
|
||||
kerning first=82 second=89 amount=-2
|
||||
kerning first=84 second=32 amount=-2
|
||||
kerning first=84 second=44 amount=-10
|
||||
kerning first=84 second=45 amount=-5
|
||||
kerning first=84 second=46 amount=-10
|
||||
kerning first=84 second=58 amount=-10
|
||||
kerning first=84 second=59 amount=-10
|
||||
kerning first=84 second=65 amount=-7
|
||||
kerning first=84 second=79 amount=-2
|
||||
kerning first=84 second=97 amount=-10
|
||||
kerning first=84 second=99 amount=-10
|
||||
kerning first=84 second=101 amount=-10
|
||||
kerning first=84 second=105 amount=-3
|
||||
kerning first=84 second=111 amount=-10
|
||||
kerning first=84 second=114 amount=-3
|
||||
kerning first=84 second=115 amount=-10
|
||||
kerning first=84 second=117 amount=-3
|
||||
kerning first=84 second=119 amount=-5
|
||||
kerning first=84 second=121 amount=-5
|
||||
kerning first=86 second=44 amount=-8
|
||||
kerning first=86 second=45 amount=-5
|
||||
kerning first=86 second=46 amount=-8
|
||||
kerning first=86 second=58 amount=-3
|
||||
kerning first=86 second=59 amount=-3
|
||||
kerning first=86 second=65 amount=-7
|
||||
kerning first=86 second=97 amount=-7
|
||||
kerning first=86 second=101 amount=-5
|
||||
kerning first=86 second=105 amount=-2
|
||||
kerning first=86 second=111 amount=-5
|
||||
kerning first=86 second=114 amount=-3
|
||||
kerning first=86 second=117 amount=-3
|
||||
kerning first=86 second=121 amount=-3
|
||||
kerning first=87 second=44 amount=-5
|
||||
kerning first=87 second=45 amount=-2
|
||||
kerning first=87 second=46 amount=-5
|
||||
kerning first=87 second=58 amount=-2
|
||||
kerning first=87 second=59 amount=-2
|
||||
kerning first=87 second=65 amount=-3
|
||||
kerning first=87 second=97 amount=-3
|
||||
kerning first=87 second=101 amount=-2
|
||||
kerning first=87 second=111 amount=-2
|
||||
kerning first=87 second=114 amount=-2
|
||||
kerning first=87 second=117 amount=-2
|
||||
kerning first=87 second=121 amount=-1
|
||||
kerning first=89 second=32 amount=-2
|
||||
kerning first=89 second=44 amount=-12
|
||||
kerning first=89 second=45 amount=-8
|
||||
kerning first=89 second=46 amount=-12
|
||||
kerning first=89 second=58 amount=-5
|
||||
kerning first=89 second=59 amount=-6
|
||||
kerning first=89 second=65 amount=-7
|
||||
kerning first=89 second=97 amount=-7
|
||||
kerning first=89 second=101 amount=-8
|
||||
kerning first=89 second=105 amount=-3
|
||||
kerning first=89 second=111 amount=-8
|
||||
kerning first=89 second=112 amount=-7
|
||||
kerning first=89 second=113 amount=-8
|
||||
kerning first=89 second=117 amount=-5
|
||||
kerning first=89 second=118 amount=-5
|
||||
kerning first=102 second=102 amount=-2
|
||||
kerning first=114 second=44 amount=-5
|
||||
kerning first=114 second=46 amount=-5
|
||||
kerning first=118 second=44 amount=-7
|
||||
kerning first=118 second=46 amount=-7
|
||||
kerning first=119 second=44 amount=-5
|
||||
kerning first=119 second=46 amount=-5
|
||||
kerning first=121 second=44 amount=-7
|
||||
kerning first=121 second=46 amount=-7
|
||||
kerning first=1040 second=1044 amount=3
|
||||
kerning first=1040 second=1047 amount=-1
|
||||
kerning first=1040 second=1051 amount=2
|
||||
kerning first=1040 second=1054 amount=-2
|
||||
kerning first=1040 second=1055 amount=-1
|
||||
kerning first=1040 second=1057 amount=-2
|
||||
kerning first=1040 second=1058 amount=-7
|
||||
kerning first=1040 second=1059 amount=-4
|
||||
kerning first=1040 second=1060 amount=-3
|
||||
kerning first=1040 second=1063 amount=-7
|
||||
kerning first=1040 second=1069 amount=-2
|
||||
kerning first=1040 second=1072 amount=1
|
||||
kerning first=1040 second=1090 amount=-2
|
||||
kerning first=1040 second=1091 amount=-1
|
||||
kerning first=1040 second=1092 amount=1
|
||||
kerning first=1040 second=1101 amount=2
|
||||
kerning first=1041 second=1040 amount=-2
|
||||
kerning first=1041 second=1047 amount=-1
|
||||
kerning first=1041 second=1054 amount=-1
|
||||
kerning first=1041 second=1057 amount=-1
|
||||
kerning first=1041 second=1058 amount=-4
|
||||
kerning first=1041 second=1059 amount=-2
|
||||
kerning first=1041 second=1060 amount=-1
|
||||
kerning first=1041 second=1061 amount=-2
|
||||
kerning first=1041 second=1063 amount=-4
|
||||
kerning first=1041 second=1066 amount=-3
|
||||
kerning first=1041 second=1069 amount=-1
|
||||
kerning first=1041 second=1071 amount=-1
|
||||
kerning first=1041 second=1083 amount=-1
|
||||
kerning first=1041 second=1091 amount=-2
|
||||
kerning first=1042 second=1040 amount=-3
|
||||
kerning first=1042 second=1044 amount=-2
|
||||
kerning first=1042 second=1046 amount=-2
|
||||
kerning first=1042 second=1047 amount=-3
|
||||
kerning first=1042 second=1051 amount=-1
|
||||
kerning first=1042 second=1054 amount=-3
|
||||
kerning first=1042 second=1057 amount=-3
|
||||
kerning first=1042 second=1058 amount=-6
|
||||
kerning first=1042 second=1059 amount=-3
|
||||
kerning first=1042 second=1060 amount=-3
|
||||
kerning first=1042 second=1061 amount=-4
|
||||
kerning first=1042 second=1063 amount=-4
|
||||
kerning first=1042 second=1066 amount=-5
|
||||
kerning first=1042 second=1071 amount=-3
|
||||
kerning first=1042 second=1076 amount=-1
|
||||
kerning first=1042 second=1084 amount=-1
|
||||
kerning first=1042 second=1090 amount=-3
|
||||
kerning first=1042 second=1091 amount=-1
|
||||
kerning first=1042 second=1093 amount=-1
|
||||
kerning first=1042 second=1095 amount=-3
|
||||
kerning first=1042 second=1103 amount=-1
|
||||
kerning first=1043 second=44 amount=-11
|
||||
kerning first=1043 second=46 amount=-11
|
||||
kerning first=1043 second=1040 amount=-6
|
||||
kerning first=1043 second=1044 amount=-6
|
||||
kerning first=1043 second=1047 amount=-2
|
||||
kerning first=1043 second=1051 amount=-5
|
||||
kerning first=1043 second=1052 amount=-2
|
||||
kerning first=1043 second=1054 amount=-5
|
||||
kerning first=1043 second=1057 amount=-4
|
||||
kerning first=1043 second=1071 amount=-3
|
||||
kerning first=1043 second=1072 amount=-5
|
||||
kerning first=1043 second=1074 amount=-5
|
||||
kerning first=1043 second=1076 amount=-6
|
||||
kerning first=1043 second=1077 amount=-6
|
||||
kerning first=1043 second=1080 amount=-5
|
||||
kerning first=1043 second=1083 amount=-5
|
||||
kerning first=1043 second=1084 amount=-5
|
||||
kerning first=1043 second=1085 amount=-5
|
||||
kerning first=1043 second=1086 amount=-6
|
||||
kerning first=1043 second=1088 amount=-5
|
||||
kerning first=1043 second=1091 amount=-6
|
||||
kerning first=1043 second=1099 amount=-5
|
||||
kerning first=1043 second=1100 amount=-5
|
||||
kerning first=1043 second=1102 amount=-5
|
||||
kerning first=1043 second=1103 amount=-6
|
||||
kerning first=1044 second=1059 amount=1
|
||||
kerning first=1044 second=1060 amount=-2
|
||||
kerning first=1044 second=1063 amount=-3
|
||||
kerning first=1044 second=1079 amount=3
|
||||
kerning first=1044 second=1086 amount=1
|
||||
kerning first=1044 second=1091 amount=2
|
||||
kerning first=1045 second=1047 amount=-2
|
||||
kerning first=1045 second=1089 amount=-1
|
||||
kerning first=1046 second=1047 amount=-1
|
||||
kerning first=1046 second=1054 amount=-2
|
||||
kerning first=1046 second=1057 amount=-1
|
||||
kerning first=1046 second=1058 amount=1
|
||||
kerning first=1046 second=1059 amount=2
|
||||
kerning first=1046 second=1066 amount=2
|
||||
kerning first=1046 second=1072 amount=1
|
||||
kerning first=1046 second=1077 amount=-1
|
||||
kerning first=1046 second=1086 amount=-1
|
||||
kerning first=1046 second=1091 amount=-1
|
||||
kerning first=1047 second=1051 amount=-1
|
||||
kerning first=1047 second=1054 amount=-1
|
||||
kerning first=1047 second=1057 amount=-1
|
||||
kerning first=1047 second=1058 amount=-2
|
||||
kerning first=1047 second=1059 amount=-1
|
||||
kerning first=1047 second=1060 amount=-1
|
||||
kerning first=1047 second=1063 amount=-2
|
||||
kerning first=1047 second=1071 amount=-1
|
||||
kerning first=1050 second=1047 amount=-1
|
||||
kerning first=1050 second=1054 amount=-1
|
||||
kerning first=1050 second=1057 amount=-1
|
||||
kerning first=1050 second=1059 amount=1
|
||||
kerning first=1050 second=1060 amount=-3
|
||||
kerning first=1051 second=1060 amount=-1
|
||||
kerning first=1051 second=1073 amount=1
|
||||
kerning first=1051 second=1091 amount=1
|
||||
kerning first=1052 second=1060 amount=-1
|
||||
kerning first=1052 second=1063 amount=-1
|
||||
kerning first=1052 second=1072 amount=1
|
||||
kerning first=1052 second=1077 amount=1
|
||||
kerning first=1052 second=1086 amount=1
|
||||
kerning first=1052 second=1089 amount=1
|
||||
kerning first=1052 second=1091 amount=1
|
||||
kerning first=1052 second=1095 amount=-1
|
||||
kerning first=1052 second=1101 amount=1
|
||||
kerning first=1054 second=1040 amount=-2
|
||||
kerning first=1054 second=1044 amount=-2
|
||||
kerning first=1054 second=1046 amount=-2
|
||||
kerning first=1054 second=1051 amount=-1
|
||||
kerning first=1054 second=1059 amount=-2
|
||||
kerning first=1054 second=1061 amount=-4
|
||||
kerning first=1054 second=1063 amount=-2
|
||||
kerning first=1054 second=1071 amount=-2
|
||||
kerning first=1054 second=1076 amount=-2
|
||||
kerning first=1054 second=1083 amount=-1
|
||||
kerning first=1054 second=1093 amount=-1
|
||||
kerning first=1056 second=44 amount=-17
|
||||
kerning first=1056 second=46 amount=-17
|
||||
kerning first=1056 second=58 amount=-2
|
||||
kerning first=1056 second=59 amount=-2
|
||||
kerning first=1056 second=1040 amount=-6
|
||||
kerning first=1056 second=1044 amount=-6
|
||||
kerning first=1056 second=1046 amount=-1
|
||||
kerning first=1056 second=1047 amount=-2
|
||||
kerning first=1056 second=1051 amount=-5
|
||||
kerning first=1056 second=1052 amount=-1
|
||||
kerning first=1056 second=1054 amount=-2
|
||||
kerning first=1056 second=1057 amount=-1
|
||||
kerning first=1056 second=1058 amount=-4
|
||||
kerning first=1056 second=1059 amount=-2
|
||||
kerning first=1056 second=1060 amount=-1
|
||||
kerning first=1056 second=1061 amount=-4
|
||||
kerning first=1056 second=1071 amount=-2
|
||||
kerning first=1056 second=1072 amount=-3
|
||||
kerning first=1056 second=1076 amount=-7
|
||||
kerning first=1056 second=1077 amount=-4
|
||||
kerning first=1056 second=1086 amount=-4
|
||||
kerning first=1056 second=1101 amount=-2
|
||||
kerning first=1056 second=1103 amount=-3
|
||||
kerning first=1057 second=1040 amount=-2
|
||||
kerning first=1057 second=1044 amount=-2
|
||||
kerning first=1057 second=1047 amount=-1
|
||||
kerning first=1057 second=1051 amount=-3
|
||||
kerning first=1057 second=1052 amount=-1
|
||||
kerning first=1057 second=1054 amount=-2
|
||||
kerning first=1057 second=1058 amount=-3
|
||||
kerning first=1057 second=1059 amount=-3
|
||||
kerning first=1057 second=1061 amount=-5
|
||||
kerning first=1057 second=1063 amount=-3
|
||||
kerning first=1057 second=1066 amount=-3
|
||||
kerning first=1057 second=1069 amount=-1
|
||||
kerning first=1057 second=1072 amount=1
|
||||
kerning first=1057 second=1078 amount=2
|
||||
kerning first=1057 second=1095 amount=-1
|
||||
kerning first=1058 second=44 amount=-10
|
||||
kerning first=1058 second=46 amount=-10
|
||||
kerning first=1058 second=1040 amount=-3
|
||||
kerning first=1058 second=1044 amount=-3
|
||||
kerning first=1058 second=1046 amount=1
|
||||
kerning first=1058 second=1047 amount=-1
|
||||
kerning first=1058 second=1051 amount=-2
|
||||
kerning first=1058 second=1054 amount=-4
|
||||
kerning first=1058 second=1060 amount=-3
|
||||
kerning first=1058 second=1071 amount=-2
|
||||
kerning first=1058 second=1072 amount=-4
|
||||
kerning first=1058 second=1074 amount=-4
|
||||
kerning first=1058 second=1077 amount=-5
|
||||
kerning first=1058 second=1080 amount=-4
|
||||
kerning first=1058 second=1082 amount=-4
|
||||
kerning first=1058 second=1083 amount=-4
|
||||
kerning first=1058 second=1084 amount=-4
|
||||
kerning first=1058 second=1086 amount=-7
|
||||
kerning first=1058 second=1087 amount=-4
|
||||
kerning first=1058 second=1088 amount=-5
|
||||
kerning first=1058 second=1089 amount=-5
|
||||
kerning first=1058 second=1091 amount=-5
|
||||
kerning first=1058 second=1093 amount=-4
|
||||
kerning first=1058 second=1097 amount=-4
|
||||
kerning first=1058 second=1099 amount=-4
|
||||
kerning first=1058 second=1100 amount=-4
|
||||
kerning first=1058 second=1102 amount=-4
|
||||
kerning first=1058 second=1103 amount=-5
|
||||
kerning first=1059 second=44 amount=-12
|
||||
kerning first=1059 second=46 amount=-12
|
||||
kerning first=1059 second=58 amount=-2
|
||||
kerning first=1059 second=59 amount=-2
|
||||
kerning first=1059 second=1040 amount=-6
|
||||
kerning first=1059 second=1044 amount=-4
|
||||
kerning first=1059 second=1047 amount=-2
|
||||
kerning first=1059 second=1051 amount=-3
|
||||
kerning first=1059 second=1054 amount=-3
|
||||
kerning first=1059 second=1060 amount=-3
|
||||
kerning first=1059 second=1069 amount=-2
|
||||
kerning first=1059 second=1071 amount=-2
|
||||
kerning first=1059 second=1073 amount=-2
|
||||
kerning first=1059 second=1074 amount=-5
|
||||
kerning first=1059 second=1075 amount=-4
|
||||
kerning first=1059 second=1076 amount=-7
|
||||
kerning first=1059 second=1077 amount=-6
|
||||
kerning first=1059 second=1078 amount=-3
|
||||
kerning first=1059 second=1079 amount=-5
|
||||
kerning first=1059 second=1080 amount=-4
|
||||
kerning first=1059 second=1081 amount=-3
|
||||
kerning first=1059 second=1082 amount=-4
|
||||
kerning first=1059 second=1083 amount=-6
|
||||
kerning first=1059 second=1084 amount=-4
|
||||
kerning first=1059 second=1085 amount=-4
|
||||
kerning first=1059 second=1086 amount=-6
|
||||
kerning first=1059 second=1087 amount=-4
|
||||
kerning first=1059 second=1088 amount=-4
|
||||
kerning first=1059 second=1089 amount=-6
|
||||
kerning first=1059 second=1093 amount=-4
|
||||
kerning first=1059 second=1094 amount=-4
|
||||
kerning first=1059 second=1096 amount=-4
|
||||
kerning first=1059 second=1097 amount=-4
|
||||
kerning first=1059 second=1102 amount=-4
|
||||
kerning first=1059 second=1103 amount=-6
|
||||
kerning first=1060 second=1040 amount=-2
|
||||
kerning first=1060 second=1044 amount=-3
|
||||
kerning first=1060 second=1051 amount=-3
|
||||
kerning first=1060 second=1058 amount=-5
|
||||
kerning first=1060 second=1059 amount=-4
|
||||
kerning first=1060 second=1063 amount=-2
|
||||
kerning first=1060 second=1071 amount=-3
|
||||
kerning first=1060 second=1083 amount=-3
|
||||
kerning first=1061 second=1047 amount=-2
|
||||
kerning first=1061 second=1054 amount=-3
|
||||
kerning first=1061 second=1057 amount=-3
|
||||
kerning first=1061 second=1060 amount=-3
|
||||
kerning first=1061 second=1069 amount=-3
|
||||
kerning first=1061 second=1086 amount=-1
|
||||
kerning first=1061 second=1091 amount=-2
|
||||
kerning first=1062 second=1054 amount=-2
|
||||
kerning first=1062 second=1072 amount=2
|
||||
kerning first=1065 second=1072 amount=1
|
||||
kerning first=1065 second=1091 amount=2
|
||||
kerning first=1066 second=1071 amount=-3
|
||||
kerning first=1068 second=1040 amount=-2
|
||||
kerning first=1068 second=1044 amount=-2
|
||||
kerning first=1068 second=1046 amount=-3
|
||||
kerning first=1068 second=1047 amount=-1
|
||||
kerning first=1068 second=1051 amount=-3
|
||||
kerning first=1068 second=1052 amount=-2
|
||||
kerning first=1068 second=1054 amount=-2
|
||||
kerning first=1068 second=1057 amount=-2
|
||||
kerning first=1068 second=1058 amount=-9
|
||||
kerning first=1068 second=1061 amount=-4
|
||||
kerning first=1068 second=1063 amount=-7
|
||||
kerning first=1068 second=1069 amount=-1
|
||||
kerning first=1068 second=1071 amount=-4
|
||||
kerning first=1069 second=1044 amount=-3
|
||||
kerning first=1069 second=1046 amount=-1
|
||||
kerning first=1069 second=1047 amount=-1
|
||||
kerning first=1069 second=1051 amount=-3
|
||||
kerning first=1069 second=1061 amount=-3
|
||||
kerning first=1069 second=1071 amount=-2
|
||||
kerning first=1069 second=1076 amount=-3
|
||||
kerning first=1069 second=1078 amount=1
|
||||
kerning first=1069 second=1083 amount=-3
|
||||
kerning first=1069 second=1084 amount=-1
|
||||
kerning first=1069 second=1103 amount=-1
|
||||
kerning first=1070 second=1040 amount=-3
|
||||
kerning first=1070 second=1044 amount=-4
|
||||
kerning first=1070 second=1046 amount=-2
|
||||
kerning first=1070 second=1051 amount=-4
|
||||
kerning first=1070 second=1054 amount=-1
|
||||
kerning first=1070 second=1057 amount=-1
|
||||
kerning first=1070 second=1058 amount=-5
|
||||
kerning first=1070 second=1061 amount=-4
|
||||
kerning first=1070 second=1063 amount=-3
|
||||
kerning first=1070 second=1076 amount=-4
|
||||
kerning first=1070 second=1083 amount=-4
|
||||
kerning first=1070 second=1084 amount=-1
|
||||
kerning first=1072 second=1079 amount=-1
|
||||
kerning first=1072 second=1090 amount=-2
|
||||
kerning first=1072 second=1091 amount=-1
|
||||
kerning first=1072 second=1095 amount=-2
|
||||
kerning first=1073 second=1072 amount=-2
|
||||
kerning first=1073 second=1076 amount=-4
|
||||
kerning first=1073 second=1077 amount=-1
|
||||
kerning first=1073 second=1078 amount=-1
|
||||
kerning first=1073 second=1079 amount=-2
|
||||
kerning first=1073 second=1083 amount=-4
|
||||
kerning first=1073 second=1084 amount=-2
|
||||
kerning first=1073 second=1089 amount=-1
|
||||
kerning first=1073 second=1091 amount=-2
|
||||
kerning first=1073 second=1092 amount=-1
|
||||
kerning first=1073 second=1093 amount=-3
|
||||
kerning first=1073 second=1095 amount=-3
|
||||
kerning first=1073 second=1098 amount=-3
|
||||
kerning first=1073 second=1101 amount=-1
|
||||
kerning first=1073 second=1103 amount=-2
|
||||
kerning first=1074 second=1072 amount=-1
|
||||
kerning first=1074 second=1073 amount=-1
|
||||
kerning first=1074 second=1076 amount=-1
|
||||
kerning first=1074 second=1077 amount=-1
|
||||
kerning first=1074 second=1078 amount=-1
|
||||
kerning first=1074 second=1079 amount=-1
|
||||
kerning first=1074 second=1083 amount=-2
|
||||
kerning first=1074 second=1084 amount=-1
|
||||
kerning first=1074 second=1086 amount=-1
|
||||
kerning first=1074 second=1089 amount=-1
|
||||
kerning first=1074 second=1090 amount=-2
|
||||
kerning first=1074 second=1091 amount=-2
|
||||
kerning first=1074 second=1092 amount=-1
|
||||
kerning first=1074 second=1095 amount=-4
|
||||
kerning first=1074 second=1098 amount=-3
|
||||
kerning first=1074 second=1103 amount=-1
|
||||
kerning first=1075 second=44 amount=-11
|
||||
kerning first=1075 second=46 amount=-11
|
||||
kerning first=1075 second=1072 amount=-2
|
||||
kerning first=1075 second=1076 amount=-4
|
||||
kerning first=1075 second=1077 amount=-2
|
||||
kerning first=1075 second=1079 amount=-1
|
||||
kerning first=1075 second=1083 amount=-2
|
||||
kerning first=1075 second=1086 amount=-2
|
||||
kerning first=1075 second=1089 amount=-2
|
||||
kerning first=1075 second=1103 amount=-1
|
||||
kerning first=1076 second=1098 amount=-2
|
||||
kerning first=1076 second=1101 amount=1
|
||||
kerning first=1077 second=1073 amount=-1
|
||||
kerning first=1077 second=1076 amount=-2
|
||||
kerning first=1077 second=1078 amount=-1
|
||||
kerning first=1077 second=1079 amount=-2
|
||||
kerning first=1077 second=1083 amount=-3
|
||||
kerning first=1077 second=1090 amount=-3
|
||||
kerning first=1077 second=1091 amount=-1
|
||||
kerning first=1077 second=1093 amount=-2
|
||||
kerning first=1077 second=1095 amount=-3
|
||||
kerning first=1078 second=1073 amount=1
|
||||
kerning first=1078 second=1091 amount=1
|
||||
kerning first=1078 second=1095 amount=-1
|
||||
kerning first=1078 second=1098 amount=2
|
||||
kerning first=1079 second=1073 amount=-1
|
||||
kerning first=1079 second=1076 amount=-2
|
||||
kerning first=1079 second=1077 amount=-1
|
||||
kerning first=1079 second=1079 amount=-1
|
||||
kerning first=1079 second=1083 amount=-1
|
||||
kerning first=1079 second=1086 amount=-1
|
||||
kerning first=1079 second=1089 amount=-1
|
||||
kerning first=1079 second=1091 amount=-1
|
||||
kerning first=1079 second=1092 amount=-1
|
||||
kerning first=1079 second=1095 amount=-3
|
||||
kerning first=1079 second=1098 amount=-2
|
||||
kerning first=1082 second=1072 amount=2
|
||||
kerning first=1082 second=1073 amount=2
|
||||
kerning first=1082 second=1077 amount=1
|
||||
kerning first=1082 second=1079 amount=1
|
||||
kerning first=1082 second=1083 amount=1
|
||||
kerning first=1082 second=1086 amount=1
|
||||
kerning first=1082 second=1089 amount=1
|
||||
kerning first=1082 second=1090 amount=1
|
||||
kerning first=1082 second=1091 amount=1
|
||||
kerning first=1082 second=1101 amount=1
|
||||
kerning first=1083 second=1086 amount=1
|
||||
kerning first=1083 second=1095 amount=-2
|
||||
kerning first=1084 second=1073 amount=-1
|
||||
kerning first=1084 second=1079 amount=-1
|
||||
kerning first=1084 second=1091 amount=1
|
||||
kerning first=1086 second=1076 amount=-2
|
||||
kerning first=1086 second=1078 amount=-1
|
||||
kerning first=1086 second=1079 amount=-1
|
||||
kerning first=1086 second=1083 amount=-2
|
||||
kerning first=1086 second=1090 amount=-2
|
||||
kerning first=1086 second=1091 amount=-1
|
||||
kerning first=1086 second=1093 amount=-1
|
||||
kerning first=1086 second=1095 amount=-2
|
||||
kerning first=1088 second=1076 amount=-2
|
||||
kerning first=1088 second=1079 amount=-1
|
||||
kerning first=1088 second=1083 amount=-3
|
||||
kerning first=1088 second=1090 amount=-2
|
||||
kerning first=1088 second=1091 amount=-1
|
||||
kerning first=1088 second=1093 amount=-1
|
||||
kerning first=1088 second=1095 amount=-2
|
||||
kerning first=1088 second=1103 amount=-1
|
||||
kerning first=1089 second=1078 amount=1
|
||||
kerning first=1089 second=1086 amount=1
|
||||
kerning first=1089 second=1095 amount=-1
|
||||
kerning first=1089 second=1101 amount=1
|
||||
kerning first=1090 second=44 amount=-10
|
||||
kerning first=1090 second=46 amount=-10
|
||||
kerning first=1090 second=1072 amount=-1
|
||||
kerning first=1090 second=1076 amount=-3
|
||||
kerning first=1090 second=1077 amount=-1
|
||||
kerning first=1090 second=1078 amount=3
|
||||
kerning first=1090 second=1083 amount=-2
|
||||
kerning first=1090 second=1086 amount=-1
|
||||
kerning first=1090 second=1089 amount=-1
|
||||
kerning first=1090 second=1091 amount=1
|
||||
kerning first=1091 second=44 amount=-9
|
||||
kerning first=1091 second=46 amount=-9
|
||||
kerning first=1091 second=1072 amount=-1
|
||||
kerning first=1091 second=1073 amount=1
|
||||
kerning first=1091 second=1076 amount=-3
|
||||
kerning first=1091 second=1077 amount=-1
|
||||
kerning first=1091 second=1078 amount=1
|
||||
kerning first=1091 second=1083 amount=-2
|
||||
kerning first=1091 second=1084 amount=-1
|
||||
kerning first=1091 second=1086 amount=-1
|
||||
kerning first=1091 second=1088 amount=-1
|
||||
kerning first=1091 second=1089 amount=-1
|
||||
kerning first=1091 second=1092 amount=-1
|
||||
kerning first=1091 second=1101 amount=-1
|
||||
kerning first=1091 second=1103 amount=-1
|
||||
kerning first=1092 second=1073 amount=-1
|
||||
kerning first=1092 second=1076 amount=-2
|
||||
kerning first=1092 second=1083 amount=-2
|
||||
kerning first=1092 second=1090 amount=-2
|
||||
kerning first=1092 second=1091 amount=-1
|
||||
kerning first=1092 second=1095 amount=-2
|
||||
kerning first=1092 second=1103 amount=-1
|
||||
kerning first=1093 second=1072 amount=-1
|
||||
kerning first=1093 second=1073 amount=-1
|
||||
kerning first=1093 second=1077 amount=-1
|
||||
kerning first=1093 second=1079 amount=-1
|
||||
kerning first=1093 second=1086 amount=-1
|
||||
kerning first=1093 second=1089 amount=-1
|
||||
kerning first=1093 second=1090 amount=-1
|
||||
kerning first=1093 second=1092 amount=-1
|
||||
kerning first=1093 second=1095 amount=-2
|
||||
kerning first=1094 second=1077 amount=-1
|
||||
kerning first=1094 second=1079 amount=-1
|
||||
kerning first=1094 second=1086 amount=-1
|
||||
kerning first=1094 second=1089 amount=-1
|
||||
kerning first=1097 second=1077 amount=-1
|
||||
kerning first=1097 second=1086 amount=-1
|
||||
kerning first=1097 second=1091 amount=1
|
||||
kerning first=1100 second=1090 amount=-7
|
||||
kerning first=1100 second=1095 amount=-6
|
||||
kerning first=1101 second=1076 amount=-2
|
||||
kerning first=1101 second=1077 amount=1
|
||||
kerning first=1101 second=1079 amount=-1
|
||||
kerning first=1101 second=1083 amount=-2
|
||||
kerning first=1101 second=1086 amount=1
|
||||
kerning first=1101 second=1090 amount=-2
|
||||
kerning first=1101 second=1093 amount=-1
|
||||
kerning first=1101 second=1103 amount=-1
|
||||
kerning first=1102 second=1076 amount=-2
|
||||
kerning first=1102 second=1078 amount=-1
|
||||
kerning first=1102 second=1083 amount=-2
|
||||
kerning first=1102 second=1084 amount=-1
|
||||
kerning first=1102 second=1090 amount=-2
|
||||
kerning first=1102 second=1093 amount=-1
|
||||
kerning first=1102 second=1095 amount=-2
|
||||
3
samples/bin/library/fonts/arial_sdf.png
Normal file
3
samples/bin/library/fonts/arial_sdf.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ca1ca296c9b96cfccc469e1fa19f83019b95c77c564119db697595f418820440
|
||||
size 89901
|
||||
14
samples/bin/library/materials/font_bm_material.json
Normal file
14
samples/bin/library/materials/font_bm_material.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/font_bm_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/font_sdf_material.json
Normal file
14
samples/bin/library/materials/font_sdf_material.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/font_sdf_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/spine_material_additive.json
Normal file
14
samples/bin/library/materials/spine_material_additive.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/spine_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/spine_material_multiply.json
Normal file
14
samples/bin/library/materials/spine_material_multiply.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/spine_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "dst_color",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "sprite_shader.json",
|
||||
"shader" : "../shaders/spine_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "src_alpha",
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
14
samples/bin/library/materials/spine_material_screen.json
Normal file
14
samples/bin/library/materials/spine_material_screen.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/spine_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_color"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/sprite_material_additive.json
Normal file
14
samples/bin/library/materials/sprite_material_additive.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/sprite_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/sprite_material_multiply.json
Normal file
14
samples/bin/library/materials/sprite_material_multiply.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/sprite_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "dst_color",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/sprite_material_normal.json
Normal file
14
samples/bin/library/materials/sprite_material_normal.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/sprite_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_alpha"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
14
samples/bin/library/materials/sprite_material_screen.json
Normal file
14
samples/bin/library/materials/sprite_material_screen.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "../shaders/sprite_shader.json",
|
||||
"state_block" : {
|
||||
"blending_state" : {
|
||||
"src_factor" : "one",
|
||||
"dst_factor" : "one_minus_src_color"
|
||||
},
|
||||
"capabilities_state" : {
|
||||
"blending" : true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
varying vec2 v_st0;
|
||||
|
||||
void main() {
|
||||
vec2 st = vec2(v_st0.s, 1.0 - v_st0.t);
|
||||
gl_FragColor = texture2D(u_texture, st);
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
uniform mat4 u_matrix_m;
|
||||
uniform mat4 u_matrix_vp;
|
||||
|
||||
attribute vec3 a_vertex;
|
||||
attribute vec2 a_st0;
|
||||
|
||||
varying vec2 v_st0;
|
||||
|
||||
void main() {
|
||||
v_st0 = a_st0;
|
||||
gl_Position = vec4(a_vertex, 1.0) * u_matrix_m * u_matrix_vp;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"passes" : [{
|
||||
"shader" : "model_shader.json",
|
||||
"shader" : "../../shaders/model_shader.json",
|
||||
"state_block" : {
|
||||
"capabilities_state" : {
|
||||
"depth_test" : true
|
||||
18
samples/bin/library/prefabs/coin_prefab.json
Normal file
18
samples/bin/library/prefabs/coin_prefab.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"prototype" : "spine_prefab.json",
|
||||
"components" : {
|
||||
"spine_player" : {
|
||||
"spine" : "../spines/coin_spine.json"
|
||||
},
|
||||
"spine_player_cmd" : {
|
||||
"commands" : [{
|
||||
"type" : "set_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 0,
|
||||
"name" : "animation",
|
||||
"loop" : true
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
18
samples/bin/library/prefabs/dragon_prefab.json
Normal file
18
samples/bin/library/prefabs/dragon_prefab.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"prototype" : "spine_prefab.json",
|
||||
"components" : {
|
||||
"spine_player" : {
|
||||
"spine" : "../spines/dragon_spine.json"
|
||||
},
|
||||
"spine_player_cmd" : {
|
||||
"commands" : [{
|
||||
"type" : "set_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 0,
|
||||
"name" : "flying",
|
||||
"loop" : true
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,11 @@
|
||||
"components" : {
|
||||
"renderer" : {
|
||||
"materials" : [
|
||||
"gnome_material.json"
|
||||
"../models/gnome/gnome_material.json"
|
||||
]
|
||||
},
|
||||
"model_renderer" : {
|
||||
"model" : "gnome_model.json"
|
||||
"model" : "../models/gnome/gnome_model.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
15
samples/bin/library/prefabs/label_bm_prefab.json
Normal file
15
samples/bin/library/prefabs/label_bm_prefab.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"components" : {
|
||||
"renderer" : {
|
||||
"materials" : [
|
||||
"../materials/font_bm_material.json"
|
||||
]
|
||||
},
|
||||
"model_renderer" : {},
|
||||
"label" : {
|
||||
"font" : "../fonts/arial_bm.fnt",
|
||||
"text" : "Hello World!"
|
||||
},
|
||||
"label.dirty" : {}
|
||||
}
|
||||
}
|
||||
15
samples/bin/library/prefabs/label_sdf_prefab.json
Normal file
15
samples/bin/library/prefabs/label_sdf_prefab.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"components" : {
|
||||
"renderer" : {
|
||||
"materials" : [
|
||||
"../materials/font_sdf_material.json"
|
||||
]
|
||||
},
|
||||
"model_renderer" : {},
|
||||
"label" : {
|
||||
"font" : "../fonts/arial_sdf.fnt",
|
||||
"text" : "Hello World!"
|
||||
},
|
||||
"label.dirty" : {}
|
||||
}
|
||||
}
|
||||
44
samples/bin/library/prefabs/raptor_prefab.json
Normal file
44
samples/bin/library/prefabs/raptor_prefab.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"prototype" : "spine_prefab.json",
|
||||
"components" : {
|
||||
"spine_player" : {
|
||||
"spine" : "../spines/raptor_spine.json"
|
||||
},
|
||||
"spine_player_cmd" : {
|
||||
"commands" : [{
|
||||
"type" : "add_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 0,
|
||||
"name" : "walk"
|
||||
}
|
||||
}, {
|
||||
"type" : "add_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 0,
|
||||
"name" : "roar"
|
||||
}
|
||||
}, {
|
||||
"type" : "add_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 0,
|
||||
"name" : "walk",
|
||||
"loop" : true
|
||||
}
|
||||
}, {
|
||||
"type" : "add_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 1,
|
||||
"name" : "gun-grab",
|
||||
"delay" : 2
|
||||
}
|
||||
}, {
|
||||
"type" : "add_anim_cmd",
|
||||
"desc" : {
|
||||
"track" : 1,
|
||||
"name" : "gun-holster",
|
||||
"delay" : 3
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
8
samples/bin/library/prefabs/ship_prefab.json
Normal file
8
samples/bin/library/prefabs/ship_prefab.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"prototype" : "sprite_prefab.json",
|
||||
"components" : {
|
||||
"sprite_renderer" : {
|
||||
"sprite" : "../sprites/ship_sprite.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
15
samples/bin/library/prefabs/spine_prefab.json
Normal file
15
samples/bin/library/prefabs/spine_prefab.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"components" : {
|
||||
"renderer" : {},
|
||||
"spine_player" : {
|
||||
"materials" : {
|
||||
"additive" : "../materials/spine_material_additive.json",
|
||||
"multiply" : "../materials/spine_material_multiply.json",
|
||||
"normal" : "../materials/spine_material_normal.json",
|
||||
"screen" : "../materials/spine_material_screen.json"
|
||||
}
|
||||
},
|
||||
"spine_player_cmd" : {},
|
||||
"spine_player_evt" : {}
|
||||
}
|
||||
}
|
||||
13
samples/bin/library/prefabs/sprite_prefab.json
Normal file
13
samples/bin/library/prefabs/sprite_prefab.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"components" : {
|
||||
"renderer" : {},
|
||||
"sprite_renderer" : {
|
||||
"materials" : {
|
||||
"additive" : "../materials/sprite_material_additive.json",
|
||||
"multiply" : "../materials/sprite_material_multiply.json",
|
||||
"normal" : "../materials/sprite_material_normal.json",
|
||||
"screen" : "../materials/sprite_material_screen.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"components" : {
|
||||
"scene" : {}
|
||||
},
|
||||
"children" : [{
|
||||
"prototype" : "camera_prefab.json"
|
||||
},{
|
||||
"prototype" : "gnome_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [0,50,0],
|
||||
"scale" : 20
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "ship_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [-50,-50,0]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "ship_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [50,-50,0]
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
64
samples/bin/library/scenes/scene_prefab.json
Normal file
64
samples/bin/library/scenes/scene_prefab.json
Normal file
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"components" : {
|
||||
"scene" : {}
|
||||
},
|
||||
"children" : [{
|
||||
"prototype" : "../prefabs/camera_prefab.json"
|
||||
},{
|
||||
"prototype" : "../prefabs/gnome_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [0,0,0],
|
||||
"scale" : 20
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/ship_prefab.json",
|
||||
"components" : {
|
||||
"sprite_renderer" : {
|
||||
"blending" : "additive"
|
||||
},
|
||||
"actor" : {
|
||||
"translation" : [-50,-50,0]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/ship_prefab.json",
|
||||
"components" : {
|
||||
"sprite_renderer" : {
|
||||
"tint" : [255,0,0,255]
|
||||
},
|
||||
"actor" : {
|
||||
"translation" : [50,-50,0]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/label_bm_prefab.json",
|
||||
"components" : {
|
||||
"label" : {
|
||||
"text" : "bm font",
|
||||
"valign" : "center",
|
||||
"outline_width" : 0.5,
|
||||
"outline_color" : [0,0,0,255]
|
||||
},
|
||||
"actor" : {
|
||||
"translation" : [0,180,0],
|
||||
"scale" : 3
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/label_sdf_prefab.json",
|
||||
"components" : {
|
||||
"label" : {
|
||||
"text" : "sdf font",
|
||||
"valign" : "center",
|
||||
"outline_width" : 0.5,
|
||||
"outline_color" : [0,0,0,255]
|
||||
},
|
||||
"actor" : {
|
||||
"translation" : [0.5,-180.5,0],
|
||||
"scale" : 3
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
32
samples/bin/library/scenes/spine_scene_prefab.json
Normal file
32
samples/bin/library/scenes/spine_scene_prefab.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"components" : {
|
||||
"scene" : {}
|
||||
},
|
||||
"children" : [{
|
||||
"prototype" : "../prefabs/camera_prefab.json"
|
||||
},{
|
||||
"prototype" : "../prefabs/coin_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [350,250,0],
|
||||
"scale" : 0.25
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/raptor_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [300,-350,0],
|
||||
"scale" : 0.25
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"prototype" : "../prefabs/dragon_prefab.json",
|
||||
"components" : {
|
||||
"actor" : {
|
||||
"translation" : [-100,0,0],
|
||||
"scale" : 0.9
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
26
samples/bin/library/shaders/font_bm_shader.frag
Normal file
26
samples/bin/library/shaders/font_bm_shader.frag
Normal file
@@ -0,0 +1,26 @@
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
uniform float u_glyph_dilate;
|
||||
uniform float u_outline_width;
|
||||
uniform vec4 u_outline_color;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
void main() {
|
||||
vec4 t = texture2D(u_texture, v_st0);
|
||||
|
||||
float glyph_alpha = t.a;
|
||||
float outline_alpha = t.r;
|
||||
|
||||
vec4 glyph_color = vec4(v_color0.rgb * v_color0.a, v_color0.a);
|
||||
vec4 outline_color = vec4(u_outline_color.rgb * u_outline_color.a, u_outline_color.a);
|
||||
|
||||
vec2 layers_mask = vec2(
|
||||
step(0.0001, v_color0.a),
|
||||
step(0.0001, u_outline_color.a * u_outline_width));
|
||||
|
||||
gl_FragColor =
|
||||
layers_mask.x * glyph_alpha * glyph_color +
|
||||
layers_mask.y * outline_alpha * outline_color * (1.0 - glyph_alpha);
|
||||
}
|
||||
4
samples/bin/library/shaders/font_bm_shader.json
Normal file
4
samples/bin/library/shaders/font_bm_shader.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"vertex" : "font_bm_shader.vert",
|
||||
"fragment" : "font_bm_shader.frag"
|
||||
}
|
||||
39
samples/bin/library/shaders/font_bm_shader.vert
Normal file
39
samples/bin/library/shaders/font_bm_shader.vert
Normal file
@@ -0,0 +1,39 @@
|
||||
uniform vec2 u_screen_s;
|
||||
uniform mat4 u_matrix_m;
|
||||
uniform mat4 u_matrix_vp;
|
||||
|
||||
attribute vec3 a_vertex;
|
||||
attribute vec2 a_st0;
|
||||
attribute vec4 a_color0;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
#define VERTEX_SNAPPING_ON
|
||||
|
||||
vec2 round(vec2 v) {
|
||||
return vec2(
|
||||
floor(v.x + 0.5),
|
||||
floor(v.y + 0.5));
|
||||
}
|
||||
|
||||
vec4 pixel_snap(vec4 pos) {
|
||||
vec2 hpc = u_screen_s * 0.5;
|
||||
vec2 pixel_pos = round((pos.xy / pos.w) * hpc);
|
||||
pos.xy = pixel_pos / hpc * pos.w;
|
||||
return pos;
|
||||
}
|
||||
|
||||
vec4 vertex_to_homo(vec3 pos) {
|
||||
return vec4(pos, 1.0) * u_matrix_m * u_matrix_vp;
|
||||
}
|
||||
|
||||
void main() {
|
||||
v_st0 = vec2(a_st0.s, 1.0 - a_st0.t);
|
||||
v_color0 = a_color0;
|
||||
#ifndef VERTEX_SNAPPING_ON
|
||||
gl_Position = vertex_to_homo(a_vertex);
|
||||
#else
|
||||
gl_Position = pixel_snap(vertex_to_homo(a_vertex));
|
||||
#endif
|
||||
}
|
||||
34
samples/bin/library/shaders/font_sdf_shader.frag
Normal file
34
samples/bin/library/shaders/font_sdf_shader.frag
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifdef GL_OES_standard_derivatives
|
||||
# extension GL_OES_standard_derivatives : require
|
||||
#endif
|
||||
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
uniform float u_glyph_dilate;
|
||||
uniform float u_outline_width;
|
||||
uniform vec4 u_outline_color;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
void main() {
|
||||
float distance = texture2D(u_texture, v_st0).a;
|
||||
float width = fwidth(distance);
|
||||
|
||||
float glyph_center = 0.5 - u_glyph_dilate * 0.5;
|
||||
float outline_center = glyph_center - u_outline_width * 0.5;
|
||||
|
||||
float glyph_alpha = smoothstep(glyph_center - width, glyph_center + width, distance);
|
||||
float outline_alpha = smoothstep(outline_center - width, outline_center + width, distance);
|
||||
|
||||
vec4 glyph_color = vec4(v_color0.rgb * v_color0.a, v_color0.a);
|
||||
vec4 outline_color = vec4(u_outline_color.rgb * u_outline_color.a, u_outline_color.a);
|
||||
|
||||
vec2 layers_mask = vec2(
|
||||
step(0.0001, v_color0.a),
|
||||
step(0.0001, u_outline_color.a * u_outline_width));
|
||||
|
||||
gl_FragColor =
|
||||
layers_mask.x * glyph_alpha * glyph_color +
|
||||
layers_mask.y * outline_alpha * outline_color * (1.0 - glyph_alpha);
|
||||
}
|
||||
4
samples/bin/library/shaders/font_sdf_shader.json
Normal file
4
samples/bin/library/shaders/font_sdf_shader.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"vertex" : "font_sdf_shader.vert",
|
||||
"fragment" : "font_sdf_shader.frag"
|
||||
}
|
||||
39
samples/bin/library/shaders/font_sdf_shader.vert
Normal file
39
samples/bin/library/shaders/font_sdf_shader.vert
Normal file
@@ -0,0 +1,39 @@
|
||||
uniform vec2 u_screen_s;
|
||||
uniform mat4 u_matrix_m;
|
||||
uniform mat4 u_matrix_vp;
|
||||
|
||||
attribute vec3 a_vertex;
|
||||
attribute vec2 a_st0;
|
||||
attribute vec4 a_color0;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
#define VERTEX_SNAPPING_ON
|
||||
|
||||
vec2 round(vec2 v) {
|
||||
return vec2(
|
||||
floor(v.x + 0.5),
|
||||
floor(v.y + 0.5));
|
||||
}
|
||||
|
||||
vec4 pixel_snap(vec4 pos) {
|
||||
vec2 hpc = u_screen_s * 0.5;
|
||||
vec2 pixel_pos = round((pos.xy / pos.w) * hpc);
|
||||
pos.xy = pixel_pos / hpc * pos.w;
|
||||
return pos;
|
||||
}
|
||||
|
||||
vec4 vertex_to_homo(vec3 pos) {
|
||||
return vec4(pos, 1.0) * u_matrix_m * u_matrix_vp;
|
||||
}
|
||||
|
||||
void main() {
|
||||
v_st0 = vec2(a_st0.s, 1.0 - a_st0.t);
|
||||
v_color0 = a_color0;
|
||||
#ifndef VERTEX_SNAPPING_ON
|
||||
gl_Position = vertex_to_homo(a_vertex);
|
||||
#else
|
||||
gl_Position = pixel_snap(vertex_to_homo(a_vertex));
|
||||
#endif
|
||||
}
|
||||
7
samples/bin/library/shaders/model_shader.frag
Normal file
7
samples/bin/library/shaders/model_shader.frag
Normal file
@@ -0,0 +1,7 @@
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
varying vec2 v_st0;
|
||||
|
||||
void main() {
|
||||
gl_FragColor = texture2D(u_texture, v_st0);
|
||||
}
|
||||
16
samples/bin/library/shaders/model_shader.vert
Normal file
16
samples/bin/library/shaders/model_shader.vert
Normal file
@@ -0,0 +1,16 @@
|
||||
uniform mat4 u_matrix_m;
|
||||
uniform mat4 u_matrix_vp;
|
||||
|
||||
attribute vec3 a_vertex;
|
||||
attribute vec2 a_st0;
|
||||
|
||||
varying vec2 v_st0;
|
||||
|
||||
vec4 vertex_to_homo(vec3 pos) {
|
||||
return vec4(pos, 1.0) * u_matrix_m * u_matrix_vp;
|
||||
}
|
||||
|
||||
void main() {
|
||||
v_st0 = vec2(a_st0.s, 1.0 - a_st0.t);
|
||||
gl_Position = vertex_to_homo(a_vertex);
|
||||
}
|
||||
10
samples/bin/library/shaders/spine_shader.frag
Normal file
10
samples/bin/library/shaders/spine_shader.frag
Normal file
@@ -0,0 +1,10 @@
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
void main() {
|
||||
vec4 c = texture2D(u_texture, v_st0) * v_color0;
|
||||
c.rgb *= c.a;
|
||||
gl_FragColor = c;
|
||||
}
|
||||
4
samples/bin/library/shaders/spine_shader.json
Normal file
4
samples/bin/library/shaders/spine_shader.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"vertex" : "spine_shader.vert",
|
||||
"fragment" : "spine_shader.frag"
|
||||
}
|
||||
36
samples/bin/library/shaders/spine_shader.vert
Normal file
36
samples/bin/library/shaders/spine_shader.vert
Normal file
@@ -0,0 +1,36 @@
|
||||
uniform vec2 u_screen_s;
|
||||
uniform mat4 u_matrix_vp;
|
||||
|
||||
attribute vec3 a_vertex;
|
||||
attribute vec2 a_st0;
|
||||
attribute vec4 a_color0;
|
||||
|
||||
varying vec2 v_st0;
|
||||
varying vec4 v_color0;
|
||||
|
||||
vec2 round(vec2 v) {
|
||||
return vec2(
|
||||
floor(v.x + 0.5),
|
||||
floor(v.y + 0.5));
|
||||
}
|
||||
|
||||
vec4 pixel_snap(vec4 pos) {
|
||||
vec2 hpc = u_screen_s * 0.5;
|
||||
vec2 pixel_pos = round((pos.xy / pos.w) * hpc);
|
||||
pos.xy = pixel_pos / hpc * pos.w;
|
||||
return pos;
|
||||
}
|
||||
|
||||
vec4 vertex_to_homo(vec3 pos) {
|
||||
return vec4(pos, 1.0) * u_matrix_vp;
|
||||
}
|
||||
|
||||
void main() {
|
||||
v_st0 = a_st0;
|
||||
v_color0 = a_color0;
|
||||
#ifndef VERTEX_SNAPPING_ON
|
||||
gl_Position = vertex_to_homo(a_vertex);
|
||||
#else
|
||||
gl_Position = pixel_snap(vertex_to_homo(a_vertex));
|
||||
#endif
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user