--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{42C73BD8-51F5-4BB7-8EE9-9F0BE2D80A2C}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>Crow.Test</RootNamespace>
+ <AssemblyName>Crow.Test</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="nunit.framework">
+ <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Test.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ <None Include="ExpectedOutputs\0.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="ExpectedOutputs\1.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="ExpectedOutputs\3.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="ExpectedOutputs\4.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="ExpectedOutputs\5.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\0.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\1.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\2.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\3.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\4.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\5.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="Interfaces\testButton.crow">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Crow.csproj">
+ <Project>{C2980F9B-4798-4C05-99E2-E174810F7C7B}</Project>
+ <Name>Crow</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="ExpectedOutputs\" />
+ <Folder Include="Interfaces\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<GraphicObject Width="100" Height="100" Background="Green"/>
--- /dev/null
+<?xml version="1.0"?>
+<Container Width="300" Height="300" Margin="20" Background="Yellow">
+ <Container Width="0" Height="0" Margin="20" Background="Green">
+ <GraphicObject VerticalAlignment="Bottom" Width="50" Height="50"
+ Background="Red"/>
+ </Container>
+</Container>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+ <HorizontalStack Fit="true">
+ <Label Text="label1"/>
+ <TextRun Text="textrun1"/>
+ </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<HorizontalStack Margin="5" Background="DimGray">
+ <VerticalStack Width="200" Margin="5" Background="Gray">
+ <VerticalStack Fit="true" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </VerticalStack>
+ <VerticalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun Background="SkyBlue" Height="Stretched"/>
+ </VerticalStack>
+ <HorizontalStack Fit="true" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <VerticalStack Width="Stretched" Height="Stretched" Margin="5" Background="Gray">
+ <VerticalStack Fit="true" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </VerticalStack>
+ <VerticalStack Width="Stretched" Height="Stretched" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun TextAlignment="Center" Background="SkyBlue" Width="Stretched" Height="Stretched"/>
+ </VerticalStack>
+ <HorizontalStack Fit="true" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <VerticalStack Width="Fit" Margin="5" Background="Gray">
+ <VerticalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue" HorizontalAlignment="Left"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </VerticalStack>
+ <VerticalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun Background="SkyBlue" Height="Stretched"/>
+ </VerticalStack>
+ <HorizontalStack Fit="true" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Fit" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGray" Margin="5">
+ <TextRun Background="SkyBlue"/>
+ <TextRun Background="SkyBlue" Width="Stretched"/>
+ <TextRun Background="SkyBlue"/>
+ </HorizontalStack>
+ </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Spacing="0">
+ <Label Text="SCALED PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed" Width="0"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
+ <Image Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg"/>
+ <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
+ <Image Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ </HorizontalStack>
+ <Label Text="SCALED NOT PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
+ <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ </HorizontalStack>
+ <Label Text="UNSCALED" Background="hgradient|0:DimGray|1:DarkRed"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
+ <Image Scaled="false" Background="Blue" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Background="Blue" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Background="Blue" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
+ </HorizontalStack>
+ <Label Text="SCALED PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent">
+ <Image Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ </HorizontalStack>
+ <Label Text="SCALED NOT PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent">
+ <Image KeepProportions="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image KeepProportions="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ </HorizontalStack>
+ <Label Text="UNSCALED" Background="hgradient|0:DimGray|1:DarkRed"/>
+ <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
+ <Image Scaled="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+ </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<HorizontalStack Fit="true" Margin="5">
+ <VerticalStack Fit="true" Margin="2" Spacing="2">
+ <TextRun Text="text run test"/>
+ <Label Text="label test"/>
+ <TextBox Text="text box test"/>
+ <Button Caption="test button"/>
+ <CheckBox Caption="test checkbox"/>
+ <RadioButton Caption="test radiobutton"/>
+ <ComboBox/>
+ <Popper Caption="test popper">
+ <Label Text="label test"/>
+ </Popper>
+ <Expandable Caption="test expandable">
+ <Label Text="label test"/>
+ </Expandable>
+ <Border >
+ <Label Text="border test" Margin="3"/>
+ </Border>
+ <GroupBox Caption="Group box" >
+ <Label Text="border test" Margin="3"/>
+ </GroupBox>
+ <Container Fit="true" Background="DimGray" Margin="3">
+ <GraphicObject Width="20" Height="20" Background="LightGray"/>
+ </Container>
+ <ProgressBar Height="10" Width="150" Background="DimGray" Value="50" />
+ <Slider Value="5" Width="150" Height="10"/>
+ <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="150"/>
+ <Spinner Value="100"/>
+ </VerticalStack>
+ <VerticalStack Width="150" Height="Fit" Margin="2" Spacing="2">
+ <TextRun Text="text run test" Width="0"/>
+ <Label Text="label test" Width="0"/>
+ <TextBox Text="text box test" Width="0"/>
+ <Button Caption="test button" Width="0"/>
+ <CheckBox Caption="test checkbox" Width="0"/>
+ <RadioButton Caption="test radiobutton" Width="0"/>
+ <ComboBox Width="0"/>
+ <Popper Caption="test popper" Width="0">
+ <Label Text="label test"/>
+ </Popper>
+ <Expandable Caption="test expandable" Width="0">
+ <Label Text="label test"/>
+ </Expandable>
+ <Border Width="0">
+ <Label Text="border test" Margin="3"/>
+ </Border>
+ <GroupBox Caption="Group box" Width="0">
+ <Label Text="border test" Margin="3"/>
+ </GroupBox>
+ <Container Height="Fit" Width="0" Background="DimGray" Margin="3">
+ <GraphicObject Width="20" Height="20" Background="LightGray"/>
+ </Container>
+ <ProgressBar Height="10" Width="0" Background="DimGray" Value="50" />
+ <Slider Value="5" Width="0" Height="10"/>
+ <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="0"/>
+ <Spinner Value="100" Width="0"/>
+ </VerticalStack>
+</HorizontalStack>
+<!--<HorizontalStack Fit="true" Background="BlueCrayola" Margin="5">
+ <GraphicObject Background="Red" Width="30" Height="20"/>
+ <Spinner Maximum="10000000000" SmallIncrement="10" Value="0"/>
+ <GraphicObject Background="Green" Width="30" Height="20"/>
+</HorizontalStack>-->
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+ <HorizontalStack Fit="True">
+ <Button Caption="but" MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack> <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+ <HorizontalStack Fit="True">
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ <Button MouseClick="onButClick"/>
+ </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
--- /dev/null
+//
+// Test.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2016 jp
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+using NUnit.Framework;
+using System;
+using Crow;
+using System.IO;
+[assembly: Description ("Assembly description here")]
+namespace UnitTest
+{
+ [TestFixture, Description ("Fixture description here")]
+ public class Test
+ {
+ Interface iface;
+ Rectangle bounds = new Rectangle (0, 0, 600, 600);
+
+
+ [SetUp]
+ public void Init ()
+ {
+ iface = new Interface ();
+ iface.ProcessResize (bounds);
+ }
+
+ [Test , Description("My really cool test")]
+ public void GraphicObject ()
+ {
+ string [] tests = new string [] { "0", "1", "3", "4", "5" };
+
+ foreach (string s in tests) {
+ string fileName = Path.Combine ("Interfaces", s + ".crow");
+ iface.LoadInterface (fileName);
+
+ iface.Update ();
+ iface.Update ();
+
+ using (Cairo.Surface surf = new Cairo.ImageSurface (iface.bmp,
+ Cairo.Format.Argb32, iface.ClientRectangle.Width, iface.ClientRectangle.Height, iface.ClientRectangle.Width * 4)) {
+ surf.WriteToPng (@"tmp.png");
+ surf.WriteToPng (fileName + ".png");
+ }
+
+
+ byte [] model = File.ReadAllBytes ("ExpectedOutputs/" + s + ".png");
+ byte [] result = File.ReadAllBytes (@"tmp.png");
+
+ //CollectionAssert.AreEqual (model, result);
+
+ iface.ClearInterface ();
+ }
+ }
+ }
+}
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="NUnit" version="2.6.4" targetFramework="net461" />
+</packages>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<GraphicObject Width="100" Height="100" Background="Green">
+++ /dev/null
-<?xml version="1.0"?>
-<Container Width="300" Height="300" Margin="20" Background="Yellow">
- <Container Width="0" Height="0" Margin="20" Background="Green">
- <GraphicObject VerticalAlignment="Bottom" Width="50" Height="50"
- Background="Red"/>
- </Container>
-</Container>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<VerticalStack Fit="true">
- <HorizontalStack Fit="true">
- <Label Text="label1"/>
- <TextRun Text="textrun1"/>
- </HorizontalStack>
-</VerticalStack>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<HorizontalStack Margin="5" Background="DimGray">
- <VerticalStack Width="200" Margin="5" Background="Gray">
- <VerticalStack Fit="true" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </VerticalStack>
- <VerticalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun Background="SkyBlue" Height="0"/>
- </VerticalStack>
- <HorizontalStack Fit="true" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="0" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- </VerticalStack>
- <VerticalStack Width="0" Height="0" Margin="5" Background="Gray">
- <VerticalStack Fit="true" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </VerticalStack>
- <VerticalStack Width="0" Height="0" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun TextAlignment="Center" Background="SkyBlue" Width="0" Height="0"/>
- </VerticalStack>
- <HorizontalStack Fit="true" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- </VerticalStack>
- <VerticalStack Width="Fit" Margin="5" Background="Gray">
- <VerticalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue" HorizontalAlignment="Left"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </VerticalStack>
- <VerticalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun Background="SkyBlue" Height="0"/>
- </VerticalStack>
- <HorizontalStack Fit="true" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="Fit" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- <HorizontalStack Width="0" Height="0" Background="DimGray" Margin="5">
- <TextRun Background="SkyBlue"/>
- <TextRun Background="SkyBlue" Width="0"/>
- <TextRun Background="SkyBlue"/>
- </HorizontalStack>
- </VerticalStack>
-</HorizontalStack>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<VerticalStack Fit="true" Spacing="0">
- <Label Text="SCALED PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed" Width="0"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
- <Image Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg"/>
- <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
- <Image Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- </HorizontalStack>
- <Label Text="SCALED NOT PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
- <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- </HorizontalStack>
- <Label Text="UNSCALED" Background="hgradient|0:DimGray|1:DarkRed"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
- <Image Scaled="false" Background="Blue" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Background="Blue" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Background="Blue" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.image.crow0.svg" />
- </HorizontalStack>
- <Label Text="SCALED PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent">
- <Image Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- </HorizontalStack>
- <Label Text="SCALED NOT PROPORTIONNAL" Background="hgradient|0:DimGray|1:DarkRed"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent">
- <Image KeepProportions="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- <Image KeepProportions="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- </HorizontalStack>
- <Label Text="UNSCALED" Background="hgradient|0:DimGray|1:DarkRed"/>
- <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" >
- <Image Scaled="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="25" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- <Image Scaled="false" Margin="10" Background="Blue" Width="25" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
- </HorizontalStack>
-</VerticalStack>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<HorizontalStack Fit="true" Margin="5">
- <VerticalStack Fit="true" Margin="2" Spacing="2">
- <TextRun Text="text run test"/>
- <Label Text="label test"/>
- <TextBox Text="text box test"/>
- <Button Caption="test button"/>
- <CheckBox Caption="test checkbox"/>
- <RadioButton Caption="test radiobutton"/>
- <ComboBox/>
- <Popper Caption="test popper">
- <Label Text="label test"/>
- </Popper>
- <Expandable Caption="test expandable">
- <Label Text="label test"/>
- </Expandable>
- <Border >
- <Label Text="border test" Margin="3"/>
- </Border>
- <GroupBox Caption="Group box" >
- <Label Text="border test" Margin="3"/>
- </GroupBox>
- <Container Fit="true" Background="DimGray" Margin="3">
- <GraphicObject Width="20" Height="20" Background="LightGray"/>
- </Container>
- <ProgressBar Height="10" Width="150" Background="DimGray" Value="50" />
- <Slider Value="5" Width="150" Height="10"/>
- <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="150"/>
- <Spinner Value="100"/>
- </VerticalStack>
- <VerticalStack Width="150" Height="Fit" Margin="2" Spacing="2">
- <TextRun Text="text run test" Width="0"/>
- <Label Text="label test" Width="0"/>
- <TextBox Text="text box test" Width="0"/>
- <Button Caption="test button" Width="0"/>
- <CheckBox Caption="test checkbox" Width="0"/>
- <RadioButton Caption="test radiobutton" Width="0"/>
- <ComboBox Width="0"/>
- <Popper Caption="test popper" Width="0">
- <Label Text="label test"/>
- </Popper>
- <Expandable Caption="test expandable" Width="0">
- <Label Text="label test"/>
- </Expandable>
- <Border Width="0">
- <Label Text="border test" Margin="3"/>
- </Border>
- <GroupBox Caption="Group box" Width="0">
- <Label Text="border test" Margin="3"/>
- </GroupBox>
- <Container Height="Fit" Width="0" Background="DimGray" Margin="3">
- <GraphicObject Width="20" Height="20" Background="LightGray"/>
- </Container>
- <ProgressBar Height="10" Width="0" Background="DimGray" Value="50" />
- <Slider Value="5" Width="0" Height="10"/>
- <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="0"/>
- <Spinner Value="100" Width="0"/>
- </VerticalStack>
-</HorizontalStack>
-<!--<HorizontalStack Fit="true" Background="BlueCrayola" Margin="5">
- <GraphicObject Background="Red" Width="30" Height="20"/>
- <Spinner Maximum="10000000000" SmallIncrement="10" Value="0"/>
- <GraphicObject Background="Green" Width="30" Height="20"/>
-</HorizontalStack>-->
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<VerticalStack Fit="true">
- <HorizontalStack Fit="True">
- <Button Caption="but" MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack> <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
- <HorizontalStack Fit="True">
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- <Button MouseClick="onButClick"/>
- </HorizontalStack>
-</VerticalStack>
\ No newline at end of file
+++ /dev/null
-#define MONO_CAIRO_DEBUG_DISPOSE
-
-
-using System;
-using System.Runtime.InteropServices;
-using OpenTK;
-using OpenTK.Graphics.OpenGL;
-using OpenTK.Input;
-
-using System.Diagnostics;
-
-//using GGL;
-using System.Threading;
-using System.Collections.Generic;
-using System.Linq;
-using Cairo;
-using System.IO;
-
-
-namespace Crow
-{
- class NUnitCrowWindow : IValueChange, ILayoutable, IGOLibHost
- {
- #region IValueChange implementation
- public event EventHandler<ValueChangeEventArgs> ValueChanged;
- public virtual void NotifyValueChanged(string MemberName, object _value)
- {
- ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
- }
- #endregion
-
- public Rectangle ClientRectangle = new Rectangle(0,0,800,600);
- public List<GraphicObject> GraphicObjects = new List<GraphicObject>();
- public Color Background = Color.Transparent;
-
- Rectangles _redrawClip = new Rectangles();//should find another way to access it from child
- List<GraphicObject> _gobjsToRedraw = new List<GraphicObject>();
-
- #region IGOLibHost implementation
- public XCursor MouseCursor {
- set { throw new NotImplementedException ();}
- }
- public Rectangles clipping {
- get {
- return _redrawClip;
- }
- set {
- _redrawClip = value;
- }
- }
- public List<GraphicObject> gobjsToRedraw {
- get {
- return _gobjsToRedraw;
- }
- set {
- _gobjsToRedraw = value;
- }
- }
- public void AddWidget(GraphicObject g)
- {
- g.Parent = this;
- GraphicObjects.Insert (0, g);
-
- g.RegisterForLayouting (LayoutingType.Sizing);
- }
- public void DeleteWidget(GraphicObject g)
- {
- g.Visible = false;//trick to ensure clip is added to refresh zone
- g.ClearBinding();
- GraphicObjects.Remove (g);
- }
- public void PutOnTop(GraphicObject g)
- {
- if (GraphicObjects.IndexOf(g) > 0)
- {
- GraphicObjects.Remove(g);
- GraphicObjects.Insert(0, g);
- g.AddToRedrawList ();
- }
- }
- public void Quit ()
- {
- }
-
- #region focus
- GraphicObject _activeWidget; //button is pressed on widget
- GraphicObject _hoverWidget; //mouse is over
- GraphicObject _focusedWidget; //has keyboard (or other perif) focus
-
- public GraphicObject activeWidget
- {
- get { return _activeWidget; }
- set
- {
- if (_activeWidget == value)
- return;
- _activeWidget = value;
- }
- }
- public GraphicObject hoverWidget
- {
- get { return _hoverWidget; }
- set { _hoverWidget = value; }
- }
- public GraphicObject FocusedWidget {
- get { return _focusedWidget; }
- set {
- if (_focusedWidget == value)
- return;
- if (_focusedWidget != null)
- _focusedWidget.onUnfocused (this, null);
- _focusedWidget = value;
- if (_focusedWidget != null)
- _focusedWidget.onFocused (this, null);
- }
- }
- #endregion
-
- #endregion
-
- #region Events
- //those events are raised only if mouse isn't in a graphic object
- public event EventHandler<MouseWheelEventArgs> MouseWheelChanged;
- public event EventHandler<MouseButtonEventArgs> MouseButtonUp;
- public event EventHandler<MouseButtonEventArgs> MouseButtonDown;
- public event EventHandler<MouseButtonEventArgs> MouseClick;
- public event EventHandler<MouseMoveEventArgs> MouseMove;
- #endregion
-
- #region graphic contexte
- Context ctx;
- public Surface surf;
- string testId;
- #endregion
-
- #region update
- public Stopwatch updateTime = new Stopwatch ();
- public Stopwatch layoutTime = new Stopwatch ();
- public Stopwatch guTime = new Stopwatch ();
- public Stopwatch drawingTime = new Stopwatch ();
-
- public void Update ()
- {
- ctx = new Context(surf);
-
- guTime.Reset ();
- updateTime.Restart ();
- layoutTime.Restart ();
-
- GraphicObject[] invGOList = new GraphicObject[GraphicObjects.Count];
- GraphicObjects.CopyTo (invGOList, 0);
- invGOList = invGOList.Reverse ().ToArray ();
-
- //Debug.WriteLine ("======= Layouting queue start =======");
-
- while (Interface.CurrentInterface.LayoutingQueue.Count > 0) {
- LayoutingQueueItem lqi = Interface.CurrentInterface.LayoutingQueue.Dequeue ();
- lqi.ProcessLayouting ();
- }
-
- layoutTime.Stop ();
-
- //Debug.WriteLine ("otd:" + gobjsToRedraw.Count.ToString () + "-");
- //final redraw clips should be added only when layout is completed among parents,
- //that's why it take place in a second pass
- GraphicObject[] gotr = new GraphicObject[gobjsToRedraw.Count];
- gobjsToRedraw.CopyTo (gotr);
- gobjsToRedraw.Clear ();
- foreach (GraphicObject p in gotr) {
- p.IsInRedrawList = false;
- p.Parent.RegisterClip (p.LastPaintedSlot);
- p.Parent.RegisterClip (p.getSlot());
- }
-
- guTime.Start ();
-
- using (ctx = new Context (surf)){
- if (clipping.count > 0) {
- //Link.draw (ctx);
- clipping.clearAndClip(ctx);
-
- foreach (GraphicObject p in invGOList) {
- if (!p.Visible)
- continue;
-
- ctx.Save ();
-
- p.Paint (ref ctx);
-
- ctx.Restore ();
- }
-
- #if DEBUG_CLIP_RECTANGLE
- clipping.stroke (ctx, Color.Red.AdjustAlpha(0.5));
- #endif
-
- clipping.Reset ();
- }
- }
-
- guTime.Stop ();
- updateTime.Stop ();
-
-
- sw.WriteLine ("{0}\t{1,8}\t{2,8}\t{3,8}\t{4,8}",
- testId,
- layoutTime.ElapsedTicks,
- guTime.ElapsedTicks,
- updateTime.ElapsedTicks,
- loadTime.ElapsedTicks);
- sw.Flush ();
-
-// Console.WriteLine("{3} => layout:{0}ms\tdraw{1}ms\tupdate:{2}ms",
-// layoutTime.ElapsedMilliseconds,
-// guTime.ElapsedMilliseconds,
-// updateTime.ElapsedMilliseconds,
-// testId);
- //surf.WriteToPng (@"ExpectedOutputs/" + testId + ".png");
- surf.WriteToPng (@"tmp.png");
- }
- #endregion
-
- #region loading
- public Stopwatch loadTime = new Stopwatch ();
- public GraphicObject LoadTest (string id)
- {
- testId = id;
- loadTime.Start ();
- GraphicObject tmp = Interface.Load ("Interfaces/" + testId + ".crow", this);
- loadTime.Stop ();
- AddWidget (tmp);
- return tmp;
- }
- /// <summary> Remove all Graphic objects from top container </summary>
- public void ClearInterface()
- {
- int i = 0;
- while (GraphicObjects.Count>0) {
- GraphicObject g = GraphicObjects [i];
- g.Visible = false;
- g.ClearBinding ();
- GraphicObjects.RemoveAt (0);
- }
- }
- #endregion
-
- #region CTOR
- public NUnitCrowWindow (int width, int height)
- {
- ClientRectangle.Width = width;
- ClientRectangle.Height = height;
-
- surf = new ImageSurface(Format.Argb32, ClientRectangle.Width, ClientRectangle.Height);
- string path = "crow-" + DateTime.Now + ".txt";
-
- sw = new StreamWriter (path);
-
- sw.WriteLine ("ID layout draw update load");
- sw.WriteLine ("----------------------------------------------------------------");
- sw.Flush ();
- }
- ~NUnitCrowWindow(){
-
- sw.Close ();
- }
- #endregion
-
- int frameCpt = 0;
- int idx = 0;
- StreamWriter sw;
-
- #region FPS
- int _fps = 0;
-
- public int fps {
- get { return _fps; }
- set {
- if (_fps == value)
- return;
-
- _fps = value;
-
- if (_fps > fpsMax) {
- fpsMax = _fps;
- ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMax", fpsMax));
- } else if (_fps < fpsMin) {
- fpsMin = _fps;
- ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMin", fpsMin));
- }
-
- ValueChanged.Raise(this, new ValueChangeEventArgs ("fps", _fps));
- ValueChanged.Raise (this, new ValueChangeEventArgs ("update",
- this.updateTime.ElapsedMilliseconds.ToString () + " ms"));
- }
- }
-
- public int fpsMin = int.MaxValue;
- public int fpsMax = 0;
-
- void resetFps ()
- {
- fpsMin = int.MaxValue;
- fpsMax = 0;
- _fps = 0;
- }
- //public string update = "";
- #endregion
-
-
- #region Mouse Handling
- void Mouse_Move(object sender, MouseMoveEventArgs e)
- {
- if (_activeWidget != null) {
- //first, ensure object is still in the graphic tree
- if (_activeWidget.HostContainer == null) {
- activeWidget = null;
- } else {
-
- //send move evt even if mouse move outside bounds
- _activeWidget.onMouseMove (_activeWidget, e);
- return;
- }
- }
-
- if (_hoverWidget != null) {
- //first, ensure object is still in the graphic tree
- if (_hoverWidget.HostContainer == null) {
- hoverWidget = null;
- } else {
- //check topmost graphicobject first
- GraphicObject tmp = _hoverWidget;
- GraphicObject topc = null;
- while (tmp is GraphicObject) {
- topc = tmp;
- tmp = tmp.Parent as GraphicObject;
- }
- int idxhw = GraphicObjects.IndexOf (topc);
- if (idxhw != 0) {
- int i = 0;
- while (i < idxhw) {
- if (GraphicObjects [i].MouseIsIn (e.Position)) {
- _hoverWidget.onMouseLeave (this, e);
- GraphicObjects [i].checkHoverWidget (e);
- return;
- }
- i++;
- }
- }
-
-
- if (_hoverWidget.MouseIsIn (e.Position)) {
- _hoverWidget.checkHoverWidget (e);
- return;
- } else {
- _hoverWidget.onMouseLeave (this, e);
- //seek upward from last focused graph obj's
- while (_hoverWidget.Parent as GraphicObject != null) {
- _hoverWidget = _hoverWidget.Parent as GraphicObject;
- if (_hoverWidget.MouseIsIn (e.Position)) {
- _hoverWidget.checkHoverWidget (e);
- return;
- } else
- _hoverWidget.onMouseLeave (this, e);
- }
- }
- }
- }
-
- //top level graphic obj's parsing
- for (int i = 0; i < GraphicObjects.Count; i++) {
- GraphicObject g = GraphicObjects[i];
- if (g.MouseIsIn (e.Position)) {
- g.checkHoverWidget (e);
- PutOnTop (g);
- return;
- }
- }
- _hoverWidget = null;
- MouseMove.Raise (this, e);
- }
- void Mouse_ButtonUp(object sender, MouseButtonEventArgs e)
- {
- if (_activeWidget == null) {
- MouseButtonUp.Raise (this, e);
- return;
- }
-
- _activeWidget.onMouseUp (this, e);
- _activeWidget = null;
- }
- void Mouse_ButtonDown(object sender, MouseButtonEventArgs e)
- {
- if (_hoverWidget == null) {
- MouseButtonDown.Raise (this, e);
- return;
- }
-
- GraphicObject g = _hoverWidget;
- while (!g.Focusable) {
- g = g.Parent as GraphicObject;
- if (g == null) {
- return;
- }
- }
-
- _activeWidget = g;
- _activeWidget.onMouseDown (this, e);
- }
-
- void Mouse_WheelChanged(object sender, MouseWheelEventArgs e)
- {
- if (_hoverWidget == null) {
- MouseWheelChanged.Raise (this, e);
- return;
- }
- _hoverWidget.onMouseWheel (this, e);
- }
- #endregion
-
- #region keyboard Handling
- void Keyboard_KeyDown(object sender, KeyboardKeyEventArgs e)
- {
- if (_focusedWidget == null)
- return;
- _focusedWidget.onKeyDown (sender, e);
- }
- #endregion
-
- #region ILayoutable implementation
- public void RegisterClip(Rectangle r){
- clipping.AddRectangle (r);
- }
- public void EnqueueForLayouting (LayoutingType layoutType)
- {
- throw new NotImplementedException ();
- }
- public int LayoutingTries {
- get { throw new NotImplementedException (); }
- set { throw new NotImplementedException (); }
- }
- public ILayoutable LogicalParent {
- get { return null; }
- set { throw new NotImplementedException (); }
- }
- public ILayoutable Parent {
- get { return null; }
- set { throw new NotImplementedException (); }
- }
- public LayoutingType QueuedLayoutings {
- get { return LayoutingType.None; }
- set { throw new NotImplementedException (); }
- }
- public void EnqueueForLayouting (int layoutType) { throw new NotImplementedException (); }
- public bool UpdateLayout (LayoutingType layoutType) { throw new NotImplementedException (); }
- public Rectangle ContextCoordinates (Rectangle r) => r;
- public Rectangle ScreenCoordinates (Rectangle r) => r;
- Rectangle ILayoutable.ClientRectangle {
- get { return new Size(this.ClientRectangle.Size.Width,this.ClientRectangle.Size.Height); }
- }
- public IGOLibHost HostContainer { get { return this; }}
- public Rectangle getSlot () => ClientRectangle;
- public Rectangle getBounds () => ClientRectangle;
- #endregion
- }
-}
\ No newline at end of file
+++ /dev/null
-//
-// Test.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2016 jp
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-using NUnit.Framework;
-using System;
-using Crow;
-using System.IO;
-
-namespace UnitTest
-{
- [TestFixture ()]
- public class Test
- {
- NUnitCrowWindow win;
-
- [SetUp]
- public void Init()
- {
- win = new NUnitCrowWindow (600,600);
- }
-
- [Test ()]
- [Category("Alignment")]
- public void GraphicObject ()
- {
- string[] tests = new string[] { "0","1","3","4","5"};
-
- foreach (string s in tests) {
- win.LoadTest (s);
- win.Update ();
- win.Update ();
- byte[] model = File.ReadAllBytes("ExpectedOutputs/" + s + ".png");
- byte[] result = File.ReadAllBytes(@"tmp.png");
-
- CollectionAssert.AreEqual (model, result);
-
- win.ClearInterface ();
- }
- }
-
- void testAlignment(GraphicObject g){
- g.HorizontalAlignment = HorizontalAlignment.Left;
-
- }
- }
-}
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{7BAE4448-E8F4-48B3-BB11-FA78E7F4506B}</ProjectGuid>
- <OutputType>Library</OutputType>
- <RootNamespace>UnitTest</RootNamespace>
- <AssemblyName>UnitTest</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <ReleaseVersion>0.4</ReleaseVersion>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug</OutputPath>
- <DefineConstants>DEBUG;</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <ConsolePause>false</ConsolePause>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>full</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release</OutputPath>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <ConsolePause>false</ConsolePause>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="System" />
- <Reference Include="Mono.Cairo" />
- <Reference Include="OpenTK">
- <HintPath>..\..\opentk\Binaries\OpenTK\Release\OpenTK.dll</HintPath>
- </Reference>
- <Reference Include="System.Data" />
- <Reference Include="System.Drawing" />
- <Reference Include="System.Xml" />
- <Reference Include="nunit.framework, Version=2.6.4.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
- <Package>nunit</Package>
- </Reference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="Test.cs" />
- <Compile Include="NUnitCrowWindow.cs" />
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
- <ItemGroup>
- <None Include="packages.config" />
- <None Include="Interfaces\0.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\1.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\2.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\testButton.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\3.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\4.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Interfaces\5.crow">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="ExpectedOutputs\0.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="ExpectedOutputs\1.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="ExpectedOutputs\3.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="ExpectedOutputs\4.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="ExpectedOutputs\5.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\Crow.csproj">
- <Project>{C2980F9B-4798-4C05-99E2-E174810F7C7B}</Project>
- <Name>Crow</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Folder Include="Interfaces\" />
- <Folder Include="ExpectedOutputs\" />
- </ItemGroup>
-</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="NUnit" version="3.0.1" targetFramework="net45" />
-</packages>
\ No newline at end of file