1886da342Sopenharmony_ci/* 2886da342Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3886da342Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4886da342Sopenharmony_ci * you may not use this file except in compliance with the License. 5886da342Sopenharmony_ci * You may obtain a copy of the License at 6886da342Sopenharmony_ci * 7886da342Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8886da342Sopenharmony_ci * 9886da342Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10886da342Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11886da342Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12886da342Sopenharmony_ci * See the License for the specific language governing permissions and 13886da342Sopenharmony_ci * limitations under the License. 14886da342Sopenharmony_ci */ 15886da342Sopenharmony_ci 16886da342Sopenharmony_ci#ifndef GESTURES_VELOCITY_H 17886da342Sopenharmony_ci#define GESTURES_VELOCITY_H 18886da342Sopenharmony_ci#include "offset.h" 19886da342Sopenharmony_ci 20886da342Sopenharmony_cinamespace OHOS::uitest { 21886da342Sopenharmony_ciclass Velocity final { 22886da342Sopenharmony_cipublic: 23886da342Sopenharmony_ci Velocity() = default; 24886da342Sopenharmony_ci explicit Velocity(const Offset& offsetPerSecond) : offsetPerSecond_(offsetPerSecond) {} 25886da342Sopenharmony_ci ~Velocity() = default; 26886da342Sopenharmony_ci 27886da342Sopenharmony_ci void Resets() 28886da342Sopenharmony_ci { 29886da342Sopenharmony_ci offsetPerSecond_.Resets(); 30886da342Sopenharmony_ci } 31886da342Sopenharmony_ci 32886da342Sopenharmony_ci void SetOffsetPerSecond(const Offset& offsetPerSecond) 33886da342Sopenharmony_ci { 34886da342Sopenharmony_ci offsetPerSecond_ = offsetPerSecond; 35886da342Sopenharmony_ci } 36886da342Sopenharmony_ci 37886da342Sopenharmony_ci Velocity operator+(const Velocity& velocity) const 38886da342Sopenharmony_ci { 39886da342Sopenharmony_ci return Velocity(offsetPerSecond_ + velocity.offsetPerSecond_); 40886da342Sopenharmony_ci } 41886da342Sopenharmony_ci 42886da342Sopenharmony_ci Velocity operator-(const Velocity& velocity) const 43886da342Sopenharmony_ci { 44886da342Sopenharmony_ci return Velocity(offsetPerSecond_ - velocity.offsetPerSecond_); 45886da342Sopenharmony_ci } 46886da342Sopenharmony_ci 47886da342Sopenharmony_ci Velocity operator*(double value) const 48886da342Sopenharmony_ci { 49886da342Sopenharmony_ci return Velocity(offsetPerSecond_ * value); 50886da342Sopenharmony_ci } 51886da342Sopenharmony_ci 52886da342Sopenharmony_ci Velocity& operator+=(const Velocity& velocity) 53886da342Sopenharmony_ci { 54886da342Sopenharmony_ci offsetPerSecond_ += velocity.offsetPerSecond_; 55886da342Sopenharmony_ci return *this; 56886da342Sopenharmony_ci } 57886da342Sopenharmony_ci 58886da342Sopenharmony_ci bool operator==(const Velocity& velocity) const 59886da342Sopenharmony_ci { 60886da342Sopenharmony_ci return offsetPerSecond_ == velocity.offsetPerSecond_; 61886da342Sopenharmony_ci } 62886da342Sopenharmony_ci 63886da342Sopenharmony_ci bool operator!=(const Velocity& velocity) const 64886da342Sopenharmony_ci { 65886da342Sopenharmony_ci return !operator==(velocity); 66886da342Sopenharmony_ci } 67886da342Sopenharmony_ci 68886da342Sopenharmony_ci const Offset& GetOffsetPerSecond() const 69886da342Sopenharmony_ci { 70886da342Sopenharmony_ci return offsetPerSecond_; 71886da342Sopenharmony_ci } 72886da342Sopenharmony_ci 73886da342Sopenharmony_ci double GetVeloX() const 74886da342Sopenharmony_ci { 75886da342Sopenharmony_ci return offsetPerSecond_.GetX(); 76886da342Sopenharmony_ci } 77886da342Sopenharmony_ci 78886da342Sopenharmony_ci double GetVeloY() const 79886da342Sopenharmony_ci { 80886da342Sopenharmony_ci return offsetPerSecond_.GetY(); 81886da342Sopenharmony_ci } 82886da342Sopenharmony_ci 83886da342Sopenharmony_ci double GetVeloValue() const 84886da342Sopenharmony_ci { 85886da342Sopenharmony_ci return offsetPerSecond_.GetDistance(); 86886da342Sopenharmony_ci } 87886da342Sopenharmony_ci 88886da342Sopenharmony_ciprivate: 89886da342Sopenharmony_ci Offset offsetPerSecond_; 90886da342Sopenharmony_ci}; 91886da342Sopenharmony_ci} // namespace OHOS::uitest 92886da342Sopenharmony_ci#endif // GESTURES_VELOCITY_H 93