freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式瀏覽器開(kāi)發(fā)—計(jì)算機(jī)(論文)-預(yù)覽頁(yè)

 

【正文】 產(chǎn)品廣泛應(yīng)用于手持設(shè)備、機(jī)頂盒、游戲機(jī)等產(chǎn)品。但顯然為了簡(jiǎn)化設(shè)計(jì), Netfront 使用了一定的權(quán)宜手段。是開(kāi)放源碼項(xiàng)目。是開(kāi)放源碼項(xiàng)目。網(wǎng)址是: 以上主要介紹了開(kāi)放源碼的嵌入式瀏覽器,因?yàn)槠鋵?duì)本項(xiàng)目具有實(shí)際的參考價(jià)值。 HTML 詞法分析是瀏覽器設(shè)計(jì)的基礎(chǔ)環(huán)節(jié)之一,也是整個(gè)設(shè)計(jì)過(guò)程中重要的前端工作,其數(shù)據(jù)結(jié)構(gòu)的擬定與接下來(lái)的語(yǔ)法分析和布局算法密切相關(guān),詞法分析的效率與準(zhǔn)確性、容錯(cuò)性也關(guān)系到整個(gè)瀏覽器設(shè)計(jì)的質(zhì)量。布局算法的好壞直接關(guān)系到界面的輸出效果,但布局算法也是要根據(jù) GUI 所能實(shí)現(xiàn)的輸出效果來(lái)設(shè)計(jì)的,所以, GUI 往往成為系統(tǒng)的瓶頸,如果 GUI 提供的支持有限,即使有再好的布局算法,也是紙上談兵,無(wú)用武之地。第二在于主瀏覽窗體中的圖形元素的輸出(通常以自畫(huà)控件的方式)。這其中的機(jī)制將在后面專門(mén)介紹。 我們也可以看到,要設(shè)計(jì)效果較好的瀏覽器產(chǎn)品,決不是三五個(gè)人、兩三條槍就能辦到的,參與工作的人員不僅需要有相關(guān)經(jīng)驗(yàn),還需要有一定的投入,一方面對(duì)程序員艱苦的工作給予鼓勵(lì),另一方面也可能需要購(gòu)買一些成熟的開(kāi)發(fā)包,在基礎(chǔ)的開(kāi)發(fā)平臺(tái)、測(cè)試平臺(tái)上也要有一定的投資,總的來(lái)說(shuō),開(kāi)發(fā)自主技術(shù)的瀏覽器產(chǎn)品是有一定的風(fēng)險(xiǎn)的,這也是國(guó)內(nèi)目前相關(guān)產(chǎn)品為數(shù)不多的原因。是瀏覽器開(kāi)發(fā)前期準(zhǔn)備工作所解決的問(wèn)題??紤]到 GUI 是可以成為獨(dú)立模塊的,如瀏覽器 ZEN 的設(shè)計(jì),我們決定使用 GTK,待時(shí)機(jī)成熟可換用其它平臺(tái),也并非難事。 需要實(shí)現(xiàn)的包括: (1) 界面:包括窗口,菜單,輸入框,工具條,滾動(dòng)條等的支持。 需要考慮的功能: (1) JavaScript 支持 (2) 漢字支持 (3) 圖片格式支持 (4) 表單支持 (5) 頁(yè)面元素的消息響應(yīng) 人員分工 由于情況的變動(dòng),造成了人員比較緊張,在前期準(zhǔn)備工作中,人力充沛,使得收集的資料比較完備,打下了較好的基礎(chǔ)。 下面將介紹一個(gè) HTML 詞法分析器 —— Bit Token 的設(shè)計(jì)思路。 元素的分析:提取元素的名稱、屬性和值域。 int curPosition。 BitTokenList *tokenList。 BitTokenContext 是用于存儲(chǔ)當(dāng)前待分析網(wǎng)頁(yè)全局屬性的數(shù)據(jù)結(jié)構(gòu),其中TokenList 是核心的元素節(jié)點(diǎn)鏈表。 //元素節(jié)點(diǎn) struct TokenList *priou。 //節(jié)點(diǎn)類型,如定義的 HTML_BODY, HTML_TXT等。 //元素屬性鏈表,因?yàn)榭赡苡卸鄠€(gè)屬性,所以使用鏈表存儲(chǔ) BitTokenAttrList *attrList_tail。 (3) 如果遇到回車、空格,則跳過(guò)。 (6) 循環(huán)以上操作,直到該網(wǎng)頁(yè)分析完畢。 分段進(jìn)行詞法分析的算法復(fù)雜度明顯增加,比如,當(dāng)每段定為 1024 字節(jié),在第 1024 字節(jié)處,可能正好將一個(gè)完整元素截?cái)?,按常?guī)分析方法會(huì)造成錯(cuò)誤。 下面是一段很簡(jiǎn)單的 HTML 代碼。 具有以下主要功能: 智能提取網(wǎng)頁(yè)中的文字信息,智能排版,并可在進(jìn)行編輯后保存。 其主要設(shè)計(jì)思路是,在 Bit Token 詞法分析器的基礎(chǔ)上,結(jié)合瀏覽器布局的基本算法,對(duì)影響到 TXT 版面效果的元素進(jìn)行處理。使用常規(guī)的簡(jiǎn)單算法進(jìn)行 HTML 到TXT 的轉(zhuǎn)換無(wú)法解決這些問(wèn)題。并可以對(duì)網(wǎng)頁(yè)中的元素進(jìn)行統(tǒng)計(jì)和語(yǔ)法校驗(yàn)。 Bit Token 在應(yīng)用中存在的問(wèn)題及修改意見(jiàn) 由于 HTML 的標(biāo)記多是成對(duì)出現(xiàn)的,并且存在 SCRIPT這樣的特殊元素,其內(nèi)容為 Javascript 程序,函數(shù)的字符串參數(shù)等可能包含其它的元素標(biāo)記。盡管如此,對(duì) SCRIPT的特殊處理還是有待完善,盡管這同時(shí)也會(huì)帶來(lái)一些問(wèn)題,需要進(jìn)行大量的測(cè)試,來(lái)保證新加入代碼的穩(wěn)定性。而且被廣泛使用,實(shí)際已成為了進(jìn)行 JavaScript 應(yīng)用開(kāi)發(fā)的標(biāo)準(zhǔn)平臺(tái)。 生成的 shell 程序,對(duì)比瀏覽器對(duì) JavaScript 的 支持,相同之處是使用相同的包含 JavaScript runtime 的 Library 或 DLL,我們把這部份相同的Library 或 DLL 稱為 JavaScript API, 我們實(shí)際開(kāi)發(fā) JavaScript 應(yīng)用,也是在JavaScript API 基礎(chǔ)上工作,而不用過(guò)多考慮其內(nèi)部的實(shí)現(xiàn)。瀏覽器主體程序的設(shè)計(jì)者可以通過(guò) JavaScript Engine,方便的實(shí)現(xiàn)各種應(yīng)用,畢竟 JavaScript API 太基礎(chǔ)了,直接使用不太方便。 初始化 cx: cx = JS_NewContext(rt, STACK_CHUNK_SIZE)。 定義系統(tǒng)函數(shù): JS_DefineFunctions(cx, globalObj, g_functions)。 RegisterClassRect (cx,globalObj)。 初始化定時(shí)器: TDTimerListInit()。眼睛 /abr img id=image0 src=/img /html 當(dāng)鼠標(biāo)移到文字上時(shí),觸發(fā)事件 mouseover,調(diào)用 ChangeImage()函數(shù),使得圖像源 (SRC)發(fā)生變化,重新調(diào)入新圖片。 注冊(cè)過(guò)程在 BuildModel 中進(jìn)行。 初始化該對(duì)象 : TD_JSXMLElementClassInit(JS_GetGlobalContext(), (void **)amp。ElementClass,proto,JSPROP_ENUMERATE)。 } 將對(duì)象加入 : JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement)。 問(wèn)題 3:如何建立 Javascript 對(duì)象與結(jié)點(diǎn)樹(shù)上結(jié)點(diǎn)的對(duì)應(yīng)? 解決 : Javascript 對(duì)象與結(jié)點(diǎn)樹(shù)是同時(shí)生成的,它們的共同性質(zhì)是結(jié)點(diǎn)具有相同屬性, Javascript 對(duì)象根據(jù) ID 屬性查找樹(shù),找到要操作的對(duì)應(yīng)結(jié)點(diǎn)。 處理該 widget 對(duì)該消息的響應(yīng)。jval)。 POSIX:該標(biāo)準(zhǔn)最初由 IEEE 開(kāi)發(fā)的標(biāo)準(zhǔn)族,部分已經(jīng)被 ISO 接受為國(guó)際標(biāo)準(zhǔn)。 XPG: X/Open 可移植性指南。GNU 的 C 函數(shù)庫(kù),即 glibc,是 Linux 上最重要的函數(shù)庫(kù),它定義了 ISO C 標(biāo)準(zhǔn)指定的所有的庫(kù)函數(shù),以及由 POSIX 或其他 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相關(guān)的擴(kuò)展。圖形文件操作函數(shù)庫(kù)包括: libungif、 libtiff、 libpng、 Imlib, libjpeg 等,可分別用來(lái)操作 GIF、 TIFF、 PNG、 JPEG 以及其他一些格式圖形 文件。 errno 中包含有錯(cuò)誤代碼。 在 Linux 中,我們經(jīng)??吹降氖嵌x非常簡(jiǎn)單的函數(shù)接口和變量名稱。如果程序的縮進(jìn)超過(guò) 3 級(jí),則應(yīng)考慮重新設(shè)計(jì)程序。如下所示: int function(int x, int y) { if (x == y) { ... } else { ... } return 0。不應(yīng)過(guò)分強(qiáng)調(diào)注釋的作用,應(yīng)盡量采用好的編碼風(fēng)格而不是添加過(guò)多的注釋。利用 gcc 命令可同時(shí)編譯并連接 C 和 C++ 源程序。 但是, gcc 命令只能編譯 C++ 源文件,而不能自動(dòng)和 C++ 程序使用的庫(kù)連接。 DMACRO 以字符串“ 1”定義 MACRO 宏。 GNU 調(diào)試器可利用該信息。 m486 針對(duì) 486 進(jìn)行代碼優(yōu)化。 O 或 O1 優(yōu)化生成代碼。通常用在建立共享庫(kù)時(shí)。 Wall 生成所有警告信息。 在可以使用 gdb 調(diào)試程序之前,必須使用 g 選項(xiàng)編譯源文件。 fPIC 選項(xiàng)產(chǎn)生位置獨(dú)立的代碼。這些工作包括:如果僅修改了某幾個(gè)源文件,則只重新編譯這幾個(gè)源文件;如果某個(gè)頭文件被修改了,則重新編譯所有包含該頭文件的源文件。 當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。 * 要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件。 這時(shí),就可以利用如下的 makefile 來(lái)定義 的創(chuàng)建規(guī)則: : g++ c g 一個(gè) makefile 文件中可定義多個(gè)目標(biāo),利用 make target 命令可指定要編譯的目標(biāo),如果不指定目標(biāo),則使用第一個(gè)目標(biāo)。如果你要以相同的編譯選項(xiàng)同時(shí)編譯十幾個(gè) C 源文件,而為每個(gè)目標(biāo)的編譯指定冗長(zhǎng)的編譯選項(xiàng)的話,將是非常乏味的。 (4) 運(yùn)行 make GNU make 命令還有一些其他選項(xiàng): C DIR 在讀取 makefile 之前改變到指定的目錄 DIR。 I DIR 當(dāng)包含其他 makefile 文件時(shí),可利用該選項(xiàng)指定搜索目錄。 w 在處理 makefile 之前和之后,顯示工作目錄。 gtk_init (amp。 gtk_widget_show (window)。 GTK 的層次結(jié)構(gòu) GIMP GTK+ GDK GLIB XLIB GTK 的事件與信號(hào)處理 GTK 是一個(gè)事件驅(qū)動(dòng)的工具集,一個(gè) GTK 應(yīng)用通常在 gtk_main 上休眠直到一個(gè)事件發(fā)生,這時(shí)控制被傳遞給合適的函數(shù)。 void gtk_signal_handler_unblock( GtkObject, guint)。項(xiàng)目的目的是要建立一個(gè)小型的、快捷的 web瀏覽器,并便于移植到嵌入式系統(tǒng)中。 (2)界面模塊:窗口、菜單、工具條、滾動(dòng)條等的初始化。 (6)文本文件的顯示模塊:對(duì) Plain text 顯示的處理,也包含相應(yīng)的布局算法。 IO 模塊 詞法分析模塊 文本文件顯示模塊 HTML 文件顯示模塊 PIXMAP 畫(huà)圖模塊 界面模塊 控制模塊 界面模塊 (1) , :用于界面的初始化和定制。 void a_Interface_openfile_dialog(BrowserWindow *bw)。 打開(kāi)網(wǎng)址輸入欄輸入的網(wǎng)址。 定義了主菜單項(xiàng),并進(jìn)行了消息綁定 (3) 定義了重要的窗口結(jié)構(gòu)如下: struct _BrowserWindow { /* 主窗口的 widgets */ GtkWidget *main_window。 GtkWidget *location。 /* 工具條按鈕 */ GtkWidget *back_menuitem。 /* 當(dāng)前光標(biāo)類型 */ GdkCursorType CursorType。 GtkWidget *quit_dialog_window。 控制模塊 (1), 主要的函數(shù)說(shuō)明: void a_Commands_openfile_callback (GtkWidget *widget, gpointer client_data)。退出程序 void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data)。 顯示幫助 (2), :是命令對(duì)應(yīng)的與網(wǎng)頁(yè)操作有關(guān)的具體實(shí)施 主要的函數(shù)說(shuō)明: void a_Nav_push(BrowserWindow *bw, const char*)。打開(kāi)起始頁(yè)(內(nèi)置頁(yè)面) 詞法分析的原理和算法在前面已有詳述。 全局詞法分析 int Bit_DestroyToken(BitTokenContext *global_cx)。 轉(zhuǎn)義字串的處理 int Token_ConsumTag(BitTokenContext *global_cx)。 保存分析結(jié)果 (2) , 用于存儲(chǔ) 元素的名稱和屬性。來(lái)新建一個(gè) pixmap。 gint pixmap_repaint(GtkWidget *widget)。 文本文件的顯示模塊 , char *Plain_handle_tabs(const char *str)將 TAB 轉(zhuǎn)為空格。 while(line_sizeSCREEN_WIDTH20 amp。) {str[j]=Buf[i]。 } str[j]=39。)i++。 } 創(chuàng)建 PIXMAP pixmap_new(drawing_area,SCREEN_WIDTH,y)。 輸出到 PIXMAP 并顯示 HTML 文件的顯示模塊 這部份是整個(gè)瀏覽器 最重要的部份之一,綜合了語(yǔ)法分析與 HTML 的布局、輸出,其算法的好壞直接關(guān)系到網(wǎng)頁(yè)的顯示效果。 } //switch pTtokenList=pTtokenListn
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1