function NumberColumn(x, y, w, h, number) { //Основной прямоугольник var rAll = new Rectangle(x, y, w, h); //Текущий статус по простою var prostoy = false; /*Проценты поднимаются снизу вверх (false) *или слева направо (true)*/ var rotate = false; /*Функции для работы с координатами * основного прямоугольника */ this.X = function (val) { if (val === undefined) return rAll().X(); rAll().X(val); }; this.Y = function (val) { if (val === undefined) return rAll().Y(); rAll().Y(val); }; this.W = function (val) { if (val === undefined) return rAll().W(); rAll().W(val); }; this.H = function (val) { if (val === undefined) return rAll().H(); rAll().H(val); }; //Функция изменения начальной координаты и размеров прямоугольника this.RectParam = function (_x, _y, _w, _h) { rAll.RectParam(_x, _y, _w, _h); }; //Функция изменения прямоугольника по другому прямоугольнику this.Rect = function (val) { if (val === undefined) return rAll; rAll.Rect(val); }; //Функция установки номера this.Number = function (val) { if (val === undefined) return number; var v = parseInt(val); number = (isNaN(v) || v < 0) ? 0 : v; }; this.Number(number); //Функция установки статуса по простою this.Prostoy = function (val) { if (val === undefined) return prostoy; prostoy = (typeof val === 'boolean') ? val : false; }; //Изменение направления отрисовки текста this.Rotate = function (val) { if (val === undefined) return rotate; rotate = (typeof val === 'boolean') ? val : false; }; //Печать номера this.Print = function (ctx) { ctx.fillStyle = (!prostoy) ? '#ff0' : '#ff8000'; ctx.fillRect(rAll.X(), rAll.Y(), rAll.W(), rAll.H()); ctx.strokeStyle = '#000';//'#333' ctx.strokeRect(rAll.X(), rAll.Y(), rAll.W(), rAll.H()); ctx.save(); ctx.translate(rAll.X() + rAll.W() / 2, rAll.Y() + rAll.H() / 2); if (rotate) ctx.rotate(3 * Math.PI / 2); ctx.fillStyle = '#000'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; var px = rAll.H() < rAll.W() ? rAll.H() - 3 : rAll.W() - 3; px = px < 0 ? 0 : px; ctx.font = px + 'px Arial'; ctx.fillText(number, 0, 0); ctx.restore(); }; }