Added, all drawing modes: added "Continuous drawing" option (available in the top mode menu / Draw Grid panel for the Draw Grid mode). When enabled, drawing mode will not be switched to previously active mode after finishing drawing a shape.

Fixed, general interlace: in some cases "Show Editable Vertices in Visual Mode" top toolbar button showed up when using Doom/Hexen map formats.
Fixed(?), Classic modes: probably fixed an rare issue when map element dragging was not starting when supposed to.
This commit is contained in:
MaxED 2016-02-17 22:23:18 +00:00
parent 4666f54957
commit 9632ecd0d2
23 changed files with 787 additions and 303 deletions

View file

@ -565,6 +565,10 @@ namespace CodeImp.DoomBuilder.Editing
// Save mouse down position
mousedownpos = mousepos;
mousedownmappos = mousemappos;
//mxd. Looks like in some cases (very detailed maps / slow CPUs) OnMouseUp is not fired
// This is my attempt at fixing this...
if(e.Button == mousedragging) mousedragging = MouseButtons.None;
// Let the base class know
base.OnMouseDown(e);

View file

@ -2043,7 +2043,7 @@ namespace CodeImp.DoomBuilder.Windows
buttontogglefog.Visible = General.Settings.GZToolbarGZDoom && maploaded;
buttontogglesky.Visible = General.Settings.GZToolbarGZDoom && maploaded;
buttontoggleeventlines.Visible = General.Settings.GZToolbarGZDoom && maploaded;
buttontogglevisualvertices.Visible = General.Settings.GZToolbarGZDoom && maploaded;
buttontogglevisualvertices.Visible = General.Settings.GZToolbarGZDoom && maploaded && General.Map.UDMF;
separatorgzmodes.Visible = General.Settings.GZToolbarGZDoom && maploaded;
//mxd. Show/hide additional panels

View file

@ -332,6 +332,12 @@
<Compile Include="Interface\DrawGridOptionsPanel.Designer.cs">
<DependentUpon>DrawGridOptionsPanel.cs</DependentUpon>
</Compile>
<Compile Include="Interface\DrawLineOptionsPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Interface\DrawLineOptionsPanel.Designer.cs">
<DependentUpon>DrawLineOptionsPanel.cs</DependentUpon>
</Compile>
<Compile Include="Interface\DrawRectangleOptionsPanel.cs">
<SubType>UserControl</SubType>
</Compile>
@ -532,6 +538,9 @@
<EmbeddedResource Include="Resources\DrawGeometryMode.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Interface\DrawLineOptionsPanel.resx">
<DependentUpon>DrawLineOptionsPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Interface\FilterSelectedThingsForm.resx">
<DependentUpon>FilterSelectedThingsForm.cs</DependentUpon>
</EmbeddedResource>
@ -594,6 +603,9 @@
<ItemGroup>
<None Include="Resources\PlaceThings.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Repeat.png" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -31,12 +31,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
private readonly HintLabel hintlabel;
private Curve curve;
private static int segmentLength = 32;
private static int segmentlength = 32;
private const int MIN_SEGMENT_LENGTH = 16;
private const int MAX_SEGMENT_LENGTH = 4096; //just some arbitrary number
//interface
private readonly DrawCurveOptionsPanel panel;
// Interface
private DrawCurveOptionsPanel panel;
#endregion
@ -46,10 +46,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
hintlabel = new HintLabel(General.Colors.InfoLine);
labeluseoffset = false;
//Options docker
panel = new DrawCurveOptionsPanel(MIN_SEGMENT_LENGTH, MAX_SEGMENT_LENGTH);
panel.OnValueChanged += OptionsPanelOnValueChanged;
}
public override void Dispose()
@ -102,7 +98,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
List<Vector2D> verts = new List<Vector2D>();
for(int i = 0; i < points.Count; i++) verts.Add(points[i].pos);
if(curp.pos != verts[verts.Count-1]) verts.Add(curp.pos);
curve = CurveTools.CurveThroughPoints(verts, 0.5f, 0.75f, segmentLength);
curve = CurveTools.CurveThroughPoints(verts, 0.5f, 0.75f, segmentlength);
// Render lines
for(int i = 1; i < curve.Shape.Count; i++)
@ -151,7 +147,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
Vector2D start = new Vector2D(mousemappos.x + (32 / renderer.Scale), mousemappos.y - (16 / renderer.Scale));
Vector2D end = new Vector2D(mousemappos.x + (96 / renderer.Scale), mousemappos.y);
hintlabel.Move(start, end);
hintlabel.Text = "SEG LEN: " + segmentLength;
hintlabel.Text = "SEG LEN: " + segmentlength;
renderer.RenderText(hintlabel.TextLabel);
// Done
@ -171,7 +167,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
base.OnEngage();
//setup settings panel
panel.SegmentLength = segmentLength;
panel.SegmentLength = segmentlength;
panel.Register();
}
@ -245,55 +241,62 @@ namespace CodeImp.DoomBuilder.BuilderModes
}
// Make the drawing
if(!Tools.DrawLines(verts, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd
if(Tools.DrawLines(verts, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd
{
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
else
{
// Drawing failed
// NOTE: I have to call this twice, because the first time only cancels this volatile mode
General.Map.UndoRedo.WithdrawUndo();
General.Map.UndoRedo.WithdrawUndo();
return;
}
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
// Done
Cursor.Current = Cursors.Default;
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
}
if(continuousdrawing)
{
// Reset settings
points.Clear();
labels.Clear();
public override void OnDisengage()
{
base.OnDisengage();
panel.Unregister();
// Redraw display
General.Interface.RedrawDisplay();
}
else
{
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
}
}
private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs)
{
segmentLength = panel.SegmentLength;
segmentlength = panel.SegmentLength;
Update();
}
@ -304,18 +307,42 @@ namespace CodeImp.DoomBuilder.BuilderModes
#endregion
#region ================== mxd. Settings panel
protected override void SetupInterface()
{
// Add options docker
panel = new DrawCurveOptionsPanel(MIN_SEGMENT_LENGTH, MAX_SEGMENT_LENGTH);
panel.OnValueChanged += OptionsPanelOnValueChanged;
panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged;
panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawcurvemode_continuousdrawing", false);
}
protected override void AddInterface()
{
panel.Register();
}
protected override void RemoveInterface()
{
General.Settings.WritePluginSetting("drawcurvemode_continuousdrawing", panel.ContinuousDrawing);
panel.Unregister();
}
#endregion
#region ================== Actions
[BeginAction("increasesubdivlevel")]
protected virtual void IncreaseSubdivLevel()
{
if(segmentLength < MAX_SEGMENT_LENGTH)
if(segmentlength < MAX_SEGMENT_LENGTH)
{
int increment = Math.Max(MIN_SEGMENT_LENGTH, segmentLength / 32 * 16);
segmentLength += increment;
int increment = Math.Max(MIN_SEGMENT_LENGTH, segmentlength / 32 * 16);
segmentlength += increment;
if(segmentLength > MAX_SEGMENT_LENGTH) segmentLength = MAX_SEGMENT_LENGTH;
panel.SegmentLength = segmentLength;
if(segmentlength > MAX_SEGMENT_LENGTH) segmentlength = MAX_SEGMENT_LENGTH;
panel.SegmentLength = segmentlength;
Update();
}
}
@ -323,13 +350,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
[BeginAction("decreasesubdivlevel")]
protected virtual void DecreaseSubdivLevel()
{
if(segmentLength > MIN_SEGMENT_LENGTH)
if(segmentlength > MIN_SEGMENT_LENGTH)
{
int increment = Math.Max(MIN_SEGMENT_LENGTH, segmentLength / 32 * 16);
segmentLength -= increment;
int increment = Math.Max(MIN_SEGMENT_LENGTH, segmentlength / 32 * 16);
segmentlength -= increment;
if(segmentLength < MIN_SEGMENT_LENGTH) segmentLength = MIN_SEGMENT_LENGTH;
panel.SegmentLength = segmentLength;
if(segmentlength < MIN_SEGMENT_LENGTH) segmentlength = MIN_SEGMENT_LENGTH;
panel.SegmentLength = segmentlength;
Update();
}
}

View file

@ -21,7 +21,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
#region ================== Variables
//interface
// Interface
private DrawEllipseOptionsPanel panel;
#endregion
@ -30,8 +30,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
public DrawEllipseMode()
{
undoName = "Ellipse draw";
shapeName = "ellipse";
undoname = "Ellipse draw";
shapename = "ellipse";
usefourcardinaldirections = true;
}
@ -41,27 +41,30 @@ namespace CodeImp.DoomBuilder.BuilderModes
override protected void SetupInterface()
{
maxSubdivisions = 512;
minSubdivisions = 6;
maxsubdivisions = 512;
minsubdivisions = 6;
//Add options docker
panel = new DrawEllipseOptionsPanel();
panel.MaxSubdivisions = maxSubdivisions;
panel.MinSubdivisions = minSubdivisions;
panel.MaxSubdivisions = maxsubdivisions;
panel.MinSubdivisions = minsubdivisions;
panel.MinSpikiness = (int)General.Map.FormatInterface.MinCoordinate;
panel.MaxSpikiness = (int)General.Map.FormatInterface.MaxCoordinate;
panel.OnValueChanged += OptionsPanelOnValueChanged;
panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged;
panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawellipsemode_continuousdrawing", false);
}
override protected void AddInterface()
{
panel.Register();
bevelWidth = panel.Spikiness;
bevelwidth = panel.Spikiness;
subdivisions = panel.Subdivisions;
}
override protected void RemoveInterface()
{
General.Settings.WritePluginSetting("drawellipsemode_continuousdrawing", panel.ContinuousDrawing);
panel.Unregister();
}
@ -78,13 +81,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
if(pEnd.x == pStart.x || pEnd.y == pStart.y) return new[] { pStart, pEnd };
//got shape
if(bevelWidth < 0)
if(bevelwidth < 0)
{
currentBevelWidth = -Math.Min(Math.Abs(bevelWidth), Math.Min(width, height) / 2) + 1;
currentbevelwidth = -Math.Min(Math.Abs(bevelwidth), Math.Min(width, height) / 2) + 1;
}
else
{
currentBevelWidth = bevelWidth;
currentbevelwidth = bevelwidth;
}
Vector2D[] shape = new Vector2D[subdivisions + 1];
@ -102,8 +105,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
int px, py;
if(doBevel)
{
px = (int)(center.x - (float)Math.Sin(curAngle) * (hw + currentBevelWidth));
py = (int)(center.y - (float)Math.Cos(curAngle) * (hh + currentBevelWidth));
px = (int)(center.x - (float)Math.Sin(curAngle) * (hw + currentbevelwidth));
py = (int)(center.y - (float)Math.Cos(curAngle) * (hh + currentbevelwidth));
}
else
{
@ -121,7 +124,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
protected override string GetHintText()
{
return "BVL: " + bevelWidth + "; VERTS: " + subdivisions;
return "BVL: " + bevelwidth + "; VERTS: " + subdivisions;
}
#endregion
@ -130,8 +133,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs)
{
bevelWidth = panel.Spikiness;
subdivisions = Math.Min(maxSubdivisions, panel.Subdivisions);
bevelwidth = panel.Spikiness;
subdivisions = Math.Min(maxsubdivisions, panel.Subdivisions);
Update();
}
@ -146,7 +149,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
override protected void IncreaseSubdivLevel()
{
if(maxSubdivisions - subdivisions > 1)
if(maxsubdivisions - subdivisions > 1)
{
subdivisions += 2;
panel.Subdivisions = subdivisions;
@ -156,7 +159,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
override protected void DecreaseSubdivLevel()
{
if(subdivisions - minSubdivisions > 1)
if(subdivisions - minsubdivisions > 1)
{
subdivisions -= 2;
panel.Subdivisions = subdivisions;
@ -166,20 +169,20 @@ namespace CodeImp.DoomBuilder.BuilderModes
protected override void IncreaseBevel()
{
if(points.Count < 2 || currentBevelWidth == bevelWidth || bevelWidth < 0)
if(points.Count < 2 || currentbevelwidth == bevelwidth || bevelwidth < 0)
{
bevelWidth = Math.Min(bevelWidth + General.Map.Grid.GridSize, panel.MaxSpikiness);
panel.Spikiness = bevelWidth;
bevelwidth = Math.Min(bevelwidth + General.Map.Grid.GridSize, panel.MaxSpikiness);
panel.Spikiness = bevelwidth;
Update();
}
}
protected override void DecreaseBevel()
{
if(bevelWidth > 0 || currentBevelWidth <= bevelWidth + 1)
if(bevelwidth > 0 || currentbevelwidth <= bevelwidth + 1)
{
bevelWidth = Math.Max(bevelWidth - General.Map.Grid.GridSize, panel.MinSpikiness);
panel.Spikiness = bevelWidth;
bevelwidth = Math.Max(bevelwidth - General.Map.Grid.GridSize, panel.MinSpikiness);
panel.Spikiness = bevelwidth;
Update();
}
}

View file

@ -65,10 +65,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
protected bool snaptonearest; // CTRL to enable
protected bool snaptocardinaldirection; //mxd. ALT-SHIFT to enable
protected static bool usefourcardinaldirections;
protected bool continuousdrawing; //mxd. Restart after finishing drawing?
//mxd. Labels display style
protected bool labelshowangle = true;
protected bool labeluseoffset = true;
//mxd. Interface
private DrawLineOptionsPanel panel;
#endregion
@ -88,6 +92,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
// No selection in this mode
General.Map.Map.ClearAllSelected();
General.Map.Map.ClearAllMarks(false);
//mxd
SetupInterface();
// We have no destructor
GC.SuppressFinalize(this);
@ -446,6 +453,29 @@ namespace CodeImp.DoomBuilder.BuilderModes
#endregion
#region ================== mxd. Settings panel
protected virtual void SetupInterface()
{
//Add options docker
panel = new DrawLineOptionsPanel();
panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged;
panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawlinesmode_continuousdrawing", false);
}
protected virtual void AddInterface()
{
panel.Register();
}
protected virtual void RemoveInterface()
{
General.Settings.WritePluginSetting("drawlinesmode_continuousdrawing", panel.ContinuousDrawing);
panel.Unregister();
}
#endregion
#region ================== Events
public override void OnHelp()
@ -458,6 +488,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
base.OnEngage();
EnableAutoPanning();
AddInterface(); //mxd
renderer.SetPresentation(Presentation.Standard);
// Set cursor
@ -467,6 +498,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Disengaging
public override void OnDisengage()
{
RemoveInterface(); //mxd
base.OnDisengage();
DisableAutoPanning();
}
@ -474,6 +506,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Cancelled
public override void OnCancel()
{
//mxd. Cannot leave this way when continuous drawing is enabled
if(continuousdrawing) return;
// Cancel base class
base.OnCancel();
@ -505,44 +540,57 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.DisplayStatus(StatusType.Action, "Created " + a + word + " drawing.");
// Make the drawing
if(!Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd
if(Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd
{
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
else
{
// Drawing failed
// NOTE: I have to call this twice, because the first time only cancels this volatile mode
General.Map.UndoRedo.WithdrawUndo();
General.Map.UndoRedo.WithdrawUndo();
return;
}
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
// Done
Cursor.Current = Cursors.Default;
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
if(continuousdrawing)
{
//mxd. Reset settings
points.Clear();
labels.Clear();
//mxd. Redraw display
General.Interface.RedrawDisplay();
}
else
{
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
}
}
// This redraws the display
@ -594,6 +642,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
(snaptonearest != (General.Interface.CtrlState ^ General.Interface.AutoMerge)) ||
(snaptocardinaldirection != (General.Interface.AltState && General.Interface.ShiftState))) Update();
}
//mxd
protected void OnContinuousDrawingChanged(object value, EventArgs e)
{
continuousdrawing = (bool)value;
}
#endregion

View file

@ -65,40 +65,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Events
public override void OnEngage()
{
base.OnEngage();
// Create and setup settings panel
panel = new DrawGridOptionsPanel();
panel.MaxHorizontalSlices = (int)General.Map.FormatInterface.MaxCoordinate;
panel.MaxVerticalSlices = (int) General.Map.FormatInterface.MaxCoordinate;
panel.Triangulate = triangulate;
panel.LockToGrid = gridlock;
panel.HorizontalSlices = horizontalSlices - 1;
panel.VerticalSlices = verticalSlices - 1;
panel.HorizontalInterpolationMode = horizontalinterpolation;
panel.VerticalInterpolationMode = verticalinterpolation;
panel.OnValueChanged += OptionsPanelOnValueChanged;
panel.OnGridLockChanged += OptionsPanelOnOnGridLockChanged;
// Add docker
docker = new Docker("drawgrid", "Draw Grid", panel);
General.Interface.AddDocker(docker);
General.Interface.SelectDocker(docker);
}
public override void OnDisengage()
{
base.OnDisengage();
// Remove docker
General.Interface.RemoveDocker(docker);
panel.Dispose();
panel = null;
}
override public void OnAccept()
{
Cursor.Current = Cursors.AppStarting;
@ -120,46 +86,59 @@ namespace CodeImp.DoomBuilder.BuilderModes
List<Sector> newsectors = new List<Sector>();
foreach(DrawnVertex[] shape in gridpoints)
{
if(!Tools.DrawLines(shape, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate))
if(Tools.DrawLines(shape, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate))
{
// Update cached values after each step...
General.Map.Map.Update();
newsectors.AddRange(General.Map.Map.GetMarkedSectors(true));
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Edit new sectors?
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
else
{
// Drawing failed
// NOTE: I have to call this twice, because the first time only cancels this volatile mode
General.Map.UndoRedo.WithdrawUndo();
General.Map.UndoRedo.WithdrawUndo();
return;
}
// Update cached values after each step...
General.Map.Map.Update();
newsectors.AddRange(General.Map.Map.GetMarkedSectors(true));
}
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Edit new sectors?
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
// Done
Cursor.Current = Cursors.Default;
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
if(continuousdrawing)
{
// Reset settings
points.Clear();
labels.Clear();
// Redraw display
General.Interface.RedrawDisplay();
}
else
{
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
}
}
private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs)
@ -473,6 +452,48 @@ namespace CodeImp.DoomBuilder.BuilderModes
#endregion
#region ================== Settings panel
protected override void SetupInterface()
{
// Create and setup settings panel
panel = new DrawGridOptionsPanel();
panel.MaxHorizontalSlices = (int)General.Map.FormatInterface.MaxCoordinate;
panel.MaxVerticalSlices = (int)General.Map.FormatInterface.MaxCoordinate;
panel.Triangulate = triangulate;
panel.LockToGrid = gridlock;
panel.HorizontalSlices = horizontalSlices - 1;
panel.VerticalSlices = verticalSlices - 1;
panel.HorizontalInterpolationMode = horizontalinterpolation;
panel.VerticalInterpolationMode = verticalinterpolation;
panel.OnValueChanged += OptionsPanelOnValueChanged;
panel.OnGridLockChanged += OptionsPanelOnOnGridLockChanged;
panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged;
panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawgridmode_continuousdrawing", false);
}
protected override void AddInterface()
{
// Add docker
docker = new Docker("drawgrid", "Draw Grid", panel);
General.Interface.AddDocker(docker);
General.Interface.SelectDocker(docker);
}
protected override void RemoveInterface()
{
General.Settings.WritePluginSetting("drawgridmode_continuousdrawing", panel.ContinuousDrawing);
// Remove docker
General.Interface.RemoveDocker(docker);
panel.Dispose();
panel = null;
}
#endregion
#region ================== Actions
[BeginAction("increasebevel")]

View file

@ -30,22 +30,22 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Variables
protected HintLabel hintlabel;
protected int bevelWidth;
protected int currentBevelWidth;
protected int bevelwidth;
protected int currentbevelwidth;
protected int subdivisions;
protected int maxSubdivisions;
protected int minSubdivisions;
protected int maxsubdivisions;
protected int minsubdivisions;
protected string undoName = "Rectangle draw";
protected string shapeName = "rectangle";
protected string undoname = "Rectangle draw";
protected string shapename = "rectangle";
protected Vector2D start;
protected Vector2D end;
protected int width;
protected int height;
//interface
// Interface
private DrawRectangleOptionsPanel panel;
#endregion
@ -56,7 +56,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
snaptogrid = true;
usefourcardinaldirections = true;
SetupInterface();
}
public override void Dispose()
@ -76,28 +75,31 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Settings panel
protected virtual void SetupInterface()
protected override void SetupInterface()
{
maxSubdivisions = 16;
maxsubdivisions = 16;
//Add options docker
panel = new DrawRectangleOptionsPanel();
panel.MaxSubdivisions = maxSubdivisions;
panel.MinSubdivisions = minSubdivisions;
panel.MaxSubdivisions = maxsubdivisions;
panel.MinSubdivisions = minsubdivisions;
panel.MaxBevelWidth = (int)General.Map.FormatInterface.MaxCoordinate;
panel.MinBevelWidth = (int)General.Map.FormatInterface.MinCoordinate;
panel.OnValueChanged += OptionsPanelOnValueChanged;
panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged;
panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawrectanglemode_continuousdrawing", false);
}
protected virtual void AddInterface()
protected override void AddInterface()
{
panel.Register();
bevelWidth = panel.BevelWidth;
bevelwidth = panel.BevelWidth;
subdivisions = panel.Subdivisions;
}
protected virtual void RemoveInterface()
protected override void RemoveInterface()
{
General.Settings.WritePluginSetting("drawrectanglemode_continuousdrawing", panel.ContinuousDrawing);
panel.Unregister();
}
@ -178,47 +180,47 @@ namespace CodeImp.DoomBuilder.BuilderModes
//no shape
if(pStart == pEnd)
{
currentBevelWidth = 0;
currentbevelwidth = 0;
return new Vector2D[0];
}
//line
if(pEnd.x == pStart.x || pEnd.y == pStart.y)
{
currentBevelWidth = 0;
currentbevelwidth = 0;
return new[] { pStart, pEnd };
}
//no corners
if(bevelWidth == 0)
if(bevelwidth == 0)
{
currentBevelWidth = 0;
currentbevelwidth = 0;
return new[] { pStart, new Vector2D((int)pStart.x, (int)pEnd.y), pEnd, new Vector2D((int)pEnd.x, (int)pStart.y), pStart };
}
//got corners. TODO: check point order
bool reverse = false;
currentBevelWidth = Math.Min(Math.Abs(bevelWidth), Math.Min(width, height) / 2);
currentbevelwidth = Math.Min(Math.Abs(bevelwidth), Math.Min(width, height) / 2);
if(bevelWidth < 0)
if(bevelwidth < 0)
{
currentBevelWidth *= -1;
currentbevelwidth *= -1;
reverse = true;
}
List<Vector2D> shape = new List<Vector2D>();
//top-left corner
shape.AddRange(GetCornerPoints(pStart, currentBevelWidth, currentBevelWidth, !reverse));
shape.AddRange(GetCornerPoints(pStart, currentbevelwidth, currentbevelwidth, !reverse));
//top-right corner
shape.AddRange(GetCornerPoints(new Vector2D(pEnd.x, pStart.y), -currentBevelWidth, currentBevelWidth, reverse));
shape.AddRange(GetCornerPoints(new Vector2D(pEnd.x, pStart.y), -currentbevelwidth, currentbevelwidth, reverse));
//bottom-right corner
shape.AddRange(GetCornerPoints(pEnd, -currentBevelWidth, -currentBevelWidth, !reverse));
shape.AddRange(GetCornerPoints(pEnd, -currentbevelwidth, -currentbevelwidth, !reverse));
//bottom-left corner
shape.AddRange(GetCornerPoints(new Vector2D(pStart.x, pEnd.y), currentBevelWidth, -currentBevelWidth, reverse));
shape.AddRange(GetCornerPoints(new Vector2D(pStart.x, pEnd.y), currentbevelwidth, -currentbevelwidth, reverse));
//closing point
shape.Add(shape[0]);
@ -229,7 +231,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
private Vector2D[] GetCornerPoints(Vector2D startPoint, int bevel_width, int bevel_height, bool reverse)
{
Vector2D[] points;
Vector2D center = (bevelWidth > 0 ? new Vector2D(startPoint.x + bevel_width, startPoint.y + bevel_height) : startPoint);
Vector2D center = (bevelwidth > 0 ? new Vector2D(startPoint.x + bevel_width, startPoint.y + bevel_height) : startPoint);
float curAngle = Angle2D.PI;
int steps = subdivisions + 2;
@ -248,7 +250,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
protected virtual string GetHintText()
{
return "BVL: " + bevelWidth + "; SUB: " + subdivisions;
return "BVL: " + bevelwidth + "; SUB: " + subdivisions;
}
//update top-left and bottom-right points, which define drawing shape
@ -330,18 +332,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
#endregion
#region ================== Events
public override void OnEngage()
{
base.OnEngage();
AddInterface();
}
public override void OnDisengage()
{
RemoveInterface();
base.OnDisengage();
}
override public void OnAccept()
{
@ -352,54 +342,67 @@ namespace CodeImp.DoomBuilder.BuilderModes
if(points.Count > 4 || points.Count == 2)
{
// Make undo for the draw
General.Map.UndoRedo.CreateUndo(undoName);
General.Map.UndoRedo.CreateUndo(undoname);
// Make an analysis and show info
string[] adjectives = new[] { "gloomy", "sad", "unhappy", "lonely", "troubled", "depressed", "heartsick", "glum", "pessimistic", "bitter", "downcast" }; // aaand my english vocabulary ends here :)
string word = adjectives[new Random().Next(adjectives.Length - 1)];
string a = (word[0] == 'u' ? "an " : "a ");
General.Interface.DisplayStatus(StatusType.Action, "Created " + a + word + " " + shapeName + ".");
General.Interface.DisplayStatus(StatusType.Action, "Created " + a + word + " " + shapename + ".");
// Make the drawing
if(!Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate))
if(Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate))
{
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
else
{
// Drawing failed
// NOTE: I have to call this twice, because the first time only cancels this volatile mode
General.Map.UndoRedo.WithdrawUndo();
General.Map.UndoRedo.WithdrawUndo();
return;
}
// Snap to map format accuracy
General.Map.Map.SnapAllToAccuracy();
// Clear selection
General.Map.Map.ClearAllSelected();
// Update cached values
General.Map.Map.Update();
// Edit new sectors?
List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true);
if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0))
General.Interface.ShowEditSectors(newsectors);
// Update the used textures
General.Map.Data.UpdateUsedTextures();
//mxd
General.Map.Renderer2D.UpdateExtraFloorFlag();
// Map is changed
General.Map.IsChanged = true;
}
// Done
Cursor.Current = Cursors.Default;
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
if(continuousdrawing)
{
// Reset settings
points.Clear();
labels.Clear();
// Redraw display
General.Interface.RedrawDisplay();
}
else
{
// Return to original mode
General.Editing.ChangeMode(General.Editing.PreviousStableMode.Name);
}
}
public override void OnHelp()
@ -409,7 +412,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs)
{
bevelWidth = panel.BevelWidth;
bevelwidth = panel.BevelWidth;
subdivisions = panel.Subdivisions;
Update();
}
@ -421,7 +424,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
[BeginAction("increasesubdivlevel")]
protected virtual void IncreaseSubdivLevel()
{
if(subdivisions < maxSubdivisions)
if(subdivisions < maxsubdivisions)
{
subdivisions++;
panel.Subdivisions = subdivisions;
@ -432,7 +435,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
[BeginAction("decreasesubdivlevel")]
protected virtual void DecreaseSubdivLevel()
{
if(subdivisions > minSubdivisions)
if(subdivisions > minsubdivisions)
{
subdivisions--;
panel.Subdivisions = subdivisions;
@ -443,10 +446,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
[BeginAction("increasebevel")]
protected virtual void IncreaseBevel()
{
if(points.Count < 2 || currentBevelWidth == bevelWidth || bevelWidth < 0)
if(points.Count < 2 || currentbevelwidth == bevelwidth || bevelwidth < 0)
{
bevelWidth = Math.Min(bevelWidth + General.Map.Grid.GridSize, panel.MaxBevelWidth);
panel.BevelWidth = bevelWidth;
bevelwidth = Math.Min(bevelwidth + General.Map.Grid.GridSize, panel.MaxBevelWidth);
panel.BevelWidth = bevelwidth;
Update();
}
}
@ -454,10 +457,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
[BeginAction("decreasebevel")]
protected virtual void DecreaseBevel()
{
if(currentBevelWidth == bevelWidth || bevelWidth > 0)
if(currentbevelwidth == bevelwidth || bevelwidth > 0)
{
bevelWidth = Math.Max(bevelWidth - General.Map.Grid.GridSize, panel.MinBevelWidth);
panel.BevelWidth = bevelWidth;
bevelwidth = Math.Max(bevelwidth - General.Map.Grid.GridSize, panel.MinBevelWidth);
panel.BevelWidth = bevelwidth;
Update();
}
}

View file

@ -32,26 +32,29 @@
this.seglabel = new System.Windows.Forms.ToolStripLabel();
this.seglen = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown();
this.reset = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.continuousdrawing = new System.Windows.Forms.ToolStripButton();
this.toolstrip.SuspendLayout();
this.SuspendLayout();
//
// toolstrip
//
this.toolstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.continuousdrawing,
this.toolStripSeparator1,
this.seglabel,
this.seglen,
this.reset});
this.toolstrip.Location = new System.Drawing.Point(0, 0);
this.toolstrip.Name = "toolstrip";
this.toolstrip.Size = new System.Drawing.Size(249, 25);
this.toolstrip.Size = new System.Drawing.Size(320, 25);
this.toolstrip.TabIndex = 7;
this.toolstrip.Text = "toolStrip1";
//
// seglabel
//
this.seglabel.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Gear;
this.seglabel.Name = "seglabel";
this.seglabel.Size = new System.Drawing.Size(113, 22);
this.seglabel.Size = new System.Drawing.Size(97, 22);
this.seglabel.Text = "Segment Length:";
//
// seglen
@ -69,7 +72,7 @@
0,
0});
this.seglen.Name = "seglen";
this.seglen.Size = new System.Drawing.Size(56, 20);
this.seglen.Size = new System.Drawing.Size(56, 23);
this.seglen.Text = "0";
this.seglen.Value = new decimal(new int[] {
0,
@ -84,17 +87,32 @@
this.reset.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Reset;
this.reset.ImageTransparentColor = System.Drawing.Color.Magenta;
this.reset.Name = "reset";
this.reset.Size = new System.Drawing.Size(23, 22);
this.reset.Size = new System.Drawing.Size(23, 20);
this.reset.Text = "Reset";
this.reset.Click += new System.EventHandler(this.reset_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
//
// continuousdrawing
//
this.continuousdrawing.CheckOnClick = true;
this.continuousdrawing.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Repeat;
this.continuousdrawing.ImageTransparentColor = System.Drawing.Color.Magenta;
this.continuousdrawing.Name = "continuousdrawing";
this.continuousdrawing.Size = new System.Drawing.Size(135, 22);
this.continuousdrawing.Text = "Continuous drawing";
this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged);
//
// DrawCurveOptionsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.toolstrip);
this.Name = "DrawCurveOptionsPanel";
this.Size = new System.Drawing.Size(249, 60);
this.Size = new System.Drawing.Size(320, 60);
this.toolstrip.ResumeLayout(false);
this.toolstrip.PerformLayout();
this.ResumeLayout(false);
@ -108,6 +126,8 @@
internal CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown seglen;
private System.Windows.Forms.ToolStrip toolstrip;
private System.Windows.Forms.ToolStripButton reset;
private System.Windows.Forms.ToolStripButton continuousdrawing;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
}
}

View file

@ -6,9 +6,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
internal partial class DrawCurveOptionsPanel : UserControl
{
public event EventHandler OnValueChanged;
private bool blockEvents;
public event EventHandler OnContinuousDrawingChanged;
private bool blockevents;
public int SegmentLength { get { return (int)seglen.Value; } set { blockEvents = true; seglen.Value = value; blockEvents = false; } }
public int SegmentLength { get { return (int)seglen.Value; } set { blockevents = true; seglen.Value = value; blockevents = false; } }
public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } }
public DrawCurveOptionsPanel(int minLength, int maxLength)
{
@ -22,6 +24,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Register()
{
General.Interface.AddButton(continuousdrawing);
General.Interface.AddButton(toolStripSeparator1);
General.Interface.AddButton(seglabel);
General.Interface.AddButton(seglen);
General.Interface.AddButton(reset);
@ -32,16 +36,23 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RemoveButton(reset);
General.Interface.RemoveButton(seglen);
General.Interface.RemoveButton(seglabel);
General.Interface.RemoveButton(toolStripSeparator1);
General.Interface.RemoveButton(continuousdrawing);
}
private void seglen_ValueChanged(object sender, EventArgs e)
{
if(!blockEvents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
if(!blockevents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
}
private void reset_Click(object sender, EventArgs e)
{
seglen.Value = seglen.Minimum;
}
private void continuousdrawing_CheckedChanged(object sender, EventArgs e)
{
if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty);
}
}
}

View file

@ -29,6 +29,8 @@
private void InitializeComponent()
{
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.continuousdrawing = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.subdivslabel = new System.Windows.Forms.ToolStripLabel();
this.subdivs = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown();
this.spikinesslabel = new System.Windows.Forms.ToolStripLabel();
@ -40,6 +42,8 @@
// toolStrip1
//
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.continuousdrawing,
this.toolStripSeparator1,
this.subdivslabel,
this.subdivs,
this.spikinesslabel,
@ -51,11 +55,25 @@
this.toolStrip1.TabIndex = 6;
this.toolStrip1.Text = "toolStrip1";
//
// continuousdrawing
//
this.continuousdrawing.CheckOnClick = true;
this.continuousdrawing.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Repeat;
this.continuousdrawing.ImageTransparentColor = System.Drawing.Color.Magenta;
this.continuousdrawing.Name = "continuousdrawing";
this.continuousdrawing.Size = new System.Drawing.Size(135, 22);
this.continuousdrawing.Text = "Continuous drawing";
this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
//
// subdivslabel
//
this.subdivslabel.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Gear;
this.subdivslabel.Name = "subdivslabel";
this.subdivslabel.Size = new System.Drawing.Size(53, 22);
this.subdivslabel.Size = new System.Drawing.Size(37, 22);
this.subdivslabel.Text = "Sides:";
//
// subdivs
@ -102,7 +120,7 @@
0,
0});
this.spikiness.Name = "spikiness";
this.spikiness.Size = new System.Drawing.Size(56, 20);
this.spikiness.Size = new System.Drawing.Size(56, 23);
this.spikiness.Text = "0";
this.spikiness.Value = new decimal(new int[] {
0,
@ -116,7 +134,7 @@
this.reset.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Reset;
this.reset.ImageTransparentColor = System.Drawing.Color.Magenta;
this.reset.Name = "reset";
this.reset.Size = new System.Drawing.Size(23, 22);
this.reset.Size = new System.Drawing.Size(23, 20);
this.reset.Text = "Reset";
this.reset.Click += new System.EventHandler(this.reset_Click);
//
@ -142,5 +160,7 @@
private System.Windows.Forms.ToolStripLabel spikinesslabel;
private CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown spikiness;
private System.Windows.Forms.ToolStripButton reset;
private System.Windows.Forms.ToolStripButton continuousdrawing;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
}
}

View file

@ -6,17 +6,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
internal partial class DrawEllipseOptionsPanel : UserControl
{
public event EventHandler OnValueChanged;
private bool blockEvents;
public event EventHandler OnContinuousDrawingChanged;
private bool blockevents;
private static int aquityValue;
private static int subdivsValue = 8;
private static int aquityvalue;
private static int subdivsvalue = 8;
public int Spikiness { get { return (int)spikiness.Value; } set { blockEvents = true; spikiness.Value = value; blockEvents = false; } }
public int Subdivisions { get { return (int)subdivs.Value; } set { blockEvents = true; subdivs.Value = value; blockEvents = false; } }
public int Spikiness { get { return (int)spikiness.Value; } set { blockevents = true; spikiness.Value = value; blockevents = false; } }
public int Subdivisions { get { return (int)subdivs.Value; } set { blockevents = true; subdivs.Value = value; blockevents = false; } }
public int MaxSubdivisions { get { return (int)subdivs.Maximum; } set { subdivs.Maximum = value; } }
public int MinSubdivisions { get { return (int)subdivs.Minimum; } set { subdivs.Minimum = value; } }
public int MaxSpikiness { get { return (int)spikiness.Maximum; } set { spikiness.Maximum = value; } }
public int MinSpikiness { get { return (int)spikiness.Minimum; } set { spikiness.Minimum = value; } }
public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } }
public DrawEllipseOptionsPanel()
{
@ -25,11 +27,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Register()
{
spikiness.Value = aquityValue;
subdivs.Value = subdivsValue;
spikiness.Value = aquityvalue;
subdivs.Value = subdivsvalue;
spikiness.ValueChanged += ValueChanged;
subdivs.ValueChanged += ValueChanged;
General.Interface.AddButton(continuousdrawing);
General.Interface.AddButton(toolStripSeparator1);
General.Interface.AddButton(subdivslabel);
General.Interface.AddButton(subdivs);
General.Interface.AddButton(spikinesslabel);
@ -44,21 +48,28 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RemoveButton(spikinesslabel);
General.Interface.RemoveButton(subdivs);
General.Interface.RemoveButton(subdivslabel);
General.Interface.RemoveButton(toolStripSeparator1);
General.Interface.RemoveButton(continuousdrawing);
}
private void ValueChanged(object sender, EventArgs e)
{
aquityValue = (int)spikiness.Value;
subdivsValue = (int)subdivs.Value;
if(!blockEvents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
aquityvalue = (int)spikiness.Value;
subdivsvalue = (int)subdivs.Value;
if(!blockevents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
}
private void reset_Click(object sender, EventArgs e)
{
blockEvents = true;
blockevents = true;
spikiness.Value = 0;
blockEvents = false;
blockevents = false;
subdivs.Value = subdivs.Minimum;
}
private void continuousdrawing_CheckedChanged(object sender, EventArgs e)
{
if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty);
}
}
}

View file

@ -41,10 +41,13 @@
this.interphmode = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.continuousdrawing = new System.Windows.Forms.CheckBox();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.slicesV)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.slicesH)).BeginInit();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
@ -190,10 +193,34 @@
this.label4.TabIndex = 15;
this.label4.Text = "Horizontal";
//
// groupBox3
//
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBox3.Controls.Add(this.continuousdrawing);
this.groupBox3.Location = new System.Drawing.Point(3, 225);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(200, 55);
this.groupBox3.TabIndex = 11;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Additional options";
//
// continuousdrawing
//
this.continuousdrawing.AutoSize = true;
this.continuousdrawing.Location = new System.Drawing.Point(20, 24);
this.continuousdrawing.Name = "continuousdrawing";
this.continuousdrawing.Size = new System.Drawing.Size(119, 17);
this.continuousdrawing.TabIndex = 15;
this.continuousdrawing.Text = "Continuous drawing";
this.continuousdrawing.UseVisualStyleBackColor = true;
this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged);
//
// DrawGridOptionsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Name = "DrawGridOptionsPanel";
@ -204,6 +231,8 @@
((System.ComponentModel.ISupportInitialize)(this.slicesH)).EndInit();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.ResumeLayout(false);
}
@ -223,5 +252,7 @@
private System.Windows.Forms.ComboBox interphmode;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.CheckBox continuousdrawing;
}
}

View file

@ -8,6 +8,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
public event EventHandler OnValueChanged;
public event EventHandler OnGridLockChanged;
public event EventHandler OnContinuousDrawingChanged;
private bool blockevents;
public bool Triangulate { get { return triangulate.Checked; } set { blockevents = true; triangulate.Checked = value; blockevents = false; } }
@ -16,6 +17,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
public int MaxHorizontalSlices { get { return (int)slicesH.Maximum; } set { slicesH.Maximum = value; } }
public int VerticalSlices { get { return (int)slicesV.Value; } set { blockevents = true; slicesV.Value = value; blockevents = false; } }
public int MaxVerticalSlices { get { return (int)slicesV.Maximum; } set { slicesV.Maximum = value; } }
public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } }
public InterpolationTools.Mode HorizontalInterpolationMode
{
get { return gridlock.Checked ? InterpolationTools.Mode.LINEAR : (InterpolationTools.Mode)interphmode.SelectedIndex; }
@ -68,5 +70,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
if(OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
}
private void continuousdrawing_CheckedChanged(object sender, EventArgs e)
{
if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty);
}
}
}

View file

@ -0,0 +1,75 @@
namespace CodeImp.DoomBuilder.BuilderModes
{
partial class DrawLineOptionsPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.continuousdrawing = new System.Windows.Forms.ToolStripButton();
this.toolStrip1.SuspendLayout();
this.SuspendLayout();
//
// toolStrip1
//
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.continuousdrawing});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(200, 25);
this.toolStrip1.TabIndex = 8;
this.toolStrip1.Text = "toolStrip1";
//
// continuousdrawing
//
this.continuousdrawing.CheckOnClick = true;
this.continuousdrawing.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Repeat;
this.continuousdrawing.ImageTransparentColor = System.Drawing.Color.Magenta;
this.continuousdrawing.Name = "continuousdrawing";
this.continuousdrawing.Size = new System.Drawing.Size(135, 22);
this.continuousdrawing.Text = "Continuous drawing";
this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged);
//
// DrawLineOptionsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.toolStrip1);
this.Name = "DrawLineOptionsPanel";
this.Size = new System.Drawing.Size(200, 60);
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripButton continuousdrawing;
}
}

View file

@ -0,0 +1,32 @@
using System;
using System.Windows.Forms;
namespace CodeImp.DoomBuilder.BuilderModes
{
internal partial class DrawLineOptionsPanel : UserControl
{
public event EventHandler OnContinuousDrawingChanged;
public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } }
public DrawLineOptionsPanel()
{
InitializeComponent();
}
public void Register()
{
General.Interface.AddButton(continuousdrawing);
}
public void Unregister()
{
General.Interface.RemoveButton(continuousdrawing);
}
private void continuousdrawing_CheckedChanged(object sender, EventArgs e)
{
if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty);
}
}
}

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View file

@ -29,10 +29,12 @@
private void InitializeComponent()
{
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.radiuslabel = new System.Windows.Forms.ToolStripLabel();
this.radius = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown();
this.subdivslabel = new System.Windows.Forms.ToolStripLabel();
this.subdivs = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown();
this.continuousdrawing = new System.Windows.Forms.ToolStripButton();
this.reset = new System.Windows.Forms.ToolStripButton();
this.toolStrip1.SuspendLayout();
this.SuspendLayout();
@ -40,6 +42,8 @@
// toolStrip1
//
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.continuousdrawing,
this.toolStripSeparator1,
this.radiuslabel,
this.radius,
this.subdivslabel,
@ -47,15 +51,19 @@
this.reset});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(380, 25);
this.toolStrip1.Size = new System.Drawing.Size(488, 25);
this.toolStrip1.TabIndex = 7;
this.toolStrip1.Text = "toolStrip1";
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
//
// radiuslabel
//
this.radiuslabel.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Gear;
this.radiuslabel.Name = "radiuslabel";
this.radiuslabel.Size = new System.Drawing.Size(92, 22);
this.radiuslabel.Size = new System.Drawing.Size(76, 22);
this.radiuslabel.Text = "Bevel Radius:";
//
// radius
@ -112,6 +120,16 @@
0});
this.subdivs.ValueChanged += new System.EventHandler(this.ValueChanged);
//
// continuousdrawing
//
this.continuousdrawing.CheckOnClick = true;
this.continuousdrawing.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Repeat;
this.continuousdrawing.ImageTransparentColor = System.Drawing.Color.Magenta;
this.continuousdrawing.Name = "continuousdrawing";
this.continuousdrawing.Size = new System.Drawing.Size(135, 22);
this.continuousdrawing.Text = "Continuous drawing";
this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged);
//
// reset
//
this.reset.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -128,7 +146,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.toolStrip1);
this.Name = "DrawRectangleOptionsPanel";
this.Size = new System.Drawing.Size(380, 60);
this.Size = new System.Drawing.Size(488, 60);
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.ResumeLayout(false);
@ -144,5 +162,7 @@
private System.Windows.Forms.ToolStripLabel subdivslabel;
private CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown subdivs;
private System.Windows.Forms.ToolStripButton reset;
private System.Windows.Forms.ToolStripButton continuousdrawing;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
}
}

View file

@ -6,17 +6,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
internal partial class DrawRectangleOptionsPanel : UserControl
{
public event EventHandler OnValueChanged;
private bool blockEvents;
public event EventHandler OnContinuousDrawingChanged;
private bool blockevents;
private static int radiusValue;
private static int subdivsValue;
public int BevelWidth { get { return (int)radius.Value; } set { blockEvents = true; radius.Value = value; blockEvents = false; } }
public int BevelWidth { get { return (int)radius.Value; } set { blockevents = true; radius.Value = value; blockevents = false; } }
public int MaxBevelWidth { get { return (int)radius.Maximum; } set { radius.Maximum = value; } }
public int MinBevelWidth { get { return (int)radius.Minimum; } set { radius.Minimum = value; } }
public int Subdivisions { get { return (int)subdivs.Value; } set { blockEvents = true; subdivs.Value = value; blockEvents = false; } }
public int Subdivisions { get { return (int)subdivs.Value; } set { blockevents = true; subdivs.Value = value; blockevents = false; } }
public int MaxSubdivisions { get { return (int)subdivs.Maximum; } set { subdivs.Maximum = value; } }
public int MinSubdivisions { get { return (int)subdivs.Minimum; } set { subdivs.Minimum = value; } }
public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } }
public DrawRectangleOptionsPanel()
{
@ -30,6 +32,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
radius.ValueChanged += ValueChanged;
subdivs.ValueChanged += ValueChanged;
General.Interface.AddButton(continuousdrawing);
General.Interface.AddButton(toolStripSeparator1);
General.Interface.AddButton(radiuslabel);
General.Interface.AddButton(radius);
General.Interface.AddButton(subdivslabel);
@ -44,22 +48,28 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RemoveButton(subdivslabel);
General.Interface.RemoveButton(radius);
General.Interface.RemoveButton(radiuslabel);
General.Interface.RemoveButton(toolStripSeparator1);
General.Interface.RemoveButton(continuousdrawing);
}
private void ValueChanged(object sender, EventArgs e)
{
radiusValue = (int)radius.Value;
subdivsValue = (int)subdivs.Value;
if(!blockEvents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
if(!blockevents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
}
private void reset_Click(object sender, EventArgs e)
{
blockEvents = true;
blockevents = true;
radius.Value = 0;
blockEvents = false;
blockevents = false;
subdivs.Value = 0;
}
private void continuousdrawing_CheckedChanged(object sender, EventArgs e)
{
if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty);
}
}
}

View file

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.5466
// Runtime Version:2.0.50727.5485
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -38,7 +38,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if(object.ReferenceEquals(resourceMan, null)) {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CodeImp.DoomBuilder.BuilderModes.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
@ -214,13 +214,6 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
}
}
internal static System.Drawing.Bitmap Gear {
get {
object obj = ResourceManager.GetObject("Gear", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Hide {
get {
object obj = ResourceManager.GetObject("Hide", resourceCulture);
@ -284,6 +277,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
}
}
internal static System.Drawing.Bitmap Repeat {
get {
object obj = ResourceManager.GetObject("Repeat", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Reset {
get {
object obj = ResourceManager.GetObject("Reset", resourceCulture);

View file

@ -118,9 +118,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Join" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Join.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FloorAlign" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FloorAlign.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -139,9 +136,6 @@
<data name="ViewSelectionEffects" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewSelectionEffects.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="HideAll" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\HideAll.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -196,12 +190,12 @@
<data name="ThingPointAtCursor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ThingPointAtCursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PlaceThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PlaceThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Show" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Show.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BrightnessGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\BrightnessGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -217,8 +211,8 @@
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Show" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Show.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Join" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Join.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ViewSelectionIndex" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewSelectionIndex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -229,6 +223,9 @@
<data name="Show2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Show2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Folder" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ColorPick" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ColorPick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -238,8 +235,8 @@
<data name="FlipSelectionH" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FlipSelectionH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Folder" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="PlaceThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PlaceThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -259,4 +256,7 @@
<data name="Show3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Show3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Repeat" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Repeat.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B