change in editing modes, begun working on color settings

This commit is contained in:
codeimp 2007-10-20 01:04:47 +00:00
parent d5d1b91961
commit 3c4cf85a74
27 changed files with 1145 additions and 74 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

View file

@ -54,8 +54,8 @@
<Compile Include="Data\SpriteImage.cs" />
<Compile Include="Data\TextureImage.cs" />
<Compile Include="Editing\EditMode.cs" />
<Compile Include="Editing\FrozenOverviewMode.cs" />
<Compile Include="Editing\ViewClassicMode.cs" />
<Compile Include="Editing\VerticesMode.cs" />
<Compile Include="Editing\ClassicMode.cs" />
<Compile Include="Controls\ActionDelegate.cs" />
<Compile Include="Controls\Action.cs" />
<Compile Include="Controls\ActionManager.cs" />
@ -80,6 +80,12 @@
<Compile Include="Interface\AboutForm.Designer.cs">
<DependentUpon>AboutForm.cs</DependentUpon>
</Compile>
<Compile Include="Interface\ColorControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Interface\ColorControl.Designer.cs">
<DependentUpon>ColorControl.cs</DependentUpon>
</Compile>
<Compile Include="Interface\ConfigForm.cs">
<SubType>Form</SubType>
</Compile>
@ -141,6 +147,7 @@
</Compile>
<Compile Include="Map\Linedef.cs" />
<Compile Include="Map\MapOptions.cs" />
<Compile Include="Map\MapSelection.cs" />
<Compile Include="Map\MapSet.cs" />
<Compile Include="Data\DataLocation.cs" />
<Compile Include="Map\Sector.cs" />
@ -154,6 +161,8 @@
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Rendering\Base2DShader.cs" />
<Compile Include="Rendering\ColorCollection.cs" />
<Compile Include="Rendering\ColorSetting.cs" />
<Compile Include="Rendering\D3DGraphics.cs" />
<Compile Include="Data\ImageData.cs" />
<Compile Include="Rendering\D3DShader.cs" />
@ -201,6 +210,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="Resources\Builder.ico" />
<None Include="Resources\ColorPick.png" />
<None Include="Resources\Zoom.png" />
<None Include="Resources\Properties.png" />
<None Include="Resources\NewMap2.png" />
@ -210,6 +220,10 @@
<None Include="Resources\Splash2small.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Interface\ColorControl.resx">
<SubType>Designer</SubType>
<DependentUpon>ColorControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Interface\ConfigForm.resx">
<SubType>Designer</SubType>
<DependentUpon>ConfigForm.cs</DependentUpon>

View file

@ -36,7 +36,7 @@ using System.Drawing;
namespace CodeImp.DoomBuilder.Editing
{
internal class ViewClassicMode : EditMode
internal abstract class ClassicMode : EditMode
{
#region ================== Constants
@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Constructor / Disposer
// Constructor
public ViewClassicMode()
public ClassicMode()
{
// Initialize
this.renderer = General.Map.Graphics.Renderer2D;
@ -271,5 +271,15 @@ namespace CodeImp.DoomBuilder.Editing
}
#endregion
#region ================== Display
// This just refreshes the display
public override void RefreshDisplay()
{
renderer.Present();
}
#endregion
}
}

View file

@ -33,7 +33,7 @@ using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Editing
{
internal class FrozenOverviewMode : ViewClassicMode
internal class VerticesMode : ClassicMode
{
#region ================== Constants
@ -41,6 +41,9 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Variables
// Selection
private MapSelection selection;
#endregion
#region ================== Properties
@ -49,10 +52,20 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Constructor / Disposer
// Constructor
public FrozenOverviewMode()
/// <summary>
/// Fresh mode
/// </summary>
public VerticesMode()
{
CenterInScreen();
}
/// <summary>
/// From dragging
/// </summary>
public VerticesMode(MapSelection selection)
{
// Keep selection
this.selection = selection;
}
// Diposer
@ -71,20 +84,18 @@ namespace CodeImp.DoomBuilder.Editing
#endregion
#region ================== Methods
// This just refreshes the display
public override void RefreshDisplay()
{
renderer.Present();
}
// This redraws the display
public unsafe override void RedrawDisplay()
{
if(renderer.StartRendering())
// Start with a clear display
if(renderer.StartRendering(true))
{
// Render stuff
renderer.RenderLinedefs(General.Map.Map, General.Map.Map.Linedefs);
renderer.RenderVertices(General.Map.Map, General.Map.Map.Vertices);
// Done
renderer.FinishRendering();
}
}

View file

@ -31,6 +31,7 @@ using CodeImp.DoomBuilder.Geometry;
using System.Runtime.InteropServices;
using CodeImp.DoomBuilder.Controls;
using System.Diagnostics;
using CodeImp.DoomBuilder.Rendering;
#endregion
@ -105,6 +106,7 @@ namespace CodeImp.DoomBuilder
private static Configuration settings;
private static MapManager map;
private static ActionManager actions;
private static ColorCollection colors;
// Configurations
private static List<ConfigurationInfo> configs;
@ -122,6 +124,7 @@ namespace CodeImp.DoomBuilder
public static string CompilersPath { get { return compilerspath; } }
public static MainForm MainWindow { get { return mainwindow; } }
public static Configuration Settings { get { return settings; } }
public static ColorCollection Colors { get { return colors; } }
public static List<ConfigurationInfo> Configs { get { return configs; } }
public static List<NodebuilderInfo> Nodebuilders { get { return nodebuilders; } }
public static List<CompilerInfo> Compilers { get { return compilers; } }
@ -429,6 +432,10 @@ namespace CodeImp.DoomBuilder
General.WriteLogLine("Loading nodebuilder configurations...");
LoadAllNodebuilderConfigurations();
// Load color settings
General.WriteLogLine("Loading color settings...");
colors = new ColorCollection(settings);
// Run application from the main window
General.WriteLogLine("Startup done");
mainwindow.DisplayReady();
@ -512,6 +519,9 @@ namespace CodeImp.DoomBuilder
mainwindow.Dispose();
actions.Dispose();
// Save colors
colors.SaveColors(settings);
// Save action controls
actions.SaveSettings();

View file

@ -201,7 +201,7 @@ namespace CodeImp.DoomBuilder
ActionAttribute.BindMethods(this);
// Set default mode
ChangeMode(typeof(FrozenOverviewMode));
ChangeMode(new VerticesMode());
// Success
General.WriteLogLine("Map creation done");
@ -279,8 +279,11 @@ namespace CodeImp.DoomBuilder
ActionAttribute.BindMethods(this);
// Set default mode
ChangeMode(typeof(FrozenOverviewMode));
ChangeMode(new VerticesMode());
// Center map in screen
(General.Map.Mode as ClassicMode).CenterInScreen();
// Success
General.WriteLogLine("Map loading done");
return true;
@ -842,14 +845,14 @@ namespace CodeImp.DoomBuilder
}
// This changes editing mode
public void ChangeMode(Type modetype, params object[] args)
public void ChangeMode(EditMode newmode)
{
// Dispose current mode
if(mode != null) mode.Dispose();
// Create a new mode
General.WriteLogLine("Switching edit mode to " + modetype.Name + "...");
mode = EditMode.Create(modetype, args);
// Set new mode
General.WriteLogLine("Switched edit mode to " + newmode.GetType().Name);
mode = newmode;
// Redraw the display
General.MainWindow.RedrawDisplay();

View file

@ -0,0 +1,93 @@
namespace CodeImp.DoomBuilder.Interface
{
partial class ColorControl
{
/// <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.label = new System.Windows.Forms.Label();
this.panel = new System.Windows.Forms.Panel();
this.button = new System.Windows.Forms.Button();
this.dialog = new System.Windows.Forms.ColorDialog();
this.SuspendLayout();
//
// label
//
this.label.Location = new System.Drawing.Point(-3, 0);
this.label.Name = "label";
this.label.Size = new System.Drawing.Size(175, 23);
this.label.TabIndex = 0;
this.label.Text = "Color name:";
this.label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// panel
//
this.panel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
this.panel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel.Location = new System.Drawing.Point(178, 0);
this.panel.Name = "panel";
this.panel.Size = new System.Drawing.Size(27, 23);
this.panel.TabIndex = 1;
//
// button
//
this.button.Image = global::CodeImp.DoomBuilder.Properties.Resources.ColorPick;
this.button.ImageAlign = System.Drawing.ContentAlignment.BottomCenter;
this.button.Location = new System.Drawing.Point(322, 0);
this.button.Name = "button";
this.button.Size = new System.Drawing.Size(26, 23);
this.button.TabIndex = 2;
this.button.UseVisualStyleBackColor = true;
this.button.Click += new System.EventHandler(this.button_Click);
//
// dialog
//
this.dialog.FullOpen = true;
//
// ColorControl
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.button);
this.Controls.Add(this.panel);
this.Controls.Add(this.label);
this.MaximumSize = new System.Drawing.Size(10000, 23);
this.MinimumSize = new System.Drawing.Size(100, 23);
this.Name = "ColorControl";
this.Size = new System.Drawing.Size(348, 23);
this.Resize += new System.EventHandler(this.ColorControl_Resize);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label;
private System.Windows.Forms.Panel panel;
private System.Windows.Forms.Button button;
private System.Windows.Forms.ColorDialog dialog;
}
}

View file

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Interface
{
public partial class ColorControl : UserControl
{
// Constructor
public ColorControl()
{
// Initialize
InitializeComponent();
}
// Properties
public string Label { get { return label.Text; } set { label.Text = value; } }
public PixelColor Color { get { return PixelColor.FromColor(panel.BackColor); } set { panel.BackColor = System.Drawing.Color.FromArgb(value.ToInt()); } }
// Button clicked
private void button_Click(object sender, EventArgs e)
{
// Show color dialog
dialog.Color = panel.BackColor;
if(dialog.ShowDialog(this.ParentForm) == DialogResult.OK)
{
// Apply new color
panel.BackColor = dialog.Color;
}
}
// Resized
private void ColorControl_Resize(object sender, EventArgs e)
{
try
{
button.Left = ClientSize.Width - button.Width;
panel.Left = ClientSize.Width - button.Width - panel.Width - 3;
label.Left = 0;
label.Width = panel.Left;
}
catch(Exception) { }
}
}
}

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="dialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View file

@ -287,7 +287,7 @@ namespace CodeImp.DoomBuilder.Interface
if(General.Map == null) return;
// In classic mode?
if(General.Map.Mode is ViewClassicMode)
if(General.Map.Mode is ClassicMode)
{
// Requested from menu?
if(sender is ToolStripMenuItem)
@ -296,7 +296,7 @@ namespace CodeImp.DoomBuilder.Interface
zoom = int.Parse((sender as ToolStripMenuItem).Tag.ToString(), CultureInfo.InvariantCulture);
// Zoom now
(General.Map.Mode as ViewClassicMode).SetZoom((float)zoom / 100f);
(General.Map.Mode as ClassicMode).SetZoom((float)zoom / 100f);
}
}
}
@ -307,8 +307,8 @@ namespace CodeImp.DoomBuilder.Interface
if(General.Map == null) return;
// In classic mode?
if(General.Map.Mode is ViewClassicMode)
(General.Map.Mode as ViewClassicMode).CenterInScreen();
if(General.Map.Mode is ClassicMode)
(General.Map.Mode as ClassicMode).CenterInScreen();
}
#endregion

View file

@ -31,6 +31,17 @@ namespace CodeImp.DoomBuilder.Interface
System.Windows.Forms.Label label7;
System.Windows.Forms.Label label6;
System.Windows.Forms.Label label5;
this.colorsgroup1 = new System.Windows.Forms.GroupBox();
this.colorgrid64 = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorgrid = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorassociations = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorsoundlinedefs = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorspeciallinedefs = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorbackcolor = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorselection = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorvertices = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorhighlight = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorlinedefs = new CodeImp.DoomBuilder.Interface.ColorControl();
this.cancel = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button();
this.tabs = new System.Windows.Forms.TabControl();
@ -45,12 +56,29 @@ namespace CodeImp.DoomBuilder.Interface
this.actioncontrolclear = new System.Windows.Forms.Button();
this.actionkey = new System.Windows.Forms.TextBox();
this.actiondescription = new System.Windows.Forms.Label();
this.tabcolors = new System.Windows.Forms.TabPage();
this.colorsgroup3 = new System.Windows.Forms.GroupBox();
this.colorconstants = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorliterals = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorControl1 = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorkeywords = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorlinenumbers = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorcomments = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorplaintext = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorsgroup2 = new System.Windows.Forms.GroupBox();
this.colorselection3d = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorhighlight3d = new CodeImp.DoomBuilder.Interface.ColorControl();
this.colorcrosshair3d = new CodeImp.DoomBuilder.Interface.ColorControl();
label7 = new System.Windows.Forms.Label();
label6 = new System.Windows.Forms.Label();
label5 = new System.Windows.Forms.Label();
this.colorsgroup1.SuspendLayout();
this.tabs.SuspendLayout();
this.tabkeys.SuspendLayout();
this.actioncontrolpanel.SuspendLayout();
this.tabcolors.SuspendLayout();
this.colorsgroup3.SuspendLayout();
this.colorsgroup2.SuspendLayout();
this.SuspendLayout();
//
// label7
@ -80,12 +108,142 @@ namespace CodeImp.DoomBuilder.Interface
label5.TabIndex = 4;
label5.Text = "Press the desired key combination here:";
//
// colorsgroup1
//
this.colorsgroup1.Controls.Add(this.colorgrid64);
this.colorsgroup1.Controls.Add(this.colorgrid);
this.colorsgroup1.Controls.Add(this.colorassociations);
this.colorsgroup1.Controls.Add(this.colorsoundlinedefs);
this.colorsgroup1.Controls.Add(this.colorspeciallinedefs);
this.colorsgroup1.Controls.Add(this.colorbackcolor);
this.colorsgroup1.Controls.Add(this.colorselection);
this.colorsgroup1.Controls.Add(this.colorvertices);
this.colorsgroup1.Controls.Add(this.colorhighlight);
this.colorsgroup1.Controls.Add(this.colorlinedefs);
this.colorsgroup1.Location = new System.Drawing.Point(12, 10);
this.colorsgroup1.Name = "colorsgroup1";
this.colorsgroup1.Size = new System.Drawing.Size(181, 330);
this.colorsgroup1.TabIndex = 10;
this.colorsgroup1.TabStop = false;
this.colorsgroup1.Text = " Classic modes ";
this.colorsgroup1.Visible = false;
//
// colorgrid64
//
this.colorgrid64.BackColor = System.Drawing.SystemColors.Control;
this.colorgrid64.Label = "64 Block grid:";
this.colorgrid64.Location = new System.Drawing.Point(15, 288);
this.colorgrid64.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorgrid64.MinimumSize = new System.Drawing.Size(100, 23);
this.colorgrid64.Name = "colorgrid64";
this.colorgrid64.Size = new System.Drawing.Size(150, 23);
this.colorgrid64.TabIndex = 15;
//
// colorgrid
//
this.colorgrid.BackColor = System.Drawing.SystemColors.Control;
this.colorgrid.Label = "Custom grid:";
this.colorgrid.Location = new System.Drawing.Point(15, 259);
this.colorgrid.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorgrid.MinimumSize = new System.Drawing.Size(100, 23);
this.colorgrid.Name = "colorgrid";
this.colorgrid.Size = new System.Drawing.Size(150, 23);
this.colorgrid.TabIndex = 14;
//
// colorassociations
//
this.colorassociations.BackColor = System.Drawing.SystemColors.Control;
this.colorassociations.Label = "Associations:";
this.colorassociations.Location = new System.Drawing.Point(15, 230);
this.colorassociations.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorassociations.MinimumSize = new System.Drawing.Size(100, 23);
this.colorassociations.Name = "colorassociations";
this.colorassociations.Size = new System.Drawing.Size(150, 23);
this.colorassociations.TabIndex = 13;
//
// colorsoundlinedefs
//
this.colorsoundlinedefs.BackColor = System.Drawing.SystemColors.Control;
this.colorsoundlinedefs.Label = "Sound lines:";
this.colorsoundlinedefs.Location = new System.Drawing.Point(15, 143);
this.colorsoundlinedefs.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorsoundlinedefs.MinimumSize = new System.Drawing.Size(100, 23);
this.colorsoundlinedefs.Name = "colorsoundlinedefs";
this.colorsoundlinedefs.Size = new System.Drawing.Size(150, 23);
this.colorsoundlinedefs.TabIndex = 12;
//
// colorspeciallinedefs
//
this.colorspeciallinedefs.BackColor = System.Drawing.SystemColors.Control;
this.colorspeciallinedefs.Label = "Action lines:";
this.colorspeciallinedefs.Location = new System.Drawing.Point(15, 114);
this.colorspeciallinedefs.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorspeciallinedefs.MinimumSize = new System.Drawing.Size(100, 23);
this.colorspeciallinedefs.Name = "colorspeciallinedefs";
this.colorspeciallinedefs.Size = new System.Drawing.Size(150, 23);
this.colorspeciallinedefs.TabIndex = 11;
//
// colorbackcolor
//
this.colorbackcolor.BackColor = System.Drawing.SystemColors.Control;
this.colorbackcolor.Label = "Background:";
this.colorbackcolor.Location = new System.Drawing.Point(15, 27);
this.colorbackcolor.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorbackcolor.MinimumSize = new System.Drawing.Size(100, 23);
this.colorbackcolor.Name = "colorbackcolor";
this.colorbackcolor.Size = new System.Drawing.Size(150, 23);
this.colorbackcolor.TabIndex = 5;
//
// colorselection
//
this.colorselection.BackColor = System.Drawing.SystemColors.Control;
this.colorselection.Label = "Selection:";
this.colorselection.Location = new System.Drawing.Point(15, 201);
this.colorselection.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorselection.MinimumSize = new System.Drawing.Size(100, 23);
this.colorselection.Name = "colorselection";
this.colorselection.Size = new System.Drawing.Size(150, 23);
this.colorselection.TabIndex = 9;
//
// colorvertices
//
this.colorvertices.BackColor = System.Drawing.SystemColors.Control;
this.colorvertices.Label = "Vertices:";
this.colorvertices.Location = new System.Drawing.Point(15, 56);
this.colorvertices.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorvertices.MinimumSize = new System.Drawing.Size(100, 23);
this.colorvertices.Name = "colorvertices";
this.colorvertices.Size = new System.Drawing.Size(150, 23);
this.colorvertices.TabIndex = 6;
//
// colorhighlight
//
this.colorhighlight.BackColor = System.Drawing.SystemColors.Control;
this.colorhighlight.Label = "Highlight:";
this.colorhighlight.Location = new System.Drawing.Point(15, 172);
this.colorhighlight.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorhighlight.MinimumSize = new System.Drawing.Size(100, 23);
this.colorhighlight.Name = "colorhighlight";
this.colorhighlight.Size = new System.Drawing.Size(150, 23);
this.colorhighlight.TabIndex = 8;
//
// colorlinedefs
//
this.colorlinedefs.BackColor = System.Drawing.SystemColors.Control;
this.colorlinedefs.Label = "Common lines:";
this.colorlinedefs.Location = new System.Drawing.Point(15, 85);
this.colorlinedefs.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorlinedefs.MinimumSize = new System.Drawing.Size(100, 23);
this.colorlinedefs.Name = "colorlinedefs";
this.colorlinedefs.Size = new System.Drawing.Size(150, 23);
this.colorlinedefs.TabIndex = 7;
//
// cancel
//
this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancel.Location = new System.Drawing.Point(497, 406);
this.cancel.Name = "cancel";
this.cancel.Size = new System.Drawing.Size(112, 27);
this.cancel.Size = new System.Drawing.Size(112, 25);
this.cancel.TabIndex = 20;
this.cancel.Text = "Cancel";
this.cancel.UseVisualStyleBackColor = true;
@ -95,7 +253,7 @@ namespace CodeImp.DoomBuilder.Interface
//
this.apply.Location = new System.Drawing.Point(379, 406);
this.apply.Name = "apply";
this.apply.Size = new System.Drawing.Size(112, 27);
this.apply.Size = new System.Drawing.Size(112, 25);
this.apply.TabIndex = 19;
this.apply.Text = "OK";
this.apply.UseVisualStyleBackColor = true;
@ -105,6 +263,7 @@ namespace CodeImp.DoomBuilder.Interface
//
this.tabs.Controls.Add(this.tabinterface);
this.tabs.Controls.Add(this.tabkeys);
this.tabs.Controls.Add(this.tabcolors);
this.tabs.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tabs.ItemSize = new System.Drawing.Size(110, 19);
this.tabs.Location = new System.Drawing.Point(11, 13);
@ -113,6 +272,7 @@ namespace CodeImp.DoomBuilder.Interface
this.tabs.Size = new System.Drawing.Size(598, 379);
this.tabs.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabs.TabIndex = 18;
this.tabs.SelectedIndexChanged += new System.EventHandler(this.tabs_SelectedIndexChanged);
//
// tabinterface
//
@ -246,13 +406,166 @@ namespace CodeImp.DoomBuilder.Interface
this.actiondescription.TabIndex = 3;
this.actiondescription.UseMnemonic = false;
//
// tabcolors
//
this.tabcolors.Controls.Add(this.colorsgroup3);
this.tabcolors.Controls.Add(this.colorsgroup2);
this.tabcolors.Controls.Add(this.colorsgroup1);
this.tabcolors.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tabcolors.Location = new System.Drawing.Point(4, 23);
this.tabcolors.Name = "tabcolors";
this.tabcolors.Size = new System.Drawing.Size(590, 352);
this.tabcolors.TabIndex = 2;
this.tabcolors.Text = "Colors";
this.tabcolors.UseVisualStyleBackColor = true;
//
// colorsgroup3
//
this.colorsgroup3.Controls.Add(this.colorconstants);
this.colorsgroup3.Controls.Add(this.colorliterals);
this.colorsgroup3.Controls.Add(this.colorControl1);
this.colorsgroup3.Controls.Add(this.colorkeywords);
this.colorsgroup3.Controls.Add(this.colorlinenumbers);
this.colorsgroup3.Controls.Add(this.colorcomments);
this.colorsgroup3.Controls.Add(this.colorplaintext);
this.colorsgroup3.Location = new System.Drawing.Point(398, 10);
this.colorsgroup3.Name = "colorsgroup3";
this.colorsgroup3.Size = new System.Drawing.Size(181, 330);
this.colorsgroup3.TabIndex = 12;
this.colorsgroup3.TabStop = false;
this.colorsgroup3.Text = " Script editor ";
this.colorsgroup3.Visible = false;
//
// colorconstants
//
this.colorconstants.BackColor = System.Drawing.SystemColors.Control;
this.colorconstants.Label = "Constants:";
this.colorconstants.Location = new System.Drawing.Point(15, 201);
this.colorconstants.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorconstants.MinimumSize = new System.Drawing.Size(100, 23);
this.colorconstants.Name = "colorconstants";
this.colorconstants.Size = new System.Drawing.Size(150, 23);
this.colorconstants.TabIndex = 16;
//
// colorliterals
//
this.colorliterals.BackColor = System.Drawing.SystemColors.Control;
this.colorliterals.Label = "Literals:";
this.colorliterals.Location = new System.Drawing.Point(15, 172);
this.colorliterals.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorliterals.MinimumSize = new System.Drawing.Size(100, 23);
this.colorliterals.Name = "colorliterals";
this.colorliterals.Size = new System.Drawing.Size(150, 23);
this.colorliterals.TabIndex = 15;
//
// colorControl1
//
this.colorControl1.BackColor = System.Drawing.SystemColors.Control;
this.colorControl1.Label = "Background:";
this.colorControl1.Location = new System.Drawing.Point(15, 27);
this.colorControl1.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorControl1.MinimumSize = new System.Drawing.Size(100, 23);
this.colorControl1.Name = "colorControl1";
this.colorControl1.Size = new System.Drawing.Size(150, 23);
this.colorControl1.TabIndex = 10;
//
// colorkeywords
//
this.colorkeywords.BackColor = System.Drawing.SystemColors.Control;
this.colorkeywords.Label = "Keywords:";
this.colorkeywords.Location = new System.Drawing.Point(15, 143);
this.colorkeywords.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorkeywords.MinimumSize = new System.Drawing.Size(100, 23);
this.colorkeywords.Name = "colorkeywords";
this.colorkeywords.Size = new System.Drawing.Size(150, 23);
this.colorkeywords.TabIndex = 14;
//
// colorlinenumbers
//
this.colorlinenumbers.BackColor = System.Drawing.SystemColors.Control;
this.colorlinenumbers.Label = "Line numbers:";
this.colorlinenumbers.Location = new System.Drawing.Point(15, 56);
this.colorlinenumbers.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorlinenumbers.MinimumSize = new System.Drawing.Size(100, 23);
this.colorlinenumbers.Name = "colorlinenumbers";
this.colorlinenumbers.Size = new System.Drawing.Size(150, 23);
this.colorlinenumbers.TabIndex = 11;
//
// colorcomments
//
this.colorcomments.BackColor = System.Drawing.SystemColors.Control;
this.colorcomments.Label = "Comments:";
this.colorcomments.Location = new System.Drawing.Point(15, 114);
this.colorcomments.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorcomments.MinimumSize = new System.Drawing.Size(100, 23);
this.colorcomments.Name = "colorcomments";
this.colorcomments.Size = new System.Drawing.Size(150, 23);
this.colorcomments.TabIndex = 13;
//
// colorplaintext
//
this.colorplaintext.BackColor = System.Drawing.SystemColors.Control;
this.colorplaintext.Label = "Plain text:";
this.colorplaintext.Location = new System.Drawing.Point(15, 85);
this.colorplaintext.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorplaintext.MinimumSize = new System.Drawing.Size(100, 23);
this.colorplaintext.Name = "colorplaintext";
this.colorplaintext.Size = new System.Drawing.Size(150, 23);
this.colorplaintext.TabIndex = 12;
//
// colorsgroup2
//
this.colorsgroup2.Controls.Add(this.colorselection3d);
this.colorsgroup2.Controls.Add(this.colorhighlight3d);
this.colorsgroup2.Controls.Add(this.colorcrosshair3d);
this.colorsgroup2.Location = new System.Drawing.Point(205, 10);
this.colorsgroup2.Name = "colorsgroup2";
this.colorsgroup2.Size = new System.Drawing.Size(181, 330);
this.colorsgroup2.TabIndex = 11;
this.colorsgroup2.TabStop = false;
this.colorsgroup2.Text = " 3D mode ";
this.colorsgroup2.Visible = false;
//
// colorselection3d
//
this.colorselection3d.BackColor = System.Drawing.SystemColors.Control;
this.colorselection3d.Label = "Selection:";
this.colorselection3d.Location = new System.Drawing.Point(15, 85);
this.colorselection3d.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorselection3d.MinimumSize = new System.Drawing.Size(100, 23);
this.colorselection3d.Name = "colorselection3d";
this.colorselection3d.Size = new System.Drawing.Size(150, 23);
this.colorselection3d.TabIndex = 8;
//
// colorhighlight3d
//
this.colorhighlight3d.BackColor = System.Drawing.SystemColors.Control;
this.colorhighlight3d.Label = "Highlight:";
this.colorhighlight3d.Location = new System.Drawing.Point(15, 56);
this.colorhighlight3d.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorhighlight3d.MinimumSize = new System.Drawing.Size(100, 23);
this.colorhighlight3d.Name = "colorhighlight3d";
this.colorhighlight3d.Size = new System.Drawing.Size(150, 23);
this.colorhighlight3d.TabIndex = 7;
//
// colorcrosshair3d
//
this.colorcrosshair3d.BackColor = System.Drawing.SystemColors.Control;
this.colorcrosshair3d.Label = "Crosshair:";
this.colorcrosshair3d.Location = new System.Drawing.Point(15, 27);
this.colorcrosshair3d.MaximumSize = new System.Drawing.Size(10000, 23);
this.colorcrosshair3d.MinimumSize = new System.Drawing.Size(100, 23);
this.colorcrosshair3d.Name = "colorcrosshair3d";
this.colorcrosshair3d.Size = new System.Drawing.Size(150, 23);
this.colorcrosshair3d.TabIndex = 6;
//
// PreferencesForm
//
this.AcceptButton = this.apply;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancel;
this.ClientSize = new System.Drawing.Size(619, 442);
this.ClientSize = new System.Drawing.Size(619, 440);
this.Controls.Add(this.cancel);
this.Controls.Add(this.apply);
this.Controls.Add(this.tabs);
@ -265,10 +578,14 @@ namespace CodeImp.DoomBuilder.Interface
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Preferences";
this.colorsgroup1.ResumeLayout(false);
this.tabs.ResumeLayout(false);
this.tabkeys.ResumeLayout(false);
this.actioncontrolpanel.ResumeLayout(false);
this.actioncontrolpanel.PerformLayout();
this.tabcolors.ResumeLayout(false);
this.colorsgroup3.ResumeLayout(false);
this.colorsgroup2.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -289,5 +606,29 @@ namespace CodeImp.DoomBuilder.Interface
private System.Windows.Forms.Button actioncontrolclear;
private System.Windows.Forms.TextBox actionkey;
private System.Windows.Forms.Label actiondescription;
private System.Windows.Forms.TabPage tabcolors;
private ColorControl colorselection;
private ColorControl colorhighlight;
private ColorControl colorlinedefs;
private ColorControl colorvertices;
private ColorControl colorbackcolor;
private System.Windows.Forms.GroupBox colorsgroup3;
private System.Windows.Forms.GroupBox colorsgroup2;
private ColorControl colorselection3d;
private ColorControl colorhighlight3d;
private ColorControl colorcrosshair3d;
private ColorControl colorControl1;
private ColorControl colorkeywords;
private ColorControl colorlinenumbers;
private ColorControl colorcomments;
private ColorControl colorplaintext;
private ColorControl colorliterals;
private ColorControl colorconstants;
private ColorControl colorspeciallinedefs;
private ColorControl colorsoundlinedefs;
private ColorControl colorassociations;
private ColorControl colorgrid64;
private ColorControl colorgrid;
private System.Windows.Forms.GroupBox colorsgroup1;
}
}

View file

@ -279,5 +279,19 @@ namespace CodeImp.DoomBuilder.Interface
}
#endregion
#region ================== Tabs
// Tab changes
private void tabs_SelectedIndexChanged(object sender, EventArgs e)
{
if(tabs.SelectedTab != tabkeys) this.AcceptButton = apply; else this.AcceptButton = null;
if(tabs.SelectedTab != tabkeys) this.CancelButton = cancel; else this.CancelButton = null;
colorsgroup1.Visible = (tabs.SelectedTab == tabcolors);
colorsgroup2.Visible = (tabs.SelectedTab == tabcolors);
colorsgroup3.Visible = (tabs.SelectedTab == tabcolors);
}
#endregion
}
}

View file

@ -150,39 +150,12 @@
<metadata name="tabkeys.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="tabinterface.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="tabkeys.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="listactions.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actioncontrolpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="listactions.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actioncontrolpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actioncontrol.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actiontitle.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actioncontrolclear.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actionkey.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actiondescription.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="actioncontrol.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>

View file

@ -70,6 +70,9 @@ namespace CodeImp.DoomBuilder.Map
private int tag;
private byte[] args;
// Selections
private int selected;
// Disposing
private bool isdisposed = false;
@ -86,6 +89,7 @@ namespace CodeImp.DoomBuilder.Map
public int Flags { get { return flags; } }
public int Action { get { return action; } }
public int Tag { get { return tag; } }
public int Selected { get { return selected; } set { selected = value; } }
#endregion

193
Source/Map/MapSelection.cs Normal file
View file

@ -0,0 +1,193 @@
#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using CodeImp.DoomBuilder.Geometry;
#endregion
namespace CodeImp.DoomBuilder.Map
{
internal class MapSelection : IDisposable
{
#region ================== Constants
#endregion
#region ================== Variables
// Selected items
private List<Vertex> vertices;
private List<Linedef> linedefs;
private List<Sector> sectors;
private List<Thing> things;
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
public ICollection<Vertex> Vertices { get { return vertices; } }
public ICollection<Linedef> Linedefs { get { return linedefs; } }
public ICollection<Sector> Sectors { get { return sectors; } }
public ICollection<Thing> Things { get { return things; } }
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public MapSelection()
{
// Initialize
vertices = new List<Vertex>();
linedefs = new List<Linedef>();
sectors = new List<Sector>();
things = new List<Thing>();
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
ClearThings();
ClearSectors();
ClearLinedefs();
ClearVertices();
// Done
isdisposed = true;
}
}
#endregion
#region ================== Management
// This adds a vertex
public void AddVertex(Vertex v)
{
// Select it
v.Selected++;
vertices.Add(v);
}
// This adds a linedef
public void AddLinedef(Linedef l)
{
// Select it
l.Selected++;
linedefs.Add(l);
}
// This adds a sector
public void AddSector(Sector s)
{
// Select it
s.Selected++;
sectors.Add(s);
}
// This adds a thing
public void AddThing(Thing t)
{
// Select it
t.Selected++;
things.Add(t);
}
// This removes a vertex
public void RemoveVertex(Vertex v)
{
// Remove it
v.Selected--;
vertices.Remove(v);
}
// This adds a linedef
public void RemoveLinedef(Linedef l)
{
// Remove it
l.Selected--;
linedefs.Remove(l);
}
// This adds a sector
public void RemoveSector(Sector s)
{
// Remove it
s.Selected--;
sectors.Remove(s);
}
// This adds a thing
public void RemoveThing(Thing t)
{
// Remove it
t.Selected--;
things.Remove(t);
}
// This clears vertices
public void ClearVertices()
{
// Remove it
foreach(Vertex v in vertices) v.Selected--;
vertices.Clear();
}
// This clears linedefs
public void ClearLinedefs()
{
// Remove it
foreach(Linedef l in linedefs) l.Selected--;
linedefs.Clear();
}
// This clears sectors
public void ClearSectors()
{
// Remove it
foreach(Sector s in sectors) s.Selected--;
sectors.Clear();
}
// This clears things
public void ClearThings()
{
// Remove it
foreach(Thing t in things) t.Selected--;
things.Clear();
}
#endregion
}
}

View file

@ -55,6 +55,9 @@ namespace CodeImp.DoomBuilder.Map
private int tag;
private int brightness;
// Selections
private int selected;
// Disposing
private bool isdisposed = false;
@ -71,6 +74,7 @@ namespace CodeImp.DoomBuilder.Map
public int Special { get { return special; } }
public int Tag { get { return tag; } }
public int Brightness { get { return brightness; } }
public int Selected { get { return selected; } set { selected = value; } }
#endregion

View file

@ -55,6 +55,9 @@ namespace CodeImp.DoomBuilder.Map
private int tag;
private int action;
private byte[] args;
// Selections
private int selected;
// Disposing
private bool isdisposed = false;
@ -69,6 +72,7 @@ namespace CodeImp.DoomBuilder.Map
public bool IsDisposed { get { return isdisposed; } }
public float Angle { get { return angle; } }
public int Flags { get { return flags; } }
public int Selected { get { return selected; } set { selected = value; } }
#endregion

View file

@ -53,6 +53,9 @@ namespace CodeImp.DoomBuilder.Map
// References
private LinkedList<Linedef> linedefs;
// Selections
private int selected;
// Disposing
private bool isdisposed = false;
@ -67,6 +70,7 @@ namespace CodeImp.DoomBuilder.Map
public int X { get { return x; } }
public int Y { get { return y; } }
public bool IsDisposed { get { return isdisposed; } }
public int Selected { get { return selected; } set { selected = value; } }
#endregion

View file

@ -60,6 +60,13 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static System.Drawing.Bitmap ColorPick {
get {
object obj = ResourceManager.GetObject("ColorPick", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap File {
get {
object obj = ResourceManager.GetObject("File", resourceCulture);

View file

@ -118,28 +118,31 @@
<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="OpenMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\OpenMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Splash2small" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash2small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SaveMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SaveMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="NewMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\NewMap2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Splash2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="File" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\NewMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="OpenMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\OpenMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Splash2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="NewMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\NewMap2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SaveMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SaveMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Properties.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>
</root>

View file

@ -37,7 +37,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.Rendering
{
internal class Base2DShader : D3DShader
internal sealed class Base2DShader : D3DShader
{
#region ================== Variables

View file

@ -0,0 +1,123 @@
#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Reflection;
using System.Drawing;
using CodeImp.DoomBuilder.IO;
#endregion
namespace CodeImp.DoomBuilder.Rendering
{
internal sealed class ColorCollection
{
#region ================== Constants
#endregion
#region ================== Variables
// Colors
private Dictionary<string, ColorSetting> colors;
#endregion
#region ================== Properties
private ColorSetting Background { get { return colors["background"]; } }
private ColorSetting Vertex { get { return colors["vertex"]; } }
private ColorSetting Linedef { get { return colors["linedef"]; } }
private ColorSetting Highlight { get { return colors["highlight"]; } }
private ColorSetting Selection { get { return colors["selection"]; } }
#endregion
#region ================== Constructor / Disposer
// Constructor for settings from configuration
public ColorCollection(Configuration cfg)
{
IDictionary cs;
// Initialize
colors = new Dictionary<string, ColorSetting>();
// Read all colors from config
cs = cfg.ReadSetting("colors", new Hashtable());
foreach(DictionaryEntry c in cs)
{
// Add color
if(c.Value is int)
colors.Add(c.Key.ToString(), new ColorSetting(c.Key.ToString(), PixelColor.FromInt((int)c.Value)));
}
// We have no destructor
GC.SuppressFinalize(this);
}
// Copy constructor
public ColorCollection(ColorCollection collection)
{
// Initialize
colors = new Dictionary<string, ColorSetting>();
// Go for all elements in the original collection
foreach(KeyValuePair<string, ColorSetting> c in collection.colors)
{
// Copy
colors.Add(c.Key, new ColorSetting(c.Key, c.Value.Color));
}
// We have no destructor
GC.SuppressFinalize(this);
}
#endregion
#region ================== Methods
// This applies colors to this collection
public void Apply(ColorCollection collection)
{
// Go for all elements in the original collection
foreach(KeyValuePair<string, ColorSetting> c in collection.colors)
{
// Add or update
colors[c.Key] = new ColorSetting(c.Key, c.Value.Color);
}
}
// This saves colors to configuration
public void SaveColors(Configuration cfg)
{
// Go for all elements in the original collection
foreach(KeyValuePair<string, ColorSetting> c in colors)
{
// Write to configuration
cfg.WriteSetting("colors." + c.Key, c.Value.Color.ToInt());
}
}
#endregion
}
}

View file

@ -0,0 +1,82 @@
#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Reflection;
using System.Drawing;
#endregion
namespace CodeImp.DoomBuilder.Rendering
{
internal sealed class ColorSetting : IEquatable<ColorSetting>
{
#region ================== Constants
#endregion
#region ================== Variables
private string name;
private PixelColor color;
#endregion
#region ================== Properties
public PixelColor Color { get { return color; } }
public string Name { get { return name; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public ColorSetting(string name, PixelColor color)
{
// Initialize
this.name = name;
this.color = color;
// We have no destructor
GC.SuppressFinalize(this);
}
#endregion
#region ================== Methods
// Equal?
public bool Equals(ColorSetting other)
{
return this.name == other.name;
}
// To PixelColor
public static implicit operator PixelColor(ColorSetting c)
{
return c.color;
}
#endregion
}
}

View file

@ -78,6 +78,12 @@ namespace CodeImp.DoomBuilder.Rendering
return FromColor(Color.FromArgb(c));
}
// To int
public int ToInt()
{
return Color.FromArgb(a, r, g, b).ToArgb();
}
#endregion
#region ================== Methods

View file

@ -37,7 +37,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.Rendering
{
internal unsafe class Plotter
internal unsafe sealed class Plotter
{
#region ================== Constants

View file

@ -198,7 +198,7 @@ namespace CodeImp.DoomBuilder.Rendering
}
// This begins a drawing session
public unsafe bool StartRendering()
public unsafe bool StartRendering(bool cleardisplay)
{
LockedRect rect;
@ -210,8 +210,8 @@ namespace CodeImp.DoomBuilder.Rendering
// Create plotter
plotter = new Plotter((PixelColor*)rect.Data.DataPointer.ToPointer(), rect.Pitch / sizeof(PixelColor), pheight, width, height);
plotter.Clear();
if(cleardisplay) plotter.Clear();
// Ready for rendering
return true;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B