Графического редактор CreaGraFix (CGF)
Назначение и возможности:
- развитие креативности правого полушария
- создание набросков (скетчей) для пиксель арта, спрайтов (лучше пользоваться стилусом или граф. планшетом, хотя мышкой тоже прикольно);
- создание и редактирование анимированных gif-аватарок;
- создание и редактирование многостраничных спрайтов для игр;
- создание и редактирование пиксельных Pixi-шрифтов;
- удобный перевод графики в ASCII-символы.
Общие характеристики:
(многие параметры намерено ограничены, ввиду целесообразности)
- размер экрана 320х240;
- размер страниц: от 4х4 до 200х200 пикселей;
- количество страниц в одном файле анимации: от 1 до 256;
- формат графических файлов для загрузки/сохранения анимации - Gif;
- формат графических файлов для загрузки изображений- Gif, Jpeg;
- Формат графических файлов для сохранения изображений - Gif, Txt.
Функции графического редактора CreaGraFix v.001:
- загрузка/сохранение Gif-анимации;
- загрузка/сохранение однокадрового Gif;
- загрузка картинки Jpeg в качестве кадра;
- сохранение картинки в виде ASCII-символов;
- изменение размеров кадров в анимации;
- отображение новых размеров;
- изменение количества кадров в анимации;
- создание новой анимации с установленными характеристиками размера и количества кадров;
- очистка текущего кадра;
- копирование содержимого кадра в буфер;
- вставка содержимого кадра из буфера;
- удаление текущего кадра (с уменьшением количества кадров анимации);
- добавление кадра (с увеличением количества кадров анимации, пустой кадр вставляется перед текущим);
- установка скорости проигрывания анимации (время показа каждого кадра);
- переход на кадр вперед;
- переход на кадр назад;
- нормальное проигрывание анимации;
- обратное проигрывание анимации;
- переход на первый кадр;
- переход на последний кадр;
- отображение номеров первого, текущего и последнего кадров;
- выбор режима рисования: карандаш или стерка;
- выбор одного из пяти режимов симметричного рисования : без симметрии, относительно вертикальной оси, относительно горизонтальной оси, зеркальное отражение, относительно вертикальной и горизонтальной оси в о всех четвертях (четыре области с зеркальным отражением)
- вкл./откл. режима отображения фона с направляющими для симметричного рисования;
- увелич./уменьш. яркости фона с направляющими для симметричного рисования;
- отображение логотипа, информации о версии программы, лицензии распространения и авторстве
Код программы:
Code: Select all
//© Al_Rado GNU GPL 2.0// CreaGraFix v.001 // Графический редактор
date = "12.06.08" // дата этого релиза :)
//*********************УСТАНОВКА ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ************************
x_window = 320 // ширина окна
y_window = 240 // высота окна
resize_pixi (0,x_window,y_window)
MAKE_LOGOS // создаю лого и картинки
// ширина и высота рабочего поля
widh_wind = 200
high_wind = 200
// ширина и высота, переменные для изменения размеров рабочего поля
widh_wind_t = widh_wind
high_wind_t = high_wind
// координаты Х и Y для рабочего поля
x_wind = -widh_wind/2
y_wind = -high_wind/2
anim_frames = 8 // количество кадров в анимации
anim_frames_t = anim_frames // переменная для изменения количества кадров в анимации
animat = new_pixi( widh_wind, high_wind, anim_frames ) // Pixi-контейнер анимации
frame_num = 0 // текущий кадр
x_frame_num = -4 // координата для нумерации текущего кадра, меняется если количество больше 9
frame_time = 300 // время отображеня кадра анимации (общее для всех кадров)
play_anim = 0 // флаг, три состояния: -1 - проигрывание анимации в обратном порядке, 0 - нет проигрывания, 1 - нормальное проигрывание
color_brush = BLACK // цвет кисти (карандаш или стерка)
color_fon = #999999 // цвет фона для симметричного рисования
bright_fon = 128 // яркость фона для симметричного рисования
mode_fon = -1 // флаг, вкл/выкл направляющие (фон для симметричного рисования): -1 - вкл, 1 - выкл
size_brush = 1 // размер карандаша/стерки
mode_sym = 1 // режим симметричного рисования (значения от 1 до 5)
mode_br = 1 // режим кисточки: 1 - карандаш, 2 - стерка
zakladka = 5 // текущая закладка
// переменные координат X и Y для расположения вновь загруженной картинки
x_tmp = 0
y_tmp = 0
info = 0 // флаг, показывать инф. о программе: 0 - нет, 1 - да
//***************************ГЛАВНЫЙ ЦИКЛ*************************************
start:
clear (SNEG)
// проверка: есть ли запись
if save_flag=1 {SAVE_ANIM}
if save_flag=2 {SAVE_GIF}
if save_flag=3 {SAVE_TXT}
// проверка: показывать инфо
if info = 1 {INFO_ABOUT}
// печать текущего кадра Pixi-контейнера
fpixi( animat, 0, 0, 0, 0, frame_num )
// обработать мышку (стилус)
handle_keys({play_anim = 0 DRAWING BOTTOM ZAKL},{DRAWING},{DRAWING})
DRAW_ZAKLAD // отрисовка закладок
DRAW_MENU // отрисовка менюшек и кнопок
PLAY_ANIMAT // проверка: проигрывать анимацию
frame(0)
goto start
//***********************ПОДПРОГРАММА ОТРИСОВКИ ЗАКЛАДОК************************
DRAW_ZAKLAD:
fbox(-160,-120,320,16,#AAAAAA)
box(-160,-118,52,14,WHITE)
box(-160+54*1,-118,52,14,WHITE)
box(-160+54*2,-118,52,14,WHITE)
box(-160+54*3,-118,52,14,WHITE)
box(-160+54*4,-118,52,14,WHITE)
box(-160+54*5,-118,52,14,WHITE)
fbox(-162+54*zakladka,-120,58,20,WHITE)
print (" ФАЙЛ АНИМ ЦВЕТ КИСТЬ ФОН РИС", -160, -114, BLACK)
ret
//***********************ПОДПРОГРАММА ОТРИСОВКИ КНОПОК************************
DRAW_MENU:
// кнопка информация о программе
fbox( 148, 108, 12, 12, #AAAAAA )
print ("?",150,110,WHITE)
// отрисовка кнопок перемещения по кадрам анимации, воспроизведение анимации вперед/назад
fbox(-100,103,20,12,#AAAAAA)
fbox(79,103,20,12,#AAAAAA)
print("I< << < > >> >I", -76, 106, BLACK)
print("0", -94, 106, BLACK)
temp = anim_frames-1
print("$temp", 82, 106, BLACK)
if frame_num > 9 { x_frame_num = -9 } else { x_frame_num = -4 }
print("$frame_num", x_frame_num, 106, BLACK)
box(-77,103,20,12,BLACK)
box(-54,103,20,12,BLACK)
box(-31,103,20,12,BLACK)
box(9,103,20,12,BLACK)
box(33,103,20,12,BLACK)
box(56,103,20,12,BLACK)
// закладка -ФАЙЛ-
if zakladka = 0 {
// отгораживаю разные поля меню
fbox(-160,0,60,2,BLACK)
fbox(100,0,60,2,BLACK)
// область новых размеров
box( -widh_wind_t/2 , -high_wind_t/2 , widh_wind_t , high_wind_t , RED )
// отрисовка кнопок
print("
О_АНИМ
О_JPEG
О_GIF
"
,-155,-100, BLACK)
box(-159,-95,56,12,BLACK)
box(-159,-79,56,12,BLACK)
box(-159,-63,44,12,BLACK)
print("
ШИР/ВЫС
< >
КАДРЫ
< >
НОВ_АН
ПЕРЕСЧ
"
,-155,5, BLACK)
print("$widh_wind_t",-143,29,BLACK)
print("$anim_frames_t",-140,61,BLACK)
box(-159,26,12,12,BLACK)
box(-116,26,12,12,BLACK)
box(-159,58,12,12,BLACK)
box(-116,58,12,12,BLACK)
box(-159,74,56,12,BLACK)
box(-159,90,56,12,BLACK)
print("
C_АНИМ
C_GIF
С_TXT
"
,106,-100, BLACK)
box(104,-95,52,12,BLACK)
box(104,-79,52,12,BLACK)
box(104,-63,44,12,BLACK)
print("
ОЧИС_К
УДАЛ_К
КОПИ_К
ВСТА_К
ДОБА_К
"
,106,5, BLACK)
box(104,10,52,12,BLACK)
box(104,26,52,12,BLACK)
box(104,42,52,12,BLACK)
box(104,58,52,12,BLACK)
box(104,74,52,12,BLACK)
// отрисовать, если только что загружена картинка
if perem_tmp = 1 {
print ("
U
L R
D
", -156, -40, BLACK)
box(-142,-34,12,12,BLACK)
box(-158,-26,12,12,BLACK)
box(-126,-26,12,12,BLACK)
box(-142,-18,12,12,BLACK)
}
}
// закладка -РИСОВАНИЕ-
if zakladka = 5 {
// отрисовка режима рисования (карандаш/стерка)
fbox(-150,-200+100*mode_br,40,100,#CCCCCC)
pixi (karand,-130,0,1,128)
//fbox( -130, 74, size_brush, size_brush, color_brush )
// отрисовка кнопок
print("
ОЧИСТ
"
,106,-95, BLACK)
box(104,-90,52,12,BLACK)
// отрисовать кнопку цветом фона направляющих, если отображение направляющих разрешено
if mode_fon = 1 {
transp (64)
fbox(104,-63+16*mode_fon,44,12,color_fon)
transp (256)
}
print("
НАПР
ЯРК +
ЯРК -
"
,107,-52, BLACK)
box(104,-47,44,12,BLACK)
box(104,-31,44,12,BLACK)
box(104,-15,44,12,BLACK)
fbox(104,-11+16*mode_sym,52,12,#CCCCCC)
print("
ПРОСТО
ВЕРТИК
ГОРИЗО
ЗЕРКАЛ
ЧЕТЫРЕ
"
,106,0, BLACK)
box(104,5,52,12,BLACK)
box(104,21,52,12,BLACK)
box(104,37,52,12,BLACK)
box(104,53,52,12,BLACK)
box(104,69,52,12,BLACK)
}
// закладка -АНИМАЦИЯ-
if zakladka = 1 {
print("
ВР:
+
-
"
,-154,64, BLACK)
print("$frame_time", -130, 72, BLACK)
box(-157,69,54,12,BLACK)
box(-157,85,44,12,BLACK)
box(-157,101,44,12,BLACK)
}
// рамки, обозначения области меню и вокруг кадра
box( -100 , -100 , 200 , 200 , #AAAAAA )
box( x_wind , y_wind , widh_wind , high_wind , BLUE )
ret
//************************ПОДПРОГРАММА ОПРОСА ЗАКЛАДОК******************************
ZAKL:
if gpr( -160,-118,52,14 ) {perem_tmp = 0 zakladka = 0 }
if gpr( -160+54*1,-118,52,14 ) {perem_tmp = 0 zakladka = 1 }
if gpr( -160+54*2,-118,52,14 ) {perem_tmp = 0 zakladka = 2 }
if gpr( -160+54*3,-118,52,14 ) {perem_tmp = 0 zakladka = 3 }
if gpr( -160+54*4,-118,52,14 ) {perem_tmp = 0 zakladka = 4 }
if gpr( -160+54*5,-118,52,14 ) {perem_tmp = 0 zakladka = 5 }
ret
//************************ПОДПРОГРАММА ОПРОСА КНОПОК********************************
BOTTOM:
// информация о программе
if gpr( 148, 108, 12, 12, ) { info = 1 }
// опрос кнопок перемещения по кадрам анимации, воспроизведение анимации вперед/назад
if anim_frames > 1 {
if gpr(-31,103,20,12) { frame_num - 1 if frame_num < 0 { frame_num = 0 } }
if gpr(9,103,20,12) { frame_num + 1 if frame_num > (anim_frames-1) { frame_num = anim_frames-1 }}
}
if gpr(-54,103,20,12) { play_anim = -1 }
if gpr(33,103,20,12) { play_anim = 1 }
if gpr(-77,103,20,12) { frame_num = 0 }
if gpr(56,103,20,12) { frame_num = anim_frames-1 }
// закладка -ФАЙЛ-
if zakladka = 0 {
if gpr(-159,-95,56,12) {LOAD_ANIM} // открыть файл анимации
if gpr(-159,-79,56,12) {LOAD_JPEG} // открыть файл Jpeg и вставить его в кадр
if gpr(-159,-63,44,12) {LOAD_GIF} // открыть файл Gif и вставить его в кадр
if gpr(104,-95,52,12) {save_flag = 1} // записать файл анимации
if gpr(104,-79,52,12) {save_flag = 2} // записать кадр в .gif файл
if gpr(104,-63,44,12) {save_flag = 3} // записать кадр в .txt файл
// очищаю кадр
if gpr(104,10,52,12) {
n=0 while n<(widh_wind*high_wind) {
animat[((widh_wind*high_wind)*frame_num)+n]=0
n+1
}
}
// удаляю кадр
if gpr(104,26,52,12) {
tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames-1 )
n=0 while n<(widh_wind*high_wind)*frame_num {
tmp_pixi [ n ] = animat[ n ]
n+1
}
if (widh_wind*high_wind)*frame_num < (widh_wind*high_wind)*anim_frames {
n=(widh_wind*high_wind)*frame_num while n<(widh_wind*high_wind)*anim_frames {
tmp_pixi [ n ] = animat[ n+(widh_wind*high_wind) ]
n+1
}
}
remove_pixi ( animat )
animat = clone_pixi ( tmp_pixi,0 )
anim_frames = get_pixi_frames(animat)
}
// копирую кадр
if gpr(104,42,52,12) {
tmp_frame = new_pixi( widh_wind, high_wind, 1 )
n=0 while n<(widh_wind*high_wind) {
tmp_frame [ n ] = animat[ ((widh_wind*high_wind)*frame_num) + n ]
n+1
}
}
//вставляю кадр
if gpr(104,58,52,12) {
n=0 while n<(widh_wind*high_wind) {
animat[ ((widh_wind*high_wind)*frame_num) + n ] = tmp_frame [ n ]
n+1
}
}
//добавляю кадр
if gpr(104,74,52,12) {
tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames+1 )
n=0 while n<(widh_wind*high_wind)*frame_num {
tmp_pixi [ n ] = animat[ n ]
n+1
}
if (widh_wind*high_wind)*frame_num < (widh_wind*high_wind)*anim_frames {
n=(widh_wind*high_wind)*frame_num while n<(widh_wind*high_wind)*anim_frames {
tmp_pixi [ n+(widh_wind*high_wind) ] = animat[ n ]
n+1
}
}
remove_pixi ( animat )
animat = clone_pixi ( tmp_pixi,0 )
anim_frames = get_pixi_frames(animat)
}
// если загружено изображение, можно переместить его по кадру
if perem_tmp = 1 {
if gpr(-142,-34,12,12) { y_tmp-4 }
if gpr(-158,-26,12,12) { x_tmp-4 }
if gpr(-126,-26,12,12) { x_tmp+4 }
if gpr(-142,-18,12,12) { y_tmp+4 }
set_screen ( animat , frame_num )
fbox ( x_wind, y_wind, widh_wind, high_wind, SNEG )
pixi (tmp_frame,x_tmp,y_tmp,0,0)
set_screen( 0 )
}
// изменение размеров Pixi-контейнера (ширина = высота)
if gpr( -159,26,12,12 ) { // <
if widh_wind_t > 4 {
widh_wind_t - 1
high_wind_t - 1
} else { widh_wind_t = 4 high_wind_t = 4 }
}
if gpr( -116,26,12,12 ) { // >
if widh_wind_t < 200 {
widh_wind_t + 1
high_wind_t + 1
} else { widh_wind_t = 200 high_wind_t = 200 }
}
// изменение кадров в анимации
if gpr( -159,58,12,12 ) { // <
if anim_frames_t > 1 {
anim_frames_t - 1
} else { anim_frames_t = 1 }
}
if gpr( -116,58,12,12 ) { // >
if anim_frames_t < 256 {
anim_frames_t + 1
} else { anim_frames_t = 256 }
}
// создание новой анимации на основе данных
if gpr( -159,74,56,12 ) {
tmp_pixi = new_pixi( widh_wind_t, high_wind_t, anim_frames_t )
remove_pixi ( animat )
animat = clone_pixi ( tmp_pixi,0 )
widh_wind = get_pixi_xsize (animat)
widh_wind_t = widh_wind
high_wind = get_pixi_ysize (animat)
high_wind_t = high_wind
anim_frames = get_pixi_frames(animat)
anim_frames_t = anim_frames
x_wind = -widh_wind/2
y_wind = -high_wind/2
}
// пересчет существующей анимации
if gpr( -159,90,56,12 ) {
tmp_pixi = new_pixi( widh_wind_t, high_wind_t, anim_frames_t )
// если размеры не поменялись, пересчет кадров
if widh_wind_t = widh_wind {
n=0 while n<(widh_wind_t*high_wind_t)*anim_frames_t {
tmp_pixi [ n ] = animat[ n ]
n+1
}
}
// если введенная информация меньше существующего размера - уменьшение размеров Pixi-контейнера
if widh_wind_t < widh_wind {
l=0 while (l<anim_frames_t) {
m=0 while (m<high_wind_t) {
n=0 while (n<widh_wind_t) {
tmp_pixi [ n + widh_wind_t*m + (widh_wind_t*high_wind_t)*l ] = animat[ (n+(widh_wind/2-widh_wind_t/2)) + (widh_wind*(m+high_wind/2-high_wind_t/2)) + (widh_wind*high_wind)*l ]
n+1
}
m+1
}
l+1
}
}
// если введенная информация больше существующего размера - увеличение размеров Pixi-контейнера
if widh_wind_t > widh_wind {
l=0 while (l<anim_frames_t) {
m=0 while (m<high_wind) {
n=0 while (n<widh_wind) {
tmp_pixi [ (n+(widh_wind_t/2-widh_wind/2)) + (widh_wind_t*(high_wind_t/2-high_wind/2+m)) + (widh_wind_t*high_wind_t)*l ] = animat[ n + widh_wind*m + (widh_wind*high_wind)*l ]
n+1
}
m+1
}
l+1
}
}
remove_pixi ( animat )
animat = clone_pixi ( tmp_pixi,0 )
widh_wind = get_pixi_xsize (animat)
widh_wind_t = widh_wind
high_wind = get_pixi_ysize (animat)
high_wind_t = high_wind
anim_frames = get_pixi_frames(animat)
anim_frames_t = anim_frames
x_wind = -widh_wind/2
y_wind = -high_wind/2
}
}
// закладка -РИСОВАНИЕ-
if zakladka = 5 {
// очищаю кадр
if gpr(104,-90,52,12) {
n=0 while n<(widh_wind*high_wind) {
animat[((widh_wind*high_wind)*frame_num)+n]=0
n+1
}
}
// выбор: карандаш или стерка
if gpr(-150,-100,40,100) {color_brush = BLACK size_brush = 1 mode_br = 1}
if gpr(-150,0,40,100) {color_brush = WHITE size_brush = 4 mode_br = 2}
// вкл/выкл направляющие (фон для симметричного рисования)
if gpr(104,-47,44,12) { mode_fon = - mode_fon}
// если фон с направляющими включен, то можно его сделать светлее/темнее
if mode_fon = 1 {
if gpr(104,-31,44,12) { bright_fon = bright_fon-16 color_fon = get_color (bright_fon ,bright_fon ,bright_fon )
if bright_fon < 16 { bright_fon = 16 }
}
if gpr(104,-15,44,12) { bright_fon = bright_fon+16 color_fon = get_color (bright_fon ,bright_fon ,bright_fon )
if bright_fon >192 { bright_fon = 192 }
}
}
// выбор одного из четырех режимов симметричного рисования и режима без симметрии
if gpr(104,5,52,12) { mode_sym = 1 }
if gpr(104,21,52,12) { mode_sym = 2 }
if gpr(104,37,52,12) { mode_sym = 3 }
if gpr(104,53,52,12) { mode_sym = 4 }
if gpr(104,69,52,12) { mode_sym = 5 }
}
// закладка -АНИМАЦИЯ-
if zakladka = 1 {
if gpr(-157,85,44,12) { frame_time + 100 if frame_time > 10000 { frame_time = 10000 } }
if gpr(-157,101,44,12) { frame_time - 100 if frame_time < 100 { frame_time = 100 } }
}
ret
//***********************ПОДПРОГРАММА ЗАПИСИ АНИМАЦИИ GIF*******************************
SAVE_ANIM:
save_flag = 0
filename = " "
if (file_dialog( filename, "Сохранить анимацию Gif", "gif", "save_id" )) {
video_export_gif( filename, x_wind, y_wind, widh_wind, high_wind )
f = 0 while( f < anim_frames ) {
clear( SNEG )
fpixi( animat , 0 , 0 , 0 , 0 ,f )
frame( 100 )
f + 1
}
} else {ret}
stop_video_export
ret
//***********************ПОДПРОГРАММА ЗАПИСИ КАДРА GIF*******************************
SAVE_GIF:
save_flag = 0
filename = " "
if (file_dialog( filename, "Сохранить кадр Gif", "gif", "save_id" )) {
video_export_gif( filename, x_wind, y_wind, widh_wind, high_wind )
clear( SNEG )
fpixi( animat , 0 , 0 , 0 , 0 ,frame_num )
frame( 100 )
} else {ret}
stop_video_export
ret
//***********************ПОДПРОГРАММА ЗАПИСИ КАРТИНКИ В ASCII-СИМВОЛАХ*******************************
SAVE_TXT:
save_flag = 0
filename = " "
if (file_dialog( filename, "Сохранить кадр TXT", "txt", "save_id" )) {
clear( SNEG )
fpixi( animat , 0 , 0 , 0 , 0 ,frame_num )
frame(0)
save_screen ( filename, x_wind, y_wind, widh_wind, high_wind )
} else {ret}
ret
//************************ПОДПРОГРАММА ЗАГРУЗКИ ФАЙЛА АНИМАЦИИ********************************
LOAD_ANIM:
filename =
" "
if (file_dialog( filename, "Открыть анимацию Gif", "gif", "load_id" ) ) {
animat = load_pixi(filename) } else {ret}
widh_wind = get_pixi_xsize (animat)
widh_wind_t = widh_wind
high_wind = get_pixi_ysize (animat)
high_wind_t = high_wind
anim_frames = get_pixi_frames(animat)
anim_frames_t = anim_frames
frame_num = 0
x_wind = -get_pixi_xsize (animat) / 2
y_wind = -get_pixi_ysize (animat) / 2
perem_tmp = 0
ret
//************************ПОДПРОГРАММА ЗАГРУЗКИ КАДРА JPEG****************************
LOAD_JPEG:
filename =
" "
if (file_dialog( filename, "Открыть кадр JPEG", "jpg", "load_id" ) ) {
tmp_frame = load_pixi(filename) } else {ret}
x_tmp = 0
y_tmp = 0
set_screen ( animat , frame_num )
fbox ( x_wind, y_wind, widh_wind, high_wind, SNEG )
pixi (tmp_frame,0,0,0,0)
set_screen( 0 )
perem_tmp = 1
ret
//************************ПОДПРОГРАММА ЗАГРУЗКИ КАДРА GIF****************************
LOAD_GIF:
filename =
" "
if (file_dialog( filename, "Открыть кадр GIF", "gif", "load_id" ) ) {
tmp_frame = load_pixi(filename) } else {ret}
x_tmp = 0
y_tmp = 0
set_screen ( animat , frame_num )
fbox ( x_wind, y_wind, widh_wind, high_wind, SNEG )
pixi (tmp_frame,0,0,0,0)
perem_tmp = 1
set_screen( 0 )
ret
//************************ПОДПРОГРАММА РИСОВАНИЯ*************************************
DRAWING:
if gpr( x_wind, y_wind, widh_wind, high_wind ) {
if mode_sym = 1 {
box ( get_pen_x, get_pen_y, size_brush, size_brush, BLACK )}
if mode_sym = 2 {
box ( get_pen_x, get_pen_y, size_brush, size_brush, BLACK )
box ( -get_pen_x, get_pen_y, size_brush, size_brush, BLACK )}
if mode_sym = 3 {
box ( get_pen_x, get_pen_y, size_brush, size_brush, BLACK )
box ( get_pen_x, -get_pen_y, size_brush, size_brush, BLACK )}
if mode_sym = 4 {
box ( get_pen_x, get_pen_y, size_brush, size_brush, BLACK )
box ( -get_pen_x, -get_pen_y, size_brush, size_brush, BLACK )}
if mode_sym = 5 {
box ( get_pen_x, get_pen_y, size_brush, size_brush, BLACK )
box ( -get_pen_x, get_pen_y, size_brush, size_brush, BLACK )
box ( get_pen_x, -get_pen_y, size_brush, size_brush, BLACK )
box ( -get_pen_x, -get_pen_y, size_brush, size_brush, BLACK )}
perem_tmp = 0
}
if mode_fon = 1 {
if mode_sym = 1 {
transp (64)
fbox ( x_wind, y_wind, widh_wind, high_wind, color_fon)
transp (256)}
if mode_sym = 2 {
transp (64)
fbox ( 0, y_wind, widh_wind/2, high_wind, color_fon)
transp (256)}
if mode_sym = 3 {
transp (64)
fbox ( x_wind, 0, widh_wind, high_wind/2, color_fon)
transp (256)}
if mode_sym = 4 {
transp (64)
fbox ( 0, y_wind, widh_wind/2, high_wind/2, color_fon)
fbox ( x_wind, 0, widh_wind/2, high_wind/2, color_fon)
transp (256)}
if mode_sym = 5 {
transp (64)
fbox ( 0, y_wind, widh_wind/2, high_wind/2, color_fon)
fbox ( x_wind, 0, widh_wind/2, high_wind/2, color_fon)
transp (256)}
}
set_screen ( animat , frame_num )
if gpr( x_wind, y_wind, widh_wind, high_wind ) {
if mode_sym = 1 {
fbox ( get_pen_x, get_pen_y, size_brush, size_brush, color_brush )}
if mode_sym = 2 {
fbox ( get_pen_x, get_pen_y, size_brush, size_brush, color_brush )
fbox ( -get_pen_x, get_pen_y, size_brush, size_brush, color_brush )}
if mode_sym = 3 {
fbox ( get_pen_x, get_pen_y, size_brush, size_brush, color_brush )
fbox ( get_pen_x, -get_pen_y, size_brush, size_brush, color_brush )}
if mode_sym = 4 {
fbox ( get_pen_x, get_pen_y, size_brush, size_brush, color_brush )
fbox ( -get_pen_x, -get_pen_y, size_brush, size_brush, color_brush )}
if mode_sym = 5 {
fbox ( get_pen_x, get_pen_y, size_brush, size_brush, color_brush )
fbox ( -get_pen_x, get_pen_y, size_brush, size_brush, color_brush )
fbox ( get_pen_x, -get_pen_y, size_brush, size_brush, color_brush )
fbox ( -get_pen_x, -get_pen_y, size_brush, size_brush, color_brush )}
}
set_screen( 0 )
ret
//************************ПОДПРОГРАММА ПРОИГРЫВАНИЯ АНИМАЦИИ*************************************
PLAY_ANIMAT:
if play_anim = 1 {
fpixi( animat, 0, 0 ,0 ,0 ,frame_num )
frame(frame_time)
frame_num + 1
if frame_num > (anim_frames-1) { frame_num = anim_frames-1 }
}
if play_anim = -1 {
fpixi( animat, 0, 0 ,0 ,0 ,frame_num )
frame(frame_time)
frame_num - 1
if frame_num < 0 { frame_num = 0 }
}
ret
INFO_ABOUT:
clear (BLACK)
n=5 while n<14 {
fbox ( -(30*n)/2, -(24*n)/2, 30*n, 22*n, WHITE )
effector( SNEG, 256, 0, -50, -60, 54*2, 50*2, 1 )
effector( BLUE, 256, 0, -50, -60, 54*2, 50*2, 1 )
pixi ( logo_CGF, 0, -10, 2, 0, 1)
t_scale (400,400,400)
print ( "
CreaGraFix
v.001
", -40, 20, BLACK )
t_reset
print ("© Al_Rado GNU GPL 2.0 ",-150,100, BLACK)
print (date,90,100, BLACK)
frame ( 300 )
n+1
}
frame ( 4000 )
clear (WHITE)
info = 0
ret
//************************ПОДПРОГРАММА СОЗДАНИЯ ЛОГО*************************************
MAKE_LOGOS:
b=#FFFFFF
logo_CGF="
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbb
bbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbb
bbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbb
bbbbbbbbbbbbb.bbb..bbbbbbbbbbbbbbbbbbbbbbb..bbb.bbbbbbbbbbbb
bbbbbbbbbbbbb.bbbb..bbbbbbbbbbbbbbbbbbbbb..bbbb.bbbbbbbbbbbb
bbbbbbbbbbbbb..bbbb..bbbbbbbbbbbbbbbbbbb..bbbb..bbbbbbbbbbbb
bbbbbbbbbbbbb.bbbbbbb.bbbbbbbbbbbbbbbbb.bbbbbbb.bbbbbbbbbbbb
bbbbbbbbbbbbb.bbbbbbbb..bbbbbbbbbbbbb..bbbbbbbb.bbbbbbbbbbbb
bbbbbbbbbbbbbb.bbbbbbbb.bbbbbbbbbbbbb.bbbbbbbb.bbbbbbbbbbbbb
bbbbbbbbbbbbbb.bbbbbbbbb.bbbbbbbbbbb.bbbbbbbbb.bbbbbbbbbbbbb
bbbbbbbbbbbbbb.bb...bbbbb.bbbbbbbbb.bbbbb...bb.bbbbbbbbbbbbb
bbbbbbbbbbbbbb..b.b..bbbb..bbbbbbb..bbbb..b.b..bbbbbbbbbbbbb
bbbbbbbbbbbbbbb.b..b.bbbbb.bbbbbbb.bbbbb.b..b.bbbbbbbbbbbbbb
bbbbbbbbbbbbbbb..bbbb.bbbb.bbbbbbb.bbbb.bbbb..bbbbbbbbbbbbbb
bbbbbbbbbbbbbbbb.bbbb..bbb...bbb...bbb..bbbb.bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbb..bbb.bbbb..bbb..bbbb.bbb..bbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb.bbb..bbb.......bbb..bbb.bbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbb.bbb.bbbbbbbbbbbbb.bbb.bbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbb..b.bbbbbbbbbbbbb.b..bbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb.b.b.bbbbbbbbb.b.b.bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbb.bbb.bbbbbbb.bbb.bbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbb.bbb.bbbbbbb.bbb.bbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbb.bbbbb.bbb.bbbbb.bbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb..bbb.bbbbbbb.bbb..bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb...bbbbbbb..b..bbbbbbb...bbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb....bbb..bbbbbb.bbbbbb..bbb....bbbbbbbbbbbbbb
bbbbbbbbbbbb...b.b...b.b.bbbb.b.bbbb.b.b...b.b...bbbbbbbbbbb
bbbbbbbbb...bb..b.bbbb.bbb.bb.b.bb.bbb.bbbb.b..bb...bbbbbbbb
bbbbbbbb..b...bbbbbbbb..bb..b.b.b..bb..bbbbbbbb...b..bbbbbbb
bbbbbb.b...bb.bbbbbbbbb.....bbbbb.....bbbbbbbbb.bb...b.bbbbb
bbbb...b.bbbb.bbbbbbbbbb.bb..bbb..bb.bbbbbbbbbb.bbbb.b...bbb
bbbb.....b.b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.b.b.....bbb
bbbbb..bb...b.b..bbbbbbbbbbbbbbbbbbbbbbbbbbb..b.b...bb..bbbb
bbbbbbbbbbbb.......bbbbbbbbbbbbbbbbbbbbbbb.......bbbbbbbbbbb
bbbbbbbbbbbbbb...b.bbbbbbbbbbbbbbbbbbbbbbb.b...bbbbbbbbbbbbb
bbbbbbbbbbbbbbb..b.b.bbbbbbbb...bbbbbbbb.b.b..bbbbbbbbbbbbbb
bbbbbbbbbbbbbbb......bbbbbb...b...bbbbbb......bbbbbbbbbbbbbb
bbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbb
bbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbb
bbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbb
bbbbbbbbbbbbb...bbb.b....bbbbbbbbbbb....b.bbb...bbbbbbbbbbbb
bbbbbbbbbbbb..b..b..bb...bbbbbbbbbbb...bb..b..b..bbbbbbbbbbb
bbbbbbbbbbbb....bbb.bbbbbbbbbbbbbbbbbbbbb.bbb....bbbbbbbbbbb
bbbbbbbbbbbb..bb.bbbbb..bbbbbbbbbbbbb..bbbbb.bb..bbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbb.bbbbb.....bbbbb.bbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb..bbbbb..b..bbbbb..bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb.bb..b..bbb..b..bb.bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb.......bbbbb.......bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
"
make_pixi(logo_CGF)
A=#191919 B=#191919 C=#1E1E1E D=#212121 E=#232323 F=#313131 G=#3A3A3A H=#3A3A3A I=#3A3A3A J=#3E3E3E K=#414141 L=#454545 M=#4A4A4A
N=#4A4A4A O=#4E4E4E P=#515151 Q=#585858 R=#5A5A5A S=#5A5A5A T=#656565 U=#6A6A6A V=#6B6B6B W=#747474 X=#7B7B7B Y=#7B7B7B Z=#848484
a=#858585 b=#8C8C8C c=#8C8C8C d=#939393 e=#949494 f=#949494 g=#9E9E9E h=#A5A5A5 i=#A6A6A6 j=#ADADAD k=#ADADAD l=#B0B0B0 m=#B5B5B5
n=#B5B5B5 o=#B9B9B9 p=#C5C5C5 q=#C5C5C5 r=#D1D1D1 s=#DDDDDD t=#DEDEDE u=#EFEFEF v=#EEEEEE w=#FAFAFA x=#FFFFFF y=#FFFFFF z=#FFFFFF
karand="
.......PT.......
.......BB.......
......nBBq......
......FFEK......
.....gTPNVk.....
.....HTWWZH.....
....ZnHcgNhc....
...uNrSckKwKw...
...VrggckWqqW...
..rSyStcknZySt..
..PtyHyckvNytS..
.qVyrVyckyKwyVo.
.BwyckyckyWqywD.
ZgyyPvyZkykZyyhZ
NfytKyyZkywBywgP
ZFSSFyyDYyrDWWNc
ZBBEPHSkETFqhnkc
ZBDHNPPYfYkqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukc
ZBDHNSVYfhnqtukw
yDBBBDEFHKNNPSNv
yHBDEHKNSTVWZcHy
cBDHNSVYfhnqtuhc
wBDHNSVYfhnqtukc
rEBDFHNPTVWZcgWy
ywccccccccccccqy
"
make_pixi(karand)
ret