gecko-dev/layout/style/nsTimingFunction.h
Boris Chiou 04b273259e Bug 1496619 - part 6: Generate StyleTimingFunction and drop ns_timing_function.rs r=emilio,birtles
First, we generate StyleComputedTimingFunction by cbindgen from Rust, and use
it in nsTimingFunction, so we could copy it directly without handling
the different memory layout. However, we have to rewrite the
nsTimingFunction and mozilla::ComputedTimingFunction for this.

Second, the rust-bindgen seems cannot generate the correct generic members
from complex C++ templates, especially for the nested template struct,
(https://github.com/rust-lang-nursery/rust-bindgen/issues/1429)
So we have to hide StyleTimingFunction to avoid the compilation errors.

Depends on D9312

Differential Revision: https://phabricator.services.mozilla.com/D9313

--HG--
extra : moz-landing-system : lando
2018-10-26 18:03:35 +00:00

45 lines
1.2 KiB
C

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsTimingFunction_h
#define nsTimingFunction_h
#include "mozilla/ServoStyleConsts.h"
struct nsTimingFunction
{
mozilla::StyleComputedTimingFunction mTiming;
explicit nsTimingFunction(mozilla::StyleTimingKeyword aKeyword =
mozilla::StyleTimingKeyword::Ease)
: mTiming(mozilla::StyleComputedTimingFunction::Keyword(aKeyword))
{
}
nsTimingFunction(float x1, float y1, float x2, float y2)
: mTiming(mozilla::StyleComputedTimingFunction::CubicBezier(x1, y1, x2, y2))
{
}
bool IsLinear() const
{
return mTiming.IsKeyword() &&
mTiming.keyword._0 == mozilla::StyleTimingKeyword::Linear;
}
bool operator==(const nsTimingFunction& aOther) const
{
return mTiming == aOther.mTiming;
}
bool operator!=(const nsTimingFunction& aOther) const
{
return !(*this == aOther);
}
};
#endif // nsTimingFunction_h