├── .editorconfig
├── .gitattributes
├── .github
├── stale.yml
└── workflows
│ └── build.yml
├── .gitignore
├── Directory.Build.props
├── Draw2D.sln
├── LICENSE.txt
├── NuGet.Config
├── global.json
└── src
└── Draw2D
├── App.axaml
├── App.axaml.cs
├── Converters
├── GroupIdToGroupConverter.cs
├── IsEqualStringConverter.cs
└── StyleIdToStyleConverter.cs
├── Draw2D.csproj
├── Program.cs
├── Skia
├── Bounds
│ ├── ChildNode.cs
│ ├── ContainsMode.cs
│ ├── RootNode.cs
│ ├── SkiaBoundsShapeRenderer.cs
│ └── SkiaHitTest.cs
├── Export
│ ├── SkiaContainerExporter.cs
│ ├── SkiaContainerImporter.cs
│ ├── SkiaPathConverter.cs
│ └── SkiaSvgConverter.cs
├── Presenters
│ ├── SkiaEditorContainerPresenter.cs
│ ├── SkiaExportContainerPresenter.cs
│ └── SkiaExportSelectedPresenter.cs
├── Renderers
│ └── SkiaShapeRenderer.cs
└── Utilities
│ ├── CompositeDisposable.cs
│ └── SkiaUtil.cs
├── ViewLocator.cs
├── ViewModels
├── Bounds
│ ├── ArcBounds.cs
│ ├── CircleBounds.cs
│ ├── ConicBounds.cs
│ ├── ContainerBounds.cs
│ ├── CubicBezierBounds.cs
│ ├── FigureBounds.cs
│ ├── GroupBounds.cs
│ ├── HitTest
│ │ ├── HitTest.cs
│ │ └── HitTestHelper.cs
│ ├── ImageBounds.cs
│ ├── LineBounds.cs
│ ├── OvalBounds.cs
│ ├── PathBounds.cs
│ ├── PointBounds.cs
│ ├── QuadraticBezierBounds.cs
│ ├── RectangleBounds.cs
│ ├── ReferenceBounds.cs
│ └── TextBounds.cs
├── Containers
│ ├── CanvasContainer.cs
│ ├── ContainerView.cs
│ ├── Core
│ │ ├── ICanvasContainer.cs
│ │ ├── IContainerView.cs
│ │ ├── IDocumentContainer.cs
│ │ ├── IGroupLibrary.cs
│ │ ├── ILibrary`1.cs
│ │ ├── IStyleLibrary.cs
│ │ └── Library`1.cs
│ ├── DocumentContainer.cs
│ ├── Editor
│ │ ├── IAvaloniaXamlConverter.cs
│ │ ├── IContainerExporter.cs
│ │ ├── IContainerImporter.cs
│ │ ├── IContainerPresenter.cs
│ │ ├── IPathConverter.cs
│ │ ├── ISvgConverter.cs
│ │ └── PathOp.cs
│ ├── GroupLibrary.cs
│ ├── SelectionState.cs
│ ├── StyleLibrary.cs
│ └── ZoomServiceState.cs
├── Core
│ ├── HAlign.cs
│ ├── IBaseShape.cs
│ ├── IBounds.cs
│ ├── IConnectable.cs
│ ├── ICopyable.cs
│ ├── IDirty.cs
│ ├── IDrawable.cs
│ ├── IHitTest.cs
│ ├── IHitTestable.cs
│ ├── INode.cs
│ ├── IPointShape.cs
│ ├── ISelectable.cs
│ ├── ISelectionState.cs
│ ├── IShapeDecorator.cs
│ ├── IShapeRenderer.cs
│ └── VAlign.cs
├── Decorators
│ ├── ArcDecorator.cs
│ ├── CircleDecorator.cs
│ ├── ConicDecorator.cs
│ ├── ContainerDecorator.cs
│ ├── Core
│ │ └── CommonDecorator.cs
│ ├── CubicBezierDecorator.cs
│ ├── FigureDecorator.cs
│ ├── GroupDecorator.cs
│ ├── ImageDecorator.cs
│ ├── LineDecorator.cs
│ ├── OvalDecorator.cs
│ ├── PathDecorator.cs
│ ├── PointDecorator.cs
│ ├── QuadraticBezierDecorator.cs
│ ├── RectangleDecorator.cs
│ ├── ReferenceDecorator.cs
│ └── TextDecorator.cs
├── EditMode.cs
├── Editor
│ ├── DefaultContainerFactory.cs
│ ├── EditorToolContext.cs
│ ├── Export
│ │ └── AvaloniaXamlConverter.cs
│ ├── IEditorToolContext.cs
│ ├── Presenters
│ │ └── AvaloniaContainerPresenter.cs
│ └── Serializer
│ │ └── JsonSerializer.cs
├── Filters
│ ├── Core
│ │ ├── GridSnapMode.cs
│ │ ├── LineSnapMode.cs
│ │ ├── LineSnapTarget.cs
│ │ └── PointFilter.cs
│ ├── GridSnapPointFilter.cs
│ ├── LineSnapPointFilter.cs
│ └── Settings
│ │ ├── GridSnapSettings.cs
│ │ └── LineSnapSettings.cs
├── Matrix.cs
├── Settings
│ └── WindowSettings.cs
├── SettingsBase.cs
├── Shapes
│ ├── ArcShape.cs
│ ├── CircleShape.cs
│ ├── ConicShape.cs
│ ├── Core
│ │ ├── BaseShape.cs
│ │ ├── PathFillType.cs
│ │ └── StretchMode.cs
│ ├── CubicBezierShape.cs
│ ├── Extensions
│ │ ├── LineShapeExtensions.cs
│ │ ├── OvalShapeExtensions.cs
│ │ ├── PointShapeExtensions.cs
│ │ └── RectangleShapeExtensions.cs
│ ├── FigureShape.cs
│ ├── GroupShape.cs
│ ├── ImageShape.cs
│ ├── LineShape.cs
│ ├── OvalShape.cs
│ ├── PathShape.cs
│ ├── PointShape.cs
│ ├── QuadraticBezierShape.cs
│ ├── RectangleShape.cs
│ ├── ReferencePointShape.cs
│ ├── ReferenceShape.cs
│ └── TextShape.cs
├── Style
│ ├── ArgbColor.cs
│ ├── ColorFilters
│ │ ├── BlendModeColorFilter.cs
│ │ ├── ColorCubeColorFilter.cs
│ │ ├── ColorMatrixColorFilter.cs
│ │ ├── ComposeColorFilter.cs
│ │ ├── GammaColorFilter.cs
│ │ ├── HighContrastColorFilter.cs
│ │ ├── LightingColorFilter.cs
│ │ ├── LumaColorColorFilter.cs
│ │ └── TableColorFilter.cs
│ ├── Core
│ │ ├── BlendMode.cs
│ │ ├── FontStyleSlant.cs
│ │ ├── IColorFilter.cs
│ │ ├── IImageFilter.cs
│ │ ├── IMaskFilter.cs
│ │ ├── IPaint.cs
│ │ ├── IPaintEffects.cs
│ │ ├── IPathEffect.cs
│ │ ├── IPathEffectFactory.cs
│ │ ├── IShader.cs
│ │ ├── IShapeStyle.cs
│ │ ├── PaintStyle.cs
│ │ ├── StrokeCap.cs
│ │ └── StrokeJoin.cs
│ ├── ImageFilters
│ │ ├── AlphaThresholdImageFilter.cs
│ │ ├── ArithmeticImageFilter.cs
│ │ ├── BlendModeImageFilter.cs
│ │ ├── BlurImageFilter.cs
│ │ ├── ColorFilterImageFilter.cs
│ │ ├── ComposeImageFilter.cs
│ │ ├── DilateImageFilter.cs
│ │ ├── DisplacementMapEffectImageFilter.cs
│ │ ├── DistantLitDiffuseImageFilter.cs
│ │ ├── DistantLitSpecularImageFilter.cs
│ │ ├── DropShadowImageFilter.cs
│ │ ├── ErodeImageFilter.cs
│ │ ├── ImageImageFilter.cs
│ │ ├── MagnifierImageFilter.cs
│ │ ├── MatrixConvolutionImageFilter.cs
│ │ ├── MatrixImageFilter.cs
│ │ ├── MergeImageFilter.cs
│ │ ├── OffsetImageFilter.cs
│ │ ├── PaintImageFilter.cs
│ │ ├── PictureImageFilter.cs
│ │ ├── PointLitDiffuseImageFilter.cs
│ │ ├── PointLitSpecularImageFilter.cs
│ │ ├── SpotLitDiffuseImageFilter.cs
│ │ ├── SpotLitSpecularImageFilter.cs
│ │ └── TileImageFilter.cs
│ ├── MaskFilters
│ │ ├── BlurMaskFilter.cs
│ │ ├── ClipMaskFilter.cs
│ │ ├── GammaMaskFilter.cs
│ │ └── TableMaskFilter.cs
│ ├── Paints
│ │ ├── Paint.cs
│ │ ├── PaintEffects.cs
│ │ └── PathEffectFactory.cs
│ ├── PathEffects
│ │ ├── Path1DPathEffect.cs
│ │ ├── Path1DPathEffectStyle.cs
│ │ ├── Path2DLineEffect.cs
│ │ ├── Path2DPathEffect.cs
│ │ ├── PathComposeEffect.cs
│ │ ├── PathCornerEffect.cs
│ │ ├── PathDashEffect.cs
│ │ ├── PathDiscreteEffect.cs
│ │ ├── PathSumEffect.cs
│ │ ├── PathTrimEffect.cs
│ │ └── TrimPathEffectMode.cs
│ ├── Shaders
│ │ ├── BitmapShader.cs
│ │ ├── ColorFilterShader.cs
│ │ ├── ColorShader.cs
│ │ ├── ComposeShader.cs
│ │ ├── Core
│ │ │ └── ShaderTileMode.cs
│ │ ├── EmptyShader.cs
│ │ ├── LinearGradientShader.cs
│ │ ├── LocalMatrixShader.cs
│ │ ├── PerlinNoiseFractalNoiseShader.cs
│ │ ├── PerlinNoiseTurbulenceShader.cs
│ │ ├── RadialGradientShader.cs
│ │ ├── SweepGradientShader.cs
│ │ └── TwoPointConicalGradientShader.cs
│ ├── ShapeStyle.cs
│ └── Typeface.cs
├── Text.cs
├── Tools
│ ├── ArcTool.cs
│ ├── CircleTool.cs
│ ├── ConicTool.cs
│ ├── Core
│ │ ├── BaseTool.cs
│ │ ├── IContainerFactory.cs
│ │ ├── IPointFilter.cs
│ │ ├── ISelection.cs
│ │ ├── ITool.cs
│ │ ├── IToolContext.cs
│ │ ├── Layout.cs
│ │ ├── SelectionMode.cs
│ │ ├── SelectionTargets.cs
│ │ └── ToolContext.cs
│ ├── CubicBezierTool.cs
│ ├── LineTool.cs
│ ├── MoveTool.cs
│ ├── NoneTool.cs
│ ├── OvalTool.cs
│ ├── PathTool.cs
│ ├── PointTool.cs
│ ├── PolyLineTool.cs
│ ├── QuadraticBezierTool.cs
│ ├── RectangleTool.cs
│ ├── ScribbleTool.cs
│ ├── SelectionTool.cs
│ ├── Settings
│ │ ├── ArcToolSettings.cs
│ │ ├── CircleToolSettings.cs
│ │ ├── ConicToolSettings.cs
│ │ ├── CubicBezierToolSettings.cs
│ │ ├── LineToolSettings.cs
│ │ ├── MoveToolSettings.cs
│ │ ├── NoneToolSettings.cs
│ │ ├── OvalToolSettings.cs
│ │ ├── PathToolSettings.cs
│ │ ├── PointToolSettings.cs
│ │ ├── PolyLineToolSettings.cs
│ │ ├── QuadraticBezierToolSettings.cs
│ │ ├── RectangleToolSettings.cs
│ │ ├── ScribbleToolSettings.cs
│ │ ├── SelectionToolSettings.cs
│ │ └── TextToolSettings.cs
│ └── TextTool.cs
└── ViewModelBase.cs
├── Views
├── Containers
│ ├── CanvasContainerView.axaml
│ ├── CanvasContainerView.axaml.cs
│ ├── ContainerViewView.axaml
│ ├── ContainerViewView.axaml.cs
│ ├── DocumentContainerView.axaml
│ ├── DocumentContainerView.axaml.cs
│ ├── GroupLibraryView.axaml
│ ├── GroupLibraryView.axaml.cs
│ ├── SelectionStateView.axaml
│ ├── SelectionStateView.axaml.cs
│ ├── StyleLibraryView.axaml
│ ├── StyleLibraryView.axaml.cs
│ ├── ZoomServiceStateView.axaml
│ └── ZoomServiceStateView.axaml.cs
├── ContainersView.axaml
├── ContainersView.axaml.cs
├── Filters
│ ├── GridSnapSettingsView.axaml
│ ├── GridSnapSettingsView.axaml.cs
│ ├── LineSnapSettingsView.axaml
│ └── LineSnapSettingsView.axaml.cs
├── MainView.axaml
├── MainView.axaml.cs
├── MainWindow.axaml
├── MainWindow.axaml.cs
├── MatrixView.axaml
├── MatrixView.axaml.cs
├── MenuView.axaml
├── MenuView.axaml.cs
├── Shapes
│ ├── ArcShapeView.axaml
│ ├── ArcShapeView.axaml.cs
│ ├── CircleShapeView.axaml
│ ├── CircleShapeView.axaml.cs
│ ├── ConicShapeView.axaml
│ ├── ConicShapeView.axaml.cs
│ ├── CubicBezierShapeView.axaml
│ ├── CubicBezierShapeView.axaml.cs
│ ├── FigureShapeView.axaml
│ ├── FigureShapeView.axaml.cs
│ ├── GroupShapeView.axaml
│ ├── GroupShapeView.axaml.cs
│ ├── ImageShapeView.axaml
│ ├── ImageShapeView.axaml.cs
│ ├── LineShapeView.axaml
│ ├── LineShapeView.axaml.cs
│ ├── OvalShapeView.axaml
│ ├── OvalShapeView.axaml.cs
│ ├── PathShapeView.axaml
│ ├── PathShapeView.axaml.cs
│ ├── PointShapeView.axaml
│ ├── PointShapeView.axaml.cs
│ ├── QuadraticBezierShapeView.axaml
│ ├── QuadraticBezierShapeView.axaml.cs
│ ├── RectangleShapeView.axaml
│ ├── RectangleShapeView.axaml.cs
│ ├── ReferencePointShapeView.axaml
│ ├── ReferencePointShapeView.axaml.cs
│ ├── ReferenceShapeView.axaml
│ ├── ReferenceShapeView.axaml.cs
│ ├── TextShapeView.axaml
│ └── TextShapeView.axaml.cs
├── Style
│ ├── ArgbColorView.axaml
│ ├── ArgbColorView.axaml.cs
│ ├── ColorFilters
│ │ ├── BlendModeColorFilterView.axaml
│ │ ├── BlendModeColorFilterView.axaml.cs
│ │ ├── ColorCubeColorFilterView.axaml
│ │ ├── ColorCubeColorFilterView.axaml.cs
│ │ ├── ColorMatrixColorFilterView.axaml
│ │ ├── ColorMatrixColorFilterView.axaml.cs
│ │ ├── ComposeColorFilterView.axaml
│ │ ├── ComposeColorFilterView.axaml.cs
│ │ ├── GammaColorFilterView.axaml
│ │ ├── GammaColorFilterView.axaml.cs
│ │ ├── HighContrastColorFilterView.axaml
│ │ ├── HighContrastColorFilterView.axaml.cs
│ │ ├── LightingColorFilterView.axaml
│ │ ├── LightingColorFilterView.axaml.cs
│ │ ├── LumaColorColorFilterView.axaml
│ │ ├── LumaColorColorFilterView.axaml.cs
│ │ ├── TableColorFilterView.axaml
│ │ └── TableColorFilterView.axaml.cs
│ ├── ImageFilters
│ │ ├── AlphaThresholdImageFilterView.axaml
│ │ ├── AlphaThresholdImageFilterView.axaml.cs
│ │ ├── ArithmeticImageFilterView.axaml
│ │ ├── ArithmeticImageFilterView.axaml.cs
│ │ ├── BlendModeImageFilterView.axaml
│ │ ├── BlendModeImageFilterView.axaml.cs
│ │ ├── BlurImageFilterView.axaml
│ │ ├── BlurImageFilterView.axaml.cs
│ │ ├── ColorFilterImageFilterView.axaml
│ │ ├── ColorFilterImageFilterView.axaml.cs
│ │ ├── ComposeImageFilterView.axaml
│ │ ├── ComposeImageFilterView.axaml.cs
│ │ ├── DilateImageFilterView.axaml
│ │ ├── DilateImageFilterView.axaml.cs
│ │ ├── DisplacementMapEffectImageFilterView.axaml
│ │ ├── DisplacementMapEffectImageFilterView.axaml.cs
│ │ ├── DistantLitDiffuseImageFilterView.axaml
│ │ ├── DistantLitDiffuseImageFilterView.axaml.cs
│ │ ├── DistantLitSpecularImageFilterView.axaml
│ │ ├── DistantLitSpecularImageFilterView.axaml.cs
│ │ ├── DropShadowImageFilterView.axaml
│ │ ├── DropShadowImageFilterView.axaml.cs
│ │ ├── ErodeImageFilterView.axaml
│ │ ├── ErodeImageFilterView.axaml.cs
│ │ ├── ImageImageFilterView.axaml
│ │ ├── ImageImageFilterView.axaml.cs
│ │ ├── MagnifierImageFilterView.axaml
│ │ ├── MagnifierImageFilterView.axaml.cs
│ │ ├── MatrixConvolutionImageFilterView.axaml
│ │ ├── MatrixConvolutionImageFilterView.axaml.cs
│ │ ├── MatrixImageFilterView.axaml
│ │ ├── MatrixImageFilterView.axaml.cs
│ │ ├── MergeImageFilterView.axaml
│ │ ├── MergeImageFilterView.axaml.cs
│ │ ├── OffsetImageFilterView.axaml
│ │ ├── OffsetImageFilterView.axaml.cs
│ │ ├── PaintImageFilterView.axaml
│ │ ├── PaintImageFilterView.axaml.cs
│ │ ├── PictureImageFilterView.axaml
│ │ ├── PictureImageFilterView.axaml.cs
│ │ ├── PointLitDiffuseImageFilterView.axaml
│ │ ├── PointLitDiffuseImageFilterView.axaml.cs
│ │ ├── PointLitSpecularImageFilterView.axaml
│ │ ├── PointLitSpecularImageFilterView.axaml.cs
│ │ ├── SpotLitDiffuseImageFilterView.axaml
│ │ ├── SpotLitDiffuseImageFilterView.axaml.cs
│ │ ├── SpotLitSpecularImageFilterView.axaml
│ │ ├── SpotLitSpecularImageFilterView.axaml.cs
│ │ ├── TileImageFilterView.axaml
│ │ └── TileImageFilterView.axaml.cs
│ ├── MaskFilters
│ │ ├── BlurMaskFilterView.axaml
│ │ ├── BlurMaskFilterView.axaml.cs
│ │ ├── ClipMaskFilterView.axaml
│ │ ├── ClipMaskFilterView.axaml.cs
│ │ ├── GammaMaskFilterView.axaml
│ │ ├── GammaMaskFilterView.axaml.cs
│ │ ├── TableMaskFilterView.axaml
│ │ └── TableMaskFilterView.axaml.cs
│ ├── PaintEffectsView.axaml
│ ├── PaintEffectsView.axaml.cs
│ ├── PaintView.axaml
│ ├── PaintView.axaml.cs
│ ├── PathEffects
│ │ ├── Path1DPathEffectView.axaml
│ │ ├── Path1DPathEffectView.axaml.cs
│ │ ├── Path2DLineEffectView.axaml
│ │ ├── Path2DLineEffectView.axaml.cs
│ │ ├── Path2DPathEffectView.axaml
│ │ ├── Path2DPathEffectView.axaml.cs
│ │ ├── PathComposeEffectView.axaml
│ │ ├── PathComposeEffectView.axaml.cs
│ │ ├── PathCornerEffectView.axaml
│ │ ├── PathCornerEffectView.axaml.cs
│ │ ├── PathDashEffectView.axaml
│ │ ├── PathDashEffectView.axaml.cs
│ │ ├── PathDiscreteEffectView.axaml
│ │ ├── PathDiscreteEffectView.axaml.cs
│ │ ├── PathSumEffectView.axaml
│ │ ├── PathSumEffectView.axaml.cs
│ │ ├── PathTrimEffectView.axaml
│ │ └── PathTrimEffectView.axaml.cs
│ ├── Shaders
│ │ ├── BitmapShaderView.axaml
│ │ ├── BitmapShaderView.axaml.cs
│ │ ├── ColorFilterShaderView.axaml
│ │ ├── ColorFilterShaderView.axaml.cs
│ │ ├── ColorShaderView.axaml
│ │ ├── ColorShaderView.axaml.cs
│ │ ├── ComposeShaderView.axaml
│ │ ├── ComposeShaderView.axaml.cs
│ │ ├── EmptyShaderView.axaml
│ │ ├── EmptyShaderView.axaml.cs
│ │ ├── LinearGradientShaderView.axaml
│ │ ├── LinearGradientShaderView.axaml.cs
│ │ ├── LocalMatrixShaderView.axaml
│ │ ├── LocalMatrixShaderView.axaml.cs
│ │ ├── PerlinNoiseFractalNoiseShaderView.axaml
│ │ ├── PerlinNoiseFractalNoiseShaderView.axaml.cs
│ │ ├── PerlinNoiseTurbulenceShaderView.axaml
│ │ ├── PerlinNoiseTurbulenceShaderView.axaml.cs
│ │ ├── RadialGradientShaderView.axaml
│ │ ├── RadialGradientShaderView.axaml.cs
│ │ ├── SweepGradientShaderView.axaml
│ │ ├── SweepGradientShaderView.axaml.cs
│ │ ├── TwoPointConicalGradientShaderView.axaml
│ │ └── TwoPointConicalGradientShaderView.axaml.cs
│ ├── ShapeStyleView.axaml
│ ├── ShapeStyleView.axaml.cs
│ ├── TypefaceView.axaml
│ └── TypefaceView.axaml.cs
├── TextView.axaml
├── TextView.axaml.cs
└── Tools
│ ├── ArcToolSettingsView.axaml
│ ├── ArcToolSettingsView.axaml.cs
│ ├── ArcToolView.axaml
│ ├── ArcToolView.axaml.cs
│ ├── CircleToolSettingsView.axaml
│ ├── CircleToolSettingsView.axaml.cs
│ ├── CircleToolView.axaml
│ ├── CircleToolView.axaml.cs
│ ├── ConicToolSettingsView.axaml
│ ├── ConicToolSettingsView.axaml.cs
│ ├── ConicToolView.axaml
│ ├── ConicToolView.axaml.cs
│ ├── CubicBezierToolSettingsView.axaml
│ ├── CubicBezierToolSettingsView.axaml.cs
│ ├── CubicBezierToolView.axaml
│ ├── CubicBezierToolView.axaml.cs
│ ├── LineToolSettingsView.axaml
│ ├── LineToolSettingsView.axaml.cs
│ ├── LineToolView.axaml
│ ├── LineToolView.axaml.cs
│ ├── MoveToolSettingsView.axaml
│ ├── MoveToolSettingsView.axaml.cs
│ ├── MoveToolView.axaml
│ ├── MoveToolView.axaml.cs
│ ├── NoneToolSettingsView.axaml
│ ├── NoneToolSettingsView.axaml.cs
│ ├── NoneToolView.axaml
│ ├── NoneToolView.axaml.cs
│ ├── OvalToolSettingsView.axaml
│ ├── OvalToolSettingsView.axaml.cs
│ ├── OvalToolView.axaml
│ ├── OvalToolView.axaml.cs
│ ├── PathToolSettingsView.axaml
│ ├── PathToolSettingsView.axaml.cs
│ ├── PathToolView.axaml
│ ├── PathToolView.axaml.cs
│ ├── PointToolSettingsView.axaml
│ ├── PointToolSettingsView.axaml.cs
│ ├── PointToolView.axaml
│ ├── PointToolView.axaml.cs
│ ├── PolyLineToolSettingsView.axaml
│ ├── PolyLineToolSettingsView.axaml.cs
│ ├── PolyLineToolView.axaml
│ ├── PolyLineToolView.axaml.cs
│ ├── QuadraticBezierToolSettingsView.axaml
│ ├── QuadraticBezierToolSettingsView.axaml.cs
│ ├── QuadraticBezierToolView.axaml
│ ├── QuadraticBezierToolView.axaml.cs
│ ├── RectangleToolSettingsView.axaml
│ ├── RectangleToolSettingsView.axaml.cs
│ ├── RectangleToolView.axaml
│ ├── RectangleToolView.axaml.cs
│ ├── ScribbleToolSettingsView.axaml
│ ├── ScribbleToolSettingsView.axaml.cs
│ ├── ScribbleToolView.axaml
│ ├── ScribbleToolView.axaml.cs
│ ├── SelectionToolSettingsView.axaml
│ ├── SelectionToolSettingsView.axaml.cs
│ ├── SelectionToolView.axaml
│ ├── SelectionToolView.axaml.cs
│ ├── TextToolSettingsView.axaml
│ ├── TextToolSettingsView.axaml.cs
│ ├── TextToolView.axaml
│ └── TextToolView.axaml.cs
└── Zoom
├── Input
├── FitMode.cs
├── IDrawTarget.cs
├── IInputService.cs
├── IInputTarget.cs
├── IZoomService.cs
├── IZoomServiceState.cs
└── Modifier.cs
└── ZoomControl.cs
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # https://probot.github.io/apps/stale/
2 |
3 | # Number of days of inactivity before an issue becomes stale
4 | daysUntilStale: 60
5 |
6 | # Number of days of inactivity before a stale issue is closed
7 | daysUntilClose: 7
8 |
9 | # Issues with these labels will never be considered stale
10 | exemptLabels:
11 | - pinned
12 | - security
13 |
14 | # Label to use when marking an issue as stale
15 | staleLabel: stale
16 |
17 | # Comment to post when marking an issue as stale. Set to `false` to disable
18 | markComment: >
19 | This issue has been automatically marked as stale because it has not had
20 | recent activity. It will be closed if no further activity occurs. Thank you
21 | for your contributions.
22 |
23 | # Comment to post when closing a stale issue. Set to `false` to disable
24 | closeComment: true
25 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | - release/*
8 | pull_request:
9 | branches:
10 | - master
11 | - release/*
12 |
13 | jobs:
14 |
15 | build:
16 | strategy:
17 | matrix:
18 | os: [ubuntu-latest, windows-latest, macos-latest]
19 | name: Build ${{ matrix.os }}
20 | runs-on: ${{ matrix.os }}
21 | steps:
22 | - uses: actions/checkout@v1
23 | - name: Setup .NET Core
24 | uses: actions/setup-dotnet@v1
25 | - name: Build
26 | run: dotnet build -c Release
27 |
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | 11.0.6
4 | 2.88.6
5 |
6 |
7 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Wiesław Šoltés
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "7.0.100",
4 | "rollForward": "latestMinor",
5 | "allowPrerelease": true
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Draw2D/Converters/GroupIdToGroupConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Globalization;
4 | using Avalonia;
5 | using Avalonia.Data.Converters;
6 | using Draw2D.ViewModels.Containers;
7 |
8 | namespace Draw2D.Converters;
9 |
10 | public class GroupIdToGroupConverter : IMultiValueConverter
11 | {
12 | public object Convert(IList