Subversion Repositories Kolibri OS

Rev

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