mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2025-02-26 07:40:53 +00:00
addResetImageReq
Signed-off-by: hw_wyx <wuyinxiao@huawei.com> Change-Id: If74bc49f06ef71400e5a70efe67fc2889e4147ce
This commit is contained in:
parent
d56c373c08
commit
e389ccb54d
@ -503,8 +503,8 @@ class ImageTransitionModifier extends ModifierWithKey<object> {
|
||||
}
|
||||
}
|
||||
|
||||
class ImageSrcModifier extends ModifierWithKey<ResourceStr | PixelMap | DrawableDescriptor> {
|
||||
constructor(value: ResourceStr | PixelMap | DrawableDescriptor) {
|
||||
class ImageSrcModifier extends ModifierWithKey<ResourceStr | PixelMap | DrawableDescriptor | ImageContent> {
|
||||
constructor(value: ResourceStr | PixelMap | DrawableDescriptor | ImageContent) {
|
||||
super(value);
|
||||
}
|
||||
static identity: Symbol = Symbol('imageShowSrc');
|
||||
|
@ -219,6 +219,11 @@ var DynamicRangeMode ;
|
||||
DynamicRangeMode [DynamicRangeMode ["STANDARD"] = 2] = "STANDARD";
|
||||
})(DynamicRangeMode || (DynamicRangeMode = {}));
|
||||
|
||||
var ImageContent;
|
||||
(function (ImageContent) {
|
||||
ImageContent[ImageContent["EMPTY"] = 0] = "EMPTY";
|
||||
})(ImageContent || (ImageContent = {}));
|
||||
|
||||
var ImageRepeat;
|
||||
(function (ImageRepeat) {
|
||||
ImageRepeat[ImageRepeat["NoRepeat"] = 0] = "NoRepeat";
|
||||
|
@ -86,6 +86,15 @@ void PushDimensionsToVector(std::vector<ArkUIStringAndFloat>& results,
|
||||
}
|
||||
}
|
||||
|
||||
bool ImageBridge::CheckIsCard()
|
||||
{
|
||||
auto container = Container::Current();
|
||||
CHECK_NULL_RETURN(container, false);
|
||||
auto context = PipelineBase::GetCurrentContext();
|
||||
CHECK_NULL_RETURN(context, false);
|
||||
return context->IsFormRender() && !container->IsDynamicRender();
|
||||
}
|
||||
|
||||
ArkUINativeModuleValue ImageBridge::SetImageShowSrc(ArkUIRuntimeCallInfo* runtimeCallInfo)
|
||||
{
|
||||
EcmaVM* vm = runtimeCallInfo->GetVM();
|
||||
@ -95,13 +104,13 @@ ArkUINativeModuleValue ImageBridge::SetImageShowSrc(ArkUIRuntimeCallInfo* runtim
|
||||
auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
|
||||
Framework::JsiCallbackInfo info = Framework::JsiCallbackInfo(runtimeCallInfo);
|
||||
|
||||
auto container = Container::Current();
|
||||
CHECK_NULL_RETURN(container, panda::NativePointerRef::New(vm, nullptr));
|
||||
auto context = PipelineBase::GetCurrentContext();
|
||||
CHECK_NULL_RETURN(context, panda::NativePointerRef::New(vm, nullptr));
|
||||
bool isCard = context->IsFormRender() && !container->IsDynamicRender();
|
||||
bool isCard = CheckIsCard();
|
||||
std::string src;
|
||||
int32_t resId = 0;
|
||||
if (info[1]->IsNumber()) {
|
||||
GetArkUINodeModifiers()->getImageModifier()->resetImageContent(nativeNode);
|
||||
return panda::JSValueRef::Undefined(vm);
|
||||
}
|
||||
if (info[0]->IsObject()) {
|
||||
Framework::JSRef<Framework::JSObject> jsObj = Framework::JSRef<Framework::JSObject>::Cast(info[0]);
|
||||
Framework::JSRef<Framework::JSVal> tmp = jsObj->GetProperty("id");
|
||||
|
@ -21,6 +21,7 @@
|
||||
namespace OHOS::Ace::NG {
|
||||
class ImageBridge {
|
||||
public:
|
||||
static bool CheckIsCard();
|
||||
static ArkUINativeModuleValue SetImageShowSrc(ArkUIRuntimeCallInfo *runtimeCallInfo);
|
||||
static ArkUINativeModuleValue SetCopyOption(ArkUIRuntimeCallInfo *runtimeCallInfo);
|
||||
static ArkUINativeModuleValue ResetCopyOption(ArkUIRuntimeCallInfo *runtimeCallInfo);
|
||||
|
@ -278,8 +278,21 @@ bool JSImage::CheckIsCard()
|
||||
return container->IsFormRender() && !container->IsDynamicRender();
|
||||
}
|
||||
|
||||
bool JSImage::CheckResetImage(const JSCallbackInfo& info)
|
||||
{
|
||||
int32_t parseRes = -1;
|
||||
if (info.Length() < 1 || !ParseJsInteger(info[0], parseRes)) {
|
||||
return false;
|
||||
}
|
||||
ImageModel::GetInstance()->ResetImage();
|
||||
return true;
|
||||
}
|
||||
|
||||
void JSImage::CreateImage(const JSCallbackInfo& info, bool isImageSpan)
|
||||
{
|
||||
if (CheckResetImage(info)) {
|
||||
return;
|
||||
}
|
||||
bool isCard = CheckIsCard();
|
||||
|
||||
// Interim programme
|
||||
|
@ -30,6 +30,7 @@ class JSImage : public JSViewAbstract, public JSInteractableView {
|
||||
public:
|
||||
static void Create(const JSCallbackInfo& info);
|
||||
static bool CheckIsCard();
|
||||
static bool CheckResetImage(const JSCallbackInfo& info);
|
||||
static void CreateImage(const JSCallbackInfo& info, bool isImageSpan = false);
|
||||
static void CreateImageAnimation(std::vector<RefPtr<PixelMap>>& pixelMaps,
|
||||
int32_t duration, int32_t iterations);
|
||||
|
@ -61,6 +61,7 @@ public:
|
||||
void SetImageAnalyzerConfig(void* config) override {}
|
||||
void SetImageAIOptions(void* config) override {}
|
||||
void SetSmoothEdge(float value) override {}
|
||||
void ResetImage() override {}
|
||||
void SetDynamicRangeMode(DynamicRangeMode dynamicRangeMode) override {}
|
||||
void SetEnhancedImageQuality(AIImageQuality imageQuality) override {}
|
||||
void CreateAnimation(const std::vector<ImageProperties>& imageList, int32_t duration, int32_t iteration) override {}
|
||||
|
@ -68,6 +68,7 @@ public:
|
||||
virtual void SetOnError(std::function<void(const LoadImageFailEvent &info)> &&callback) = 0;
|
||||
virtual void SetSvgAnimatorFinishEvent(std::function<void()> &&callback) = 0;
|
||||
virtual void Create(const ImageInfoConfig& imageInfoConfig, RefPtr<PixelMap>& pixMap) = 0;
|
||||
virtual void ResetImage() = 0;
|
||||
virtual void CreateAnimation(const std::vector<ImageProperties>& imageList,
|
||||
int32_t duration, int32_t iteration) = 0;
|
||||
virtual void SetImageSourceSize(const std::pair<Dimension, Dimension> &size) = 0;
|
||||
|
@ -109,11 +109,42 @@ void ImageModelNG::Create(const ImageInfoConfig& imageInfoConfig, RefPtr<PixelMa
|
||||
frameNode->RemoveChild(imageFrameNode);
|
||||
}
|
||||
}
|
||||
pattern->SetNeedLoadAlt(true);
|
||||
pattern->SetImageType(ImagePattern::ImageType::BASE);
|
||||
|
||||
ACE_UPDATE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageSourceInfo, srcInfo);
|
||||
}
|
||||
|
||||
void ImageModelNG::ResetImage()
|
||||
{
|
||||
auto *stack = ViewStackProcessor::GetInstance();
|
||||
auto nodeId = stack->ClaimNodeId();
|
||||
RefPtr<FrameNode> frameNode;
|
||||
frameNode = FrameNode::GetOrCreateFrameNode(
|
||||
V2::IMAGE_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr<ImagePattern>(); });
|
||||
stack->Push(frameNode);
|
||||
ImageSourceInfo sourceInfo("");
|
||||
sourceInfo.SetIsFromReset(true);
|
||||
ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageSourceInfo, sourceInfo, frameNode);
|
||||
frameNode->MarkDirtyNode(PROPERTY_UPDATE_RENDER);
|
||||
auto pattern = frameNode->GetPattern<ImagePattern>();
|
||||
CHECK_NULL_VOID(pattern);
|
||||
pattern->SetNeedLoadAlt(false);
|
||||
pattern->ResetImageAndAlt();
|
||||
}
|
||||
|
||||
void ImageModelNG::ResetImage(FrameNode* frameNode)
|
||||
{
|
||||
ImageSourceInfo sourceInfo("");
|
||||
sourceInfo.SetIsFromReset(true);
|
||||
ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageSourceInfo, sourceInfo, frameNode);
|
||||
frameNode->MarkDirtyNode(PROPERTY_UPDATE_RENDER);
|
||||
auto pattern = frameNode->GetPattern<ImagePattern>();
|
||||
CHECK_NULL_VOID(pattern);
|
||||
pattern->SetNeedLoadAlt(false);
|
||||
pattern->ResetImageAndAlt();
|
||||
}
|
||||
|
||||
void ImageModelNG::SetInitialSrc(FrameNode *frameNode, const std::string &src, const std::string &bundleName,
|
||||
const std::string &moduleName, bool isUriPureNumber)
|
||||
{
|
||||
|
@ -28,6 +28,7 @@ namespace OHOS::Ace::NG {
|
||||
class ACE_EXPORT ImageModelNG : public OHOS::Ace::ImageModel {
|
||||
public:
|
||||
void Create(const ImageInfoConfig& imageInfoConfig, RefPtr<PixelMap>& pixMap) override;
|
||||
void ResetImage() override;
|
||||
void CreateAnimation(const std::vector<ImageProperties>& imageList, int32_t duration, int32_t iteration) override;
|
||||
bool GetIsAnimation() override;
|
||||
void SetAlt(const ImageSourceInfo &src) override;
|
||||
@ -69,6 +70,7 @@ public:
|
||||
static RefPtr<FrameNode> CreateFrameNode(int32_t nodeId, const std::string& src, RefPtr<PixelMap>& pixMap,
|
||||
const std::string& bundleName, const std::string& moduleName, bool isUriPureNumber = false);
|
||||
static void InitImage(FrameNode *frameNode, std::string& src);
|
||||
static void ResetImage(FrameNode* frameNode);
|
||||
static void SetInitialSrc(FrameNode* frameNode, const std::string& src, const std::string& bundleName,
|
||||
const std::string& moduleName, bool isUriPureNumber = false);
|
||||
static void SetInitialPixelMap(FrameNode* frameNode, RefPtr<PixelMap>& pixMap);
|
||||
|
@ -614,6 +614,7 @@ void ImagePattern::LoadImage(
|
||||
|
||||
void ImagePattern::LoadAltImage(const ImageSourceInfo& altImageSourceInfo)
|
||||
{
|
||||
CHECK_NULL_VOID(GetNeedLoadAlt());
|
||||
LoadNotifier altLoadNotifier(CreateDataReadyCallbackForAlt(), CreateLoadSuccessCallbackForAlt(), nullptr);
|
||||
if (!altLoadingCtx_ || altLoadingCtx_->GetSourceInfo() != altImageSourceInfo ||
|
||||
(altLoadingCtx_ && altImageSourceInfo.IsSvg())) {
|
||||
|
@ -337,6 +337,16 @@ public:
|
||||
return loadInVipChannel_;
|
||||
}
|
||||
|
||||
bool GetNeedLoadAlt()
|
||||
{
|
||||
return needLoadAlt_;
|
||||
}
|
||||
|
||||
void SetNeedLoadAlt(bool needLoadAlt)
|
||||
{
|
||||
needLoadAlt_ = needLoadAlt;
|
||||
}
|
||||
|
||||
void SetLoadInVipChannel(bool loadInVipChannel)
|
||||
{
|
||||
loadInVipChannel_ = loadInVipChannel;
|
||||
@ -483,6 +493,7 @@ private:
|
||||
|
||||
CopyOptions copyOption_ = CopyOptions::None;
|
||||
ImageInterpolation interpolation_ = ImageInterpolation::LOW;
|
||||
bool needLoadAlt_ = true;
|
||||
|
||||
RefPtr<ImageLoadingContext> loadingCtx_;
|
||||
RefPtr<CanvasImage> image_;
|
||||
|
@ -26,10 +26,10 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define ARKUI_FULL_API_VERSION 117
|
||||
#define ARKUI_FULL_API_VERSION 118
|
||||
// When changing ARKUI_BASIC_API_VERSION, ARKUI_FULL_API_VERSION must be
|
||||
// increased as well.
|
||||
#define ARKUI_NODE_API_VERSION 117
|
||||
#define ARKUI_NODE_API_VERSION 118
|
||||
|
||||
#define ARKUI_BASIC_API_VERSION 8
|
||||
#define ARKUI_EXTENDED_API_VERSION 8
|
||||
@ -2033,6 +2033,7 @@ struct ArkUIImageModifier {
|
||||
void (*analyzerConfig)(ArkUINodeHandle node, void* config);
|
||||
void (*setDrawingColorFilter)(ArkUINodeHandle node, void* colorFilter);
|
||||
void* (*getDrawingColorFilter)(ArkUINodeHandle node);
|
||||
void (*resetImageContent)(ArkUINodeHandle node);
|
||||
void (*resetImageSrc)(ArkUINodeHandle node);
|
||||
void (*setInitialPixelMap)(ArkUINodeHandle node, ArkUI_Int64 pixelMap);
|
||||
void (*setAltSourceInfo)(ArkUINodeHandle node, const ArkUIImageSourceInfo* sourceInfo);
|
||||
|
@ -791,6 +791,13 @@ void AnalyzerConfig(ArkUINodeHandle node, void* config)
|
||||
ImageModelNG::SetImageAnalyzerConfig(frameNode, config);
|
||||
}
|
||||
|
||||
void ResetImageContent(ArkUINodeHandle node)
|
||||
{
|
||||
auto* frameNode = reinterpret_cast<FrameNode*>(node);
|
||||
CHECK_NULL_VOID(frameNode);
|
||||
ImageModelNG::ResetImage(frameNode);
|
||||
}
|
||||
|
||||
void ResetImageSrc(ArkUINodeHandle node)
|
||||
{
|
||||
auto* frameNode = reinterpret_cast<FrameNode*>(node);
|
||||
@ -866,18 +873,18 @@ const ArkUIImageModifier* GetImageModifier()
|
||||
ResetCopyOption, SetAutoResize, ResetAutoResize, SetObjectRepeat, ResetObjectRepeat, SetRenderMode,
|
||||
ResetRenderMode, SetSyncLoad, ResetSyncLoad, SetObjectFit, ResetObjectFit, SetFitOriginalSize,
|
||||
ResetFitOriginalSize, SetSourceSize, ResetSourceSize, SetMatchTextDirection, ResetMatchTextDirection,
|
||||
SetFillColor, ResetFillColor, SetAlt, ResetAlt, SetImageInterpolation, ResetImageInterpolation,
|
||||
SetColorFilter, ResetColorFilter, SetImageSyncLoad, ResetImageSyncLoad, SetImageObjectFit,
|
||||
ResetImageObjectFit, SetImageFitOriginalSize, ResetImageFitOriginalSize, SetImageDraggable,
|
||||
ResetImageDraggable, SetImageBorderRadius, ResetImageBorderRadius, SetImageBorder, ResetImageBorder,
|
||||
SetImageOpacity, ResetImageOpacity, SetEdgeAntialiasing, ResetEdgeAntialiasing, SetResizable,
|
||||
ResetResizable, SetDynamicRangeMode, ResetDynamicRangeMode, SetEnhancedImageQuality,
|
||||
ResetEnhancedImageQuality, GetImageSrc, GetAutoResize, GetObjectRepeat, GetObjectFit,
|
||||
GetImageInterpolation, GetColorFilter, GetAlt, GetImageDraggable, GetRenderMode, SetImageResizable,
|
||||
GetImageResizable, GetFitOriginalSize, GetFillColor, SetPixelMap, SetPixelMapArray, SetResourceSrc,
|
||||
EnableAnalyzer, SetImagePrivacySensitve, ResetImagePrivacySensitve, AnalyzerConfig, SetDrawingColorFilter,
|
||||
GetDrawingColorFilter, ResetImageSrc, SetInitialPixelMap, SetAltSourceInfo, SetOnComplete, SetOnError,
|
||||
ResetOnError, SetImageOnFinish, ResetImageOnFinish };
|
||||
SetFillColor, ResetFillColor, SetAlt, ResetAlt, SetImageInterpolation, ResetImageInterpolation, SetColorFilter,
|
||||
ResetColorFilter, SetImageSyncLoad, ResetImageSyncLoad, SetImageObjectFit, ResetImageObjectFit,
|
||||
SetImageFitOriginalSize, ResetImageFitOriginalSize, SetImageDraggable, ResetImageDraggable,
|
||||
SetImageBorderRadius, ResetImageBorderRadius, SetImageBorder, ResetImageBorder, SetImageOpacity,
|
||||
ResetImageOpacity, SetEdgeAntialiasing, ResetEdgeAntialiasing, SetResizable, ResetResizable,
|
||||
SetDynamicRangeMode, ResetDynamicRangeMode, SetEnhancedImageQuality, ResetEnhancedImageQuality, GetImageSrc,
|
||||
GetAutoResize, GetObjectRepeat, GetObjectFit, GetImageInterpolation, GetColorFilter, GetAlt, GetImageDraggable,
|
||||
GetRenderMode, SetImageResizable, GetImageResizable, GetFitOriginalSize, GetFillColor, SetPixelMap,
|
||||
SetPixelMapArray, SetResourceSrc, EnableAnalyzer, SetImagePrivacySensitve, ResetImagePrivacySensitve,
|
||||
AnalyzerConfig, SetDrawingColorFilter, GetDrawingColorFilter, ResetImageContent, ResetImageSrc,
|
||||
SetInitialPixelMap, SetAltSourceInfo, SetOnComplete, SetOnError, ResetOnError, SetImageOnFinish,
|
||||
ResetImageOnFinish };
|
||||
return &modifier;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user