mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-05-17 00:52:20 +00:00
rename mergeProperties related variables
This commit is contained in:
@@ -38,7 +38,7 @@ public class GroupShadowNode extends RenderableShadowNode {
|
||||
public boolean run(VirtualNode node) {
|
||||
node.setupDimensions(canvas);
|
||||
|
||||
node.mergeProperties(self, mOwnedPropList, true);
|
||||
node.mergeProperties(self, mAttributeList, true);
|
||||
node.draw(canvas, paint, opacity * mOpacity);
|
||||
node.markUpdateSeen();
|
||||
|
||||
@@ -109,10 +109,10 @@ public class GroupShadowNode extends RenderableShadowNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergeProperties(final VirtualNode target, final ReadableArray mergeList) {
|
||||
public void mergeProperties(final VirtualNode target, final ReadableArray mergeList, final boolean inherited) {
|
||||
traverseChildren(new NodeRunnable() {
|
||||
public boolean run(VirtualNode node) {
|
||||
node.mergeProperties(target, mergeList);
|
||||
node.mergeProperties(target, mergeList, inherited);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
|
||||
import com.facebook.common.logging.FLog;
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.JavaOnlyArray;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
@@ -72,10 +73,10 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
|
||||
protected Path mPath;
|
||||
|
||||
private ArrayList<String> mChangedList;
|
||||
private ReadableArray mLastMergedList;
|
||||
private ArrayList<Object> mOriginProperties;
|
||||
protected ReadableArray mPropList = new JavaOnlyArray();
|
||||
protected WritableArray mOwnedPropList = new JavaOnlyArray();
|
||||
protected WritableArray mAttributeList = new JavaOnlyArray();
|
||||
|
||||
@ReactProp(name = "fill")
|
||||
public void setFill(@Nullable ReadableArray fill) {
|
||||
@@ -136,7 +137,7 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
@ReactProp(name = "strokeWidth", defaultFloat = 1f)
|
||||
@ReactProp(name = "strokeWidth", defaultFloat = 0f)
|
||||
public void setStrokeWidth(float strokeWidth) {
|
||||
mStrokeWidth = strokeWidth;
|
||||
markUpdated();
|
||||
@@ -188,18 +189,16 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
|
||||
@ReactProp(name = "propList")
|
||||
public void setPropList(@Nullable ReadableArray propList) {
|
||||
WritableArray copy = new JavaOnlyArray();
|
||||
|
||||
if (propList != null) {
|
||||
WritableArray copy = Arguments.createArray();
|
||||
for (int i = 0; i < propList.size(); i++) {
|
||||
String fieldName = propertyNameToFieldName(propList.getString(i));
|
||||
copy.pushString(fieldName);
|
||||
mOwnedPropList.pushString(fieldName);
|
||||
mAttributeList.pushString(fieldName);
|
||||
}
|
||||
|
||||
mPropList = copy;
|
||||
}
|
||||
|
||||
mPropList = copy;
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
@@ -231,22 +230,6 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
markUpdateSeen();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* sorting stops and stopsColors from array
|
||||
*/
|
||||
private static void parseGradientStops(ReadableArray value, int stopsCount, float[] stops, int[] stopsColors, int startColorsPosition) {
|
||||
int startStops = value.size() - stopsCount;
|
||||
for (int i = 0; i < stopsCount; i++) {
|
||||
stops[i] = (float)value.getDouble(startStops + i);
|
||||
stopsColors[i] = Color.argb(
|
||||
(int) (value.getDouble(startColorsPosition + i * 4 + 3) * 255),
|
||||
(int) (value.getDouble(startColorsPosition + i * 4) * 255),
|
||||
(int) (value.getDouble(startColorsPosition + i * 4 + 1) * 255),
|
||||
(int) (value.getDouble(startColorsPosition + i * 4 + 2) * 255));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets up paint according to the props set on a shadow view. Returns {@code true}
|
||||
@@ -379,20 +362,14 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
|
||||
@Override
|
||||
public void mergeProperties(VirtualNode target, ReadableArray mergeList, boolean inherited) {
|
||||
mLastMergedList = mergeList;
|
||||
|
||||
if (mergeList.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!inherited) {
|
||||
mOriginProperties = new ArrayList<>();
|
||||
mChangedList = new ArrayList<>();
|
||||
}
|
||||
|
||||
WritableArray propList = new JavaOnlyArray();
|
||||
for (int i = 0; i < mPropList.size(); i++) {
|
||||
propList.pushString(mPropList.getString(i));
|
||||
}
|
||||
mOwnedPropList = propList;
|
||||
mOriginProperties = new ArrayList<>();
|
||||
resetAttributeList();
|
||||
|
||||
for (int i = 0, size = mergeList.size(); i < size; i++) {
|
||||
try {
|
||||
@@ -402,12 +379,12 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
|
||||
if (inherited) {
|
||||
if (!hasOwnProperty(fieldName)) {
|
||||
mAttributeList.pushString(fieldName);
|
||||
mOriginProperties.add(field.get(this));
|
||||
field.set(this, value);
|
||||
propList.pushString(fieldName);
|
||||
}
|
||||
} else {
|
||||
mOriginProperties.add(field.get(this));
|
||||
mChangedList.add(fieldName);
|
||||
field.set(this, value);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -423,19 +400,27 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
|
||||
@Override
|
||||
public void resetProperties() {
|
||||
if (mChangedList != null) {
|
||||
if (mLastMergedList != null) {
|
||||
try {
|
||||
for (int i = mChangedList.size() - 1; i >= 0; i--) {
|
||||
Field field = getClass().getField(mChangedList.get(i));
|
||||
for (int i = mLastMergedList.size() - 1; i >= 0; i--) {
|
||||
Field field = getClass().getField(mLastMergedList.getString(i));
|
||||
field.set(this, mOriginProperties.get(i));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
|
||||
mChangedList = null;
|
||||
mLastMergedList = null;
|
||||
mOriginProperties = null;
|
||||
}
|
||||
resetAttributeList();
|
||||
}
|
||||
|
||||
private void resetAttributeList() {
|
||||
mAttributeList = Arguments.createArray();
|
||||
for (int i = 0; i < mPropList.size(); i++) {
|
||||
mAttributeList.pushString(mPropList.getString(i));
|
||||
}
|
||||
}
|
||||
|
||||
// convert propertyName something like fillOpacity to fieldName like mFillOpacity
|
||||
@@ -451,8 +436,8 @@ abstract public class RenderableShadowNode extends VirtualNode {
|
||||
}
|
||||
|
||||
private boolean hasOwnProperty(String propName) {
|
||||
for (int i = mOwnedPropList.size() - 1; i >= 0; i--) {
|
||||
if (mOwnedPropList.getString(i).equals(propName)) {
|
||||
for (int i = mAttributeList.size() - 1; i >= 0; i--) {
|
||||
if (mAttributeList.getString(i).equals(propName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class UseShadowNode extends RenderableShadowNode {
|
||||
int count = saveAndSetupCanvas(canvas);
|
||||
|
||||
clip(canvas, paint);
|
||||
template.mergeProperties(this, mOwnedPropList);
|
||||
template.mergeProperties(this, mAttributeList, true);
|
||||
template.draw(canvas, paint, opacity * mOpacity);
|
||||
template.resetProperties();
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ public class ViewBoxShadowNode extends GroupShadowNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergeProperties(VirtualNode target, ReadableArray mergeList) {
|
||||
public void mergeProperties(VirtualNode target, ReadableArray mergeList, boolean inherited) {
|
||||
if (target instanceof UseShadowNode) {
|
||||
mFromSymbol = true;
|
||||
mBoxWidth = ((UseShadowNode)target).getWidth();
|
||||
|
||||
@@ -83,10 +83,10 @@
|
||||
|
||||
}
|
||||
|
||||
- (void)mergeProperties:(__kindof RNSVGNode *)target mergeList:(NSArray<NSString *> *)mergeList
|
||||
- (void)mergeProperties:(__kindof RNSVGNode *)target mergeList:(NSArray<NSString *> *)mergeList inherited:(BOOL)inherited
|
||||
{
|
||||
[self traverseSubviews:^(RNSVGNode *node) {
|
||||
[node mergeProperties:target mergeList:mergeList];
|
||||
[node mergeProperties:target mergeList:mergeList inherited:inherited];
|
||||
return YES;
|
||||
}];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user