WIP: CreaGraFix

Pixilang по русски
User avatar
goglus
Posts: 122
Joined: Tue Dec 04, 2007 4:19 pm
Contact:

Re: WIP: CreaGraFix

Post by goglus » Tue Jul 29, 2008 12:21 pm

поставил на работе
ниче прикольно, фоны весело генерит - явная фича
а анимация на 3 сделана кадрики уж моглиб наваять

User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

CreaGraFix v.005

Post by Al_Rado » Tue Aug 05, 2008 10:11 am

Пришло время выложить обновление...

Новые функции и изменения CreaGraFix v.005:

- полностью переписаны подпрограммы симметричного рисования по аналогии с ProMotion:
а) вкл/откл симметричного рисования;
б) изменение количества точек (теперь максимальное количество точек симметриии увеличено до 30);
в) режим зеркалирования при симм. рисовании;

- переделана подпрограмма рисования: добавлена возможность рисовать кистью (рисунком) выбранной из набора (пока из 16 вариантов) определенным цветом;

- вместо фоновых направляющих добавлена сетка:
а) вкл/откл отображения сетки;
б) изменение шага сетки (минимальное значение 8 пикселей, максимальное 100);

- добавлено цифровое отображение масштаба карандаша/стерки;

- установка времени отображения для каждого кадра анимации индивидуально ;

- переход на вновь созданный кадр с копированием содержания текущего кадра (кнопка +) ;

- исправлены мелкие баги )

Сам редактор

Code: Select all

//© Al_Rado GNU GPL 2.0// CreaGraFix // Графический редактор

ver = "v.005" // версия релиза
date = "05.08.08" // дата релиза 

//*********************УСТАНОВКА ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ************************
x_window = 320 // ширина окна
y_window = 240 // высота окна
resize_pixi (0,x_window,y_window)

scr_mask = new_pixi(x_window,y_window,1)

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 = 1 // количество кадров в анимации
anim_frames_t = anim_frames // переменная для изменения количества кадров в анимации

color_alfa = #FFFFF0 // прозрачный цвет по умолчанию

animat = new_pixi( widh_wind, high_wind, anim_frames ) // Pixi-контейнер анимации
n=0 while n<(widh_wind*high_wind) {
	animat [ n ] = color_alfa
	n+1
	}
pixi_transp (animat,1,color_alfa)



tmp_frame = new_pixi( widh_wind, high_wind, 1 ) // временный кадр анимации
	n=0 while n<(widh_wind*high_wind) {
	tmp_frame [ n ] = color_alfa
	n+1
	}
	pixi_transp (tmp_frame,1,color_alfa)

tmp_layer = clone_pixi ( animat, 1 )
	
	
frame_num = 0 // текущий кадр

x_frame_num = -4 // координата для нумерации текущего кадра, меняется если количество больше 9

//frame_time = 100 // время отображения кадра анимации (общее для всех кадров)

frame_time = new_array(256) // массив для времени отображения кадра анимации

time = 100  // время показа кадров по умолчанию, милисекунды

// заполняю массив одним значением
n=0 while n < 256 {
	frame_time[n] = time
	n+1
	}

play_anim = 0 // флаг, три состояния: -1 - проигрывание анимации в обратном порядке, 0 - нет проигрывания, 1 - нормальное проигрывание

color_brush = BLACK // цвет кисти (карандаш или стерка)

color_brush_tmp = color_brush // переменная в которой хранится значение цвета карандаша при смене режима на стерку

color_fon = #999999 // цвет фона для симметричного рисования

bright_fon = 128 // яркость фона для симметричного рисования

mode_fon = -1 // флаг, вкл/выкл направляющие (фон для симметричного рисования): -1 - вкл, 1 - выкл

size_brush = 1 // размер карандаша/стерки

mode_sym = 1 // режим симметричного рисования (значения от 1 до 5)

mode_br = 1 // режим кисточки: 1 - карандаш, 2 - стерка

mode_pip = -1 // режим пипетки: -1 - выключен, 1 - включен

zakladka = 5 // текущая закладка

// переменные координат X и Y для расположения картинки
x_tmp = 0
y_tmp = 0

info = 0 // флаг, показывать инф. о программе: 0 - нет, 1 - да

stop_export_gif = 0  // флаг останова экспорта в gif, 0 - нет останова, 1 - остановить экспорт

stop_export_avi = 0 // флаг останова экспорта в avi, 0 - нет останова, 1 - остановить экспорт

status_export_avi = 0 // статус экспорта, 0 - нет экспорта, 1 - идет экспорт

status_export_gif = 0 // статус экспорта, 0 - нет экспорта, 1 - идет экспорт

frame_exp = 0 // количество экспортированных кадров

fraq = 0 // частота кадров при экспорте в Gif

scale_tmp = 0 // масштаб картинки 

fon = new_pixi (10,10,1)// фон-пустышка

// параметры фонового изображения: координата X и Y, масштаб
x_fon = 0
y_fon = 0
scale_fon = 0

wiev_fon_flag = 1 // флаг отображения фона: -1 - не отображать, 1 - отображать

wiev_fon = 1 // режим отображения фона: 1 - постоянно отображать, 2 - только во время рисования

bright_fon_img = 128 // яркость отображения фоновой картинки

// три массива значений для палитры из 16 цветов. Красная, зеленая и синяя состовляющие соответственно
color_R = new_array(16)
color_G = new_array(16)
color_B = new_array(16)
n=0
color_R[n] = 255  color_G[n] = 255  color_B[n] = 255  n+1
color_R[n] = 172  color_G[n] = 234  color_B[n] = 136  n+1
color_R[n] = 208  color_G[n] = 220  color_B[n] = 113  n+1
color_R[n] = 171  color_G[n] = 171  color_B[n] = 171  n+1
color_R[n] = 122  color_G[n] = 191  color_B[n] = 199  n+1
color_R[n] = 187  color_G[n] = 119  color_B[n] = 109  n+1
color_R[n] = 104  color_G[n] = 169  color_B[n] = 65   n+1
color_R[n] = 128  color_G[n] = 128  color_B[n] = 128  n+1
color_R[n] = 124  color_G[n] = 112  color_B[n] = 218  n+1
color_R[n] = 144  color_G[n] = 95   color_B[n] = 37   n+1
color_R[n] = 141  color_G[n] = 71   color_B[n] = 179  n+1
color_R[n] = 84   color_G[n] = 84   color_B[n] = 84   n+1
color_R[n] = 140  color_G[n] = 62   color_B[n] = 52   n+1
color_R[n] = 87   color_G[n] = 66   color_B[n] = 0    n+1
color_R[n] = 62   color_G[n] = 49   color_B[n] = 162  n+1
color_R[n] = 0    color_G[n] = 0    color_B[n] = 0  

NUL_COLOR

// координаты ячейки текущего цвета карандаша (черный по умолчанию)
x_color = -155+3*13
y_color = -80+3*13

loop = 1 // зацикливание анимации: -1 - нет, 1 - есть

color_num = -1 // номер цвета в палитре своих цветов, 0-15, равен -1 если активны другие палитры

// массив со значениями углов для симметричного рисования
simmetry =  new_array(31) // на один больше т.к. начинаем с первого, а не нулевого
n=1 
simmetry[n] = 0 n+1		simmetry[n] = 256 n+1 	simmetry[n] = 170 n+1 	simmetry[n] = 128 n+1
simmetry[n] = 103 n+1 	simmetry[n] = 85 n+1 	simmetry[n] = 73 n+1 	simmetry[n] = 64 n+1
simmetry[n] = 57 n+1 	simmetry[n] = 51 n+1 	simmetry[n] = 47 n+1 	simmetry[n] = 43 n+1
simmetry[n] = 39 n+1 	simmetry[n] = 37 n+1 	simmetry[n] = 34 n+1 	simmetry[n] = 32 n+1
simmetry[n] = 30 n+1 	simmetry[n] = 28 n+1 	simmetry[n] = 27 n+1 	simmetry[n] = 26 n+1
simmetry[n] = 24 n+1 	simmetry[n] = 23 n+1 	simmetry[n] = 22 n+1 	simmetry[n] = 21 n+1
simmetry[n] = 21 n+1 	simmetry[n] = 20 n+1 	simmetry[n] = 19 n+1 	simmetry[n] = 18 n+1
simmetry[n] = 18 n+1 	simmetry[n] = 17	

mirror = -1 // зеркалирование при симметричном рисовании
symm_on = 1 // симметричное рисование вкл/откл

x_grid = 20 // ширина сетки

b=#000000
brush_1="
.........
.........
.........
.........
....b....
.........
.........
.........
.........
+
.........
.........
.........
........
...bbb...
.........
.........
.........
.........
+
.........
.........
.........
....b....
...bbb...
....b....
.........
.........
.........
+
.........
.........
.........
.....b...
....b....
...b.....
.........
.........
.........
+
.........
.........
....b....
...bbb...
..bbbbb..
...bbb...
....b....
.........
.........
+
.........
.........
...bb....
..bbbb...
..bbbb...
...bb....
.........
.........
+
...bb....
.bbbbbb..
.bbbbbb..
bbbbbbbb.
bbbbbbbb.
.bbbbbb..
.bbbbbb..
...bb....
.........
+
...bb....
.bb..bb..
.b....b..
b......b.
b......b.
.b....b..
.bb..bb..
...bb....
.........
+
.........
.........
..b.b.b..
...bbb...
..bbbbb..
...bbb...
..b.b.b..
.........
.........
+
.........
.b..b..b.
..b.b.b..
...bbb...
.bbbbbbb.
...bbb...
..b.b.b..
.b..b..b.
.........
+
b...b...b
.b..b..b.
..b.b.b..
...bbb...
bbbbbbbbb
...bbb...
..b.b.b..
.b..b..b.
b...b...b
+
b...b...b
.b..b..b.
..b...b..
...b.b...
bbb...bbb
...b.b...
..b...b..
.b..b..b.
b...b...b
+
.........
.........
.........
...b.b...
....b....
...b.b...
.........
.........
.........
+
.........
.........
..b...b..
...b.b...
....b....
...b.b...
..b...b..
.........
.........
+
.........
.........
..b......
...b.....
....b....
.....b...
......b..
.........
.........
+
.........
.........
..bb.bb..
.bbbbbbb.
.bbbbbbb.
..bbbbb..
...bbb...
....b....
.........
"
make_pixi (brush_1)

brush_1_num = 0 // номер кадра кисточки №1

x_brush = -155 y_brush = -80




//***************************ГЛАВНЫЙ ЦИКЛ*************************************
start:
clear (SNEG)

if wiev_fon_flag > 0 & wiev_fon = 1 { transp (bright_fon_img) fpixi (fon,x_fon,y_fon,0,scale_fon,0) transp (256) } // вывод фонового изображения (постоянно).


SYMM_FON // вывод фона с направляющими для симметричного рисования (постоянно).



// проверка: есть ли запись
if save_flag=1 {SAVE_ANIM}
if save_flag=2 {SAVE_GIF}
if save_flag=3 {SAVE_TXT}
if save_flag=4 { EXPORT_AVI start_timer (0) start_timer (1) }
if save_flag=5 { EXPORT_GIF start_timer (0) start_timer (1) }

if stop_export_gif = 1 {stop_video_export stop_export_gif = 0 }
if stop_export_avi = 1 {stop_video_export stop_export_avi = 0 }

// проверка: показывать инфо
if info = 1 {INFO_ABOUT}

// печать текущего кадра Pixi-контейнера 
fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )
fpixi ( tmp_layer, 0, 0, 0, 0, frame_num )

// вывод "перекрестия"
	if mode_pip > 0 & color_num >= 0 {
	ccc = get_dot(get_pen_x, get_pen_y)
	line ( get_pen_x-5, get_pen_y, get_pen_x+5, get_pen_y, BLACK )
	line ( get_pen_x, get_pen_y-5, get_pen_x, get_pen_y+5, BLACK )
	box ( get_pen_x-2, get_pen_y-2, 4, 4, WHITE )
	fbox ( get_pen_x-2, get_pen_y-2, 4, 4, ccc )
	}

// закрываю все, кроме рабочего поля
MASK_WORKSPACE
	
// обработать мышку (стилус)
handle_keys({play_anim = 0 DRAWING BOTTOM ZAKL},{DRAWING},{DRAWING})

DRAW_ZAKLAD // отрисовка закладок

DRAW_MENU // отрисовка менюшек и кнопок

PLAY_ANIMAT // проверка: проигрывать анимацию


// если идет запись в Gif файл, то сохраняются кадры через n-ное время, иначе просто перерисовываю экран
if stop_export_gif = 0 & status_export_gif = 1 { pause_video_export frame (fraq) frame_exp+1 resume_video_export frame (0)} else { 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)

// отрисовка кнопок перемещения по кадрам анимации, воспроизведение анимации вперед/назад
TIMELINE



// закладка ----------ФАЙЛ----------

if zakladka = 0 {
// отгораживаю разные поля меню
fbox(-160,0,60,2,BLACK)
fbox(100,0,60,2,BLACK)

// область новых размеров
if widh_wind > 200 { box( -100 , -100 , 200 , 200 , RED ) } else {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)


box(104,-95,52,12,BLACK)
box(104,-79,52,12,BLACK)
box(104,-63,44,12,BLACK)

print("
C_АНИМ

C_GIF

С_TXT
"
,106,-100, BLACK)

fbox(102,8,48,28,#CCCCCC)
fbox(104,10,44,12,WHITE)
fbox(102,40,57,39,#CCCCCC)
fbox(104,42,44,12,WHITE)
fbox(104,65,10,12,WHITE)
fbox(130,65,10,12,WHITE)

// если идет запись рисования в AVI, подсвечиваю кнопку СТОП красным и вывожу секундомер
if status_export_avi = 1 {
fbox(104,83,44,12,RED) 
s = get_timer(0)/1000
if s > 60 { start_timer (0) }
m = get_timer(1)/60000
print( "$m:$s c", 110, 27, BLUE ) 
} else { box(104,83,44,12,RED) print( "0:0 c", 110, 27, BLUE )}

// если идет запись рисования в GIF, подсвечиваю кнопку СТОП красным и вывожу количество записанных кадров
if status_export_gif = 1 {
fbox(104,83,44,12,RED) 
print( "$frame_exp", 110, 56, BLUE ) 
print( "    K", 110, 56, BLUE )
print( "    Гц", 110, 69, BLUE )
} else { 
frame_exp = 0 
box(104,83,44,12,RED) 
print( "000 K", 110, 56, BLUE )
print( "    Гц", 110, 69, BLUE )}

print("
Э_AVI



Э_GIF


<  >

СТОП
"
,106,5, BLACK)

if fraq != 0 {fraq_per_s = 1000/fraq} else {fraq_per_s = 24}
print("$fraq_per_s",114,69, BLACK)


// расположение и масштаб картинки

print ("
  В
Л   П
  Н
", -156, -40, BLUE)

box(-142,-34,12,12,BLUE)
box(-158,-26,12,12,BLUE)
box(-126,-26,12,12,BLUE)
box(-142,-18,12,12,BLUE)

print ("
  +
-   +
  -
", 111, -40, BLUE)

box(124,-34,12,12,BLUE)
box(108,-26,12,12,BLUE)
box(140,-26,12,12,BLUE)
box(124,-18,12,12,BLUE)

}

// закладка ----------АНИМАЦИЯ----------	

if zakladka = 1 {
print("
ВР:

  +

  -
"
,-154,-100, BLACK)
time = frame_time[frame_num]
print("$time", -130, -92, BLACK)
box(-157,-95,54,12,BLACK)
box(-157,-79,44,12,BLACK)
box(-157,-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 zakladka = 2 {


if mode_pip < 0 { box( 101 ,67 , 58, 12, BLACK ) } else { fbox( 101 ,67 , 58, 12, RED ) }
print ("ПИПЕТКА",103,70, BLACK)
print ("АВТО_ЦВ",103,84, BLACK)
box( 101 ,81 , 58, 12, BLACK )

print ("Т.ЦВЕТ",105,-90, BLACK)
fbox( 110 ,-79 , 42, 14, color_brush )
box( 110 ,-79 , 42, 14, BLACK )
box( 112 ,-77 , 38, 10, get_color ( 256-get_red (color_brush)/2, 256-get_green (color_brush)/2, 256-get_blue(color_brush)/2 ) )
box( 109 ,-80 , 44, 16, BLACK )

fbox( 116 ,-59 , 30, 10, RED )
fbox( 116 ,-47 , 30, 10, GREEN )
fbox( 116 ,-35 , 30, 10, BLUE )

red = get_red(color_brush)
green = get_green(color_brush)
blue = get_blue(color_brush)

print ("$red" ,119,-57,BLACK)
print ("$green" ,118,-45,BLACK)
print ("$blue" ,119,-33,BLACK)
print ("$red" ,118,-58,WHITE)
print ("$blue" ,118,-34,WHITE)


fbox( 100 ,-59 , 7, 10, #AAAAAA ) fbox( 153 ,-59 , 7, 10, #AAAAAA ) // на десяток меньше/больше
box( 106 ,-59 , 9, 10, BLACK ) box( 145 ,-59 , 9, 10, BLACK ) // на единицу меньше/больше

fbox( 100 ,-47 , 7, 10, #AAAAAA ) fbox( 153 ,-47 , 7, 10, #AAAAAA ) // на десяток меньше/больше
box( 106 ,-47 , 9, 10, BLACK ) box( 145 ,-47 , 9, 10, BLACK ) // на единицу меньше/больше

fbox( 100 ,-35 , 7, 10, #AAAAAA ) fbox( 153 ,-35 , 7, 10, #AAAAAA ) // на десяток меньше/больше
box( 106 ,-35 , 9, 10, BLACK ) box( 145 ,-35 , 9, 10, BLACK ) // на единицу меньше/больше

print("<<",100,-57,BLACK) print(">>",145,-57,BLACK)
print("<<",100,-45,BLACK) print(">>",145,-45,BLACK)
print("<<",100,-33,BLACK) print(">>",145,-33,BLACK)

print ("СВОИ ЦВ",103,-7, BLACK) // отрисовываю свои цвета
l=0
n=0 while n<4 {
	m=0 while m<4{
	fbox( 105+m*13 ,3+n*13 , 12, 12, get_color ( color_R_own[l], color_G_own[l], color_B_own[l] ) )
	m+1 l+1
	}
n+1
}


print ("16 цв",-150,-90, BLACK) // отрисовываю палитру 16 цветов
l=0
n=0 while n<4 {
	m=0 while m<4{
	fbox( -155+m*13 ,-80+n*13 , 12, 12, get_color ( color_R[l], color_G[l], color_B[l] ) )
	m+1 l+1
	}
n+1
}

print ("16 сер",-152,-7, BLACK) // отрисовываю палитру 16 градаций серого
l=0
n=1 while n<5 {
	m=1 while m<5{
	fbox( -168+m*13, -10+n*13, 12, 12, get_color ( 256-16*l , 256-16*l , 256-16*l ) )
	m+1 l+1
	}
n+1
}

box ( x_color , y_color , 12, 12, get_color ( 256-get_red (color_brush), 256-get_green (color_brush), 256-get_blue(color_brush) ) )
box ( x_color+2 , y_color+2 , 8, 8, get_color ( 256-get_red (color_brush)/2, 256-get_green (color_brush)/2, 256-get_blue(color_brush)/2 ) )



}

// закладка ----------КИСТЬ----------

if zakladka = 3 {

print ("КИСТЬ",-150,-90, BLACK) // отрисовываю 16 кисточек
l=0
n=0 while n<4 {
	m=0 while m<4{
	box( -155+m*13 ,-80+n*13 , 12, 12, BLACK )
	fpixi ( brush_1, -149+m*13 ,-74+n*13, 0, 0, l )
	m+1 l+1
	}
n+1
}
box ( x_brush-2 , y_brush-2 , 16, 16, RED )
box ( x_brush-1 , y_brush-1 , 14, 14, RED )
box ( x_brush , y_brush , 12, 12, RED )

}


// закладка ----------ФОН------------

if zakladka = 4 {

// отрисовка кнопок
print("
О_ФОН 
"
,-155,-100, BLACK)
box(-159,-95,56,12,BLACK)

print ("
  В
Л   П
  Н
", -156, -40, BLUE)

box(-142,-34,12,12,BLUE)
box(-158,-26,12,12,BLUE)
box(-126,-26,12,12,BLUE)
box(-142,-18,12,12,BLUE)

print ("
  +
-   +
  -
", 111, -40, BLUE)

box(124,-34,12,12,BLUE)
box(108,-26,12,12,BLUE)
box(140,-26,12,12,BLUE)
box(124,-18,12,12,BLUE)


if wiev_fon_flag > 0 { fbox(105,-90,48,12,#CCCCCC) } else { box(105,-90,48,12,BLACK) }

print (
"
ПОКАЗ
",110,-95,BLACK)

print("


<ЯРК>
"
,107,-17, BLACK)

box(104,4,10,12,BLACK)
box(139,4,10,12,BLACK)

}

// закладка --------РИСОВАНИЕ--------

if zakladka = 5 {

// отрисовка режима рисования и настроек карандаша/стерки

if mode_br = 1 {

fbox(-150,-100,40,100,#CCCCCC)

fbox(-148,-79,37,15,#EEEEEE)
fbox(-140,-93,20,12,#EEEEEE)
box(-147,-77,10,10,BLACK)
box(-124,-77,10,10,BLACK)

print("
 <  >
"
,-155,-83, BLACK)

if size_brush < 10 { print("$size_brush",-135,-90, BLACK) } else { print("$size_brush",-139,-90, BLACK) }


fbox(-130-size_brush/2,-72-size_brush/2, size_brush, size_brush,color_brush)
if size_brush>2 {box(-130-size_brush/2,-72-size_brush/2, size_brush, size_brush,BLACK)}
} else {

fbox(-150,0,40,100,#CCCCCC)

fbox(-148,69,37,15,#AAAAAA)
fbox(-140,85,20,12,#AAAAAA)
box(-147,71,10,10,BLACK)
box(-124,71,10,10,BLACK)

print("
 <  >
"
,-155,65, BLACK)

fbox(-130-size_brush/2,76-size_brush/2, size_brush, size_brush,WHITE)

if size_brush < 10 { print("$size_brush",-135,87, BLACK) } else { print("$size_brush",-139,87, BLACK) }

}

pixi (karand,-130,0,1,128)

// отрисовка кнопок
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)

if x_grid < 10 {
print(" $x_grid",114,-28, BLACK) } else { print(" $x_grid",110,-28, BLACK) }




box(104,-47,44,12,BLACK)
box(104,-31,10,12,BLACK)
box(139,-31,10,12,BLACK)

fbox(104,66,44,12,#CCCCCC)

if symm_on < 1 { box(104,50,54,13,BLACK) } else {  fbox(104,50,54,13,#CCCCCC) }
print( "СИММЕТР", 103, 54, BLACK )
print( "<  > т.", 110, 69, BLUE )
if mode_sym < 10 { print( "$mode_sym", 123, 69, BLUE ) } else { print( "$mode_sym", 118, 69, BLUE ) }

box (105,65,12,12,RED)
box (135,65,12,12,RED)

if mirror < 1 { box(104,81,52,12,BLACK) } else {  fbox(104,81,52,12,#CCCCCC) }
print( "ЗЕРКАЛ", 106, 84, BLACK )
}


// рамки, обозначения области меню и вокруг кадра
box( -100 , -100 , 200 , 200 , #AAAAAA )
if widh_wind > 200 { box( -100 , -100 , 200 , 200 , BLUE ) } else {box( x_wind , y_wind , widh_wind , high_wind , BLUE )}

SCREENSHOT_MASK

ret

// Подпрограмма отрисовки кнопок перемещения по кадрам анимации, воспроизведение анимации вперед/назад
TIMELINE:
fbox(-100,103,23,12,#AAAAAA)
fbox(77,103,26,12,#AAAAAA)
if loop=1 {fbox(121,103,12,12,#CCCCCC) } // если включено зацикливание проигрывания анимации, подсвечиваю кнопку
print("I< << <     > >> >I      L", -76, 106, BLACK) 
print("-                          +", -110, 106, BLACK) 
print("1", -94, 106, BLACK) 
temp = anim_frames
print("$temp", 82, 106, BLACK) 


if frame_num >= anim_frames { frame_num = anim_frames temp = frame_num } else { temp = frame_num+1 }


if temp > 9 { x_frame_num = -9 } else { x_frame_num = -4 }
print("$temp", 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)
box(-113,103,12,12,BLACK)
box(103,103,12,12,BLACK)


box(121,103,12,12,BLACK)

ret

//************************ПОДПРОГРАММА ОПРОСА ЗАКЛАДОК******************************
ZAKL:
if gpr( -160,-118,52,14 )       { zakladka = 0 }
if gpr( -160+54*1,-118,52,14 )  { zakladka = 1 }
if gpr( -160+54*2,-118,52,14 )  { zakladka = 2 }
if gpr( -160+54*3,-118,52,14 )  { zakladka = 3 }
if gpr( -160+54*4,-118,52,14 )  { zakladka = 4 }
if gpr( -160+54*5,-118,52,14 )  { 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 gpr(121,103,12,12) { loop = -loop }
	
// удаляю кадр на таймлайн (-)
	if gpr(-113,103,12,12) { 
		tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames-1 )
		tmp_layer_q = new_pixi( widh_wind, high_wind, anim_frames-1 )
			n=0 while n<(widh_wind*high_wind*anim_frames+1) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)
		n=0 while n<(widh_wind*high_wind)*frame_num {
		tmp_pixi [ n ] = animat[ n ]
		tmp_layer_q [ n ] = tmp_layer[ 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 ]
			tmp_layer_q [ n ] = tmp_layer[ n ]
			n+1 
			} 	
		}
	remove_pixi ( animat ) 
	animat = clone_pixi ( tmp_pixi,1 )
	tmp_layer = clone_pixi ( tmp_layer_q, 1 )	
	anim_frames = get_pixi_frames(animat)
	if frame_num = anim_frames { frame_num-1 }
	if frame_num < 0 { frame_num = 1 }
	if frame_num > anim_frames { frame_num = anim_frames }
	
	TIMELINE
	}	

//добавляю кадр	на таймлайн (+)
	if gpr(103,103,12,12) { 
	anim_frames = anim_frames+1
		tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames )
		tmp_layer_q = new_pixi( widh_wind, high_wind, anim_frames )
			n=0 while n<(widh_wind*high_wind*anim_frames) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)

			n=0 while n<(widh_wind*high_wind)*(anim_frames) {
			tmp_pixi [ n ] = animat[ n ]
			tmp_layer_q [ n ] = tmp_layer[ n ]
			n+1 
			} 	
			
			n=((widh_wind*high_wind)*(anim_frames-1)) while n<(widh_wind*high_wind)*(anim_frames) {
			//tmp_pixi [ n ] = color_alfa
			//tmp_layer_q [ n ] = color_alfa
			tmp_pixi [ n ] = tmp_pixi [ n-(widh_wind*high_wind) ]
			tmp_layer_q [ n ] = tmp_layer_q [ n-(widh_wind*high_wind) ]
			n+1 
			} 				
				

	remove_pixi ( animat ) 
	animat = clone_pixi ( tmp_pixi,1 )	
	tmp_layer = clone_pixi ( tmp_layer_q, 1 )
	anim_frames = get_pixi_frames(animat)	
	frame_num+1
	TIMELINE
	}	

// закладка ----------ФАЙЛ----------

if zakladka = 0 {

mode_pip= -1

	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,44,12) { save_flag = 4 } // записать процесса рисования в .avi файл
	if gpr(104,42,44,12) { save_flag = 5 } // записать процесса рисования в .gif файл	
	if gpr(104,83,44,12) { stop_export_gif = 1 stop_export_avi = 1 status_export_avi = 0 status_export_gif = 0 } // останов записи
	if gpr(104,65,10,12) { fraq+100 if fraq>1000 { fraq=1000 } } // уменьшение частоты кадров при экспорте в .gif файл
	if gpr(130,65,10,12) { fraq-100 if fraq<0 { fraq=0 }} // увеличение частоты кадров при экспорте в .gif файл	
	
	
	// переместить изображение по кадру и изменить размер 

		if gpr(-142,-34,12,12) { y_tmp-4 ON_BACKGROUND } // выше
		
		if gpr(-158,-26,12,12) { x_tmp-4 ON_BACKGROUND } // левее
		
		if gpr(-126,-26,12,12) { x_tmp+4 ON_BACKGROUND } // правее
		
		if gpr(-142,-18,12,12) { y_tmp+4 ON_BACKGROUND } // ниже
		
		
		if gpr(124,-34,12,12) | gpr(140,-26,12,12) { scale_tmp+4 ON_BACKGROUND } // увеличение высоты и ширины
		
		if gpr(124,-18,12,12) | gpr(108,-26,12,12) { scale_tmp-4 ON_BACKGROUND } // уменьшение высоты и ширины


	// изменение размеров 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 = anim_frames_t - 1
			} else { anim_frames_t = 1 }
		}
		
		if gpr( -116,58,12,12 ) { 	// >	
			if anim_frames_t < 256 {
			anim_frames_t = 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 )
		tmp_layer_q = new_pixi( widh_wind_t, high_wind_t, anim_frames_t )
			n=0 while n<(widh_wind_t*high_wind_t*anim_frames_t) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)
				
		remove_pixi ( animat ) 
		animat = clone_pixi ( tmp_pixi,1 )	
		tmp_layer = clone_pixi ( tmp_layer_q, 1 )
		//pixi_transp (animat,1,color_alfa)
		//pixi_transp (tmp_layer,1,color_alfa)
		
		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 ) { 
		all_pix = widh_wind_t*high_wind_t*anim_frames_t
		tmp_pixi = new_pixi( widh_wind_t, high_wind_t, anim_frames_t )
		tmp_layer_q = new_pixi( widh_wind_t, high_wind_t, anim_frames_t )
			n=0 while n<(widh_wind_t*high_wind_t*anim_frames_t) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)	
			pixi_transp (tmp_layer_q,1,color_alfa)	
						
			
			// если размеры не поменялись, пересчет кадров
			//if widh_wind = widh_wind_t {
			n=0 while n< all_pix {
			tmp_pixi [ n ] = animat[ n ]
			tmp_layer_q [ n ] = tmp_layer [ 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 ]
					tmp_layer_q [ n + widh_wind_t*m + (widh_wind_t*high_wind_t)*l ] = tmp_layer [ (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 ]
					tmp_layer_q [ (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 ] = tmp_layer [ n + widh_wind*m + (widh_wind*high_wind)*l ]
					n+1
					}
				m+1
				}	
			l+1	
			}
			}

		remove_pixi ( animat ) 
		animat = clone_pixi ( tmp_pixi,1 )
		tmp_layer = clone_pixi ( tmp_layer_q, 1 )
		//pixi_transp (animat,1,color_alfa)	
		
		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 frame_num = anim_frames_t { frame_num-1 }
	if frame_num < 0 { frame_num = 1 }
	if frame_num > anim_frames_t { frame_num = anim_frames_t }			
	fpixi( animat, 0, 0, 0, 0, frame_num )	
	}
}

// закладка ----------АНИМАЦИЯ----------	



if zakladka = 1 {	

mode_pip= -1
	
	// задаю время показа кадра в милисекундах 
	if gpr(-157,-79,44,12) { frame_time[frame_num] = frame_time[frame_num] + 100 if frame_time[frame_num] > 10000 { frame_time[frame_num] = 10000 } }
	if gpr(-157,-63,44,12)  { frame_time[frame_num] = frame_time[frame_num] - 100 if frame_time[frame_num] < 0 { frame_time[frame_num] = 0 } }

	// очищаю кадр		
	if gpr(104,10,52,12) { 
	n=0 while n<(widh_wind*high_wind) {
		animat[((widh_wind*high_wind)*frame_num)+n] =  color_alfa
		tmp_layer[((widh_wind*high_wind)*frame_num)+n] =  color_alfa
		n+1 
		} 
	}
	
	// удаляю кадр	
	if gpr(104,26,52,12) { 
		tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames-1 )
		tmp_layer_q = new_pixi( widh_wind, high_wind, anim_frames-1 )
			n=0 while n<(widh_wind_t*high_wind_t*anim_frames_t) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)
		n=0 while n<(widh_wind*high_wind)*frame_num {
		tmp_pixi [ n ] = animat[ n ]
		tmp_layer_q [ n ] = tmp_layer [ 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) ]
			tmp_layer_q [ n ] = tmp_layer[ n+(widh_wind*high_wind) ]
			n+1 
			} 	
		}
	remove_pixi ( animat ) 
	animat = clone_pixi ( tmp_pixi,1 )	
	tmp_layer = clone_pixi ( tmp_layer_q, 1 )
	anim_frames = get_pixi_frames(animat)
	if frame_num = anim_frames { frame_num-1 }
	if frame_num < 0 { frame_num = 1 }
	if frame_num > anim_frames { frame_num = anim_frames }
	}	
	
	// копирую кадр в буфер
	if gpr(104,42,52,12) { 
	tmp_frame = new_pixi( widh_wind, high_wind, 1 )
	tmp_layer_q = new_pixi( widh_wind, high_wind, 1 )
			n=0 while n<(widh_wind_t*high_wind_t*anim_frames_t) {
			tmp_frame [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_frame,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)
	
		n=0 while n<(widh_wind*high_wind) {
		tmp_frame [ n ] = animat[ ((widh_wind*high_wind)*frame_num) + n ]
		tmp_layer_q [ n ] = tmp_layer [ ((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 ]
		 tmp_layer [ ((widh_wind*high_wind)*frame_num) + n ] = tmp_layer_q [ n ]
		n+1 
		} 
	}
	
	//добавляю кадр	
	if gpr(104,74,52,12) { 
	anim_frames = anim_frames+1
		tmp_pixi = new_pixi( widh_wind, high_wind, anim_frames )
		tmp_layer_q = new_pixi( widh_wind, high_wind, anim_frames )
			n=0 while n<(widh_wind*high_wind*anim_frames) {
			tmp_pixi [ n ] = color_alfa
			tmp_layer_q [ n ] = color_alfa
			n+1
			}
			pixi_transp (tmp_pixi,1,color_alfa)
			pixi_transp (tmp_layer_q,1,color_alfa)
		
		n=0 while n<(widh_wind*high_wind)*(frame_num+1) {
		tmp_pixi [ n ] = animat[ n ]
		tmp_layer_q [ n ] = tmp_layer[ 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 ]
			tmp_layer_q [ n+(widh_wind*high_wind) ] = tmp_layer[ n ]
			
			n+1 
			} 	
		}
	remove_pixi ( animat ) 
	animat = clone_pixi ( tmp_pixi,1 )	
	tmp_layer = clone_pixi ( tmp_layer_q, 1 )
	anim_frames = get_pixi_frames(animat)	
	frame_num+1
	}
	
}

// закладка ----------ЦВЕТ-----------

if zakladka = 2 {
	
	l=0
	n=0 while n<4 {
		m=0 while m<4{
		if gpr( 105+m*13 ,3+n*13 , 12, 12 ) { color_brush = get_color ( color_R_own[l], color_G_own[l], color_B_own[l] ) x_color = 105+m*13 y_color = 3+n*13 color_num = l mode_br = 1 }
		m+1 l+1
		}
	n+1
	}
	
	l=0
	n=0 while n<4 {
		m=0 while m<4{
		if gpr( -155+m*13 ,-80+n*13 , 12, 12 ) { color_brush = get_color ( color_R[l], color_G[l], color_B[l] ) x_color = -155+m*13 y_color = -80+n*13 color_num = -1 mode_br = 1 }
		m+1 l+1
		}
	n+1
	}

	l=0
	n=1 while n<5 {
		m=1 while m<5{
		if gpr( -168+m*13, -10+n*13, 12, 12 ) { color_brush = get_color ( 256-16*l, 256-16*l, 256-16*l ) x_color = -168+m*13 y_color = -10+n*13 color_num = -1 mode_br = 1 }
		m+1 l+1
		}
	n+1
	}
mode_br = 1

if color_num >= 0 { // если выбран цвет из палитры своих цветов, то можно менять значение состовляющих цвета
	// меняю состовляющую цвета RED
	if gpr ( 106 ,-59 , 9, 10 ) { color_R_own[color_num]=color_R_own[color_num]-1  } // уменьшение значения на 1
	if gpr ( 145 ,-59 , 9, 10 ) { color_R_own[color_num]=color_R_own[color_num]+1  } // увеличение значения на 1
	if gpr ( 100 ,-59 , 7, 10 ) { color_R_own[color_num]=color_R_own[color_num]-10 } // уменьшение значения на 10
	if gpr ( 153 ,-59 , 7, 10 ) { color_R_own[color_num]=color_R_own[color_num]+10 } // увеличение значения на 10
	
	// меняю состовляющую цвета GREEN
	if gpr ( 106 ,-47 , 9, 10 ) { color_G_own[color_num]=color_G_own[color_num]-1  } // уменьшение значения на 1
	if gpr ( 145 ,-47 , 9, 10 ) { color_G_own[color_num]=color_G_own[color_num]+1  } // увеличение значения на 1
	if gpr ( 100 ,-47 , 7, 10 ) { color_G_own[color_num]=color_G_own[color_num]-10 } // уменьшение значения на 10
	if gpr ( 153 ,-47 , 7, 10 ) { color_G_own[color_num]=color_G_own[color_num]+10 } // увеличение значения на 10

	
	// меняю состовляющую цвета BLUE
	if gpr ( 106 ,-35 , 9, 10 ) { color_B_own[color_num]=color_B_own[color_num]-1  } // уменьшение значения на 1
	if gpr ( 145 ,-35 , 9, 10 ) { color_B_own[color_num]=color_B_own[color_num]+1  } // увеличение значения на 1
	if gpr ( 100 ,-35 , 7, 10 ) { color_B_own[color_num]=color_B_own[color_num]-10 } // уменьшение значения на 10
	if gpr ( 153 ,-35 , 7, 10 ) { color_B_own[color_num]=color_B_own[color_num]+10 } // увеличение значения на 10
	
	if color_R_own[color_num]<0 	{ color_R_own[color_num]=0 }
	if color_R_own[color_num]>255 	{ color_R_own[color_num]=255 }
	if color_G_own[color_num]<0 	{ color_G_own[color_num]=0 }
	if color_G_own[color_num]>255 	{ color_G_own[color_num]=255 }	
	if color_B_own[color_num]<0 	{ color_B_own[color_num]=0 }
	if color_B_own[color_num]>255 	{ color_B_own[color_num]=255 }	
	
	color_brush = get_color ( color_R_own[color_num], color_G_own[color_num], color_B_own[color_num] )
	
}

if gpr ( 101 ,67 , 58, 12 ) & color_num >= 0 { mode_pip = -mode_pip } // режим "пипетки"

if gpr ( 101 ,81 , 58, 12 ) {  // автоматическое определение палитры цветов в анимации (16 цветов)

NUL_COLOR // сброс всех цветов в значение по умолчанию (серый)

	p=0	l=0 r=0
		n = (widh_wind*high_wind*frame_num) while n < (widh_wind*high_wind*anim_frames) {
			if animat[n] != get_color ( color_R_own[l], color_G_own[l], color_B_own[l] ) { 
				m=0 while m<8 {
				if animat[n] = get_color ( color_R_own[m], color_G_own[m], color_B_own[m] )  {p+1}
				m+1}
				if p < 1 { color_R_own[l] = get_red	( animat[n] ) color_G_own[l] = get_green ( animat[n] ) color_B_own[l] = get_blue ( animat[n] ) l+1 }
				p=0
			}
			
			if tmp_layer[n] != get_color ( color_R_own[l], color_G_own[l], color_B_own[l] ) { 
				m=0 while m<16 {
				if tmp_layer[n] = get_color ( color_R_own[m], color_G_own[m], color_B_own[m] ) {r+1}
				m+1}
				if r < 1 { color_R_own[l] = get_red	( tmp_layer[n] ) color_G_own[l] = get_green ( tmp_layer[n] ) color_B_own[l] = get_blue ( tmp_layer[n] )	l+1}
				
			  r=0
			}
		n+1
		}
}

}

// закладка ----------КИСТЬ----------



if zakladka = 3 {

mode_pip= -1

	l=0
	n=0 while n<4 {
		m=0 while m<4{
		if gpr( -155+m*13 ,-80+n*13 , 12, 12 ) { brush_1_num = l  x_brush = -155+m*13 y_brush = -80+n*13 }
		m+1 l+1
		}
	n+1
	}

}



// закладка ----------ФОН------------



if zakladka = 4 {

mode_pip= -1

	if gpr(-159,-95,56,12) {LOAD_FON} // открыть файл Jpeg/Gif в качестве фонового изображения

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

if wiev_fon_flag > 0 {

	if gpr(-142,-34,12,12) { y_fon-4 } // выше
		
	if gpr(-158,-26,12,12) { x_fon-4 } // левее
		
	if gpr(-126,-26,12,12) { x_fon+4 } // правее
		
	if gpr(-142,-18,12,12) { y_fon+4 } // ниже
		
		
	if gpr(124,-34,12,12) | gpr(140,-26,12,12) { scale_fon+8 } // увеличение высоты и ширины
		
	if gpr(124,-18,12,12) | gpr(108,-26,12,12) { scale_fon-8 } // уменьшение высоты и ширины

	// уменьш./увелич. яркости фонового изображения
	
		if gpr(104,4,10,12) { bright_fon_img-8  
			if bright_fon_img < 16 { bright_fon_img = 16 }
			}
		if gpr(139,4,10,12) { bright_fon_img+8  
			if bright_fon_img >256 { bright_fon_img = 256 }
			}
}
		
// как отображать фоновое изображение


	if gpr(105,-90,48,12) { wiev_fon_flag = -wiev_fon_flag } // отображать / не отображать
}


// закладка --------РИСОВАНИЕ--------



if zakladka = 5 {

mode_pip= -1

	// очищаю кадр	
	if gpr(104,-90,52,12) { 
	n=0 while n<(widh_wind*high_wind) {
		animat[((widh_wind*high_wind)*frame_num)+n] = color_alfa 
		tmp_layer[((widh_wind*high_wind)*frame_num)+n] = color_alfa 
		n+1 
		} 
	}
	
	// выбор: карандаш или стерка
	if gpr(-150,-60,40,65) &  mode_br = 2 { color_brush = color_brush_tmp mode_br = 1 } 
	if gpr(-150,0,40,65) &  mode_br = 1 { color_brush_tmp = color_brush color_brush = color_alfa mode_br = 2 } 
	
	// увелич/уменьш размера карандаша
	if gpr(-147,-77,10,10) { size_brush-1 if size_brush < 1 { size_brush = 1 } }
	if gpr(-124,-77,10,10) { size_brush+1 if size_brush > 10 { size_brush = 10 } }	
	
	// увелич/уменьш размера стерки
	if gpr(-147,71,10,10) { size_brush-1 if size_brush < 1 { size_brush = 1 } }
	if gpr(-124,71,10,10) { size_brush+1 if size_brush > 10 { size_brush = 10 } }		

	// вкл/выкл направляющие (фон для симметричного рисования)
	if gpr(104,-47,44,12) { mode_fon = - mode_fon}

	// если сетка включена, то можно её уменьшить/увеличить 
	if mode_fon = 1 {
		if gpr(104,-31,10,12) { x_grid = x_grid - 1 
			if x_grid < 8 { x_grid = 8 }
			}
		if gpr(139,-31,10,12) { x_grid = x_grid + 1 
			if x_grid > 100 { x_grid = 100 }
			}
	}

	// выбор одного из четырех режимов симметричного рисования и режима без симметрии


	if gpr(105,65,12,12) { mode_sym = mode_sym-1 if mode_sym < 1 { mode_sym = 1 } } // уменьшаю количество точек для симметричного рисования
	if gpr(135,65,12,12) { mode_sym = mode_sym+1 if mode_sym > 30 { mode_sym = 30 } } // увеличиваю количество точек для симметричного рисования
	if gpr(104,50,54,13) { symm_on = - symm_on}	// вкл/откл симметричное рисование
	if gpr(104,81,52,12) { mirror = - mirror}	// вкл/откл зеркалирование
	
	
	
	
}
ret


//***********************ПОДПРОГРАММА ЗАПИСИ АНИМАЦИИ GIF*******************************
SAVE_ANIM:
save_flag = 0

video_export_hq(1) // режим качественного экспорта в GIF, при котором для каждого кадра будет создаваться своя локальная цветовая палитра

if widh_wind > 200 | high_wind  > 200 { widh_wind = 200 high_wind = 200  }
x_wind = -widh_wind/2
y_wind = -high_wind/2

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, x_tmp, y_tmp, 0, scale_tmp, f )	
	fpixi ( tmp_layer, 0, 0, 0, 0, f )
	frame( frame_time[f] )
	f + 1
	}
} else {ret}

stop_video_export
ret

//****************ПОДПРОГРАММА ЗАПИСИ ПРОЦЕССА РИСОВАНИЯ В ВИДЕО ФАЙЛ (все окно 320х240)**********************
EXPORT_AVI:
filename = "                                                                                                                                                                                                                                                                                                "
if (file_dialog( filename, "Сохранить рисование в AVI", "avi", "save_id" )) {
video_export_realtime (1) //Включение режима реального времени
video_export_fps (24) // стандартная частота кадров для видео

// !!! не все кодеки поддерживают запись с нестандартной частотой кадров !!!
// 12 к/с поддерживает кодек XVid

video_export_avi ( filename, -x_window/2, -y_window/2, x_window, y_window )
} else {save_flag = 0 ret}
save_flag = 0 
status_export_avi = 1
stop_export_avi = 0
ret

//****************ПОДПРОГРАММА ЗАПИСИ ПРОЦЕССА РИСОВАНИЯ В АНИМИРОВАННЫЙ GIF ФАЙЛ (поле рисования)**********************
EXPORT_GIF:
filename = "                                                                                                                                                                                                                                                                                                "
if (file_dialog( filename, "Сохранить рисование в GIF", "gif", "save_id" )) {
video_export_gif ( filename, x_wind+1, y_wind+1, widh_wind-1, high_wind-1 )
} else {save_flag = 0 ret}
save_flag = 0 
status_export_gif = 1
stop_export_gif = 0
ret


//***********************ПОДПРОГРАММА ЗАПИСИ КАДРА GIF*******************************
SAVE_GIF:
save_flag = 0

video_export_hq(1) // режим качественного экспорта в GIF, при котором для каждого кадра будет создаваться своя локальная цветовая палитра

if widh_wind > 200 | high_wind  > 200 { widh_wind = 200 high_wind = 200  }
x_wind = -widh_wind/2
y_wind = -high_wind/2

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, x_tmp, y_tmp, 0, scale_tmp, frame_num )	
	fpixi ( tmp_layer, 0, 0, 0, 0, frame_num )
	frame( 100 )
} else {ret}

stop_video_export
ret


//***********************ПОДПРОГРАММА ЗАПИСИ КАРТИНКИ В ASCII-СИМВОЛАХ*******************************
SAVE_TXT:
save_flag = 0

if widh_wind > 200 | high_wind  > 200 { widh_wind = 200 high_wind = 200  }
x_wind = -widh_wind/2
y_wind = -high_wind/2

filename = "                                                                                                                                                                                                                                                                                                "
if (file_dialog( filename, "Сохранить кадр TXT", "txt", "save_id" )) {
	clear( SNEG )
	fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )	
	fpixi ( tmp_layer, 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" ) ) {
remove_pixi (animat)
animat = load_pixi(filename) } else {ret}
tmp_layer = clone_pixi ( animat, 1 )

tmp_frame = clone_pixi (animat)
color_alfa = get_pixi_alpha (animat)

		pixi_transp (animat,1,color_alfa)	
		
		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

resize_pixi (tmp_layer,widh_wind,high_wind,0) 		
frame_num = 0
scale_tmp = 0
x_tmp = 0
y_tmp = 0

// заполняю массив времени отображения кадров одним значением
time = 100
n=0 while n < 256 {
	frame_time[n] = time
	n+1
	}


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 )
//fpixi (animat,x_tmp,y_tmp,0,scale_tmp,frame_num)
//set_screen ( animat , frame_num )
fbox ( x_wind, y_wind, widh_wind, high_wind, SNEG )
fpixi (tmp_frame,x_tmp,y_tmp,0,scale_tmp,1)
set_screen( 0 )	

ret

//************************ПОДПРОГРАММА СКЛЕИВАНИЯ ВСЕХ СЛОЕВ С БЭКГРАУНДОМ**************************** пока не активно
ON_BACKGROUND:
/*
set_screen ( animat , frame_num )
fpixi (animat,x_tmp,y_tmp,0,scale_tmp,frame_num)
fpixi (tmp_layer,x_tmp,y_tmp,0,0,frame_num)

n=(widh_wind*high_wind*frame_num) while n<(widh_wind*high_wind)*(frame_num+1) {
tmp_layer[n] = color_alfa
n+1
}

set_screen( 0 )	
*/

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 )
//fpixi (animat,x_tmp,y_tmp,0,scale_tmp,frame_num)
//set_screen ( animat , frame_num )
fbox ( x_wind, y_wind, widh_wind, high_wind, SNEG )
fpixi (tmp_frame,x_tmp,y_tmp,0,scale_tmp,1)

set_screen( 0 )
ret

//************************ПОДПРОГРАММА ЗАГРУЗКИ ФОНОВОГО ИЗОБРАЖЕНИЯ JPEG/GIF****************************
LOAD_FON:
filename = 
"                                                                                                                                                                                                                                                                                                "
if (file_dialog( filename, "Открыть фон JPEG/GIF", "jpg/gif", "load_id" ) ) {
fon = load_pixi(filename) } else {ret}
x_fon = 0
y_fon = 0
scale_fon = 0

ret



//************************ПОДПРОГРАММА РИСОВАНИЯ*************************************
DRAWING:



// если выбрана своя палитра и включен режим пипетки и курсор в рабочей области, то "взять" данные о цвете
	if gpr( -100, -100, 200, 200 ) & mode_pip > 0 & color_num >= 0 {
	color_tmp = get_dot ( get_pen_x, get_pen_y )
	color_R_own[color_num] = get_red (color_tmp)
	color_G_own[color_num] = get_green (color_tmp)	
	color_B_own[color_num] = get_blue (color_tmp)
	color_brush = get_color ( color_R_own[color_num], color_G_own[color_num], color_B_own[color_num] )
	ret
	} else { // иначе рисую или стераю
	
	if wiev_fon_flag > 0 & wiev_fon = 2 { // отрисовываю фон
		transp (bright_fon_img)
		fpixi (fon,x_fon,y_fon,0,scale_fon,0) 
		transp (256)
		
		// закрываю все, кроме рабочего поля
		fbox(-x_window/2,-y_window/2,x_window,y_window/2-high_wind/2,WHITE)
		fbox(-x_window/2,y_window/2-(y_window/2-high_wind/2),x_window,y_window/2-high_wind/2,WHITE)
		fbox(-x_window/2,-y_window/2,x_window/2-widh_wind/2,y_window,WHITE)
		fbox(widh_wind/2,-y_window/2,x_window/2-widh_wind/2,y_window,WHITE)
		}
	// обозначаю карандаш/стерку
	if gpr( -100, -100, 200, 200 ) {
		if symm_on = 1 {
			n=0 while n < mode_sym {
			fpixi ( brush_1, get_pen_x, get_pen_y, size_brush, 0, brush_1_num )
			if mirror = 1  { fpixi ( brush_1, -get_pen_x, get_pen_y, size_brush, 0, brush_1_num ) }
			t_rotate_z ( simmetry[mode_sym] ,0 ,0 ,0 )	
			n+1
			}
		t_reset
		} else { fpixi ( brush_1, get_pen_x, get_pen_y, size_brush, 0, brush_1_num ) }
	}
		
set_screen ( tmp_layer , frame_num )

// рисую pixi, поворачиваю на угол взятый из ячейки соответствующей номеру режима рисования
if gpr(  -100, -100, 200, 200  ) {
	if symm_on = 1 {
		n=0 while n < mode_sym {
			pixel_shader( { PS_R = color_brush } )
			fpixi ( brush_1, get_pen_x, get_pen_y, size_brush, 0, brush_1_num )
				if mirror = 1  { fpixi ( brush_1, -get_pen_x, get_pen_y, size_brush, 0, brush_1_num ) }
			t_rotate_z ( simmetry[mode_sym] ,0 ,0 ,0 )	
			n+1
		}
		t_reset
	} else { fpixi ( brush_1, get_pen_x, get_pen_y, size_brush, 0, brush_1_num ) }	
}
pixel_shader( -1 )
set_screen( 0 )
set_screen ( animat , frame_num )
set_screen( 0 )

}
ret

//************************ПОДПРОГРАММА ОТРИСОВКИ СЕТКИ*************************************

SYMM_FON:

if mode_fon = 1 {
	transp (64) 
	m=0 while m < 30 {
		n=0 while n < 40 {
		box ( -20*x_grid+x_grid*n, -15*x_grid+x_grid*m, x_grid, x_grid, BLACK ) 
		n+1
		}
m+1		
}
transp (256)
}
ret







//************************ПОДПРОГРАММА ПРОИГРЫВАНИЯ АНИМАЦИИ*************************************
PLAY_ANIMAT:

if play_anim = 1 & loop = -1 { 
	fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )	
	pixi (scr_mask,0,0,0,0)
	TIMELINE
	frame(frame_time[frame_num])
	frame_num + 1
	if frame_num > (anim_frames-1) { frame_num = anim_frames-1 }
} 

if play_anim = -1 & loop = -1 { 
	fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )
	pixi (scr_mask,0,0,0,0)
	TIMELINE
	frame(frame_time[frame_num])
	frame_num - 1
	if frame_num < 0 { frame_num = 0 }
} 

if play_anim = 1 & loop = 1 { 
	fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )
	pixi (scr_mask,0,0,0,0)	
	TIMELINE
	frame(frame_time[frame_num])
	frame_num + 1
	if frame_num > (anim_frames-1) { frame_num = 0 }
} 

if play_anim = -1 & loop = 1 { 
	fpixi ( animat, x_tmp, y_tmp, 0, scale_tmp, frame_num )
	pixi (scr_mask,0,0,0,0)	
	TIMELINE
	frame(frame_time[frame_num])
	frame_num - 1
	if frame_num < 0 { frame_num = anim_frames }
} 

ret


SCREENSHOT_MASK: // делаю копию экрана 
scr_0 = 0

n=0 while n<(320*240) {scr_mask[n]=scr_0[n] n+1}

ret

// подпрограмма маскировки рабочего пространства
MASK_WORKSPACE:
fbox(-160,-120,320,20,WHITE)
fbox(-160,100,320,60,WHITE)
fbox(-160,-120,60,240,WHITE)
fbox(100,-120,60,240,WHITE)	
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


", -40, 20, BLACK )
print ( ver, -16, 44, 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

// три массива значений для палитры из 16 цветов (свои). Значения по умолчанию. 
NUL_COLOR:
color_R_own = new_array(16)
color_G_own = new_array(16)
color_B_own = new_array(16)
n=0 while n<16 {
color_R_own[n] = 192  color_G_own[n] = 192  color_B_own[n] = 192  
n+1
}
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


Продублировал тут http://narod.ru/disk/1841603000/CreaGra ... 5.txt.html
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!

Post Reply