Add visual template coordinate editor
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using Avalonia;
|
||||
using LehrerApp.TemplateDesigner;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.TemplateDesigner.Tests;
|
||||
|
||||
public sealed class OverlayEditorTests
|
||||
{
|
||||
[Fact]
|
||||
public void Koordinatenabbildung_BeruecksichtigtLetterboxUndIstUmkehrbar()
|
||||
{
|
||||
var displayedPage = OverlayCoordinateMapper.PageRect(new Size(1000, 1000), 210, 297);
|
||||
var dslRect = new Rect(20, 30, 80, 45);
|
||||
|
||||
var controlRect = OverlayCoordinateMapper.ToControl(dslRect, displayedPage, 210, 297);
|
||||
var mappedTopLeft = OverlayCoordinateMapper.ToDsl(controlRect.TopLeft, displayedPage, 210, 297);
|
||||
var mappedBottomRight = OverlayCoordinateMapper.ToDsl(controlRect.BottomRight, displayedPage, 210, 297);
|
||||
|
||||
Assert.Equal(1000, displayedPage.Height, 6);
|
||||
Assert.True(displayedPage.X > 140);
|
||||
Assert.Equal(dslRect.X, mappedTopLeft.X, 6);
|
||||
Assert.Equal(dslRect.Y, mappedTopLeft.Y, 6);
|
||||
Assert.Equal(dslRect.Right, mappedBottomRight.X, 6);
|
||||
Assert.Equal(dslRect.Bottom, mappedBottomRight.Y, 6);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Messbereich_WirdInElementformularUebernommen()
|
||||
{
|
||||
var viewModel = new DesignerViewModel();
|
||||
|
||||
viewModel.ApplyMeasurement(new(12.5, 34.25, 80, 22.5, true));
|
||||
|
||||
Assert.Equal("12.5", viewModel.NewX);
|
||||
Assert.Equal("34.25", viewModel.NewY);
|
||||
Assert.Equal("80", viewModel.NewWidth);
|
||||
Assert.Equal("22.5", viewModel.NewHeight);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TextVerschieben_ErhaeltInhaltUndAttribute()
|
||||
{
|
||||
var viewModel = new DesignerViewModel
|
||||
{ LayoutSource = "PAGE 210 297 mm\nTEXT 20 30 \"Hallo Welt\" size=10 bold=true" };
|
||||
|
||||
viewModel.ApplyElementGeometry(new(2, "TEXT", 25.5, 40, 70, 5));
|
||||
|
||||
Assert.Contains("TEXT 25.5 40 \"Hallo Welt\" size=10 bold=true", viewModel.LayoutSource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SkaliertesBildResize_RechnetEffektivenRahmenZurueckUndErhaeltScale()
|
||||
{
|
||||
var viewModel = new DesignerViewModel
|
||||
{ LayoutSource = "PAGE 210 297 mm\nIMG logo.png 10 15 30 12 scale=50%" };
|
||||
|
||||
viewModel.ApplyElementGeometry(new(2, "IMG", 20, 25, 30, 12));
|
||||
|
||||
Assert.Contains("IMG logo.png 20 25 60 24 scale=50%", viewModel.LayoutSource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DslSeitengroesse_SteuertOverlayAuchBeiAbweichendemManifestformular()
|
||||
{
|
||||
var viewModel = new DesignerViewModel { PageWidth = 210, PageHeight = 297 };
|
||||
|
||||
viewModel.LayoutSource = "PAGE 200 200 pt";
|
||||
|
||||
Assert.Equal(200, viewModel.OverlayPageWidth);
|
||||
Assert.Equal(200, viewModel.OverlayPageHeight);
|
||||
Assert.Equal("pt", viewModel.OverlayPageUnit);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user