Кое-что о создании линий

Разбивка на шаги:

  1. Создание линии;
  2. Загрузка изображений;
  3. Настройка изображений и выбор цветов (если svg);
  4. Выбор объектов;
  5. Настройка наложения изображений.

В 1м шаге вводится название и описание линии, выбирается из списка магазин, если их у пользователя несколько, и нажимается кнопка "Создать линию!".
После этого действия, как ни странно, линия уже существует. По крайней мере мне от этого шага требуется лишь формирование ID линии. Ну а пользователь, например, может прерваться, если чувствует, что уже устал создавать линию =), закрыть сайт, выключить компьютер, а на следующий день вспомнить о ней, увидев в списке своих линий, и продолжить создание.

Во 2м шаге все просто - для всех возможных видов даем возможность загрузить либо растровые (JPG, GIF, PNG), либо векторные (SVG) картинки. Причем надо будет прикрепить хотя бы одну картинку, т.к. если пусто - шаг 2 повторяется.
Пока сделаем ограничение - используются только 2 вида: спереди и сзади (П/З). Когда дело дойдет до календарей например, надо будет совершенно другой механизм придумывать - в линию они пока никак не вписываются.

Шаг 3 касается в основном варианта с загрузкой SVG-изображений. Хотя при загрузке растров в этом шаге тоже есть некоторые операции: преобразование изображений в JPG и ограничение цветов только белым. Но эти действия выполняются автоматически, поэтому не видны пользователю.
Для SVG выводится страница со всеми возможными вариантами наложения (комбинация всех цветов и всех видов). На этой странице можно настраивать цвета на изображениях, а также "отключать" цвета, которые не хочется использовать в линии (хотя я бы при создании ничего не отключал и делал по-максимуму =) ).
На выходе этого шага получаем список изображений (и сами изображения на сервере), а также список возможных цветов. Эти данные также сохраняются, и тут у пользователя опять возникает возможность прерваться и продолжить создавать линию позже. Хотя он не прервется, а пойдет дальше, т.к. уже увлечен процессом создания собственной линии товаров.

В 4м шаге выводится список товаров, разбитый по категориям, и пользователь должен выбрать те, которые попадут в его линию.
Вариант, когда ничего не выбрано, опять не пройдет.
И еще на всякий случай скажу, что в этот список попадут все товары, у которых есть вид "П" или "З" (или оба), остальные товары создаются "какими-то другими методами". Но ужасного здесь думаю не много, т.к. почти все товары (кроме календарей) подошли.
Список выбранных товаров сохраняется, т.е. тут тоже получается промежуточная точка.

Ну и самый интересный - 5й шаг. Рассмотрим его отдельно.

Наложение изображений

Тут надо дать пользователю возможность настроить размеры и положения изображений на продукции.

Достаточно сложно было все свести к единому алгоритму, но вроде варианты решения все-таки есть.

Перечислю некоторые описания - они будут учитываться при постороении механизма наложения:

  • Флаг "основной логотип":
    • для "односторонних" товаров - выбор наносимого изображения (если несколько);
    • для "двусторонних" - изменение "П" <=> "З".
    Причем если изменяется на одностороннем предмете - влияет только на односторонние (но на все!), с двусторонними таже история, но отдельно от односторонних.
  • Возможность выбора "специальной области" на виде. Например для вида спереди область "карман" - у всех предметов, имеющих данную область на виде спереди произойдет изменение наложения изображений, у остальных изображение наложится по-максимуму на сам "вид спереди" (или вообще не наложится???).
  • Одно из свойств каждого вида объекта - возможность двигать и изменять размер.
    Например у футболок: "П" - можно, "З" - можно. У поло - "П" - нельзя, "З" - можно. У стрингов наверно "П" - нельзя. У кружек наверно "П" - можно... (это только для примера =) ).
  • Еще одно свойство - тип фона. Он может быть обычным и необычным. Необычный - это для часов и подобных вещей, чтоб фон располагать над изображением. Естественно в данном случае фон должен быть в формате PNG или GIF с прозрачностями.
  • Для каждого вида каждого объекта - раположение и размеры области печати в пикселях.
    С реальными размерами в см сложнее из-за наличия наклеек... Придумаю что-нибудь - будет изменяться в зависимости от выбранного размера.
Вроде все категории объектов охватил... Если что вспомню - тоже сюда надо будет дописать.

Теперь о размерах и положении изображения.

С размерностями каша. Единственный разумный вариант увидел на spreadshirt'e, где размер меняется в процентах. Таким образом по-умолчанию изображение располагается в середине области и имеет максимальные размеры - 100%. После этого можно уменьшать его и двигать. При движении смотреть, чтоб не вылезло ничего, при увеличении - тоже + проверка максимума (100%). И еще для изначально растровых изображений надо как-то учитывать максимальный размер печати, но это уже детали.
С перемещением изображений та же ситуация - все в относительных величинах, т.е. сдвигаем не на пиксели и не на см.

Теперь бы еще сделать это! =))))))