⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 render_loadimage.cpp

📁 monqueror一个很具有参考价值的源玛
💻 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 + -