📄 render_loadimage.cpp
字号:
#include <assert.h>#include "render_interface.h"#include "mgpoint.h"#include "mgsize.h"#include "mgrect.h"#include "mgpixmap.h"#include "render_image.h"#include "string.h"#include <minigui/window.h>#include "../css/css_valueimpl.h"#include "render_cachecss.h"#include "render_loadcss.h"#include "render_cacheimage.h"#include "render_loadimage.h"#include "mgmessage.h"#define DEBUG_BY_XHTANG 0using namespace DOM;using namespace khtml;MGImageLoader::MGImageLoader(){ setType(MGLOADERTYPE_IMAGE);} MGImageLoader::~MGImageLoader(){}bool MGImageLoader::LoadedMsgFromNet( unsigned char *url ,unsigned char *buf,int length){ char s[URL_TEMPNAMELENGTH+1]; if(!MGLoadObject::LoadedMsgFromNet(url,buf,length,s))return 0; RenderImage* rImg; DOM::CSSImageValueImpl* cssImage; FromUrlLoaded(url,&rImg,&cssImage); MGCachedImage* image; if(rImg){ image=rImg->image; image->LoadDataFromTempFile(s); rImg->AfterDataLoaded(); if(m_req.isEmpty()){ SendNotifyMessage(m_hWnd, MSG_IMAGELAYOUT ,0,0);#if 0 //DEBUG_BY_XHTANG fprintf(stderr,"Repaint image root:%p.\n",rImg->root());#endif } } else if(cssImage){#if 0//DEBUG_BY_XHTANG fprintf(stderr,"cssimage will read data from tempfile.\n");#endif image=cssImage->image(); image->LoadDataFromTempFile(s); image->pixmap_size(); } return 1;}void MGImageLoader::FromUrlLoaded( unsigned char *url ,RenderImage** render,DOM::CSSImageValueImpl **cssImage){ bool bFind=SeekLoadListByUrl(url); *render=bFind?(m_load.current())->render:0; *cssImage=bFind?(m_load.current())->cssImage:0;}MGCachedImage* MGImageLoader::RequestImage(DOM::CSSImageValueImpl* cssImage,RenderImage* render, unsigned char *url ){ char s[URL_TEMPNAMELENGTH+1],t[URL_TEMPNAMELENGTH+1]; if(isLocalFile(url)){ return new MGCachedImage( url, false, 0); } if(isLoaded(url)){ strcpy(s,m_load.current()->TempName); CompleteTempName(s); return new MGCachedImage( url,s); } if(isRequested(url)) return (m_req.current())->mgCachedImage; strcpy(s,"img-"); sprintf(t,"%d",++m_nRequested); strcat(s,t); if(strlen((char *)url)>=4&&*(url+strlen((char *)url)-4)=='.') strcat(s,(char *)url+strlen((char *)url)-4); else strcat(s,".png"); LoadUrlStruct *rus=new LoadUrlStruct(); strcpy((char *)(rus->url), (char *)url); rus->render=render; rus->cssImage=cssImage; strncpy(rus->TempName,s,URL_TEMPNAMELENGTH); //following is just for creating a new MGCachedImage without image dada, //and it's image data will be filled within LoadedMsgFromNet function. //so the param of TempName is nonsense . MGCachedImage *cachedImg=new MGCachedImage( url); cachedImg->m_bIsRequested=1; rus->mgCachedImage=cachedImg; m_req.append(rus); RequestMsgToNet(rus->url); return cachedImg;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -