Программа dap что это

Формат файла DAP — описание, как открыть?

Файлы формата DAP открываются специальными программами. Существует 3 типа форматов DAP, каждый из которых открывается разными программами. Чтобы открыть нужный тип формата, изучите описания файлов и скачайте одну из предложенных программ.

Чем открыть файл в формате DAP

Тип файла: Download Accelerator Plus Partial Download Разработчик: SpeedBit Категория: Другие файлы

Файл, не до конца загруженный Download Accelerator Plus (DAP) — программой-менеджером загрузок. Поддерживает возобновление остановленных загрузок и может предварительно просматриваться в процессе загрузки.

Чем открыть файл в формате DAP (Download Accelerator Plus Partial Download)

SpeedBit Download Accelerator Plus (DAP)

Тип файла: Access Data Access Page Разработчик: Microsoft Категория: Интернет, web файлы

Веб-страница, подсоединенная к базе данных Access. Может использоваться для распространения отчетов посредством веб или электронных писем. Может храниться в качестве формы входных данных или создавать интерактивные отчеты.

DAP | Условия поставки товара | Инкотермс 2010

Страницы доступа к данным могут встраиваться в MS Access или создаваться из других форматов файлов, таких как файлы dBASE, таблицы Paradox, крупноформатные таблицы и текстовые файлы.

Чем открыть файл в формате DAP (Access Data Access Page)

Тип файла: Diet Analysis Profile Разработчик: Cengage Learning Категория: Файлы данных

Файл пользовательского профиля, создаваемый Diet Analysis Plus — программой, применяемой для отслеживания персональной информации о питании. Хранит информацию о личном здоровье и может включать в себя журнал приема пищи пользователем и другие данные о диете. Применяется для отслеживания личных диет в обучении рациональному питанию.

Чем открыть файл в формате DAP (Diet Analysis Profile)

Cengage Learning Diet Analysis Plus

Источник: www.azfiles.ru

Dynamic Auto-Painter

Dynamic Auto-Painter — программа от канадской компании MediaChance, которая умеет обычную фотографию превращать в картину, написанную маслом, акварелью, карандашом или другим инструментом художника. На выбор пользователя предлагаются несколько десятков манер живописи от самых знаменитых художником мира. Процесс такого превращения автоматизирован и визуализирован, но допускает предварительные настройки ключевых параметров написания картины.

Результаты применения различных стилей живописи к обычной цветной фотографии. / Используйте скролл для просмотра.

Порог вхождения в программу чрезвычайно низок. Вы можете буквально в пару-тройку кликов сделать дело: загрузить фото, выбрать стиль живописи и нажать кнопку Старт. Ну потом нажать кнопку Стоп, потому что по умолчанию программа будет наносить мазки на картину до бесконечности. Счетчик мазков вы видите, и сам процесс постепенного создания картины видите.

Поставка на условиях DAP Инкотермс, что это такое и для чего нужно?

Это очень приятное зрелище. В любой момент вы можете остановить рисование и сохранить работу, или сделать паузу и посмотреть детали картины. В примерах выше рисование останавливалось вручную где-то на 10-20 тысячах мазков. Каждая из картин создавалась программой от 2 до 5 минут.

Если вы считаете, что знаете лучше программы, чего хотите от будущей картины, то вам предлагаются выбор и настройки цветовой палитры, градации выразительности картины — от реализма до сюрреализма, степень детализации — насколько надо быть ближе к оригиналу. Есть настройки и в более объективных терминах: разрешение конечного файла а пикселах (результирующий файл по размеру может быть больше оригинала); количество мазков, из которых будет состоять картина; размер мазков.

Dynamic Auto-Painter

Интерфейс программы перед запуском процесса создания картины. / Кликните, чтобы увеличить.

Вы также можете предварительно поработать над оригинальным изображением: задать области, которые нужно прорисовать более тщательно; задать области, которые на которые не нужно обращать внимании кисти художника. Есть скромное по своим возможностям пост-редактирование результирующего изображения.

Загрузка программы

По ссылке ниже вы можете бесплатно скачать zip-файл c портабельной версией Dynamic Auto-Painter 2.6. Она начинает работать без предварительной инсталляции. Первый запуск может быть не особенно быстрым, т.к. в папке программы будет создана новая подпапка с данными — это нормально. Не забудьте ввести пароль при распаковке архива: newart.ru
Онлайн версии Dynamic Auto-Painter нет, но могу посоветовать эту необычную рисовалку попробовать, которая также может имитировать стили живописи знаменитых художников, но не по нажатию кнопки, а своими руками, т.е. мышкой или стилусом графического планшета.

вебмастер Newart.ru
[[ Скачать Dynamic Auto-Painter 5.1 portable, english ]] [пароль для зипа: newart.ru]
[[ Скачать Dynamic Auto-Painter 2.6 portable, русский ]] [пароль для зипа: newart.ru]

Ещё программы для реалистичного рисования:
• ArtRage // программа для художников
• Flame Painter // рисование реалистичным огнём
• Psykopaint // рисовалка стилизованными кистями
• Rebelle // реалистичная живопись акварелью
• Verve Painter // реалистичная живопись маслом
• Ещё имитационные фоторедакторы:
• FotoSketcher // программа для быстрого создания художественных картин из фото

Источник: www.newart.ru

Dynamic Auto Painter Pro

Dynamic Auto Painter Pro от Mediachance – графический фото редактор, путем имитации техники рисования знаменитых художников превращающий обычные пользовательские изображения в завораживающие взгляд картины.

Dynamic Auto Painter Pro

А множество предустановленных пресетов в автоматическом режиме обеспечат ультра реалистичность сложных деталей и манеры рисования, позволяя в режиме текущего времени следить за работой приложения.

Dynamic Auto Painter поможет всем желающим во впечатляюще короткие сроки создавать свои собственные шедевры в разнообразных стилях живописи.

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

Основной функционал Dynamic Auto Painter

Программа обладает обширным рядом функционала:

  • сотни предустановленных пресетов;
  • создание собственных профилей;
  • симуляция акварели, акрила и т.п.;
  • методика реальных художников;
  • послойное наложение эффектов;
  • расширенная настройка цвета;
  • ретушь после окончания рисования;
  • пакетная обработка файлов и папок;
  • предварительные просмотр результатов.
Читайте также:
Что за программа knoll light factory

Программа не изменяет сам снимок, а используя его как исходник, самостоятельно и постепенно создает новое изображение.

Скачать Dynamic Auto Painter Pro бесплатно

Как скачать Dynamic Auto Painter Pro бесплатно

По ссылке ниже доступна для скачивания полная русская версия Dynamic Auto Painter Pro. Интерфейс, справка и все другие функции полностью переведены. Запуск программы происходит без установки.

Кроме автоматического режима работы, для опытных пользователей в Dynamic Auto Painter предусмотрены и детальные настройки: цветовая палитра, выразительность, детализация, разрешение, частота мазков и т.д. Можно даже попытаться изобрести личный художественный стиль рисования, но это потребует кропотливого регулирования параметров.

О программе

Преимущества выбора Dynamic Auto Painter

Лишь специализированный программный инструмент способен выполнить качественную имитацию:

  1. Сотни разнообразных стилей, копирующих настоящие мазки кисти известных художников.
  2. Полностью автоматизированное и визуализированное преобразование фото в картину.
  3. Реалистичный вид настоящей живописи у созданных и распечатанных экземпляров.

Стоит учесть, что разрешение готового изображения не зависит от размеров оригинала и может превышать его в несколько раз.

Источник: soft-file.ru

Dap — еще один реактивный движок для веба. Совсем другой

Хочу рассказать про dap — интересный и необычный язык реактивных правил для написания, в частности, веб-фронтендов.

Для затравки простая задачка: взять список неких пользователей (воспользуемся тестовыми данными, любезно предоставляемыми сервисом jsonplaceholder.typicode.com) и вывести их имена обычным html-списком; при нажатии на имя пользователя — показать алерт с его id.

Это, конечно, легко делается и на React, и на Angular, и на Vue. Вопрос: насколько легко? В dap это делается так:

‘UL.users’.d(«* :query`https://jsonplaceholder.typicode.com/users» ,’LI’.d(«! .name»).ui(«? .id:alert») )

(*Этот и последующие dap-примеры можно интерактивно потестить в песочнице dap.js.org/test.html)

Это первая пришедшая в голову тривиальная задачка и тривиальный же способ ее решения. На dap удобно писать «в лоб», не городя огород из классов, компонентов и прочего ритуального реквизита. Что вижу, то пою. Но «пою» не на javascript или его производных, а на языке dap-правил, специально заточенном на простое и лаконичное описание реактивных зависимостей между элементами.

В примере выше, правда, никаких зависимостей пока нет. Зато есть:

  • оператор * для итерации по данным,
  • конвертер :query для асинхронной «конвертации» урла в полученные с него данные,
  • оператор ! для «печати» в генерируемый элемент,
  • конвертер alert , магически конверитрующий любые значения в алерт

Кстати: вы заметили, что этот пример написан на обычном javascript, а сами dap-правила это просто строки? И сигнатуры элементов («теги») — тоже строки, просто в одинарных кавычках. Да, код dap-приложения выглядит непривычно, но это — чистый javascript, готовый к употреблению: его не нужно транспилировать из исходников на новомодных языках (что, конечно, не помешает вам этими модными языками пользоваться при желании).

Чуть усложним задачку, добавив зависимостей: пусть при нажатии на имя пользователя его id и name отображаются крупненько в элементе H2, под ними пусть будет имейл, а также все его «посты», которые берутся из /posts?userId= .

Здесь уже имеем зависимость содержимого элемента ‘details’ (что в переводе н HTML означает ) от того, какой пользователь выбран. Выбранный пользователь, таким образом, оказывается переменной состояния. Такие переменные в dap-правилах обозначаются префиксом $ (как s в «state»). При нажатии на любой из элементов LI изменяется содержимое переменной $user , на что элемент ‘details’ автоматически реагирует и обновляется.

В dap структура программы определяет сразу и модель состояния и модель взаимодействия с пользователем (отображение и реакции). С одной стороны это позволяет писать красивый, лаконичный и понятный код, но с другой стороны — требует четкой иерархической структуры приложения. Лично я считаю это требование полезным ограничением: оно заставляет (и помогает) более тщательно прорабатывать логику приложения и избавляться от логических нестыковок.

Каким образом ‘details’ узнает, что надо бы обновиться? Очень просто: в его правиле генерации присутствует обращение к переменной $user , а в правиле реакции элемента LI эта переменная как раз и изменяется.

Правила генерации — те, которые указываются с помощью метода .d — исполняются на фазе построения элемента. Правила реакции задаются методом .ui и исполняются при взаимодействии пользователя с элементом. Это два самых часто употребимых типа правил; кроме них есть еще несколько типов, но о них как-нибудь потом.

Синтаксис dap-правил довольно специфичен. Он не имеет ничего общего с всем привычным C-подобным синтаксисом, поэтому поначалу может казаться странным и непонятным. Но на самом деле он исключительно прост и, не побоюсь этого слова, прекрасен.

  • ! — вывод значения в элемент, что-то вроде print
  • !! — установка свойства (атрибута) элемента, что-то вроде setAttribute
  • ? — условный оператор, что-то вроде if
  • * — мультиплексор, или итератор, что-то вроде for

А кто не сталкивался с ситуацией, когда сидишь и тупишь, придумывая имя для переменной? Хотите верьте, хотите нет, в моем dap-коде практически все «булевы» (да/нет) переменные именуются $? (где $ — это префикс переменной состояния, а собственно имя состоит просто из знака вопроса). Мне просто лень придумывать им имена, а потом еще и печатать их в нескольких местах. При этом никогда не возникает никаких сложностей с пониманием, что эта переменная означает в каждом конкретном месте: благодаря компактности и обозримости dap-кода, вся область действия такой переменной обычно умещается в несколько строк, и всегда понятно что к чему.

‘toggle’.d(«$?=» // определяем $? и инициируем ее ‘ничем’ (удобная разновидность false) ,’BUTTON’.d(«! `Toggle»).ui(«$?=$. «) // кнопкой инвертируем $?, как в x=!x ,’on’.d(«? $?; ! `✓») // показать галочку если $? не пустой )

Разумеется, это всего лишь мой личный стиль. Если вы пришли из мира Enterprise Java, не беспокойтесь: никто не запретит вам использовать сколь угодно длинные идентификаторы в любом месте. Чего нельзя сказать о литералах.

Читайте также:
Intellij idea что за программа

Литералы в dap-правилах обозначаются префиксом ` (backtick, на клавиатурах обычно под клавишей Esc). Например, элемент BUTTON в примере выше подписан литералом `Toggle . В отличие от других, «нормальных» языков, где, скажем, строковые литералы заключаются в кавычки и могут содержать приличные объемы текста, в dap-правилах литералы обрамляются только с одной стороны (тем самым префиксом ` ), и не могут содержать пробелов, т.к. пробел служит разделителем токенов («аргументов») в правиле. Как же так, спросите вы? А вот так. Литералы в dap предназначены не для эпистолярных фрагментов, а для различных коротких кодов: номеров, меток, каких-то отладочных заглушек и.п. Текстовые данные (как, впрочем, и любые другие) dap настойчиво требует хранить в виде констант в специальном словаре, в секции .DICT (от «dictionary», понятное дело):

‘whoami’.d(«$fruit=» ,’H3′.d(«! ($fruit msg.fruit-selected msg.please-select)?! $fruit») ,’UL’.d(«* fruit» ,’LI’.d(«! .fruit»).ui(«$fruit=.») ) ) .DICT(< msg :< «please-select»: «Кто я? Зачем я в этом мире?», «fruit-selected»: «Я — » >, fruit :[«Апельсинчик, сочный витаминчик», «Яблочко зеленое, солнцем напоённое», «Cлива лиловая, спелая, садовая», «Абрикос, на юге рос»] >)

Очевидным преимуществом хранения всех текстов в словаре является, например, легкость последующих локализаций на другие языки.

Но в словаре хранятся не только текстовые данные, а вообще любые повторно используемые сущности. В том числе, параметризуемые шаблоны, или «компоненты», как их называют в других фреймворках:

В принципе, ничто не мешает вообще все приложение разбить на «компоненты» и запихнуть в словарь, если вам нравится такой стиль:

‘main’.d(«! header content footer») .DICT(< header : ‘HEADER’.d(. ), content : ‘UL.menu’.d(. ), footer : ‘FOOTER’.d(. ) >)

Лично я в этом смысла особого не вижу, и обычно выношу в словарь только те фрагменты, которые реально используются многократно.

Кстати, поскольку это все еще обычный javascript, а собственно словарь — это, как можно видеть, просто объект (или, как их еще называют, ассоциативный массив), то и формировать его можно любым легальным для javascript способом. Например, в примере чуть выше массив значений для константы colors генерируется из строки с помощью метода split. Можно вообще весь объект для словаря импортировать из внешнего скрипта-библиотеки любым доступным способом — хоть по старинке через или XHR->eval(), хоть через import (но убедитесь, что ваши клиенты этот новомодный способ поддерживают). Секций .DICT может быть несколько, все они объединяются в один общий словарь.

const lib1=< message: «Hello from lib1» >, lib2=< message: «Hi from lib2» >; ‘my-app’.d(«! message wrapped.message imported.message») .DICT(lib1) .DICT(< wrapped: lib2, imported: import «extern.js»; >) //файл extern.js (< message: «Bonjour de lib importé» >)

Помимо штатных средств javascript, для подключения внешних библиотек в dap имеется и свой механизм. Отличие его в том, что библиотеки подгружаются лениво — только тогда, когда действительно нужно что-то из библиотеки взять. Такие библиотеки указываются в секции .USES

‘main’.d(«$?=» // unset $? ,’BUTTON.toggle’.ui(«$?=$. «) // toggle $? ,’activated’.d(«? $?» // only show when $? is set ,’imported’.d(«! delayed.message») // now print the message from the lib ) ) .USES(< delayed: «extern.js» >)

Здесь библиотека extern.js загрузится только после нажатия кнопки, когда потребуется отобразить элемент ‘imported’ — а для этого распарсить и скомпилировать его dap-правило, которое и ссылается на внешнюю библиотеку.

Да, dap-правила «компилируются» перед исполнением. Причем лениво, только при первом фактическом обращении к шаблону элемента. Эта ленивость позволяет «размазать» компиляцию большого приложения на множество мелких этапов, и не занимать ресурсы браузера неиспользуемыми участками кода.

Конечно, актуальна такая забота о ресурсах только для каких-то совсем уж больших приложений, или слабых устройств. В целом могу сказать, что dap молниеносен (в масштабах UI, конечно) — и в компиляции, и в исполнении. Производительность можно контролировать в консоли браузера: там логируется время каждой реакции.

Единственные заметные задержки, которые реально могут возникать — это задержки сети. Но и эти задержки не блокируют dap-приложение. Веб-запросы, исполняемые конвертором :query асинхронны и не задерживают отображение и работу остальных элементов.

Кстати, что такое конвертор? Конвертор в dap — это просто функция вида value → value, то есть с одним входом и одним выходом. Такое ограничение позволяет строить из конверторов цепочки, например выражение $a:x,y,z соответсвует z(y(x($a))) в си-подобной записи. То, что вход у конвертора всего один, казалось бы, ограничивает его возможности по сравнению с «обычной» функцией. Но это не так.

Конвертор может принимать и отдавать как элементарные значения, так и объекты/массивы (в javascript разница между этими понятиями размыта), содержащие любое количество данных. Таким образом, конверторы в dap полностью заменяют «традиционные» функции, при этом могут собираться в цепочки и могут быть асинхронными, не требуя при этом никакого дополнительного синтаксического оформления.

Традиционных «функций» с фиксированным списком параметров в dap, соответственно, нет — за ненадобностью.

Зато есть еще агрегаторы — функции от произвольного числа аргументов (обычно равноправных, но не всегда). Например, агрегатор ()? возвращает первый непустой аргумент или самый последний (аналог ||-цепочки в javascript), а агрегатор ()! — наоборот, первый пустой аргумент, или самый последний (аналог -цепочки в javascript). Или, например, агрегатор ()uri — строит из аргументов параметризованный URI.

И последний тип функций в dap — это операторы. Если конверторы и агрегаторы идеологически ближе к «чистым» функциям, которые просто вычисляют значения (хоть и не всегда это так), то задача операторов — применять эти значения к генерируемому элементу (например, оператор ! добавляет значение аргумента к содержимому элемента, а оператор !! устанавливает атрибуты элемента) или управлять ходом исполнения правила (как, например, условный оператор ? )

Читайте также:
Для чего предназначены программы файловые менеджеры

Арсенал штатных конверторов, агрегаторов и операторов в dap минимален, но это не важно. Главное, что вы можете создавать свои! Это важный момент. Нужно четко понимать, что сам язык dap-правил вовсе не претендует на роль универсального языка программирования, он только описывает зависимости между элементами. Подразумевается, что хардкор и вычисления реализуются нативными средствами среды (для браузера, это, понятно, javascript) а dap играет сугубо «логистическую» роль — указывая, что, когда и из чего нужно делать и куда отдавать.

Собственный функционал описывается в секции .FUNC (от «functionality»):

‘UL.users’.d(«* :query`https://jsonplaceholder.typicode.com/users» ,’LI’.d(«! (.name .username:allcaps .address.city):aka,allcaps») .ui(«(.address.street .address.suite .address.city .address.zipcode)lines:alert») ) .DICT(< «no-contact»: «No contacts available for this person» >) .FUNC( < convert: < allcaps: o=>o.toUpperCase(), aka : o => o.name + » also known as «+o.username+» from the city of «+o.city >, flatten:< lines : values=>»Address:n» + values.reverse().join(«n») > >)

Здесь собственный функционал тривиален, поэтому написан непосредственно «по месту». Разумеется, что-то более сложное имеет смысл писать самостоятельным модулем, а в .FUNC прописывать только протокол взаимодействия между этим модулем и dap. Скажем, в примере с игрой в крестики-нолики dap.js.org/samples/tictactoe.html (по мотивам React-туториала), вся логика игры описана в отдельном замыкании, а dap только связывает эту логику с картинкой на экране.

Подробнее познакомиться с dap можно на сайте dap.js.org

Да, вот еще что. В сжатом виде весь dap-движок (
) весит ни много ни мало 9 кБ. Девять килобайт.

Источник: habr.com

Программа dap что это

LiveJournal

Нет аккаунта? Зарегистрироваться

. и что надо успеть

Dynamic Auto-Painter

  • Apr. 12th, 2017 at 4:30 AM

Оригинал взят у gaffernet в Dynamic Auto-Painter

Dynamic Auto-Painter x64 PRO

Я считаю, что Dynamic Auto-Painter – это одна из лучших программ имитации живописи. Её главная особенность заключается в том, что DAP не изменяет исходное изображение. Используя стили, имитирующие письмо знаменитых художников, DAP создаёт свои неповторимые полотна. Вы можете не только наблюдать за созданием картины, но и активно влиять на этот процесс.

Вот так выглядит окно программы после запуска:

DAP 1м

Рассмотрим подробнее её основные элементы:

В центральном окне программы происходит основной процесс имитации. Окно быстрого старта закрываем, так как мы с вами настроены на серьёзную работу.

В левой части программы по умолчанию открыта основная рабочая панель под названием Main Painter:

Разберёмся в её настройках:

Выбор стиля

DAP 1 стили

Здесь мы можем, используя колесо прокрутки, выбрать подходящий стиль живописи для нашей будущей картины.

Щелчок левой кнопкой мыши, и стиль выбран.

DAP 1 палитра

Тут мы выберем цветовую палитру нашей картины. C помощью шкалы Expressive – Realistic тонко настроим нашу палитру. Ближе к Expressive наши цвета будут более насыщены, однородны и экспрессивны, как в живописи импрессионистов. А, ближе к Realistic можно получить более тонкие и спокойные оттенки, как в реалистичной живописи.

Шкала Dry – Wet позволяет настроить физическое смешение мазков краски. Dry – это техника сухой кисти. Мазки не смешиваются. Wet – жидкая краска. Мазки будут частично смешиваться.

Настойки этих шкал можно менять в процессе работы.

Brush strokes

DAP 1 кисти

Min/Max Brush Size определяет размер кистей.

Замок блокирует пропорциональное отношение Min/Max

RS (Rez Smart) позволяет менять отношение размера кисти к количеству мазков в начальной стадии, и в процессе деталировки:

DAP 1 RS

Nr. of Strokes задаёт количество мазков в работе.

Если поставлена галочка перед Continuous , то виртуальный художник будет работать до тех пор, пока вы не нажмёте на Stop.

Outline – это шкала, определяющая на сколько резкими будут контуры объектов. Чем выше шкала, тем конечный результат будет более похож на эскиз.

Canvas Output Size

DAP 1 выходной размер

Здесь вы можете задать размер будущей картины.

Размер может быть задан от 2,5 до 32 мегапикселей.

Нужно учесть, что чем больше размер изображения, тем меньше будет размер мазков.

Clear Canvas on Start – означает, что работа всегда будет начинаться с чистого листа.

Real Canvas – программа будет имитировать письмо на холсте или бумаге. Я эту функцию отключаю, так-как делаю фактуру холста в других программах.

Natural Borders – программа оставляет белые поля. Такое письмо можно иногда встретить в акварельной живописи. Для имитации масла отключаем.

Dynamic Painter

DAP 1 DP

Faithfal – Impress — Ближе к Impress программа добавляет различные вариации цвета, как в живописи импрессионистов.

Real – Surreal — Ближе к Surreal программа искажает реальные контуры объектов.

Detail Brushes

DAP 1 DB

Less Time – More Time — сколько времени уделит программа проработке деталей.

Speed – Precision — скорость против качества исполнения.

Вкратце расскажу о других вкладках.

Здесь вы можете создавать различные маски, например если захотите размыть часть изображения, или детально прописать определённую часть картины, задать параметры текстуры холста, выбрать раму для вашей картины.

Один совет перед стартом: вы в любой момент можете прервать создание картины правой кнопкой мыши, изменить параметры кистей, и зажав левую кнопку, прописать любой участок полотна.

Ну, теперь можно приступать!

Выбираем исходное изображение, стиль живописи, производим настройки и можно жать на старт.

DAP 2 м

Живопись начинается с подмалёвка:

подмалёвок

Затем идёт живопись средними кистями, выявляя форму предметов:

DAP-3

И наконец деталировка — и наше полотно готово!

DAP-4

Напоследок немного о стилях DAP.

В DAP имеется много предустановленных стилей живописи, но программа позволяет создавать и свои собственные. Есть энтузиасты, которые создают свои стили. Вот ссылка на DAP кафе, где люди выкладывают свои стили: http://dap.mediachance.com/

Создание собственного стиля — занятие сложное, но очень увлекательное.

Вот пример работы на основе моего стиля по мотивам живописи замечательного художника Николая Фешина:

FotoSketcher---Фешин-пост-рама

Дерзайте, и всё получится!

Источник: a-serg.livejournal.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru