blob: cdd4476f6f43f25572b959d73029872a1e15d132 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#ifndef WXCORE_BRIDGE_PLATFORM_H
#define WXCORE_BRIDGE_PLATFORM_H
#if defined __cplusplus
#include "core/bridge/platform_bridge.h"
#include "core/layout/measure_func_adapter.h"
#include "base/closure.h"
namespace WeexCore
{
class IOSSide : public PlatformBridge::PlatformSide
{
public:
WXCoreSize InvokeMeasureFunction(const char* page_id,
long render_ptr, float width,
int width_measure_mode,
float height,
int height_measure_mode) override { return WXCoreSize(); };
void InvokeLayoutBefore(const char* page_id, long render_ptr) override {};
void InvokeLayoutPlatform(const char* page_id, long render_ptr) override;
void InvokeLayoutAfter(const char* page_id, long render_ptr,
float width, float height) override {};
void TriggerVSync(const char* page_id) override;
void SetJSVersion(const char* version) override;
void ReportException(const char* pageId, const char *func, const char *exception_string) override;
void ReportServerCrash(const char* instance_id) override {};
void ReportNativeInitStatus(const char* status_code,
const char* error_msg) override {};
int CallNative(const char* pageId, const char *task, const char *callback) override;
std::unique_ptr<ValueWithType> CallNativeModule(const char* pageId, const char *module, const char *method,
const char *arguments, int argumentsLength, const char *options, int optionsLength) override;
void CallNativeComponent(const char* pageId, const char* ref, const char *method,
const char *arguments, int argumentsLength, const char *options, int optionsLength) override;
std::unique_ptr<ValueWithType> RegisterPluginModule(const char *name, const char *class_name, const char *version) override;
std::unique_ptr<ValueWithType> RegisterPluginComponent(const char *name, const char *class_name, const char *version) override;
void SetTimeout(const char* callbackID, const char* time) override ;
void NativeLog(const char* str_array) override ;
int UpdateFinish(const char* page_id, const char* task, int taskLen,
const char* callback, int callbackLen) override;
int RefreshFinish(const char* pageId, const char *task, const char *callback) override;
int AddEvent(const char* pageId, const char* ref, const char *event) override;
int RemoveEvent(const char* pageId, const char* ref, const char *event) override;
int CreateBody(const char* pageId, const char *componentType, const char* ref,
std::map<std::string, std::string> *styles,
std::map<std::string, std::string> *attributes,
std::set<std::string> *events,
const WXCoreMargin &margins,
const WXCorePadding &paddings,
const WXCoreBorderWidth &borders) override;
int AddElement(const char* pageId, const char *componentType, const char* ref,
int &index, const char* parentRef,
std::map<std::string, std::string> *styles,
std::map<std::string, std::string> *attributes,
std::set<std::string> *events,
const WXCoreMargin &margins,
const WXCorePadding &paddings,
const WXCoreBorderWidth &borders,
bool willLayout= true) override;
int Layout(const char* pageId, const char* ref,
float top, float bottom, float left, float right,
float height, float width, bool isRTL, int index) override;
int UpdateStyle(const char* pageId, const char* ref,
std::vector<std::pair<std::string, std::string>> *style,
std::vector<std::pair<std::string, std::string>> *margin,
std::vector<std::pair<std::string, std::string>> *padding,
std::vector<std::pair<std::string, std::string>> *border) override;
int UpdateAttr(const char* pageId, const char* ref,
std::vector<std::pair<std::string, std::string>> *attrs) override;
int CreateFinish(const char* pageId) override;
int RenderSuccess(const char* pageId) override;
int RemoveElement(const char* pageId, const char* ref) override;
int MoveElement(const char* pageId, const char* ref, const char* parentRef, int index) override;
int AppendTreeCreateFinish(const char* pageId, const char* ref) override;
int HasTransitionPros(const char* pageId, const char* ref,
std::vector<std::pair<std::string, std::string>> *style) override;
void PostMessage(const char* vm_id, const char* data, int dataLength) override {};
void DispatchMessage(const char* client_id,
const char* data, int dataLength, const char* callback, const char* vm_id) override {};
std::unique_ptr<WeexJSResult> DispatchMessageSync(const char* client_id, const char* data,
int dataLength, const char* vm_id) override {
return std::unique_ptr<WeexJSResult>();
}
void OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult>& result) override {};
void PostTaskOnComponentThread(const weex::base::Closure closure) override;
};
class WXCoreMeasureFunctionBridge : public MeasureFunctionAdapter
{
public:
WXCoreSize Measure(const char* page_id, long render_ptr, float width, MeasureMode widthMeasureMode,
float height, MeasureMode heightMeasureMode);
void LayoutBefore(const char* page_id, long render_ptr);
void LayoutAfter(const char* page_id, long render_ptr, float width, float height);
};
}
#endif
#import <Foundation/Foundation.h>
// For Objective-C use
// Bridge for custom page like Heron
@interface WXCustomPageBridge : NSObject
+ (instancetype)sharedInstance;
+ (BOOL)isCustomPage:(NSString*)pageId;
+ (NSSet<NSString*>*)getAvailableCustomRenderTypes;
+ (UIView*)createPageRootView:(NSString*)pageId pageType:(NSString*)pageType frame:(CGRect)frame;
- (void)invalidatePage:(NSString*)pageId;
- (void)removePage:(NSString*)pageId;
- (void)callCreateBody:(NSString*)pageId data:(NSDictionary*)data;
- (void)callAddElement:(NSString*)pageId parentRef:(NSString*)parentRef data:(NSDictionary*)data index:(int)index;
- (void)callRemoveElement:(NSString*)pageId ref:(NSString*)ref;
- (void)callMoveElement:(NSString*)pageId ref:(NSString*)ref parentRef:(NSString*)parentRef index:(int)index;
- (void)callUpdateAttrs:(NSString*)pageId ref:(NSString*)ref data:(NSDictionary*)data;
- (void)callUpdateStyle:(NSString*)pageId ref:(NSString*)ref data:(NSDictionary*)data;
- (void)callAddEvent:(NSString*)pageId ref:(NSString*)ref event:(NSString*)event;
- (void)callRemoveEvent:(NSString*)pageId ref:(NSString*)ref event:(NSString*)event;
- (void)callCreateFinish:(NSString*)pageId;
- (void)callRefreshFinish:(NSString*)pageId;
- (void)callUpdateFinish:(NSString*)pageId;
- (BOOL)forwardCallNativeModuleToCustomPage:(NSString*)pageId
moduleName:(NSString*)moduleName methodName:(NSString*)methodName
arguments:(NSArray*)arguments options:(NSDictionary*)options
returnValue:(id*)returnValue;
- (void)forwardCallComponentToCustomPage:(NSString*)pageId
ref:(NSString*)ref
methodName:(NSString*)methodName
arguments:(NSArray*)arguments
options:(NSDictionary*)options;
@end
// Bridge for WeexCore
@interface WXCoreBridge : NSObject
+ (void)install;
+ (void)setDefaultDimensionIntoRoot:(NSString*)pageId width:(CGFloat)width height:(CGFloat)height
isWidthWrapContent:(BOOL)isWidthWrapContent
isHeightWrapContent:(BOOL)isHeightWrapContent;
// Set/Get GLOBAL device size which will affect all pages
+ (void)setDeviceSize:(CGSize)size;
+ (CGSize)getDeviceSize;
// DO NOT call this method directly, you should use WXSDKInstance
+ (void)setViewportWidth:(NSString*)pageId width:(CGFloat)width;
// DO NOT call this method directly, you should use WXSDKInstance
+ (void)setPageRequired:(NSString *)pageId width:(CGFloat)width height:(CGFloat)height;
+ (void)layoutPage:(NSString*)pageId forced:(BOOL)forced;
+ (void)closePage:(NSString*)pageId;
+ (BOOL)reloadPageLayout:(NSString*)pageId;
+ (void)layoutRenderObject:(void*)object size:(CGSize)size page:(NSString*)pageId;
+ (void*)copyRenderObject:(void*)source replacedRef:(NSString*)ref;
+ (void)addChildRenderObject:(void*)child toParent:(void*)parent;
+ (void)removeRenderObjectFromMap:(NSString*)pageId object:(void*)object;
+ (void)callAddElement:(NSString*)pageId parentRef:(NSString*)parentRef data:(NSDictionary*)data index:(int)index;
+ (void)callCreateBody:(NSString*)pageId data:(NSDictionary*)data;
+ (void)callRemoveElement:(NSString*)pageId ref:(NSString*)ref;
+ (void)callMoveElement:(NSString*)pageId ref:(NSString*)ref parentRef:(NSString*)parentRef index:(int)index;
+ (void)callUpdateAttrs:(NSString*)pageId ref:(NSString*)ref data:(NSDictionary*)data;
+ (void)callUpdateStyle:(NSString*)pageId ref:(NSString*)ref data:(NSDictionary*)data;
+ (void)callAddEvent:(NSString*)pageId ref:(NSString*)ref event:(NSString*)event;
+ (void)callRemoveEvent:(NSString*)pageId ref:(NSString*)ref event:(NSString*)event;
+ (void)callCreateFinish:(NSString*)pageId;
+ (void)callRefreshFinish:(NSString*)pageId;
+ (void)callUpdateFinish:(NSString*)pageId;
+ (void)registerComponentAffineType:(NSString *)type asType:(NSString *)baseType;
+ (BOOL)isComponentAffineType:(NSString *)type asType:(NSString *)baseType;
+ (void)registerCoreEnv:(NSString*)key withValue:(NSString*)value;
+ (void)setPageArgument:(NSString*)pageId key:(NSString*)key value:(NSString*)value;
+ (BOOL)isKeepingRawCssStyles:(NSString*)pageId;
@end
#endif