Ejemplo n.º 1
0
        public static ConsoleShapePart CreateShape(string shapeType, int[] param, Color color, Color bcolor,
                                                   bool colorchanged)
        {
            var type = shapeType.ToLower();

            colorchanged = colorchanged || color != Config.ForeColor;
            var sb = new StringBuilder();

            sb.Append("<shape type='");
            sb.Append(type);
            sb.Append("' param='");
            for (var i = 0; i < param.Length; i++)
            {
                sb.Append(param[i].ToString());
                if (i < param.Length - 1)
                {
                    sb.Append(", ");
                }
            }
            sb.Append("'");
            if (colorchanged)
            {
                sb.Append(" color='");
                sb.Append(HtmlManager.GetColorToString(color));
                sb.Append("'");
            }
            if (bcolor != Config.FocusColor)
            {
                sb.Append(" bcolor='");
                sb.Append(HtmlManager.GetColorToString(bcolor));
                sb.Append("'");
            }
            sb.Append(">");
            ConsoleShapePart ret = null;
            var lineHeight       = Config.FontSize;
            var paramPixel       = new float[param.Length];

            for (var i = 0; i < param.Length; i++)
            {
                paramPixel[i] = (float)param[i] * lineHeight / 100f;
            }
            RectangleF rectF;

            switch (type)
            {
            case "space":
                if (paramPixel.Length == 1 && paramPixel[0] >= 0)
                {
                    rectF = new RectangleF(0, 0, paramPixel[0], lineHeight);
                    ret   = new ConsoleSpacePart(rectF);
                }
                break;

            case "rect":
                if (paramPixel.Length == 1 && paramPixel[0] > 0)
                {
                    rectF = new RectangleF(0, 0, paramPixel[0], lineHeight);
                    ret   = new ConsoleRectangleShapePart(rectF);
                }
                else if (paramPixel.Length == 4)
                {
                    rectF = new RectangleF(paramPixel[0], paramPixel[1], paramPixel[2], paramPixel[3]);
                    //1820a12 サイズ上限撤廃
                    if (rectF.X >= 0 && rectF.Width > 0 && rectF.Height > 0)
                    {
                        //	rectF.Y >= 0 && (rectF.Y + rectF.Height) <= lineHeight)
                        ret = new ConsoleRectangleShapePart(rectF);
                    }
                }
                break;

            case "polygon":
                break;
            }
            if (ret == null)
            {
                ret = new ConsoleErrorShapePart(sb.ToString());
            }
            ret.AltText      = sb.ToString();
            ret.Color        = color;
            ret.ButtonColor  = bcolor;
            ret.colorChanged = colorchanged;
            return(ret);
        }