Перейти к содержимому


Фотография

[СС1.6] Слои


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Оффлайн   JaggerDer

JaggerDer
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 12 Ноябрь 2014 - 23:18

Смысл

Написал программку из двух файлов для CC1.6 которая позволяет создавать слои, на которых можно "рисовать".
Пока реализовал основной задуманный функционал, позже напишу еще пару плюшек.

Что есть:
-Независимые слои
-Псевдопрозрачность
-Базовые функции для операций над слоями

Что хочу добавить:
-Удаление всех пикселов слоя, не задевая вышестоящих слоев.
-Выборачная отрисовка пикселов слоев.
-Функционал для рисования(линии, боксы и т.п) <частично реализовано>
-Возможность заблокировать, скрыть, перемещать пикселы слоя.
 

Описание функций layerobj

-Init(anWidth, anHeight, asName, abVis, abLck) - инициализирует объект и позволяет задать начальные параметры, что то вроде конструктора в ООП:
 -anWidth - ширина матрицы слоя.
 -anHeight - высота матрицы слоя.
 -asName - название слоя.
 -abVis - не используется.
 -abLck - не используется.
-Remove() - деструктор.
-SetPixel(anX, anY, asText, anTextColor, anColor) - записывает символ\цвет символа\цвет фона в соотв. матрицы:
 -anX - ордината точки.
 -anY - абцисса точки.
 -asText - символ или строка, в случае со строкой все ее символы принимают цвет и фон первого.
 -anTextColor - цвет символа.
 -anColor - цвет фона.
-GetParameters() - возвращает основные параметры слоя: <Обновлено>
 -sName - имя слоя.
 -nWidth - ширина матрицы слоя.
 -nHeight - высота матрицы слоя.

 -nShiftX, nShiftY

-Shift(anShiftX, anShiftY) - установка смещения слоя по X и Y соответственно. <Добавлено>
-GetPixel(anX, anY) - возвращает информацию о пиксле по координатам anX и anY:
 -sText - символ.
 -nTextColor - цвет символа.
 -nColor - цвет фона.
-ClearLayer() - очищает все матрицы слоя.
 

Описание функций layermanager

-RegisterLayer(aloLayer) - регестрирует слой в очереди для отрисовки, возвращает его ID.
-UnregisteLayer(anID) - удаляет слой из очереди по ID.
-DrawLayers() - отрисовывает поочередно все слои.
-DrawLayer(aloLayer) - рисует определенный слой.
-ShiftLayer(anID, asDir, anStep) - меняет ID слоя, а собственно и очередь прорисовки:
 -anID - смещаемый слой.
 -asDir - направление смещения(left и right)
 -anStep - на сколько ед. сместить слой.
-LayerClick(anX, anY) - возвращает название слоя и инф-ию о пикселе по заданным координатам:
 -sName - ...
 -sText - ...
 -nTextColor - ...
 -nColor - ...
-Info() - дебаговая информация.
-Ряд пока незадействованных функций. <Удалено/Перемещено>

 

LAPIShell

Содержит функции рисования линии и бокса:

 -DrawLine(anX1, anY1, anX2, anY2, asChar, anCharColor, anColor, aloLayer) <Добавлено>

 -DrawBox(anX1, anY1, anX2, anY2, asChar, anCharColor, anColor, aloLayer) <Добавлено>

 

FIO

Содержит функции для сохранения\загрузки слоя:

 -SaveToFile(asFilename, aloLayer) <Добавлено>

 -ReadFromFile(asFilename, aloLayer) <Добавлено>
 

Установка

Качаем с pastebin на компьютер файл: http://pastebin.com/Nekd2WRU. Используем с помощью os.loadAPI.

Для тех кто зачем-то будет читать мой код:
Аргументы функций: a<type>VarName
Переменная: <type>VarName
Временная переменная: _<type>VarName
<type> - просто сокаращения: n - number, s - string и т.д
Все это дело нужно было только чтобы не путаться с переменными(было такое).


Сообщение отредактировал JaggerDer: 20 Сентябрь 2015 - 12:39

  • Zer0Galaxy, Totoro и Fingercomp это нравится

#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 12 Ноябрь 2014 - 23:45

Это что-то вроде графического редактора для CC? Можно будет сохранять и загружать готовые рисунки? Есть ли ограничение на размер рисунка и количество слоев?

#3 Оффлайн   JaggerDer

JaggerDer
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 13 Ноябрь 2014 - 00:55

Это что-то вроде графического редактора для CC?
Можно будет сохранять и загружать готовые рисунки?
Есть ли ограничение на размер рисунка и количество слоев?

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

Размер любого слоя ограничен самим окном СС компьютера, можно сделать меньше, но не больше(вроде можно задать размер при создании слоя). А кол-во слоев вроде неограниченное(ну насколько памяти хватит).

#4 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 13 Ноябрь 2014 - 01:07

Т.е. это что-то вроде Canvas API? Позволяет программе выводить свою графику/текст на нескольких накладывающихся слоях, и контролировать, что и где отображается?

#5 Оффлайн   JaggerDer

JaggerDer
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 13 Ноябрь 2014 - 19:35

Т.е. это что-то вроде Canvas API?
Позволяет программе выводить свою графику/текст на нескольких накладывающихся слоях, и контролировать, что и где отображается?

Да.

#6 Оффлайн   JaggerDer

JaggerDer
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 30 Ноябрь 2014 - 16:17

Итак, добавил пару штук в свой API:

 -Можно сохранять слой в файл или же загружать из файла(буду благодарен если кто подскажет как можно сжимать информацию о пикселах слоев).

 -Теперь можно сдвигать слои по x, y(не путать со сдвигом по z).



#7 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 30 Ноябрь 2014 - 16:28

Что ты называешь пикселами? В СС вроде нет графики

#8 Оффлайн   JaggerDer

JaggerDer
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 30 Ноябрь 2014 - 19:30

Что ты называешь пикселами? В СС вроде нет графики

Пикселом я называю символ имеющий цвет и цвет его фона.



#9 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 30 Ноябрь 2014 - 19:48

т.е. пиксель это символ + байт цвета, а экран состоит из 19х51 пикселей. Не думаю, что при таких объемах сжатие даст результат, но можешь почитать тему про голографический проектор. Я там алгоритм сжатия предлагал, может и тебе подойдет




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных