本文整理汇总了C++中Image::DecVisible方法的典型用法代码示例。如果您正苦于以下问题:C++ Image::DecVisible方法的具体用法?C++ Image::DecVisible怎么用?C++ Image::DecVisible使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Image
的用法示例。
在下文中一共展示了Image::DecVisible方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetBitmap
OpBitmap* IconUtils::GetBitmap(const UINT8* buffer, UINT32 buffer_size, int width, int height)
{
FileImageContentProvider provider;
Image image;
provider.LoadFromBuffer(buffer, buffer_size, image);
OpBitmap* loaded_bitmap = image.GetBitmap(NULL);
if (!loaded_bitmap)
{
image.DecVisible(null_image_listener);
return 0;
}
int src_width = loaded_bitmap->Width();
int src_height = loaded_bitmap->Height();
if (src_width <= 0 || src_height <= 0)
{
image.DecVisible(null_image_listener);
return 0;
}
if (width<=0)
width = src_width;
if (height<=0)
height = src_height;
OpBitmap* bitmap = 0;
OP_STATUS rc = OpBitmap::Create(&bitmap, width, height, loaded_bitmap->IsTransparent(), loaded_bitmap->HasAlpha(), 0, 0, TRUE);
if (OpStatus::IsError(rc))
{
image.ReleaseBitmap();
image.DecVisible(null_image_listener);
return 0;
}
OpPainter* painter = bitmap->GetPainter();
if (!painter)
{
image.ReleaseBitmap();
image.DecVisible(null_image_listener);
OP_DELETE(bitmap);
return 0;
}
painter->ClearRect(OpRect(0,0,width,height));
painter->DrawBitmapScaled(loaded_bitmap, OpRect(0,0,src_width,src_height), OpRect(0,0,width,height));
bitmap->ReleasePainter();
image.ReleaseBitmap();
image.DecVisible(null_image_listener);
return bitmap;
}
示例2: Undisplay
void HEListElm::Undisplay()
{
if (GetImageVisible())
{
Image img = GetImage();
#ifdef HAS_ATVEF_SUPPORT
if (img.IsAtvefImage())
{
if (g_tvManager)
{
URL tv_url = GetElm()->GetImageURL(FALSE, doc->GetLogicalDocument());
g_tvManager->OnTvWindowAvailable(&tv_url, FALSE);
}
SetImageVisible(FALSE);
return;
}
#endif
if (!img.IsEmpty())
{
if (animation_handler)
{
animation_handler->DecRef(this);
animation_handler = NULL;
}
image_last_decoded_height = 0;
img.DecVisible(this);
}
}
SetImageVisible(FALSE);
}
示例3: SendImageFinishedLoadingEvent
OP_STATUS HEListElm::SendImageFinishedLoadingEvent(FramesDocument* doc)
{
OP_ASSERT(doc);
OP_ASSERT(!GetEventSent());
if (inline_type == IMAGE_INLINE && HElm()->GetInserted() == HE_INSERTED_BY_PARSE_AHEAD)
{
HElm()->SetSpecialBoolAttr(ATTR_JS_DELAYED_ONLOAD, TRUE, SpecialNs::NS_LOGDOC);
return OpStatus::OK;
}
// Since this requires decoding the image, skip it if there are no event listeners
if (inline_type == IMAGE_INLINE &&
(GetElm()->HasEventHandler(doc, ONLOAD) || GetElm()->HasEventHandler(doc, ONERROR)))
{
LoadInlineElm* lie = GetLoadInlineElm();
OP_ASSERT(lie);
URLStatus url_status = lie->GetUrl()->Status(TRUE);
if (url_status == URL_LOADED)
{
#ifdef SVG_SUPPORT
// If it is an svg image wait with sending onerror or
// onload until it has been parsed.
if (lie->GetUrl()->ContentType() == URL_SVG_CONTENT)
return OpStatus::OK;
#endif // SVG_SUPPORT
Image img = GetImage();
// IsAnimated() implies that the first frame is decoded which is good enough for us.
if (img.ImageDecoded() || img.IsAnimated())
return OnLoad();
if (GetUrlContentProvider() && !GetImageVisible())
{
/* Force image decoding, so that we can send onload or onerror as appropriate. */
OP_STATUS status = img.IncVisible(this);
if (OpStatus::IsSuccess(status))
{
// Scripts might load image in a hidden place and move
// on load, in which case we don't want image to be
// re-decoded.
ImageManager::GraceTimeLock lock(imgManager);
// This will send onload or onerror through the ImageListener callbacks (OnError and OnPortionDecoded).
// except for animated images since only the first frame will be decoded.
status = img.OnLoadAll(GetUrlContentProvider());
img.DecVisible(this);
OP_ASSERT(GetEventSent());
}
return status;
}
}
else if (url_status == URL_LOADING_FAILURE)
SendOnError();
}
return OpStatus::OK;
}