#include "TjdUiAppSportDrawGuiAPI.h" using namespace OHOS; namespace TJD { static inline int16_t HorizontalCenter(int16_t width, int16_t parentWidth) { return (parentWidth - width) / 2; } void InitLabelHorCenter(OHOS::UILabel &label, uint8_t size, int16_t y, int16_t target, const char *text, uint64_t color) { label.SetFont(TJD_VECTOR_FONT_FILENAME, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); label.SetPosition(HorizontalCenter(label.GetWidth(), target), y); label.SetTextColor(Color::GetColorFromRGBA( static_cast((color >> 24) & 0xFF), static_cast((color >> 16) & 0xFF), static_cast((color >> 8) & 0xFF), static_cast(color & 0xFF) )); } void InitLabelHorCenter(OHOS::UILabel &label, uint8_t size, int16_t y, int16_t target, const char *text, const char* fontName) { label.SetFont(fontName, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); label.SetPosition(HorizontalCenter(label.GetWidth(), target), y); } void InitLabel(OHOS::UILabel &label, uint8_t size, int16_t x, int16_t y, const char *text, const char* fontName) { label.SetFont(fontName, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); label.SetPosition(x, y); } void UiDrawImage(OHOS::UIImageView *Image, int16_t x, int16_t y, OHOS::ImageInfo *imgInfo) // 绘制图片(不需要id) { Image->SetPosition(x, y); // widget's left position and top position Image->SetSrc(imgInfo); } void UiDrawImage(OHOS::UIImageView *Image, int16_t x, int16_t y, const char *id, OHOS::ImageInfo *imgInfo) // 绘制图片(需要id) { Image->SetPosition(x, y); Image->SetViewId(id); Image->SetSrc(imgInfo); } // 绘制缩放图片(带id) void UIDrawImageScale(OHOS::UIImageView *Image, int16_t x, int16_t y, const char *id, OHOS::ImageInfo *imgInfo, float widthScale, float heightScale, uint8_t center_x, uint8_t center_y) { Image->SetPosition(x, y); Image->SetViewId(id); const OHOS::Vector2 &scale = {widthScale, heightScale}; OHOS::Vector2 pivot = {(float)center_x, (float)center_y}; Image->Scale(scale, pivot); Image->SetSrc(imgInfo); Image->Invalidate(); } // 绘制缩放图片(不需要id) void UIDrawImageScale(OHOS::UIImageView *Image, int16_t x, int16_t y, OHOS::ImageInfo *imgInfo, float widthScale, float heightScale, uint8_t center_x, uint8_t center_y) { Image->SetPosition(x, y); const OHOS::Vector2 &scale = {widthScale, heightScale}; OHOS::Vector2 pivot = {(float)center_x, (float)center_y}; Image->Scale(scale, pivot); Image->SetSrc(imgInfo); Image->Invalidate(); } static const uint16_t SCALE_FACTOR = 340; bool TransformItemBaseOnPosition(OHOS::UITransformList *list, OHOS::UIView *item) { if (list == nullptr || item == nullptr) { return false; } if (item->GetViewType() != UI_TRANSFORM_GROUP) { return false; } UITransformGroup *group = dynamic_cast(item); if (group == nullptr) { return false; } int16_t w = group->GetWidth(); int16_t h = group->GetHeight(); if (list->GetDirection() == UIList::VERTICAL) { int16_t midY = list->GetY() + (list->GetHeight() >> 1); int16_t y = group->GetY(); int offset = (y + (h >> 1) - midY); int temp = EasingEquation::SineEaseIn(0, SCALE_FACTOR, abs(offset), SCALE_FACTOR); float scale = 1.0 - (static_cast(temp) / SCALE_FACTOR); group->Scale(Vector2(scale, scale), Vector2(w >> 1, h >> 1)); if ((y <= midY) && (y + group->GetHeight() >= midY)) { return true; } } return false; } } // namespace TJD