diff -r f3749624973173fd8d694da660e0433ed7c26e50 -r 08bf2cedf0798c62217888da9eb7f32beb451d11 README
--- a/README Thu Nov 27 22:42:06 2014 -0600
+++ b/README Fri Nov 28 19:16:37 2014 -0600
@@ -31,16 +31,17 @@
Official versions can be downloaded here:
- http://code.google.com/p/axiosengine/downloads/list
+ https://srchub.org/p/axiosengine/downloads/
Of course you can always build from source from:
- http://code.google.com/p/axiosengine/source/checkout
+ https://srchub.org/hg/axiosengine
Authors
-------
General questions/comments/concerns can be directed at:
+
Nathan Adams - adamsna[at]datanethost.net
Contributors:
@@ -65,4 +66,7 @@
http://xnacc.codeplex.com/
-Portions of this product are (C) 2009-2011 JRTwine Software, LLC
\ No newline at end of file
+Portions of this product are (C) 2009-2011 JRTwine Software, LLC
+
+Prompt Factory - By Blaze Phoenix
+http://stackoverflow.com/a/17260476/195722
diff -r f3749624973173fd8d694da660e0433ed7c26e50 -r 08bf2cedf0798c62217888da9eb7f32beb451d11 axios/Axios_Windows.csproj
--- a/axios/Axios_Windows.csproj Thu Nov 27 22:42:06 2014 -0600
+++ b/axios/Axios_Windows.csproj Fri Nov 28 19:16:37 2014 -0600
@@ -249,6 +249,7 @@
+
diff -r f3749624973173fd8d694da660e0433ed7c26e50 -r 08bf2cedf0798c62217888da9eb7f32beb451d11 axios/Factories/Prompt.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/axios/Factories/Prompt.cs Fri Nov 28 19:16:37 2014 -0600
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace Axios.Factories
+{
+ public static class Prompt
+ {
+ // Copied from http://stackoverflow.com/a/17260476/195722
+ // Written by Blaze Phoenix
+ ///
+ /// Creates a rounded rectangle
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Texture2D CreateRoundedRectangleTexture(this GraphicsDevice graphics, int width, int height, int borderThickness, int borderRadius, int borderShadow, List backgroundColors, List borderColors, float initialShadowIntensity, float finalShadowIntensity)
+ {
+ if (backgroundColors == null || backgroundColors.Count == 0) throw new ArgumentException("Must define at least one background color (up to four).");
+ if (borderColors == null || borderColors.Count == 0) throw new ArgumentException("Must define at least one border color (up to three).");
+ if (borderRadius < 1) throw new ArgumentException("Must define a border radius (rounds off edges).");
+ if (borderThickness < 1) throw new ArgumentException("Must define border thikness.");
+ if (borderThickness + borderRadius > height / 2 || borderThickness + borderRadius > width / 2) throw new ArgumentException("Border will be too thick and/or rounded to fit on the texture.");
+ if (borderShadow > borderRadius) throw new ArgumentException("Border shadow must be lesser in magnitude than the border radius (suggeted: shadow <= 0.25 * radius).");
+
+ Texture2D texture = new Texture2D(graphics, width, height, false, SurfaceFormat.Color);
+ Color[] color = new Color[width * height];
+
+ for (int x = 0; x < texture.Width; x++)
+ {
+ for (int y = 0; y < texture.Height; y++)
+ {
+ switch (backgroundColors.Count)
+ {
+ case 4:
+ Color leftColor0 = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)y / (width - 1)));
+ Color rightColor0 = Color.Lerp(backgroundColors[2], backgroundColors[3], ((float)y / (height - 1)));
+ color[x + width * y] = Color.Lerp(leftColor0, rightColor0, ((float)x / (width - 1)));
+ break;
+ case 3:
+ Color leftColor1 = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)y / (width - 1)));
+ Color rightColor1 = Color.Lerp(backgroundColors[1], backgroundColors[2], ((float)y / (height - 1)));
+ color[x + width * y] = Color.Lerp(leftColor1, rightColor1, ((float)x / (width - 1)));
+ break;
+ case 2:
+ color[x + width * y] = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)x / (width - 1)));
+ break;
+ default:
+ color[x + width * y] = backgroundColors[0];
+ break;
+ }
+
+ color[x + width * y] = ColorBorder(x, y, width, height, borderThickness, borderRadius, borderShadow, color[x + width * y], borderColors, initialShadowIntensity, finalShadowIntensity);
+ }
+ }
+
+ texture.SetData(color);
+ return texture;
+ }
+
+ private static Color ColorBorder(int x, int y, int width, int height, int borderThickness, int borderRadius, int borderShadow, Color initialColor, List borderColors, float initialShadowIntensity, float finalShadowIntensity)
+ {
+ Rectangle internalRectangle = new Rectangle((borderThickness + borderRadius), (borderThickness + borderRadius), width - 2 * (borderThickness + borderRadius), height - 2 * (borderThickness + borderRadius));
+
+ if (internalRectangle.Contains(x, y)) return initialColor;
+
+ Vector2 origin = Vector2.Zero;
+ Vector2 point = new Vector2(x, y);
+
+ if (x < borderThickness + borderRadius)
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(borderRadius + borderThickness, borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(borderRadius + borderThickness, height - (borderRadius + borderThickness));
+ else
+ origin = new Vector2(borderRadius + borderThickness, y);
+ }
+ else if (x > width - (borderRadius + borderThickness))
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(width - (borderRadius + borderThickness), borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(width - (borderRadius + borderThickness), height - (borderRadius + borderThickness));
+ else
+ origin = new Vector2(width - (borderRadius + borderThickness), y);
+ }
+ else
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(x, borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(x, height - (borderRadius + borderThickness));
+ }
+
+ if (!origin.Equals(Vector2.Zero))
+ {
+ float distance = Vector2.Distance(point, origin);
+
+ if (distance > borderRadius + borderThickness + 1)
+ {
+ return Color.Transparent;
+ }
+ else if (distance > borderRadius + 1)
+ {
+ if (borderColors.Count > 2)
+ {
+ float modNum = distance - borderRadius;
+
+ if (modNum < borderThickness / 2)
+ {
+ return Color.Lerp(borderColors[2], borderColors[1], (float)((modNum) / (borderThickness / 2.0)));
+ }
+ else
+ {
+ return Color.Lerp(borderColors[1], borderColors[0], (float)((modNum - (borderThickness / 2.0)) / (borderThickness / 2.0)));
+ }
+ }
+
+
+ if (borderColors.Count > 0)
+ return borderColors[0];
+ }
+ else if (distance > borderRadius - borderShadow + 1)
+ {
+ float mod = (distance - (borderRadius - borderShadow)) / borderShadow;
+ float shadowDiff = initialShadowIntensity - finalShadowIntensity;
+ return DarkenColor(initialColor, ((shadowDiff * mod) + finalShadowIntensity));
+ }
+ }
+
+ return initialColor;
+ }
+
+ private static Color DarkenColor(Color color, float shadowIntensity)
+ {
+ return Color.Lerp(color, Color.Black, shadowIntensity);
+ }
+ }
+}