/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ const { X2DFast } = require('../graphics/X2DFast'); class XButton { constructor(x, y, w, h, name) { this.pm2f_ = X2DFast.gi(); this.move(x, y, w, h); this.name_ = name; this.touchDown_ = false; this.clicked_ = false; this.rightClicked_ = false; this.disable_ = false; this.nameColor_ = 0xffffffff; this.backgroundColor_ = 0xff487eb8; } move(x, y, w, h) { this.posX_ = x; this.posY_ = y; this.posW_ = w; this.posH_ = h; return this; } draw() { let coloroff = 0; if (this.touchDown_) coloroff = 0x00202020; this.pm2f_.fillRect( this.posX_, this.posY_, this.posW_, this.posH_, this.backgroundColor_ - coloroff ); if (this.name_ != undefined && this.name_.length > 0) this.pm2f_.drawText( this.name_, 14, this.posX_ + this.posW_ / 2, this.posY_ + this.posH_ / 2 + 2, 1, 1, 0, -2, -2, this.nameColor_ - coloroff ); } isTouchIn(x, y) { if (x < this.posX_) return false; if (y < this.posY_) return false; if (x > this.posX_ + this.posW_) return false; if (y > this.posY_ + this.posH_) return false; return true; } onTouch(msg, x, y) { let isIn = this.isTouchIn(x, y); switch (msg) { case 1: if (isIn) { this.touchDown_ = true; } break; case 2: break; case 3: if (this.touchDown_ && isIn) { if (this.onClicked_) { this.onClicked_(); } else { this.clicked_ = true; } } this.touchDown_ = false; break; case 4: if (isIn) { this.rightDown_ = true; } break; case 6: if (this.rightDown_ && isIn) { this.rightClicked_ = true; } this.rightDown_ = false; break; } return isIn; } isClicked() { if (this.clicked_) { this.clicked_ = false; return true; } return false; } isRightClicked() { if (this.rightClicked_) { this.rightClicked_ = false; return true; } return false; } } module.exports = { XButton, };