Skip to content

Commit

Permalink
Use BezierPanel to create hardwired quadratic bezier segments.
Browse files Browse the repository at this point in the history
  • Loading branch information
joergpreiss committed Oct 16, 2013
1 parent b7e863d commit 57dea47
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 20 deletions.
25 changes: 15 additions & 10 deletions sketches/wpf/ItemsPanels/ItemsPanels/BezierPanel.cs
Expand Up @@ -7,17 +7,17 @@ namespace ItemsPanels
{
public class BezierPanel : Panel
{

public static readonly DependencyProperty PathFigureProperty =
DependencyProperty.Register("PathFigure",
typeof(PathFigure),
public static readonly DependencyProperty InnerPointProperty =
DependencyProperty.Register("InnerPoint",
typeof(Point),
typeof(BezierPanel),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsArrange|FrameworkPropertyMetadataOptions.AffectsMeasure));
new FrameworkPropertyMetadata(default(Point),
FrameworkPropertyMetadataOptions.AffectsArrange|FrameworkPropertyMetadataOptions.AffectsMeasure));

public PathFigure PathFigure
public Point InnerPoint
{
set { SetValue(PathFigureProperty, value); }
get { return (PathFigure)GetValue(PathFigureProperty); }
set { SetValue(InnerPointProperty, value); }
get { return (Point) GetValue(InnerPointProperty); }
}

protected override Size MeasureOverride(Size availableSize)
Expand All @@ -33,7 +33,10 @@ protected override Size MeasureOverride(Size availableSize)
//Size newArrangeOverride(Size finalSize)
protected override Size ArrangeOverride(Size finalSize)
{
var pathLength = TextOnPathBase.GetPathFigureLength(PathFigure);
var bezier = new QuadraticBezierSegment(InnerPoint, new Point(finalSize.Width, finalSize.Height), true);
var pathFigure = new PathFigure(new Point(10, 10), new[] { bezier }, false);

var pathLength = TextOnPathBase.GetPathFigureLength(pathFigure);
var neededSpace = 0.0; // finalSize.Width;


Expand All @@ -51,7 +54,7 @@ protected override Size ArrangeOverride(Size finalSize)
var stepPerc = spaceStep / spaceAvail;

var scalingFactor = pathLength / neededSpace;
var pathGeometry = new PathGeometry(new[] {PathFigure});
var pathGeometry = new PathGeometry(new[] {pathFigure});
var baseline = scalingFactor;

var progress = 0.0; // stepPerc / 2;
Expand Down Expand Up @@ -86,6 +89,7 @@ protected override Size ArrangeOverride(Size finalSize)
return base.ArrangeOverride(finalSize);
}

#if NOT
//protected override Size ArrangeOverride(Size finalSize)
Size OriginalArrangeOverride(Size finalSize)
{
Expand Down Expand Up @@ -136,5 +140,6 @@ Size OriginalArrangeOverride(Size finalSize)
}
return base.ArrangeOverride(finalSize);
}
#endif
}
}
16 changes: 6 additions & 10 deletions sketches/wpf/ItemsPanels/ItemsPanels/MainWindow.xaml
Expand Up @@ -19,16 +19,12 @@
</ItemsPanelTemplate>

<ItemsPanelTemplate x:Key="BezierPanelTemplate">
<local:BezierPanel>
<local:BezierPanel.PathFigure>
<local:BezierPanel InnerPoint="323,90" />
<!--<local:BezierPanel>
<PathFigure StartPoint="10 10">
<!--<PolyBezierSegment Points="200 50, 300 150, 400 100, 500 50, 600 150, 700 100" />-->
<!--<PolyBezierSegment Points="200 50, 300 150, 400 100" />-->
<QuadraticBezierSegment Point1="323,90" Point2="538,246" />
<!--<QuadraticBezierSegment Point1="0,0" Point2="538,246" />-->
<QuadraticBezierSegment Point1="" Point2="538,246" />
</PathFigure>
</local:BezierPanel.PathFigure>
</local:BezierPanel>
</local:BezierPanel>-->
</ItemsPanelTemplate>

<ItemsPanelTemplate x:Key="GeometryPanelTemplate">
Expand Down Expand Up @@ -82,7 +78,7 @@
</Grid>
</TabItem>

<TabItem Header="Bez-Text">
<!--<TabItem Header="Bez-Text">
<Grid>
<local:TextOnPathControl Text="Over the river and through the woods to grandmother's house we go...">
<local:TextOnPathControl.PathFigure>
Expand All @@ -96,7 +92,7 @@
<Ellipse Canvas.Left="538" Canvas.Top="246" Width="10" Height="10" Fill="BlueViolet"/>
</Canvas>
</Grid>
</TabItem>
</TabItem>-->

<TabItem Header="Geometry" >
<Grid>
Expand Down

0 comments on commit 57dea47

Please sign in to comment.