CtrEditor/ObjetosSim/osBase.cs

98 lines
2.8 KiB
C#
Raw Permalink Normal View History

2024-05-08 08:41:26 -03:00
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using static System.Runtime.InteropServices.JavaScript.JSType;
2024-05-11 11:58:55 -03:00
using CtrEditor.Convertidores;
namespace CtrEditor.ObjetosSim
{
2024-05-08 08:41:26 -03:00
public interface IosBase
{
string Nombre { get; }
2024-05-06 12:31:45 -03:00
void ConnectSimManager(SimulationManager simulationManager);
void UpdateControl();
}
public interface IDataContainer
{
osBase? Datos { get; set; }
2024-05-06 12:31:45 -03:00
void Resize(float width, float height);
void Move(float Left, float Top);
void Rotate(float Angle);
2024-05-04 16:27:04 -03:00
void Highlight(bool State);
int ZIndex();
}
public abstract class osBase : INotifyPropertyChanged, IosBase
{
2024-05-06 12:31:45 -03:00
public abstract float Left { get; set; }
public abstract float Top { get; set; }
public bool Inicializado = false;
2024-05-06 12:31:45 -03:00
protected UserControl? _visualRepresentation = null;
public abstract string Nombre { get; set; }
2024-05-06 12:31:45 -03:00
public abstract void ConnectSimManager(SimulationManager simulationManager);
public abstract void UpdateControl();
public abstract void UpdateGeometry();
[JsonIgnore]
public UserControl? VisualRepresentation
{
get => _visualRepresentation;
set => _visualRepresentation = value;
}
2024-05-08 08:41:26 -03:00
public void CanvasSetLeftinMeter(float left)
{
if (_visualRepresentation != null)
Canvas.SetLeft(_visualRepresentation, PixelToMeter.Instance.calc.MetersToPixels(left));
2024-05-08 08:41:26 -03:00
}
public float CanvasGetLeftinMeter()
{
if (_visualRepresentation != null)
return PixelToMeter.Instance.calc.PixelsToMeters((float)Canvas.GetLeft(_visualRepresentation));
else return 0f;
}
2024-05-08 08:41:26 -03:00
public void CanvasSetTopinMeter(float top)
{
if (_visualRepresentation != null)
Canvas.SetTop(_visualRepresentation, PixelToMeter.Instance.calc.MetersToPixels(top));
}
public float CanvasGetTopinMeter()
{
if (_visualRepresentation != null)
return PixelToMeter.Instance.calc.PixelsToMeters((float)Canvas.GetTop(_visualRepresentation));
else return 0f;
}
2024-05-08 08:41:26 -03:00
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
2024-05-11 11:58:55 -03:00
}