在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

當(dāng)前HarmonyOS輕設(shè)備圖形框架的總體特性介紹

DRXU_gh_019562b ? 來源:HarmonyOS開發(fā)者 ? 作者:HarmonyOS ? 2021-07-28 14:27 ? 次閱讀

HarmonyOS輕設(shè)備圖形框架概述

HarmonyOS輕設(shè)備圖形框架是一款面向帶屏設(shè)備界面開發(fā)框架,可運(yùn)行于LiteOS/Linux/Windows等操作系統(tǒng)之上,除了提供基礎(chǔ)的UI組件外,還提供了獨立的圖形引擎,適用于基于Arm Cortex-M的MCU和低內(nèi)存資源的ArmCortex-A的芯片之上。

主要特征:

1) 高性能:Arm cortex-M 120MHz級別的CPU下,純軟繪制可達(dá)30FPS。

2) 極輕量:Arm cortex-M下,UI框架可支持在ROM《150KB, RAM《30KB硬件條件下運(yùn)行,支持按需裁剪。

3) 支持多渲染后端:支持自研2D繪制,并且可支持?jǐn)U展其他三方繪制庫。

4) 支持定制主題:應(yīng)用程序可以定制主題以覆蓋系統(tǒng)或組件默認(rèn)主題。同時,支持運(yùn)行時更改主題。

5) 硬件加速:支持2D硬件加速和SIMD加速,同時可擴(kuò)展支持具備GPU能力硬件加速。

6) 支持豐富的控件:34個組件(17個容器類型、17個控件類型)。

HarmonyOS輕設(shè)備圖形框架簡介

HarmonyOS輕設(shè)備圖形框架包括UIKit端和Server端(如圖1所示)。UIKit端運(yùn)行在應(yīng)用側(cè),主要處理事件交互、圖片解析、字體整形、2D變換,并根據(jù)用戶設(shè)置的布局把組件繪制到對應(yīng)畫布上,生成一幀數(shù)據(jù)直接送顯或提交給Server端合成;Server端主要負(fù)責(zé)多窗口管理、多圖層合成、輸入事件管理。

HarmonyOS輕設(shè)備圖形框架主要運(yùn)行于cortex-M MCU級別和RAM資源有限的cortex-A帶屏設(shè)備,其中UI框架和渲染部分可獨立運(yùn)行于M核設(shè)備上,多語言矢量字體和Image解碼依賴于硬件能力,一般建議在A核上運(yùn)行。

662814ea-ec16-11eb-a97a-12bb97331649.jpg

圖1 圖形子系統(tǒng)架構(gòu)圖1UIKit

UIKit包括組件、動畫、布局、2D變換、2D圖形庫、多語言、圖像解碼庫、渲染多后端、事件和渲染引擎,一共10個子模塊,下面展開介紹前面8個。

1) 組件

當(dāng)前提供17個容器組件和17個控件組件,滿足大部分頁面開發(fā)場景需求,支持開發(fā)者擴(kuò)展自定義控件,當(dāng)前支持控件列表和繼承關(guān)系如下:

6658cca2-ec16-11eb-a97a-12bb97331649.jpg

圖2 組件樹圖

2) 動畫

支持Bezier、EaseInBack、EaseOutBack和EaseInOutBack等19種動畫曲線,同時支持開發(fā)者設(shè)置自己的動畫曲線;

以緩動函數(shù)動畫曲線為例,算法方程和圖像如下:

Back:(s+1)*t^3 - s*t^2

66bcbafa-ec16-11eb-a97a-12bb97331649.png

圖3 緩動函數(shù)曲線圖

3) 布局

支持相對布局、百分比布局和簡單的彈性布局。

4) 2D變換

通過3階矩陣變換實現(xiàn)圖片和組件級別的縮放、旋轉(zhuǎn)和平移;

縮放功能主要在TransformMap類的Scal()函數(shù)中體現(xiàn),通過矩陣變換實現(xiàn)。坐標(biāo)變換矩陣是一個3*3矩陣,用來對圖形進(jìn)行坐標(biāo)變化,從原來的坐標(biāo)點轉(zhuǎn)移到新的坐標(biāo)點。

縮放變換的公式為:

66e6d9b6-ec16-11eb-a97a-12bb97331649.png

坐標(biāo)矩陣變換公式為:

670aabca-ec16-11eb-a97a-12bb97331649.png

旋轉(zhuǎn)功能與縮放功能類似,同樣通過3*3矩陣變換實現(xiàn)。主要在TransformMap類中的Rotate()函數(shù)中體現(xiàn)。

繞原點逆時針旋轉(zhuǎn)θ角度的變換公式為:

6733936e-ec16-11eb-a97a-12bb97331649.png

坐標(biāo)矩陣變換公式為:

6752e50c-ec16-11eb-a97a-12bb97331649.png

如下是對一個ImageView做2D變換的示例代碼:

Rect viewRect = imageView_-》GetOrigRect(); TransformMap transMap(viewRect); // 58:變換相對x坐標(biāo) 58:變換相對y坐標(biāo) Vector2《float》 pivot_(58, 58); if (&view == rotateBtn_) { // 90: 旋轉(zhuǎn)角度 transMap.Rotate(90, pivot_); } else if (&view == scaleBtn_) { // 1.5:x坐標(biāo)軸縮放比例 1.5:y坐標(biāo)軸縮放比例 transMap.Scale(Vector2《float》(1.5, 1.5), pivot_); } else if (&view == translateBtn_) { // 80:x坐標(biāo)軸平移距離 // -30:y坐標(biāo)軸平移距離 transMap.Translate(Vector2《int16_t》(80, -30)); } imageView_-》SetTransformMap(transMap);

5) 2D圖形庫

HarmonyOS具備基礎(chǔ)圖形庫,在輕量設(shè)備上提供高效2D圖形繪制能力,支持直線、弧、圓、矩形、三角形、貝塞爾曲線等基礎(chǔ)繪制,支持抗鋸齒,針對每一繪制算法做特有的優(yōu)化,以達(dá)到軟件繪制最優(yōu)性能。

· 具體代碼路徑可參考:https://gitee.com/openharmony/graphic_ui/tree/master/frameworks/draw

6) 多語言

HarmonyOS輕設(shè)備圖形框架已實現(xiàn)47種語言的顯示、換行和整形,滿足設(shè)備全球發(fā)行。

676e7e98-ec16-11eb-a97a-12bb97331649.png

多語言整形及渲染流程:

67cb6dce-ec16-11eb-a97a-12bb97331649.png

圖4 多語言整形及渲染時序圖

圖形文本控件:通過SetText接口設(shè)置文本,如果參數(shù)是UTF8字符串str,則屬于動態(tài)字體的操作方式;如果參數(shù)是textId枚舉值,則屬于靜態(tài)字體的操作方式。布局完控件之后,Invalidate操作負(fù)責(zé)繪制控件。

整形類:根據(jù)控件的fontId判斷是否為復(fù)雜語言,如果是復(fù)雜語言,則要通過整形類進(jìn)行整形,把UTF8字符串整形成glyph index;否則,把UTF8字符串直接轉(zhuǎn)換成Unicode。另外,對UTF8字符串做Bidi雙向排版,再獲取字符串的所有換行位置。

動態(tài)字體類:在初始化時加載font.bin,并根據(jù)Unicode或glyph index按一定的規(guī)則查找字形參數(shù)。

靜態(tài)字體類:在初始化時加載glyphs.bin,并根據(jù)Unicode或glyph index按一定的順序查找字形參數(shù)。

繪制類:根據(jù)字形參數(shù)結(jié)合color值繪制字形到framebuffer中,并根據(jù)Bidi和換行排版進(jìn)行合理布局。

7) 圖像解碼庫

Cortex-A場景,通過三方庫支持png、jpeg、bmp、gif圖像格式解析處理,但在Cortex-M的MCU場景,受限于硬件能力,通常直接轉(zhuǎn)換為位圖數(shù)據(jù),不做編解碼處理。

8) 渲染多后端

渲染多后端位于UIKit底層,用來適配對接不同芯片平臺硬件能力,各芯片廠商實現(xiàn)多后端接口,UIKit通過調(diào)用該抽象層接口以屏蔽芯片差異并發(fā)揮芯片硬件能力。

如下圖5所示,左邊為沒有多后端的UIKit實現(xiàn),對硬件的使能是嵌入到UIKit框架中的,即針對每一款新的芯片都要對UIKit做相應(yīng)修改;右邊為有多后端的實現(xiàn),硬件使能和UIKit分離,即切換新的芯片平臺時,只需要適配層修改,UIKit不用修改。

680a4990-ec16-11eb-a97a-12bb97331649.png

圖5 多后端框架圖

多渲染后端render backends在整體框架中的位置如圖5所示,通過該層,三方渲染庫和圖形可以更高效與系統(tǒng)接口對接。

渲染引擎支持多個繪制后端,支持軟件繪制、2D硬件加速(TDE/DMA2D);對于支持OpenGL的硬件平臺,支持OpenGL后端擴(kuò)展。

2Server端Server端主要包括窗口管理模塊和事件管理模塊(如圖6所示),該模塊主要用于cortex-A場景下,用于多窗口管理、多圖層合成和底層事件管理。

694451d4-ec16-11eb-a97a-12bb97331649.jpg

圖6 Server端框架圖

1) 多窗口管理

采用C/S架構(gòu),不同APP的窗口在服務(wù)端統(tǒng)一管理Z序和圖層合成,一個窗口與一個RootView綁定。

2) 多圖層合成

采用C/S架構(gòu),接受不同APP提交的圖層數(shù)據(jù),使用軟件或硬件合成,把多個圖層疊加并送顯。

3) 底層事件管理

對接底層輸入事件驅(qū)動框架,對輸入事件進(jìn)行監(jiān)聽和分發(fā)。如圖7所示:

6985dc9e-ec16-11eb-a97a-12bb97331649.jpg

圖7 事件消息流圖

● 驅(qū)動適配層(driver)

提供原始輸入事件機(jī)制

對接底層硬件

● InputManger服務(wù)層(IMS)

監(jiān)聽原始輸入事件(InputEventHub)

封裝原始輸入事件(InputEventReader)

分發(fā)事件至目標(biāo)窗口(InputEventDistributer)

● UIKit客戶端層(client)

監(jiān)聽窗口管理服務(wù)輸入事件

生成高級輸入事件

分發(fā)高級輸入事件至視圖組件

運(yùn)行渲染原理

輕設(shè)備GUI采用MainLoop進(jìn)行驅(qū)動,有事件、動效或繪制任務(wù)時才處理,無事件輸入時,MainLoop會進(jìn)入掛起模式,有事件輸入時喚醒循環(huán),達(dá)到降低功耗的目的,如圖8左側(cè)所示。圖8右側(cè)WMS主要功能為處理多窗口管理、多圖層合成和事件管理,App(UIKit)提交一幀數(shù)據(jù)到WMS,WMS完成多個圖層合成并送顯。App主要功能是循環(huán)處理事件、動效、繪制。沒有事件或動效時,處于掛起模式;有事件或動效時,會操作RootView樹,更新臟區(qū)域,并在Render流程對臟區(qū)域進(jìn)行重繪。

69c57250-ec16-11eb-a97a-12bb97331649.jpg

圖8 MainLoop框架圖

下面以創(chuàng)建Button頁面為例說明渲染原理。首先創(chuàng)建UIButton,加入到組件樹,進(jìn)入MainLoop繪制Button頁面。點擊Button界面,MainLoop接受到Input事件,識別事件對應(yīng)組件,更新臟區(qū)域,進(jìn)入Render后刷新Button界面,用戶感知到Button點擊變化。RootView樹更新臟區(qū)域及重繪流程參考圖9和圖10時序介紹。

6a059614-ec16-11eb-a97a-12bb97331649.png

圖9 生成臟區(qū)域時序圖

InvalidateRect()臟區(qū)域刷新流程,如圖9所示:

1.循環(huán)遍歷獲取和父節(jié)點的相交區(qū)域,若有,調(diào)用RenderManager里InvalidateRect刷新區(qū)域。

2.判斷刷新區(qū)域是否在屏幕顯示范圍,并獲取相交區(qū)域。

3.看invalidRects中待刷新區(qū)域是否包含此區(qū)域。

4.保存到invalidRects中

6a60518a-ec16-11eb-a97a-12bb97331649.png

圖10 渲染時序圖

1.根據(jù)臟區(qū)域渲染的Render Task流程:JoinRect:合并invalidRects中重疊較大的區(qū)域。

判斷依據(jù):A的面積 + B的面積 》 A.Inflate(B)的面積

2.DealRect:循環(huán)調(diào)用RenderRect,渲染各個invalidRects區(qū)域

RenderRect流程:

1.獲取display buffer,根據(jù)display buffer最大buffer size,計算最大行數(shù)

2.假如超過一次渲染大小,循環(huán)分段渲染各區(qū)域 RenderPart

3.RenderPart 流程:

1)找到完全覆蓋該區(qū)域的最上層組件

2)刷新這個組件及其子組件相關(guān)區(qū)域(假如有相交區(qū)域)

3)循環(huán)遍歷刷新其靠后的兄弟節(jié)點和其parent節(jié)點靠后的兄弟節(jié)點相關(guān)區(qū)域(假如有相交區(qū)域)

4)刷新外邊框區(qū)域Shadow等

總結(jié):HarmonyOS輕設(shè)備圖形框架還在不斷演進(jìn)和完善的過程中,本文主要描述的是當(dāng)前HarmonyOS輕設(shè)備圖形框架的總體特性介紹,希望可以幫助各位開發(fā)者了解HarmonyOS輕設(shè)備圖形框架的開發(fā)原理,后續(xù)還會推出一系列針對各子特性的詳細(xì)介紹文章,歡迎持續(xù)關(guān)注。

作者:niulihua、lubo ,華為軟件開發(fā)工程師

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1979

    瀏覽量

    30279

原文標(biāo)題:HarmonyOS輕設(shè)備圖形框架運(yùn)行解析

文章出處:【微信號:gh_019562b5fb4b,微信公眾號:gh_019562b5fb4b】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI開發(fā)框架集成介紹

    隨著AI應(yīng)用的廣泛深入,單一框架往往難以滿足多樣化的需求,因此,AI開發(fā)框架的集成成為了提升開發(fā)效率、促進(jìn)技術(shù)創(chuàng)新的關(guān)鍵路徑。以下,是對AI開發(fā)框架集成的介紹,由AI部落小編整理。
    的頭像 發(fā)表于 01-07 15:58 ?49次閱讀

    HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(上)

    、媒體相關(guān)能力新增、優(yōu)化文檔,方便開發(fā)者更加高效使用文檔。 ArkUI(方舟UI框架) ArkUI(方舟UI框架)是一個簡潔、高性能、支持跨設(shè)備的UI框架,提供了豐富的應(yīng)用界面開發(fā)所需
    的頭像 發(fā)表于 12-30 09:50 ?97次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)指導(dǎo)類文檔更新速遞(上)

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))綜述

    過程即智慧分發(fā)。其中系統(tǒng)入口包括:小藝對話、小藝搜索、小藝建議等。 系統(tǒng)入口、意圖框架、鴻蒙生態(tài)的關(guān)系如下: 二、Intents Kit優(yōu)勢 利用HarmonyOS的大模型、多維設(shè)備感知等AI能力
    發(fā)表于 11-28 10:43

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))習(xí)慣推薦方案開發(fā)者測試

    意圖框架向開發(fā)者提供真機(jī)測試能力,即開發(fā)者可連接設(shè)備進(jìn)行調(diào)測。開發(fā)者完成代碼開發(fā)之后,功能正式上架應(yīng)用市場前,可以在HarmonyOS NEXT設(shè)備上面進(jìn)行自驗證,打磨體驗。真機(jī)測試分
    發(fā)表于 11-25 17:37

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))習(xí)慣推薦方案概述

    用戶的行為習(xí)慣。 2.在HarmonyOS學(xué)習(xí)到用戶的行為習(xí)慣后,會給用戶推薦相應(yīng)功能,并且嘗試補(bǔ)充詳細(xì)功能參數(shù),減少用戶執(zhí)行任務(wù)的步驟。 以聽音樂為例,意圖框架設(shè)計了統(tǒng)一的意圖——播放歌單意圖,該意圖可以讓
    發(fā)表于 11-19 17:59

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))事件推薦開發(fā)者測試

    意圖框架向開發(fā)者提供真機(jī)測試能力,即開發(fā)者可連接設(shè)備進(jìn)行調(diào)測。開發(fā)者完成代碼開發(fā)之后,功能正式上架應(yīng)用市場前,可以在HarmonyOS NEXT設(shè)備上面進(jìn)行自驗證,打磨體驗。真機(jī)測試分
    發(fā)表于 11-18 17:39

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))本地搜索方案概述

    一、概述 本地搜索是在HarmonyOS歸一化搜索特性,開發(fā)者將應(yīng)用/元服務(wù)內(nèi)的功能和內(nèi)容通過意圖框架共享到HarmonyOS,即可實現(xiàn)“一步搜索,內(nèi)容直達(dá)”。 二、典型場景 以“音樂
    發(fā)表于 11-06 10:59

    京東金融APP的鴻蒙之旅系列專題 新特性篇:意圖框架接入

    作者:京東科技 楊拓 一、意圖框架服務(wù)介紹 HarmonyOS NEXT引入了多項創(chuàng)新特性,其中的意圖框架能夠?qū)?yīng)用中的業(yè)務(wù)功能智能分發(fā)至手
    的頭像 發(fā)表于 10-14 17:10 ?345次閱讀
    京東金融APP的鴻蒙之旅系列專題 新<b class='flag-5'>特性</b>篇:意圖<b class='flag-5'>框架</b>接入

    HarmonyOS NEXT Developer Beta1中的Kit

    HarmonyOS NEXT Developer Preview1(API 11)版本開始,HarmonyOS SDK以Kit維度提供豐富、完備的開放能力,涵蓋應(yīng)用框架、系統(tǒng)、媒體、圖形
    發(fā)表于 06-26 10:47

    潤開鴻獲鴻蒙先鋒授牌,榮膺華為HarmonyOS開發(fā)服務(wù)商

    3月27日,華為HDD行業(yè)沙龍在北京舉辦,本次活動由HarmonyOS產(chǎn)品專家?guī)砹司实淖h題分享,涵蓋HarmonyOS操作系統(tǒng)介紹HarmonyOS應(yīng)用
    的頭像 發(fā)表于 03-29 10:33 ?702次閱讀
    潤開鴻獲鴻蒙先鋒授牌,榮膺華為<b class='flag-5'>HarmonyOS</b>開發(fā)服務(wù)商

    潤開鴻榮膺華為HarmonyOS開發(fā)服務(wù)商

    近日,華為HDD行業(yè)沙龍在北京隆重舉行。在這場盛會上,HarmonyOS產(chǎn)品專家發(fā)表了引人入勝的議題分享,內(nèi)容廣泛而深入,包括HarmonyOS操作系統(tǒng)的全面介紹、應(yīng)用特性的獨到解析、
    的頭像 發(fā)表于 03-29 09:47 ?704次閱讀

    鴻蒙開發(fā)圖形圖像:【圖形子系統(tǒng)】

    圖形子系統(tǒng)主要包括UI組件、布局、動畫、字體、輸入事件、窗口管理、渲染繪制等模塊,構(gòu)建基于量OS應(yīng)用框架滿足硬件資源較小的物聯(lián)網(wǎng)設(shè)備或者構(gòu)建基于標(biāo)準(zhǔn)OS的應(yīng)用
    的頭像 發(fā)表于 03-23 16:50 ?673次閱讀
    鴻蒙開發(fā)<b class='flag-5'>圖形</b>圖像:【<b class='flag-5'>圖形</b>子系統(tǒng)】

    介紹一種OpenAtom OpenHarmony量系統(tǒng)適配方案

    本文在不改變原有系統(tǒng)基礎(chǔ)框架的基礎(chǔ)上, 介紹了一種OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)量系統(tǒng)適配方案。
    的頭像 發(fā)表于 03-05 09:24 ?1216次閱讀
    <b class='flag-5'>介紹</b>一種OpenAtom OpenHarmony<b class='flag-5'>輕</b>量系統(tǒng)適配方案

    2024款鴻蒙OS 最新HarmonyOS Next_HarmonyOS4.0系列教程分享

    鴻蒙的出現(xiàn),標(biāo)志著中國科技的崛起。HarmonyOS就是我們說的華為鴻蒙系統(tǒng),截止到2023年8月4日已有超過7億臺設(shè)備搭載了鴻蒙OS系統(tǒng)。據(jù)多家媒體報道,2024年國內(nèi)有21所985大學(xué)都開設(shè)
    發(fā)表于 02-28 10:29

    HarmonyOS開發(fā)技術(shù)全面分析

    層是 HarmonyOS 的核心能力集合,通過框架層對應(yīng)用程序提供服務(wù)。該層包含以下幾個部分: ? 系統(tǒng)基本能力子系統(tǒng)集 :為分布式應(yīng)用在 HarmonyOS設(shè)備上的運(yùn)行、調(diào)度、遷
    發(fā)表于 02-21 16:31
    主站蜘蛛池模板: 成人久久网| 天天综合天天做| 国产午夜一区二区在线观看| 午夜毛片网站| 天堂w| 日本加勒比视频在线观看| 欧美午夜影院| 国产精品久久精品福利网站| 欧美人与z0zoxxxx特| 亚洲色图综合在线| 刺激一区| 天堂日本| 日本黄色的视频| 噜噜吧噜噜色| 国产精品麻豆va在线播放| 夜夜爱夜夜爽夜夜做夜夜欢| 日本特黄特色aaa大片免费欧| 国产美女视频爽爽爽| avbobo在线| 在线种子资源网| 日韩在线视频一区| 黄色一级视频欧美| 女人色视频| 国产性videosgratis| 好爽毛片一区二区三区四区| 丁香婷婷在线观看| 亚洲天堂va| 国产精品久久精品福利网站| 日美一级毛片| 午夜久久免影院欧洲| 欧美第一色| avtt天堂网永久资源| 久久精品国波多野结衣| 1024人成软件色www| 午夜男人网| 狠狠色丁香久久综合婷婷| 午夜欧美| 日韩毛片免费线上观看| 在线毛片网| 免费看逼网站| 午夜影院免费体验|