int idx = Source.GetPropertyIndex(propertyName);
- switch (propertyName)
+ using (var sourcePosition = GetWorldPosition(Source))
+ using (var viewPosition = GetWorldPosition(view))
+ using (var position = sourcePosition - viewPosition)
{
- case "Position":
- sourceValue = PropertyValue.CreateFromObject(GetWorldPosition(Source) - GetWorldPosition(view));
- break;
- case "PositionX":
- sourceValue = PropertyValue.CreateFromObject((GetWorldPosition(Source) - GetWorldPosition(view)).X);
- break;
- case "PositionY":
- sourceValue = PropertyValue.CreateFromObject((GetWorldPosition(Source) - GetWorldPosition(view)).Y);
- break;
- case "PositionZ":
- sourceValue = PropertyValue.CreateFromObject((GetWorldPosition(Source) - GetWorldPosition(view)).Z);
- break;
- default:
- sourceValue = Source.GetProperty(idx);
- break;
+ switch (propertyName)
+ {
+ case "Position":
+ sourceValue = PropertyValue.CreateFromObject(position);
+ break;
+ case "PositionX":
+ sourceValue = PropertyValue.CreateFromObject(position.X);
+ break;
+ case "PositionY":
+ sourceValue = PropertyValue.CreateFromObject(position.Y);
+ break;
+ case "PositionZ":
+ sourceValue = PropertyValue.CreateFromObject(position.Z);
+ break;
+ default:
+ sourceValue = Source.GetProperty(idx);
+ break;
+ }
}
toValue = PropertyValue.CreateFromObject(to);
private static Position GetWorldPosition(View view)
{
- Position position = new Position();
+ float x = 0;
+ float y = 0;
while (view != null)
{
- position += view.Position;
+ x += view.Position.X;
+ y += view.Position.Y;
view = view.GetParent() as View;
}
- return position;
+ return new Position(x, y);
}
private void AnimatePropertyBetween(View view, string propertyName, PropertyValue from, PropertyValue to, Interpolation interpolation, AlphaFunction alphaFunction)
{
public class NinePatchButton : Button
{
+ private Tizen.NUI.NPatchVisual visualMap;
+
public NinePatchButton()
{
this.Relayout += NinePatchButton_Relayout;
private void UpdateButton(Color color, string url)
{
- PropertyMap outputVisualMap = null;
- if (color != null)
+ if (visualMap == null)
{
- outputVisualMap = new Tizen.NUI.NPatchVisual()
- {
- URL = url,
- MixColor = color,
- }.OutputVisualMap;
+ visualMap = new Tizen.NUI.NPatchVisual();
}
- else
+
+ if (url != null)
{
- outputVisualMap = new Tizen.NUI.NPatchVisual()
- {
- URL = url,
- }.OutputVisualMap;
+ visualMap.URL = url;
+ }
+
+ if (color != null)
+ {
+ visualMap.MixColor = color;
}
- this.Background = outputVisualMap;
- this.OverlayImage.Background = outputVisualMap;
+ Background = visualMap.OutputVisualMap;
+ OverlayImage.Background = visualMap.OutputVisualMap;
}
private void UpdateButton()