1.畫面顯示只有256色
Disable fast jpeg
include/device.h
#define FASTJPEG 0 /* =1 fot temp quick jpeg 8bpp*/
2.載入大檔案時 nano-X 結束.
# /tmp/nxview /phone/media/picture/DSC_0251.JPG
Improper call to JPEG library in state 202
nxclient: lost connection to Nano-X server
Trace之後發現是memory不夠了,malloc失敗.
之後nano-X操作jpeglib的程序有問題
engine/image_jpeg.c
int
GdDecodeJPEG(buffer_t * src, PMWIMAGEHDR pimage, PSD psd, MWBOOL fast_grayscale)
{
.....
.....
.....
/* Step 5: Start decompressor */
jpeg_start_decompress (&cinfo);
/* Step 6: while (scan lines remain to be read) */
while(cinfo.output_scanline < cinfo.output_height) {
JSAMPROW rowptr[1];
rowptr[0] = (JSAMPROW)(pimage->imagebits +
cinfo.output_scanline * pimage->pitch);
jpeg_read_scanlines (&cinfo, rowptr, 1);
}
ret = 1;
#if 1 /*Modify by Steve*/ <<--改到這裡就OK啦
/* Step 7: Finish decompression */
jpeg_finish_decompress (&cinfo);
#endif
err:
#if 0 /*Modify by Steve*/ <<--就是這裡囉
/* Step 7: Finish decompression */
jpeg_finish_decompress (&cinfo);
#endif
/* Step 8: Release JPEG decompression object */
jpeg_destroy_decompress (&cinfo);
/* May want to check to see whether any corrupt-data
* warnings occurred (test whether jerr.pub.num_warnings is nonzero).
*/
return ret;
}
#endif /* MW_FEATURE_IMAGES && defined(HAVE_JPEG_SUPPORT)*/
3.圖檔太大會因為memory不夠而無法顯示
解決方式是在jepglib decompress 時作 scaling
engine/image_jpeg.c
int
GdDecodeJPEG(buffer_t * src, PMWIMAGEHDR pimage, PSD psd, MWBOOL fast_grayscale)
{
.....
.....
.....
jpeg_calc_output_dimensions(&cinfo);
#if 1
int wfac, hfac, fac;
wfac = cinfo.output_width / psd->xres;
hfac = cinfo.output_height / psd->yres;
fac = wfac;
if(fac > hfac)
fac = hfac;
if(fac > 8) fac = 8; /* 1/8 */
else if(fac > 4) fac = 4; /* 1/4 */
else if(fac > 2) fac = 2; /* 1/2 */
else fac = 1; /*No scaling*/
cinfo.scale_num = 1;
cinfo.scale_denom = fac;
cinfo.dct_method = JDCT_FASTEST;
cinfo.do_fancy_upsampling = FALSE;
jpeg_calc_output_dimensions(&cinfo);
#endif
.....
.....
.....
}
#endif /* MW_FEATURE_IMAGES && defined(HAVE_JPEG_SUPPORT)*/
2008年12月24日 星期三
2008年12月23日 星期二
Redirect printf to file
#include <stdio.h>
#include <stdlib.h>
FILE *fp;
fp = freopen("/tmp/dock.log", "w", stdout);
printf("printf to /tmp/dock.log ...\n");
fclose(fp);
#include <stdlib.h>
FILE *fp;
fp = freopen("/tmp/dock.log", "w", stdout);
printf("printf to /tmp/dock.log ...\n");
fclose(fp);
2008年12月10日 星期三
nano-X Window Manager
nano-X並沒有自動處理視窗在screen繪圖的動作,例如A視窗有部份區域與B視窗重疊,當A視窗結束消失,B視窗被A視窗覆蓋的部份會是一片空白.
在nano-X上實作一個Window Manager才能解決上述的問題.
nano-X中的nanowm可作為參考.
nano-X 提供了Graphic UI所需要的基礎功能,大致上可分為
1.操作繪圖區域
GrNewWindow
GrNewPixmap
GrMapWindow
GrUnmapWindow
GrReparentWindow
GrCopyArea
GrClearArea
2.繪圖物件 Graphic Context
GrNewGC
GrCopyGC
GrForeground
GrBackground
GrSetGCFont
3.繪圖工具
GrLine
GrRect
GrPoly
GrFillRect
GrFillPoly
4.繪圖區域狀態管理,回報視窗顯示,子視窗狀態更新等
GrCheckNextEvent
實做Window Manager之前必須了解的事情
0.視窗具有父子階層的關係,子視窗的x,y軸位置是相對於父視窗.父視窗的大小範圍就是子視窗的可視繪圖範圍
1.GR_ROOT_WINDOW_ID代表系統中最底層的視窗即root window,可當作桌面來看待.
2.視窗分為兩種Container Window與Client Window,
Container Window其父視窗為root window.
Client window其父視窗為Container Window.
3.Window Manager需要處理視窗Event.
此功能為實做Window Manager最重要的部份.關係到視窗的正確顯示.
GR_EVENT_TYPE_EXPOSURE :
視窗需要重繪.
GR_EVENT_TYPE_CHLD_UPDATE :
子視窗狀態改變了.
若子視窗隱藏(unmap),父視窗為Container Window則重繪父視窗.
在nano-X上實作一個Window Manager才能解決上述的問題.
nano-X中的nanowm可作為參考.
nano-X 提供了Graphic UI所需要的基礎功能,大致上可分為
1.操作繪圖區域
GrNewWindow
GrNewPixmap
GrMapWindow
GrUnmapWindow
GrReparentWindow
GrCopyArea
GrClearArea
2.繪圖物件 Graphic Context
GrNewGC
GrCopyGC
GrForeground
GrBackground
GrSetGCFont
3.繪圖工具
GrLine
GrRect
GrPoly
GrFillRect
GrFillPoly
4.繪圖區域狀態管理,回報視窗顯示,子視窗狀態更新等
GrCheckNextEvent
實做Window Manager之前必須了解的事情
0.視窗具有父子階層的關係,子視窗的x,y軸位置是相對於父視窗.父視窗的大小範圍就是子視窗的可視繪圖範圍
1.GR_ROOT_WINDOW_ID代表系統中最底層的視窗即root window,可當作桌面來看待.
2.視窗分為兩種Container Window與Client Window,
Container Window其父視窗為root window.
Client window其父視窗為Container Window.
3.Window Manager需要處理視窗Event.
此功能為實做Window Manager最重要的部份.關係到視窗的正確顯示.
GR_EVENT_TYPE_EXPOSURE :
視窗需要重繪.
GR_EVENT_TYPE_CHLD_UPDATE :
子視窗狀態改變了.
若子視窗隱藏(unmap),父視窗為Container Window則重繪父視窗.
2008年12月5日 星期五
軟體開發文章
閱讀他人的程式碼(1)─讀懂程式碼,使心法皆為我所用
http://www.ithome.com.tw/itadm/article.php?c=47717
不會寫程式但是在做系統分析 有沒有不會寫程式卻在做系統分析的? [精華]
http://funp.com/push/index.php?tag=%E7%A8%8B%E5%BC%8F&hot=&stars=1&page=11#p=81693
強化程式可讀性,以提升開發的效率
http://www.ithome.com.tw/itadm/article.php?c=52029
管理者要懂得如何用嘴巴寫程式
http://www.ithome.com.tw/itadm/article.php?c=51771
註解不是換句話說,是補程式的不足
http://www.ithome.com.tw/itadm/article.php?c=51597
打造穩固程式碼,先從思路方向著手
http://www.ithome.com.tw/itadm/article.php?c=51397
當程式人「晉升」至管理階級
http://www.ithome.com.tw/itadm/article.php?c=51133
程式設計的2大面向:演算和架構
http://www.ithome.com.tw/itadm/article.php?c=49841
GUI的開發瓶頸
http://www.ithome.com.tw/itadm/article.php?c=49436
漫談程式碼的相依性 (1)時時關注類別的相依程度、持續改善
http://www.ithome.com.tw/itadm/article.php?c=49179
程式碼的演化之路(1)持續讓程式碼保持進步的能力
http://www.ithome.com.tw/itadm/article.php?c=48746
程式設計2.0 (1)善用優質網站資源,快速上手新技術
http://www.ithome.com.tw/itadm/article.php?c=47405
物件導向程式設計常見的錯誤(1)抽離作用重複的程式碼,重構品質
http://www.ithome.com.tw/itadm/article.php?c=45745
物件導向與封裝
http://www.ithome.com.tw/itadm/article.php?c=45903
http://www.ithome.com.tw/itadm/article.php?c=47717
不會寫程式但是在做系統分析 有沒有不會寫程式卻在做系統分析的? [精華]
http://funp.com/push/index.php?tag=%E7%A8%8B%E5%BC%8F&hot=&stars=1&page=11#p=81693
強化程式可讀性,以提升開發的效率
http://www.ithome.com.tw/itadm/article.php?c=52029
管理者要懂得如何用嘴巴寫程式
http://www.ithome.com.tw/itadm/article.php?c=51771
註解不是換句話說,是補程式的不足
http://www.ithome.com.tw/itadm/article.php?c=51597
打造穩固程式碼,先從思路方向著手
http://www.ithome.com.tw/itadm/article.php?c=51397
當程式人「晉升」至管理階級
http://www.ithome.com.tw/itadm/article.php?c=51133
程式設計的2大面向:演算和架構
http://www.ithome.com.tw/itadm/article.php?c=49841
GUI的開發瓶頸
http://www.ithome.com.tw/itadm/article.php?c=49436
漫談程式碼的相依性 (1)時時關注類別的相依程度、持續改善
http://www.ithome.com.tw/itadm/article.php?c=49179
程式碼的演化之路(1)持續讓程式碼保持進步的能力
http://www.ithome.com.tw/itadm/article.php?c=48746
程式設計2.0 (1)善用優質網站資源,快速上手新技術
http://www.ithome.com.tw/itadm/article.php?c=47405
物件導向程式設計常見的錯誤(1)抽離作用重複的程式碼,重構品質
http://www.ithome.com.tw/itadm/article.php?c=45745
物件導向與封裝
http://www.ithome.com.tw/itadm/article.php?c=45903
訂閱:
文章 (Atom)