mattercontrol/ControlElements/ImageButtonFactory.cs
larsbrubaker e8247a8481 Put all the icons into the icons directory
Lots of work on printing from SD card
Put in hardware options to describe printer settings (fan, heated bed, sd card)
moved icons into subdirectory.
2014-06-19 11:25:28 -07:00

78 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using MatterHackers.Agg;
using MatterHackers.Agg.Image;
using MatterHackers.Agg.UI;
using MatterHackers.Agg.OpenGlGui;
using MatterHackers.PolygonMesh;
using MatterHackers.RenderOpenGl;
using MatterHackers.VectorMath;
using MatterHackers.Agg.VertexSource;
using MatterHackers.MatterControl.DataStorage;
using MatterHackers.Agg.ImageProcessing;
namespace MatterHackers.MatterControl
{
public class ImageButtonFactory
{
public bool invertImageColor = true;
public Button Generate(string normalImageName, string hoverImageName, string pressedImageName = null, string disabledImageName = null)
{
if (pressedImageName == null)
{
pressedImageName = hoverImageName;
}
if (disabledImageName == null)
{
disabledImageName = normalImageName;
}
Agg.Image.ImageBuffer normalImage = new Agg.Image.ImageBuffer();
Agg.Image.ImageBuffer pressedImage = new Agg.Image.ImageBuffer();
Agg.Image.ImageBuffer hoverImage = new Agg.Image.ImageBuffer();
Agg.Image.ImageBuffer disabledImage = new Agg.Image.ImageBuffer();
ImageIO.LoadImageData(this.GetImageLocation(normalImageName), normalImage);
ImageIO.LoadImageData(this.GetImageLocation(pressedImageName), pressedImage);
ImageIO.LoadImageData(this.GetImageLocation(hoverImageName), hoverImage);
ImageIO.LoadImageData(this.GetImageLocation(disabledImageName), disabledImage);
if (!ActiveTheme.Instance.IsDarkTheme && invertImageColor)
{
InvertLightness.DoInvertLightness(normalImage);
InvertLightness.DoInvertLightness(pressedImage);
InvertLightness.DoInvertLightness(hoverImage);
InvertLightness.DoInvertLightness(disabledImage);
}
//normalImage.NewGraphics2D().Line(0, 0, normalImage.Width, normalImage.Height, RGBA_Bytes.Violet);
//pressedImage.NewGraphics2D().Line(0, 0, normalImage.Width, normalImage.Height, RGBA_Bytes.Violet);
ButtonViewStates buttonViewWidget = new ButtonViewStates(
new ImageWidget(normalImage),
new ImageWidget(hoverImage),
new ImageWidget(pressedImage),
new ImageWidget(disabledImage)
);
//Create button based on view container widget
Button imageButton = new Button(0, 0, buttonViewWidget);
imageButton.Margin = new BorderDouble(0);
imageButton.Padding = new BorderDouble(0);
return imageButton;
}
private string GetImageLocation(string imageName)
{
return Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "Icons", imageName);
}
}
}