1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "core/event/mouse_raw_recognizer.h"
17
18 #include "base/log/log.h"
19
20 namespace OHOS::Ace {
21 namespace {
22
23 const char ON_MOUSE_EVENT[] = "onMouse";
24
25 } // namespace
26
HandleEvent(const MouseEvent & event)27 void MouseRawRecognizer::HandleEvent(const MouseEvent& event)
28 {
29 LOGD("raw mouse recognizer handle event, action is %{public}d, button is %{public}d", event.action, event.button);
30 if (onMouse_) {
31 onMouse_(CreateMouseEventInfo(event));
32 }
33 lastEvent_ = event;
34 }
35
HandleHoverEvent(MouseState mouseState)36 void MouseRawRecognizer::HandleHoverEvent(MouseState mouseState)
37 {
38 HoverInfo info;
39 // Ace2.0
40 if (onHover_) {
41 onHover_(mouseState == MouseState::HOVER, info);
42 }
43
44 // Ace1.0
45 if (onMouseHover_ && mouseState == MouseState::HOVER) {
46 onMouseHover_();
47 } else if (onMouseHoverExit_ && mouseState == MouseState::NONE) {
48 onMouseHoverExit_();
49 }
50 }
51
CreateMouseEventInfo(const MouseEvent & event) const52 MouseEventInfo MouseRawRecognizer::CreateMouseEventInfo(const MouseEvent& event) const
53 {
54 MouseEventInfo info(ON_MOUSE_EVENT);
55 info.SetMouseGlobalInfo(event);
56 info.SetMouseLocationInfo(event - coordinateOffset_);
57 info.SetTimeStamp(event.time);
58 info.SetSourceDevice(event.sourceType);
59 info.SetDeviceId(event.deviceId);
60 return info;
61 }
62
63 } // namespace OHOS::Ace