#include "ui_resource_image.h"
#include "CompassView.h"
#include "MainCompassView.h"
-
+#include "CompassPresenter.h"
namespace OHOS {
-static constexpr int16_t POINT_CENTER_IMAGE_X = 150;
-static constexpr int16_t POINT_CENTER_IMAGE_Y = 150;
-static constexpr int16_t TRIANGULATION_X = 210;
+static constexpr int16_t POINT_CENTER_IMAGE_X = 192;
+static constexpr int16_t POINT_CENTER_IMAGE_Y = 282;
+static constexpr int16_t TRIANGULATION_X = 221;
static constexpr int16_t TRIANGULATION_Y = 0;
-static constexpr int16_t DIRECTIONLABEL_X = 160;
-static constexpr int16_t DIRECTIONLABEL_Y = 215;
-static constexpr int16_t FONT_TEXT_SIZE = 25;
-static constexpr int16_t ANGLEDLABEL_X = 215;
-static constexpr int16_t ANGLEDLABEL_Y = 215;
-static constexpr int16_t TEXT_WIDTH = 90;
-static constexpr int16_t TEXT_HEIGHT = 35;
+static constexpr int16_t DIRECTIONLABEL_X = 198;
+static constexpr int16_t DIRECTIONLABEL_Y = 131;
+static constexpr int16_t DIRECTIONLABEL_TEXT_WIDTH = 70;
+static constexpr int16_t DIRECTIONLABEL_TEXT_HEIGH = 42;
+static constexpr int16_t DIRECTIONLABEL_FONT_TEXT_SIZE = 35;
+static constexpr int16_t DIRECTIONLABEL_STYLE_LINE_HEIGHT = 42;
+static constexpr int16_t ANGLEDLABEL_X = 136;
+static constexpr int16_t ANGLEDLABEL_Y = 182;
+static constexpr int16_t ANGLEDLABEL_TEXT_WIDTH = 194;
+static constexpr int16_t ANGLEDLABEL_TEXT_HEIGHT = 94;
+static constexpr int16_t ANGLEDLABEL_FONT_TEXT_SIZE = 80;
+static constexpr int16_t ANGLEDLABEL_STYLE_LINE_HEIGHT = 94;
static constexpr int16_t RANDOM_NUMBER_720 = 720;
static constexpr int16_t RANDOM_NUMBER_360 = 360;
static constexpr int16_t DELAYING_NUMS = 2000;
delete backGround;
backGround = nullptr;
}
- if (rotateShaft != nullptr) {
- delete rotateShaft;
- rotateShaft = nullptr;
+ if(PlaceMarkerImage != nullptr)
+ {
+ delete PlaceMarkerImage;
+ PlaceMarkerImage = nullptr;
}
if (triangulation != nullptr) {
delete triangulation;
triangulation = nullptr;
}
}
-
+//方向和角度设置
void CompassView::DirectionSetText(const char *text, const char *angle)
{
directionLabel->SetText(text);
angledLabel->SetText(angle);
}
-
+//加载指南针图片
bool CompassView::LoadCompassImage(UIImageView *view, uint32_t resId)
{
std::string file = COMPASS_IAMGES;
view->SetSrc(image);
return true;
}
-
+//初始化指南针图片
bool CompassView::InitCompassImage(void)
{
backGround = new UIImageView();
}
backGround->SetPosition(0, 0);
- if (LoadCompassImage(backGround, COMPASS_COMPASS) == false) {
+ if (LoadCompassImage(backGround, COMPASS_COMPASS0) == false) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__);
return false;
}
- rotateShaft = new UIImageView();
- if (rotateShaft == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], rotateShaft new fail", __LINE__);
+ PlaceMarkerImage = new UIImageView();
+ if (PlaceMarkerImage == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], PlaceMarkerImage new fail", __LINE__);
return false;
}
- rotateShaft->SetPosition(POINT_CENTER_IMAGE_X, POINT_CENTER_IMAGE_Y);
- if (LoadCompassImage(rotateShaft, COMPASS_ROTATE_CENTER_IMAGE) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], rotateShaft load fail", __LINE__);
+ PlaceMarkerImage->SetPosition(POINT_CENTER_IMAGE_X, POINT_CENTER_IMAGE_Y);
+ if (LoadCompassImage(PlaceMarkerImage, COMPASS_COMPASS1) == false) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], PlaceMarkerImage load fail", __LINE__);
return false;
}
return false;
}
triangulation->SetPosition(TRIANGULATION_X, TRIANGULATION_Y);
- if (LoadCompassImage(triangulation, COMPASS_CORRESPONDENCE_DEGREE) == false) {
+ if (LoadCompassImage(triangulation, COMPASS_COMPASS2) == false) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "triangulation load fail");
return false;
}
return true;
}
-
+//初始化页面
bool CompassView::InitPage(void)
{
if (InitCompassImage() == false) {
return false;
}
directionLabel->SetPosition(DIRECTIONLABEL_X, DIRECTIONLABEL_Y);
- directionLabel->Resize(TEXT_WIDTH, TEXT_HEIGHT);
+ directionLabel->Resize(DIRECTIONLABEL_TEXT_WIDTH, DIRECTIONLABEL_TEXT_HEIGH);
directionLabel->SetText("北");
- directionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_TEXT_SIZE);
+ directionLabel->SetStyle(STYLE_TEXT_FONT, DIRECTIONLABEL_FONT_TEXT_SIZE);
+ directionLabel->SetStyle(STYLE_LINE_HEIGHT, DIRECTIONLABEL_STYLE_LINE_HEIGHT);
+ directionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DIRECTIONLABEL_FONT_TEXT_SIZE);
+ directionLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
directionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
directionLabel->SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
directionLabel->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
ClearAll();
return false;
}
- angledLabel->SetPosition(ANGLEDLABEL_X, ANGLEDLABEL_Y);
- angledLabel->Resize(TEXT_WIDTH, TEXT_HEIGHT);
- angledLabel->SetText("0°");
- angledLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_TEXT_SIZE);
+ angledLabel->SetPosition(ANGLEDLABEL_X, ANGLEDLABEL_Y);
+ angledLabel->Resize(ANGLEDLABEL_TEXT_WIDTH, ANGLEDLABEL_TEXT_HEIGHT);
+ angledLabel->SetText("~0°");
+ angledLabel->SetStyle(STYLE_TEXT_FONT, ANGLEDLABEL_FONT_TEXT_SIZE);
+ angledLabel->SetStyle(STYLE_LINE_HEIGHT, ANGLEDLABEL_STYLE_LINE_HEIGHT);
+ angledLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, ANGLEDLABEL_FONT_TEXT_SIZE);
+ angledLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
angledLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
angledLabel->SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
angledLabel->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
angledLabel->SetStyle(STYLE_TEXT_COLOR, Color::White().full);
Add(backGround);
- Add(rotateShaft);
+ Add(PlaceMarkerImage);
Add(triangulation);
Add(directionLabel);
Add(angledLabel);
return true;
}
-
+//初始化视图为可拖拽,可触摸
bool CompassView::InitView(void *caller)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CompassView InitView %p", caller);
{
return g_pCompassView;
}
-
+//背景图片逆时针旋转numb度
void CompassView::CompassStartRotate(int16_t numb)
{
if (backGround == nullptr) {