Subversion Repositories Kolibri OS

Rev

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