Subversion Repositories Kolibri OS

Rev

Rev 6385 | Rev 6837 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
255 heavyiron 1
;*******************************************************
2
;**************GRAPHICS EDITOR ANIMAGE *****************
3
;*******************************************************
6741 IgorA 4
; version: 1.52
5
; last update:  23.11.2016
6
; changes:      Can save *.png files
7
; autors:       IgorA
8
;--------------------------------------------------------
6367 leency 9
; version: 1.51
10
; last update:  23.03.2016
11
; changes:      Use library 'kmenu.obj', update GUI
12
; autors:       IgorA, Veliant, Leency
6359 IgorA 13
;--------------------------------------------------------
6328 IgorA 14
; version: 1.4
6359 IgorA 15
; last update:  12.03.2016
6328 IgorA 16
; changes:      Use library 'libimg.obj'
6359 IgorA 17
; autors:       IgorA
6328 IgorA 18
;--------------------------------------------------------
6359 IgorA 19
; version: 1.3
20
; last update:  05.10.2010
1643 mario79 21
; written by:   Marat Zakiyanov aka Mario79, aka Mario
22
; changes:      Fixed window flicker when redrawing,
23
;               Fixed memory leak for stack
24
;--------------------------------------------------------
6359 IgorA 25
; version: 1.2
26
; last update:  30.09.2010
1632 mario79 27
; written by:   Marat Zakiyanov aka Mario79, aka Mario
28
; changes:      Program used function 68 instead 64 is now,
29
;               select path with OpenDialog
30
;--------------------------------------------------------
6359 IgorA 31
; version: 1.1
32
; last update:  09.12.2006
33
; autors:
255 heavyiron 34
; programming by andrew_programmer
1632 mario79 35
; design by golus
255 heavyiron 36
 
180 heavyiron 37
use32
1632 mario79 38
org	0x0
39
	db 'MENUET01'
6360 IgorA 40
	dd 1, START, IM_END, I_END
41
	dd stacktop, file_path, cur_dir_path
255 heavyiron 42
 
6360 IgorA 43
include '../../../config.inc' ;for nightbuild
6328 IgorA 44
include	'../../../macros.inc'
45
include '../../../proc32.inc'
46
include '../../../KOSfuncs.inc'
1632 mario79 47
include '../../../develop/libraries/box_lib/load_lib.mac'
6328 IgorA 48
include '../../../dll.inc'
49
include '../../../libio.inc'
6741 IgorA 50
include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
6385 IgorA 51
;include '../../../debug.inc'
6328 IgorA 52
 
53
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
54
 
6357 IgorA 55
;---------------------------------------------------------
56
; *** константы для интерфейса ***
6358 IgorA 57
; *** constants for interface  ***
6357 IgorA 58
 
6358 IgorA 59
; корректировки на скин
6359 IgorA 60
ci_offs_skin_w equ  5 ;корректировка на ширину рамки скина
61
ci_offs_skin_h equ 24 ;корректировка на высоту скина
6358 IgorA 62
 
63
; главное окно
64
ci_wnd_min_siz_x equ 585 ;minimum size x
65
ci_wnd_min_siz_y equ 400 ;minimum size y
66
 
6359 IgorA 67
; панель инструментов
6371 IgorA 68
ci_panel_x_pos equ  0 ;коорд. x для панели
69
ci_panel_y_pos equ 20 ;коорд. y для панели
70
ci_panel_but_y1 equ ci_panel_y_pos +5 ;коорд. y для 1-го ряда кнопок
71
ci_panel_but_y2 equ ci_panel_y_pos+30 ;коорд. y для 2-го ряда кнопок
72
ci_palete_y_pos equ ci_panel_y_pos+51 ;коорд. y для палитры цветов
73
ci_panel_zoom_x equ 178 ;коорд. x для кнопок панели масштаба
6359 IgorA 74
 
6357 IgorA 75
; окно редактора
6371 IgorA 76
ci_edit_wnd_x_pos  equ  0 ;коорд. x для окна редактора
77
ci_edit_wnd_y_pos  equ 71 ;коорд. y для окна редактора
6357 IgorA 78
ci_edit_wnd_border equ  3 ;рамка вокруг окна редактора
79
 
80
; скроллинги
6358 IgorA 81
ci_scroll_dim equ 22 ;размеры скроллингов
6357 IgorA 82
ci_scrollh_coord_x_min equ (ci_edit_wnd_x_pos+3) ;минимальная позиция ползунка
83
	;горизонтального скроллинга
84
ci_scrollv_coord_y_min equ (ci_edit_wnd_y_pos+3) ;минимальная позиция ползунка
85
	;вертикального скроллинга
86
;---------------------------------------------------------
87
 
1632 mario79 88
include	'bmplib.inc'
89
include	'dialog2.inc'
90
include	'design.inc'
91
include	'graphlib.inc'
255 heavyiron 92
 
1632 mario79 93
include	'cursors.inc'
6342 IgorA 94
include	'memory.inc'
1632 mario79 95
include	'load_from_parameters.inc'
255 heavyiron 96
 
180 heavyiron 97
START:
6329 IgorA 98
	mcall SF_SYS_MISC,SSF_HEAP_INIT
6359 IgorA 99
	mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, syscolors, syscolors_end-syscolors
1632 mario79 100
 
101
load_libraries l_libs_start,end_l_libs
180 heavyiron 102
 
1632 mario79 103
	cmp	eax,-1
104
	jz	close
6357 IgorA 105
 
6329 IgorA 106
	mcall SF_SET_EVENTS_MASK,0x80000067 ; 1100111b
180 heavyiron 107
;---------------------------------------------------------
255 heavyiron 108
;-----------------------init data-------------------------
180 heavyiron 109
;---------------------------------------------------------
1632 mario79 110
include	'init_data.inc'
111
 
180 heavyiron 112
;----------------------------------------------------------
113
;--------get memory and draw window of program-------------
114
;----------------------------------------------------------
6365 IgorA 115
	call GetMemory
116
	mov	[Current_instrument],10 ;pencil
117
	call TakeButtonInstruments  ;set startup instrument
118
	call cleare_work_arrea
119
	call load_icons
120
	call init_main_menu
255 heavyiron 121
 
6329 IgorA 122
;load cursors
1632 mario79 123
	mov	eax,CursorsID
6365 IgorA 124
	call load_cursors
255 heavyiron 125
 
126
;---------------------------------------------------------
6364 IgorA 127
;---------check loading of file from parameters-----------
255 heavyiron 128
;---------------------------------------------------------
1632 mario79 129
	mov	eax,file_path
130
	cmp [eax],byte 0
131
	jz @f
132
	call load_picture
6328 IgorA 133
	call MovePictureToWorkScreen
1632 mario79 134
@@:
255 heavyiron 135
 
1632 mario79 136
;---------------------------------------------------------------------
137
	mov	edi,filename_area
138
	mov	esi,path4+5
139
	call	copy_str_1
140
 
141
	mov	edi,file_path
142
	cmp	[edi],byte 0
143
	jne	@f
144
	mov	esi,path4
145
	call	copy_str_1
146
@@:
147
;OpenDialog	initialisation
6360 IgorA 148
	stdcall [OpenDialog_Init], OpenDialog_data
1632 mario79 149
;---------------------------------------------------------------------
6364 IgorA 150
 
151
align 4
6358 IgorA 152
red:
6364 IgorA 153
	call drawwin
180 heavyiron 154
;----------------------------------------------------------
6364 IgorA 155
;---------------------main loop----------------------------
180 heavyiron 156
;----------------------------------------------------------
6358 IgorA 157
align 4
1632 mario79 158
still:
6364 IgorA 159
	mcall SF_WAIT_EVENT
1643 mario79 160
 
1632 mario79 161
	cmp	eax,1
1643 mario79 162
	je	red
255 heavyiron 163
 
1632 mario79 164
	cmp	eax,2
165
	je	keys
180 heavyiron 166
 
1632 mario79 167
	cmp	eax,3
168
	je	buttons
255 heavyiron 169
 
1632 mario79 170
	cmp	eax,6
171
	je	mouse
255 heavyiron 172
 
1632 mario79 173
	jmp	still
174
 
175
;---------------------------------------------------------------------
176
copy_str_1:
177
	xor	eax,eax
178
	cld
179
@@:
180
	lodsb
181
	stosb
182
	test	eax,eax
183
	jnz	@b
184
	ret
185
;---------------------------------------------------------------------
186
include	'events.inc'
187
include	'events_of_window.inc'
188
include	'events_of_keys.inc'
189
include	'events_of_buttons.inc'
190
include	'events_of_mouse.inc'
191
include	'panel_engen.inc'
192
include	'screen.inc'
1643 mario79 193
include 'menu_instruments.inc'
1632 mario79 194
include	'icons_instruments.inc'
195
include	'icons.inc'
196
include	'sprites.inc'
197
include	'string.inc'
198
include	'palette.inc'
199
include	'files.inc'
200
include	'time.inc'
6359 IgorA 201
include	'menu.inc'
180 heavyiron 202
;-----------------------------------------------------------
255 heavyiron 203
;------------variables and data of program------------------
180 heavyiron 204
;-----------------------------------------------------------
6371 IgorA 205
;sound_havent_memory db 150,64,0
1643 mario79 206
 
1632 mario79 207
include 'lib_data.inc'
208
include	'panel_data.inc'
209
include	'palitra256.inc'
210
include	'brushes.inc'
211
include	'spray.inc'
212
include	'width_lines.inc'
180 heavyiron 213
;----------------------------------------------------------
6364 IgorA 214
;-------------------icon's picture-------------------------
180 heavyiron 215
;----------------------------------------------------------
6360 IgorA 216
align 4
255 heavyiron 217
panel_picture:
6329 IgorA 218
file 'panel_buttons.png'
6328 IgorA 219
.end:
6371 IgorA 220
align 4
221
panel_zoom:
222
file 'panel_zoom.png'
223
.end:
255 heavyiron 224
;****************cursors******************
225
brush_cursor:
6373 leency 226
file 'cursors/brush.cur'
255 heavyiron 227
flood_fill_cursor:
6373 leency 228
file 'cursors/flood_fill.cur'
255 heavyiron 229
lastik_cursor:
6373 leency 230
file 'cursors/lastik.cur'
255 heavyiron 231
other_cursor:
6373 leency 232
file 'cursors/other.cur'
255 heavyiron 233
pencil_cursor:
6373 leency 234
file 'cursors/pencil.cur'
255 heavyiron 235
pipette_cursor:
6373 leency 236
file 'cursors/pipette.cur'
255 heavyiron 237
spray_cursor:
6373 leency 238
file 'cursors/spray.cur'
255 heavyiron 239
zoom_cursor:
6373 leency 240
file 'cursors/zoom.cur'
180 heavyiron 241
;----------------------------------------------------------
6364 IgorA 242
align 4
1632 mario79 243
IM_END:
244
;-----------------------------------------------------------
245
;------------variables and data of program------------------
246
;-----------------------------------------------------------
247
time			rd 1
6352 IgorA 248
PosX			rd 1 ;scroll x file position
249
PosY			rd 1 ;scroll y file position
1632 mario79 250
PointerToIcons		rd 1
251
ScreenPointer		rd 1
252
PointerToPicture	rd 1
253
PointerToCopyPicture	rd 1
254
PointerToCopyPicture2	rd 1
255
PointerToEditBufer	rd 1
256
PointerToSpriteBufer	rd 1
6352 IgorA 257
PointerToPalette	rd 1 ;указатель на пилитру (нужен для сохранения в *.bmp)
1632 mario79 258
Color			rd 1
6364 IgorA 259
SColor			rd 1
1632 mario79 260
Number_Brush		rd 1
261
Brush_SizeX		rd 1
262
Brush_SizeY		rd 1
263
Current_instrument	rd 1
264
Last_instrument		rd 1
265
OldX			rd 1
266
OldY			rd 1
180 heavyiron 267
 
1632 mario79 268
MouseX			rd 1
269
MouseY			rd 1
6385 IgorA 270
MouseBut			rd 1 ;события от кнопок мыши
1632 mario79 271
Window_SizeX		rd 1
272
Window_SizeY		rd 1
273
Window_CordinatX	rd 1
274
Window_CordinatY	rd 1
275
Picture_SizeX		rd 1
276
Picture_SizeY		rd 1
6352 IgorA 277
ScreenX			rd 1 ;координата x курсора с учетом масштаба
278
ScreenY			rd 1 ;координата y курсора с учетом масштаба
6379 IgorA 279
WorkScreen_SizeX	rd 1 ;ширина рабочего экрана
280
WorkScreen_SizeY	rd 1 ;высота рабочего экрана
1632 mario79 281
MaxWorkScreen_SizeX	rd 1
282
MaxWorkScreen_SizeY	rd 1
6352 IgorA 283
k			rd 1 ;масштаб
180 heavyiron 284
 
6379 IgorA 285
ReserveArray		rd 1 ;указатель на память используемую при рисовании фигур
286
	;для сохранения участков фона под фигурами, а также для заливки
287
CounterX		rd 1 ;число пикселей изображения по ширине, которые попадают
288
	;в экран рабочей области, с учетом текущего масштаба
1632 mario79 289
CounterY		rd 1
6379 IgorA 290
OffsetYPicture		rd 1 ;сдвиг по оси y в буфере изображения при рисовании
291
	;следующей линии изображения
292
OffsetYWorkScreen	rd 1 ;сдвиг по оси y в буфере рабочей области при
293
	;рисовании следующей линии пикселей. Чем больше масштаб, тем ниже
294
	;нужно опускаться по рабочей области.
295
OffsetYBigPixel		rd 1 ;сдвиг по оси y для рисования пикселей на большом
296
	;масштабе. Рисуется 1-я полоса пикселя, а потом нужно перейти вниз и
297
	;влево для рисования следующей полосы.
1632 mario79 298
 
299
Icon_X			rd 1
300
Icon_Y			rd 1
301
counter			rd 1
302
counter2		rd 1
303
number_panel		rd 1
304
number_menu		rd 1
305
 
6352 IgorA 306
Scroll1CoordinatX	rd 1 ;scroll x screen position
307
Scroll1CoordinatY	rd 1 ;scroll y screen position
1632 mario79 308
Scroll1MaxSizeX		rd 1
309
Scroll1MaxSizeY		rd 1
6357 IgorA 310
Scroll1SizeX		rd 1 ;scroll polzunok size
1632 mario79 311
Scroll1FreeX		rd 1
312
 
313
Scroll2CoordinatX	rd 1
314
Scroll2CoordinatY	rd 1
315
Scroll2MaxSizeX		rd 1
316
Scroll2MaxSizeY		rd 1
317
Scroll2SizeY		rd 1
318
Scroll2FreeY		rd 1
319
 
320
x			rd 1
321
y			rd 1
322
 
323
Radius			rd 1
324
Dx_			rd 1
325
Dy_			rd 1
326
line_width		rd 1
327
a_ellips		rd 1
328
b_ellips		rd 1
6364 IgorA 329
 
330
used_OldX		rd 1 ;for draw hard contour
1632 mario79 331
used_OldY		rd 1
6369 IgorA 332
paste_img_w rd 1 ;ширина вставляемого изображения
333
paste_img_h rd 1 ;высота вставляемого изображения
6385 IgorA 334
crossing_old_x		rd 1 ;начальная коорд. x области копирования
335
crossing_old_y		rd 1 ;начальная коорд. y области копирования
336
rectangular_shade_x	rd 1 ;конечная коорд. x области копирования
337
rectangular_shade_y	rd 1 ;конечная коорд. y области копирования
338
crossing		rd 1 ;0 - выделения нет, 1 - идет процес выделения,
339
	;2 - выделение завершено, 3 - область выделения перемещается
1632 mario79 340
number_undo		rd 1
6385 IgorA 341
SpriteSizeX		rd 1 ;???
342
SpriteSizeY		rd 1 ;???
1632 mario79 343
SpriteCoordinatX	rd 1
344
SpriteCoordinatY	rd 1
345
SpriteOldCoordinatX	rd 1
346
SpriteOldCoordinatY	rd 1
6364 IgorA 347
 
348
CursorsID	rd 10
349
 
6385 IgorA 350
Activate_instrument	rb 1 ;если равно 0 - то копирование текущего буфера
351
	;для его редактирования, если 1 - текущий буфер не копируется
6364 IgorA 352
save_flag		rb 1
353
exit_from_work_arrea	rb 1
354
lastik_is_active	rb 1
355
instrument_used		rb 1
356
DrawSprite_flag		rb 1
357
Paste_flag		rb 1
1632 mario79 358
;---------------------------------------------------------------------
552 diamond 359
IncludeUGlobals
1632 mario79 360
;---------------------------------------------------------------------
361
align 4
6328 IgorA 362
file_path rb 4096
363
filename_area rb 256
364
temp_dir_pach rb 4096
365
library_path rb 4096
366
cur_dir_path rb 4096
367
procinfo: rb 1024
6359 IgorA 368
align 4
369
syscolors rb 192
370
syscolors_end:
1632 mario79 371
;---------------------------------------------------------------------
372
align 4
373
	rb 4096
374
stacktop:
375
;---------------------------------------------------------------------
376
I_END: